diff options
Diffstat (limited to 'src/jmc/runner.py')
-rw-r--r-- | src/jmc/runner.py | 78 |
1 files changed, 70 insertions, 8 deletions
diff --git a/src/jmc/runner.py b/src/jmc/runner.py index bdc69d6..e900547 100644 --- a/src/jmc/runner.py +++ b/src/jmc/runner.py @@ -3,18 +3,18 @@ ## Login : David Rousselie <dax@happycoders.org> ## Started on Thu May 17 21:58:32 2007 David Rousselie ## $Id$ -## +## ## Copyright (C) 2007 David Rousselie ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. -## +## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. -## +## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA @@ -22,10 +22,14 @@ from jcl.runner import JCLRunner -from jmc.model.account import MailAccount, IMAPAccount, POP3Account, SMTPAccount +import jmc.model.account as account +from jmc.model.account import MailAccount, IMAPAccount, POP3Account, \ + AbstractSMTPAccount, GlobalSMTPAccount, SMTPAccount from jmc.jabber.component import MailComponent from jmc.lang import Lang +from sqlobject import * + class JMCRunner(JCLRunner): def __init__(self, component_name, component_version): @@ -34,12 +38,49 @@ class JMCRunner(JCLRunner): # define new options self.check_interval = 1 self.mail_default_encoding = "iso-8859-1" + self.smtp_default_login = None + self.smtp_default_password = None + self.smtp_default_host = None + self.smtp_default_port = 0 + self.smtp_default_tls = False + self.smtp_default_label = None + self.enable_smtp_default_account = False self.options += [("i:", "check-interval=", "jmc", - " INTERVAL\t\t\tInterval unit in minute between mail checks", - lambda arg: setattr(self, "check_interval", int(arg))), + " INTERVAL\t\t\tInterval unit in minutes between mail checks", + lambda arg: self.set_attr("check_interval", + int(arg))), ("e:", "mail-default-encoding=", "jmc", " ENCODING\t\tDefault encoding of the component", - lambda arg: setattr(self, "mail_default_encoding", arg))] + lambda arg: self.set_attr("mail_default_encoding", + arg)), + ("g:", "smtp-default-login=", "smtp", + " LOGIN\t\t\tDefault SMTP login", + lambda arg: self.set_attr("smtp_default_login", arg)), + ("a:", "smtp-default-password=", "smtp", + " PASSWORD\t\tDefault SMTP password", + lambda arg: self.set_attr("smtp_default_password", + arg)), + ("t:", "smtp-default-host=", "smtp", + " HOST\t\t\tDefault SMTP host", + lambda arg: self.set_attr("smtp_default_host", arg)), + ("r:", "smtp-default-port=", "smtp", + " PORT\t\t\tDefault SMTP port", + lambda arg: self.set_attr("smtp_default_port", + int(arg))), + ("m:", "smtp-default-tls=", "smtp", + " True/False\t\tDefault SMTP TLS connexion", + lambda arg: self.set_attr("smtp_default_tls", + arg.lower() == "true" \ + or arg == "1")), + ("n:", "enable-smtp-default-account=", "smtp", + " True/False\t\tEnable default SMTP connexion", + lambda arg: self.set_attr("enable_smtp_default_account", + arg.lower() == "true" \ + or arg == "1")), + ("b:", "smtp-default-label=", "smtp", + "\t\t\tDefault SMTP account label", + lambda arg: self.set_attr("smtp_default_label", + arg))] # override JCL default self.service_jid = "jmc.localhost" self.db_url = "sqlite:///var/spool/jabber/jmc.db" @@ -51,8 +92,26 @@ class JMCRunner(JCLRunner): MailAccount.createTable(ifNotExists=True) IMAPAccount.createTable(ifNotExists=True) POP3Account.createTable(ifNotExists=True) + AbstractSMTPAccount.createTable(ifNotExists=True) + GlobalSMTPAccount.createTable(ifNotExists=True) SMTPAccount.createTable(ifNotExists=True) - + + def setup_smtp_default(self): + """Replace default values for GlobalSMTPAccount""" + if self.smtp_default_login: + account.smtp_default_login = self.smtp_default_login + if self.smtp_default_password: + account.smtp_default_password = self.smtp_default_password + if self.smtp_default_host: + account.smtp_default_host = self.smtp_default_host + if self.smtp_default_port: + account.smtp_default_port = self.smtp_default_port + if self.smtp_default_tls: + account.smtp_default_tls = self.smtp_default_tls + if self.smtp_default_label: + Lang().get_default_lang_class().type_globalsmtp_name = \ + self.smtp_default_label + def run(self): def run_func(): component = MailComponent(jid=self.service_jid, @@ -62,11 +121,14 @@ class JMCRunner(JCLRunner): lang=Lang(self.language), config=self.config, config_file=self.config_file) + if self.enable_smtp_default_account: + component.account_manager.account_classes += (GlobalSMTPAccount,) MailAccount.default_encoding = self.mail_default_encoding component.check_interval = self.check_interval component.disco_identity.set_category("gateway") component.disco_identity.set_type("smtp") return component.run() + self.setup_smtp_default() self._run(run_func) def main(): |