|
|
@ -9,7 +9,7 @@ from osv import osv |
|
|
|
from server_environment import serv_config |
|
|
|
|
|
|
|
|
|
|
|
class IRMAIL(osv.osv): |
|
|
|
class IrMail(osv.osv): |
|
|
|
_inherit = "ir.mail_server" |
|
|
|
|
|
|
|
def _get_smtp_conf(self, cursor, uid, ids, name, args, context=None): |
|
|
@ -17,10 +17,22 @@ class IRMAIL(osv.osv): |
|
|
|
Return configuration |
|
|
|
""" |
|
|
|
res = {} |
|
|
|
for conf in self.browse(cursor, uid, ids): |
|
|
|
res_dict = dict(serv_config.items('outgoing_mail')) |
|
|
|
res_dict['smtp_port'] = int(res_dict.get('smtp_port', 587)) |
|
|
|
res[conf.id] = res_dict |
|
|
|
for mail_server in self.browse(cursor, uid, ids): |
|
|
|
global_section_name = 'outgoing_mail' |
|
|
|
|
|
|
|
# default vals |
|
|
|
config_vals = {'smtp_port': 587} |
|
|
|
if serv_config.has_section(global_section_name): |
|
|
|
config_vals.update((serv_config.items(global_section_name))) |
|
|
|
|
|
|
|
custom_section_name = '.'.join((global_section_name, mail_server.name)) |
|
|
|
if serv_config.has_section(custom_section_name): |
|
|
|
config_vals.update(serv_config.items(custom_section_name)) |
|
|
|
|
|
|
|
if config_vals.get('smtp_port'): |
|
|
|
config_vals['smtp_port'] = int(config_vals['smtp_port']) |
|
|
|
|
|
|
|
res[mail_server.id] = config_vals |
|
|
|
return res |
|
|
|
|
|
|
|
_columns = { |
|
|
@ -28,41 +40,41 @@ class IRMAIL(osv.osv): |
|
|
|
method=True, |
|
|
|
string='SMTP Server', |
|
|
|
type="char", |
|
|
|
multi='smtp_host', |
|
|
|
multi='outgoing_mail_config', |
|
|
|
size=128), |
|
|
|
'smtp_port': fields.function(_get_smtp_conf, |
|
|
|
method=True, |
|
|
|
string='SMTP Port', |
|
|
|
type="integer", |
|
|
|
multi='smtp_port', |
|
|
|
multi='outgoing_mail_config', |
|
|
|
help="SMTP Port. Usually 465 for SSL, and 25 or 587 for other cases.", |
|
|
|
size=5), |
|
|
|
'smtp_user': fields.function(_get_smtp_conf, |
|
|
|
method=True, |
|
|
|
string='Username', |
|
|
|
type="char", |
|
|
|
multi='smtp_user', |
|
|
|
multi='outgoing_mail_config', |
|
|
|
help="Optional username for SMTP authentication", |
|
|
|
size=64), |
|
|
|
'smtp_pass': fields.function(_get_smtp_conf, |
|
|
|
method=True, |
|
|
|
string='Password', |
|
|
|
type="char", |
|
|
|
multi='smtp_pass', |
|
|
|
multi='outgoing_mail_config', |
|
|
|
help="Optional password for SMTP authentication", |
|
|
|
size=64), |
|
|
|
'smtp_encryption' :fields.function(_get_smtp_conf, |
|
|
|
method=True, |
|
|
|
string='smtp_encryption', |
|
|
|
type="char", |
|
|
|
multi='smtp_encryption', |
|
|
|
multi='outgoing_mail_config', |
|
|
|
help="Choose the connection encryption scheme:\n" |
|
|
|
"- none: SMTP sessions are done in cleartext.\n" |
|
|
|
"- starttls: TLS encryption is requested at start of SMTP session (Recommended)\n" |
|
|
|
"- ssl: SMTP sessions are encrypted with SSL/TLS through a dedicated port (default: 465)", |
|
|
|
size=64)} |
|
|
|
|
|
|
|
IRMAIL() |
|
|
|
IrMail() |
|
|
|
|
|
|
|
|
|
|
|
class FetchmailServer(osv.osv): |
|
|
@ -74,14 +86,30 @@ class FetchmailServer(osv.osv): |
|
|
|
Return configuration |
|
|
|
""" |
|
|
|
res = {} |
|
|
|
|
|
|
|
for conf in self.browse(cursor, uid, ids): |
|
|
|
res_dict = dict(serv_config.items('incoming_mail')) |
|
|
|
res_dict['port'] = int(res_dict.get('port', 993)) |
|
|
|
res_dict['is_ssl'] = bool(int(res_dict.get('is_ssl', 0))) |
|
|
|
res_dict['attach'] = bool(int(res_dict.get('attach', 0))) |
|
|
|
res_dict['original'] = bool(int(res_dict.get('original', 0))) |
|
|
|
res[conf.id] = res_dict |
|
|
|
for fetchmail in self.browse(cursor, uid, ids): |
|
|
|
global_section_name = 'incoming_mail' |
|
|
|
|
|
|
|
key_types = {'port': int, |
|
|
|
'is_ssl': bool, |
|
|
|
'attach': bool, |
|
|
|
'original': bool,} |
|
|
|
|
|
|
|
# default vals |
|
|
|
config_vals = {'port': 993, |
|
|
|
'is_ssl': 0, |
|
|
|
'attach': 0, |
|
|
|
'original': 0} |
|
|
|
if serv_config.has_section(global_section_name): |
|
|
|
config_vals.update(serv_config.items(global_section_name)) |
|
|
|
|
|
|
|
custom_section_name = '.'.join((global_section_name, fetchmail.name)) |
|
|
|
if serv_config.has_section(custom_section_name): |
|
|
|
config_vals.update(serv_config.items(custom_section_name)) |
|
|
|
|
|
|
|
for key, to_type in key_types.iteritems(): |
|
|
|
if config_vals.get(key): |
|
|
|
config_vals[key] = to_type(config_vals[key]) |
|
|
|
res[fetchmail.id] = config_vals |
|
|
|
return res |
|
|
|
|
|
|
|
_columns = { |
|
|
@ -89,54 +117,52 @@ class FetchmailServer(osv.osv): |
|
|
|
method=True, |
|
|
|
string='Server', |
|
|
|
type="char", |
|
|
|
multi='server', |
|
|
|
multi='income_mail_config', |
|
|
|
size=256, help="Hostname or IP of the mail server"), |
|
|
|
'port': fields.function(_get_incom_conf, |
|
|
|
method=True, |
|
|
|
string='Port', |
|
|
|
type="integer", |
|
|
|
multi='port', |
|
|
|
multi='income_mail_config', |
|
|
|
help="Hostname or IP of the mail server"), |
|
|
|
'type': fields.function(_get_incom_conf, |
|
|
|
method=True, |
|
|
|
string='Type', |
|
|
|
type="char", |
|
|
|
multi='type', |
|
|
|
multi='income_mail_config', |
|
|
|
size=64, |
|
|
|
help="pop, imap, local"), |
|
|
|
'is_ssl': fields.function(_get_incom_conf, |
|
|
|
method=True, |
|
|
|
string='Is SSL', |
|
|
|
type="boolean", |
|
|
|
multi='is_ssl', |
|
|
|
multi='income_mail_config', |
|
|
|
help='Connections are encrypted with SSL/TLS through' |
|
|
|
' a dedicated port (default: IMAPS=993, POP3S=995)'), |
|
|
|
'attach': fields.function(_get_incom_conf, |
|
|
|
method=True, |
|
|
|
string='Keep Attachments', |
|
|
|
type="boolean", |
|
|
|
multi='attach', |
|
|
|
multi='income_mail_config', |
|
|
|
help="Whether attachments should be downloaded. " |
|
|
|
"If not enabled, incoming emails will be stripped of any attachments before being processed"), |
|
|
|
'original': fields.function(_get_incom_conf, |
|
|
|
method=True, |
|
|
|
string='Keep Original', |
|
|
|
type="boolean", |
|
|
|
multi='attach', |
|
|
|
multi='income_mail_config', |
|
|
|
help="Whether a full original copy of each email should be kept for reference" |
|
|
|
"and attached to each processed message. This will usually double the size of your message database."), |
|
|
|
'user': fields.function(_get_incom_conf, |
|
|
|
method=True, |
|
|
|
string='Username', |
|
|
|
type="char", |
|
|
|
multi='user', |
|
|
|
multi='income_mail_config', |
|
|
|
size=64), |
|
|
|
'password': fields.function(_get_incom_conf, |
|
|
|
method=True, |
|
|
|
string='password', |
|
|
|
type="char", |
|
|
|
multi='password', |
|
|
|
multi='income_mail_config', |
|
|
|
size=64)} |
|
|
|
FetchmailServer() |
|
|
|
|
|
|
|
|