start to switch to rails 3.2.2
This commit is contained in:
parent
244942a78f
commit
74c23fa0d1
253 changed files with 648 additions and 17155 deletions
0
lib/assets/.gitkeep
Normal file
0
lib/assets/.gitkeep
Normal file
|
@ -1,23 +0,0 @@
|
|||
require 'net/imap'
|
||||
|
||||
module ImapFolderModule
|
||||
|
||||
class IMAPFolder
|
||||
|
||||
attr_reader :utf7_name
|
||||
attr_reader :delim
|
||||
attr_reader :attribs
|
||||
attr_reader :name
|
||||
attr_accessor :messages
|
||||
attr_accessor :unseen
|
||||
|
||||
def initialize(utf7_name,delim,attribs)
|
||||
@utf7_name = utf7_name
|
||||
@name = Net::IMAP.decode_utf7 utf7_name
|
||||
@delim = delim
|
||||
@attribs = attribs
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
|
@ -1,207 +0,0 @@
|
|||
require 'net/imap'
|
||||
require 'imap_folder'
|
||||
|
||||
module ImapMailboxModule
|
||||
|
||||
class IMAPError < RuntimeError
|
||||
end
|
||||
|
||||
class IMAPMailbox
|
||||
|
||||
attr_reader :connected
|
||||
attr_accessor :sfolder
|
||||
attr_accessor :logger
|
||||
|
||||
def initialize(logger,debug)
|
||||
@sfolder = ''
|
||||
@folders = {}
|
||||
@connected = false
|
||||
@logger = logger
|
||||
Net::IMAP.debug = true
|
||||
end
|
||||
|
||||
def connect(server,username,password)
|
||||
|
||||
server_name = server.name
|
||||
server_port = server.port
|
||||
server_use_ssl = server.use_ssl
|
||||
|
||||
unless @connected
|
||||
begin
|
||||
@imap = Net::IMAP.new(server_name, server_port, server_use_ssl)
|
||||
rescue Net::IMAP::ByeResponseError => bye
|
||||
begin
|
||||
System.sleep($defaults["imap_bye_timeout_retry_seconds"])
|
||||
@imap = Net::IMAP.new(server_name, server_port, server_use_ssl)
|
||||
rescue Exception => ex
|
||||
raise IMAPError, ex.inspect
|
||||
end
|
||||
rescue Exception => ex
|
||||
raise IMAPError, ex.inspect
|
||||
end
|
||||
@username = username
|
||||
begin
|
||||
@imap.login(username, password)
|
||||
@connected = true
|
||||
rescue Exception => ex
|
||||
raise IMAPError, ex.inspect
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def disconnect
|
||||
if @connected
|
||||
@imap.logout
|
||||
@imap.disconnect
|
||||
@imap = nil
|
||||
@connected = false
|
||||
end
|
||||
end
|
||||
|
||||
def folders
|
||||
@folders = {}
|
||||
folders = @imap.list('', '*')
|
||||
if folders
|
||||
folders.each do |f|
|
||||
folder = ImapFolderModule::IMAPFolder.new(f.name,f.delim,f.attr)
|
||||
status = @imap.status(folder.name, ["MESSAGES", "UNSEEN"])
|
||||
folder.messages = status["MESSAGES"]
|
||||
folder.unseen = status["UNSEEN"]
|
||||
@folders[folder.name] = folder
|
||||
end
|
||||
end
|
||||
@folders
|
||||
end
|
||||
|
||||
def create_folder(name)
|
||||
begin
|
||||
@imap.create(Net::IMAP.encode_utf7(name))
|
||||
rescue Exception => e
|
||||
raise e
|
||||
end
|
||||
end
|
||||
|
||||
def fetch_uids
|
||||
begin
|
||||
uids = []
|
||||
imap_uids = @imap.fetch(1..-1, "UID")
|
||||
imap_uids.each do |u|
|
||||
uids << u.attr['UID']
|
||||
end
|
||||
return uids
|
||||
rescue Exception => e
|
||||
raise e
|
||||
end
|
||||
end
|
||||
|
||||
def delete_folder(name)
|
||||
begin
|
||||
@imap.delete(Net::IMAP.decode_utf7(name))
|
||||
rescue Exception => e
|
||||
raise e
|
||||
end
|
||||
end
|
||||
|
||||
def fetch(range,attribs)
|
||||
begin
|
||||
@imap.fetch(range,attribs)
|
||||
rescue Exception => e
|
||||
raise e
|
||||
end
|
||||
end
|
||||
|
||||
def uid_fetch(range,attribs)
|
||||
begin
|
||||
@imap.uid_fetch(range,attribs)
|
||||
rescue Exception => e
|
||||
raise e
|
||||
end
|
||||
end
|
||||
|
||||
def set_folder(folder_name)
|
||||
begin
|
||||
if folder_name != @sfolder
|
||||
@imap.select(folder_name)
|
||||
@sfolder = folder_name
|
||||
end
|
||||
rescue Exception => e
|
||||
raise e
|
||||
end
|
||||
end
|
||||
|
||||
def status
|
||||
begin
|
||||
@imap.status(@sfolder, ["MESSAGES", "RECENT", "UNSEEN"])
|
||||
rescue Exception => e
|
||||
raise e
|
||||
end
|
||||
end
|
||||
|
||||
def fetch_body(uid)
|
||||
begin
|
||||
uid_fetch(uid,"BODY[]").first.attr["BODY[]"]
|
||||
rescue Exception => e
|
||||
raise e
|
||||
end
|
||||
end
|
||||
|
||||
def delete_message(uid)
|
||||
begin
|
||||
@imap.uid_store(uid.to_i, "+FLAGS", :Deleted)
|
||||
rescue Exception => e
|
||||
raise e
|
||||
end
|
||||
end
|
||||
|
||||
def expunge
|
||||
begin
|
||||
@imap.expunge
|
||||
rescue Exception => e
|
||||
raise e
|
||||
end
|
||||
end
|
||||
|
||||
def set_read(uid)
|
||||
begin
|
||||
@imap.uid_store(uid.to_i, "+FLAGS", :Seen)
|
||||
rescue Exception => e
|
||||
raise e
|
||||
end
|
||||
end
|
||||
|
||||
def set_unread(uid)
|
||||
begin
|
||||
@imap.uid_store(uid.to_i, "-FLAGS", :Seen)
|
||||
rescue Exception => e
|
||||
raise e
|
||||
end
|
||||
end
|
||||
|
||||
def copy_message(uid,dest_folder)
|
||||
begin
|
||||
@imap.uid_copy(uid.to_i, dest_folder)
|
||||
rescue Exception => e
|
||||
raise e
|
||||
end
|
||||
end
|
||||
|
||||
def move_message(uid,dest_folder)
|
||||
begin
|
||||
copy_message(uid,dest_folder)
|
||||
delete_message(uid)
|
||||
rescue Exception => e
|
||||
raise e
|
||||
end
|
||||
end
|
||||
|
||||
def append(folder,message,flags)
|
||||
begin
|
||||
@imap.append(folder,message,flags)
|
||||
rescue Exception => e
|
||||
raise e
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
|
@ -1,91 +0,0 @@
|
|||
require 'net/imap'
|
||||
|
||||
module ImapMessageModule
|
||||
|
||||
class IMAPAddress
|
||||
|
||||
attr_accessor :name,:mailbox,:host
|
||||
|
||||
def initialize()
|
||||
name = ""
|
||||
mailbox = ""
|
||||
host = ""
|
||||
end
|
||||
|
||||
def self.from_address(addr)
|
||||
a = IMAPAddress.new()
|
||||
a.name = addr.name || ""
|
||||
a.mailbox = addr.mailbox || ""
|
||||
a.host = addr.host || ""
|
||||
a
|
||||
end
|
||||
|
||||
def to_db
|
||||
name + "#" + mailbox + "#" + host
|
||||
end
|
||||
|
||||
def self.parse(addr)
|
||||
a = IMAPAddress.new()
|
||||
f = addr.split("#")
|
||||
a.name = f[0]
|
||||
a.mailbox = f[1]
|
||||
a.host = f[2]
|
||||
a
|
||||
end
|
||||
|
||||
def friendly
|
||||
if name.empty?
|
||||
mailbox + host
|
||||
else
|
||||
name
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class IMAPMessage
|
||||
|
||||
@@fetch_attr = ['RFC822.HEADER', 'FLAGS', 'UID', 'RFC822.SIZE']
|
||||
#@@fetch_attr = ['RFC822','FLAGS', 'UID', 'RFC822.SIZE']
|
||||
|
||||
# attr_accessor :envelope,:uid,:content_type,:size,:unseen,:from,:message_id,:to,:from,:subject,:date
|
||||
#
|
||||
# def initialize
|
||||
# end
|
||||
#
|
||||
# def self.fromImap(message)
|
||||
# m = IMAPMessage.new
|
||||
# envelope = message.attr['ENVELOPE']
|
||||
# m.envelope = envelope
|
||||
# m.message_id = envelope.message_id
|
||||
# m.date = envelope.date
|
||||
# m.subject = envelope.subject
|
||||
# m.uid = message.attr['UID']
|
||||
# #content_type = m.attr['BODYSTRUCTURE'].multipart? ? 'multipart' : 'text'
|
||||
# m.content_type = message.attr['BODYSTRUCTURE'].media_type.downcase
|
||||
# m.size = message.attr['RFC822.SIZE']
|
||||
# m.unseen = !(message.attr['FLAGS'].member? :Seen)
|
||||
# m.from = IMAPAddress.from_address(envelope.from[0])
|
||||
# m.to = IMAPAddress.from_address(envelope.to[0])
|
||||
# m
|
||||
# end
|
||||
#
|
||||
def self.fetch_attr
|
||||
@@fetch_attr
|
||||
end
|
||||
#
|
||||
# def from_to_db
|
||||
# from.to_db
|
||||
# end
|
||||
#
|
||||
# def to_to_db
|
||||
# to.to_db
|
||||
# end
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
end
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
require 'net/imap'
|
||||
require 'imap_mailbox'
|
||||
|
||||
module ImapSessionModule
|
||||
|
||||
def open_imap_session
|
||||
begin
|
||||
@mailbox ||= ImapMailboxModule::IMAPMailbox.new(logger,$defaults["imap_debug"])
|
||||
@mailbox.connect(@current_user.servers.primary_for_imap,@current_user.login, @current_user.get_cached_password(session))
|
||||
rescue Exception => ex
|
||||
redirect_to :controller => 'internal', :action => 'loginfailure'
|
||||
end
|
||||
end
|
||||
|
||||
def close_imap_session
|
||||
return if @mailbox.nil? or not(@mailbox.connected)
|
||||
@mailbox.disconnect
|
||||
@mailbox = nil
|
||||
end
|
||||
|
||||
def select_imap_folder
|
||||
@mailbox.set_folder(@current_folder.full_name) if not @current_folder.nil?
|
||||
end
|
||||
|
||||
end
|
|
@ -1,114 +0,0 @@
|
|||
require 'iconv'
|
||||
|
||||
module Mail
|
||||
|
||||
class Message
|
||||
|
||||
def decoded_and_charseted
|
||||
begin
|
||||
if not charset.upcase == 'UTF-8'
|
||||
charset.nil? ? source_charset = $defaults["msg_unknown_charset"] : source_charset = charset
|
||||
charseted = Iconv.iconv("UTF-8",source_charset,decoded).first
|
||||
else
|
||||
charseted = decoded
|
||||
end
|
||||
rescue
|
||||
decoded
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class Part
|
||||
|
||||
attr_accessor :idx,:parent_id
|
||||
|
||||
def isImage?
|
||||
not (content_type =~ /^image/).nil?
|
||||
end
|
||||
|
||||
def isText?
|
||||
not (content_type =~ /^text\/plain/).nil?
|
||||
end
|
||||
|
||||
def isHtml?
|
||||
not (content_type =~ /^text\/html/).nil?
|
||||
end
|
||||
|
||||
def getSize
|
||||
body.raw_source.size
|
||||
end
|
||||
|
||||
def decoded_and_charseted
|
||||
begin
|
||||
if not charset.upcase == 'UTF-8'
|
||||
charset.nil? ? source_charset = $defaults["msg_unknown_charset"] : source_charset = charset
|
||||
charseted = Iconv.iconv("UTF-8",source_charset,decoded).first
|
||||
else
|
||||
charseted = decoded
|
||||
end
|
||||
rescue
|
||||
decoded
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
class Field
|
||||
def charseted
|
||||
begin
|
||||
if value =~ /\=\?([\w\-]+)\?/
|
||||
source_charset = $1
|
||||
if source_charset.upcase == 'UTF-8'
|
||||
return decoded
|
||||
end
|
||||
else
|
||||
source_charset = $defaults["msg_unknown_charset"]
|
||||
end
|
||||
Iconv.iconv("UTF-8",source_charset,decoded).first
|
||||
rescue
|
||||
decoded
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class Address
|
||||
def charseted
|
||||
begin
|
||||
if value =~ /\=\?([\w\-]+)\?/
|
||||
source_charset = $1
|
||||
if source_charset.upcase == 'UTF-8'
|
||||
return decoded
|
||||
end
|
||||
else
|
||||
source_charset = $defaults["msg_unknown_charset"]
|
||||
end
|
||||
Iconv.iconv("UTF-8",source_charset,decoded).first
|
||||
rescue
|
||||
decoded
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class Part
|
||||
def filename_charseted
|
||||
begin
|
||||
if content_type =~ /\=\?([\w\-]+)\?/
|
||||
source_charset = $1
|
||||
if source_charset.upcase == 'UTF-8'
|
||||
return filename
|
||||
end
|
||||
else
|
||||
source_charset = $defaults["msg_unknown_charset"]
|
||||
end
|
||||
Iconv.iconv("UTF-8",source_charset,filename).first
|
||||
rescue
|
||||
filename
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
0
lib/tasks/.gitkeep
Executable file → Normal file
0
lib/tasks/.gitkeep
Executable file → Normal file
|
@ -1,23 +0,0 @@
|
|||
namespace :db do
|
||||
|
||||
desc "Removes all users data from db"
|
||||
task :remove_all_data => :environment do
|
||||
users = User.all
|
||||
puts "Number of users in db: #{users.size}"
|
||||
puts "Deleting data....."
|
||||
User.destroy_all
|
||||
puts "Done"
|
||||
end
|
||||
|
||||
desc "Deletes users data (messages,folders,contacts)"
|
||||
task :remove_users_data => :environment do
|
||||
users = User.all
|
||||
users.each do |u|
|
||||
puts "Removing folders & messages for user #{u.email}"
|
||||
u.folders.destroy_all
|
||||
puts "Removing contacts for user #{u.email}"
|
||||
u.contacts.destroy_all
|
||||
end
|
||||
end
|
||||
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue