diff --git a/src/jmc.py b/src/jmc.py index f454d20..2606e11 100755 --- a/src/jmc.py +++ b/src/jmc.py @@ -27,8 +27,10 @@ del sys.setdefaultencoding import jmc from jmc.runner import JMCRunner +from jmc.lang import Lang if __name__ == "__main__": - runner = JMCRunner("Jabber Mail Component", jmc.version) + runner = JMCRunner(Lang().get_default_lang_class().component_name, + jmc.version) runner.configure() runner.run() diff --git a/src/jmc/jabber/component.py b/src/jmc/jabber/component.py index 71ec10c..c0fa13b 100644 --- a/src/jmc/jabber/component.py +++ b/src/jmc/jabber/component.py @@ -31,7 +31,7 @@ from pyxmpp.message import Message from jcl.model.account import Account, PresenceAccount, LegacyJID from jcl.jabber.component import Handler, DefaultSubscribeHandler, \ - DefaultUnsubscribeHandler, DefaultPresenceHandler + DefaultUnsubscribeHandler, DefaultPresenceHandler, AccountManager from jcl.jabber.feeder import FeederComponent, Feeder, MessageSender, \ HeadlineSender, FeederHandler @@ -52,7 +52,7 @@ class MailComponent(FeederComponent): server, port, db_connection_str, - lang = Lang()): + lang=Lang()): """Use FeederComponent behavior and setup feeder and sender attributes. """ @@ -64,6 +64,7 @@ class MailComponent(FeederComponent): db_connection_str, lang=lang) self.handler = MailFeederHandler(MailFeeder(self), MailSender(self)) + self.account_manager = MailAccountManager(self) self.account_manager.account_classes = (IMAPAccount, POP3Account, SMTPAccount) @@ -74,6 +75,16 @@ class MailComponent(FeederComponent): self.available_handlers += [MailPresenceHandler()] self.unavailable_handlers += [MailPresenceHandler()] +class MailAccountManager(AccountManager): + """JMC specific account behavior""" + + def root_disco_get_info(self, name, category, type): + """Add jabber:iq:gateway support""" + disco_info = AccountManager.root_disco_get_info(self, name, category, type) + disco_info.add_feature("jabber:iq:gateway") + disco_info.add_identity(name, "headline", "newmail") + return disco_info + class MailFeeder(Feeder): """Email check""" @@ -252,7 +263,7 @@ class SendMailMessageHandler(MailHandler): class RootSendMailMessageHandler(SendMailMessageHandler): """Handle message sent to root JID""" - + def __init__(self): SendMailMessageHandler.__init__(self) self.to_regexp = re.compile("^\s*(to|TO|To)\s*:\s*(?P.*)") diff --git a/src/jmc/jabber/tests/component.py b/src/jmc/jabber/tests/component.py index 8004fa4..5aea2af 100644 --- a/src/jmc/jabber/tests/component.py +++ b/src/jmc/jabber/tests/component.py @@ -42,7 +42,7 @@ from jmc.model.account import MailAccount, IMAPAccount, POP3Account, \ from jmc.jabber.component import MailComponent, SendMailMessageHandler, \ RootSendMailMessageHandler, MailHandler, MailSubscribeHandler, \ MailUnsubscribeHandler, NoAccountError, MailFeederHandler, \ - MailPresenceHandler + MailPresenceHandler, MailAccountManager from jmc.lang import Lang if sys.platform == "win32": @@ -549,6 +549,15 @@ class SendMailMessageHandler_TestCase(unittest.TestCase): self.assertEquals(result[0].get_body(), Lang.en.send_mail_ok_body % ("user@test.com")) +class MailAccountManager_TestCase(unittest.TestCase): + def test_root_disco_get_info(self): + mam = MailAccountManager(None) + disco_info = mam.root_disco_get_info("JMC", "gateway", "smtp") + self.assertTrue(disco_info.has_feature("jabber:iq:gateway")) + self.assertEquals(len(disco_info.get_identities()), 2) + self.assertTrue(disco_info.identity_is("gateway", "smtp")) + self.assertTrue(disco_info.identity_is("headline", "newmail")) + class RootSendMailMessageHandler_TestCase(unittest.TestCase): def setUp(self): self.handler = RootSendMailMessageHandler() @@ -916,6 +925,7 @@ def suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(MailComponent_TestCase, 'test')) suite.addTest(unittest.makeSuite(SendMailMessageHandler_TestCase, 'test')) + suite.addTest(unittest.makeSuite(MailAccountManager_TestCase, 'test')) suite.addTest(unittest.makeSuite(RootSendMailMessageHandler_TestCase, 'test')) suite.addTest(unittest.makeSuite(MailHandler_TestCase, 'test')) suite.addTest(unittest.makeSuite(MailUnsubscribeHandler_TestCase, 'test')) diff --git a/src/jmc/runner.py b/src/jmc/runner.py index 4600a10..1590938 100644 --- a/src/jmc/runner.py +++ b/src/jmc/runner.py @@ -62,5 +62,7 @@ class JMCRunner(JCLRunner): lang = Lang(self.language)) 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") component.run() self._run(run_func)