Esempio n. 1
0
 def _register_new_handlers(self, con):
     for handler in modules.get_handlers(self):
         if len(handler) == 5:
             name, func, typ, ns, priority = handler
             con.RegisterHandler(name, func, typ, ns, priority=priority)
         else:
             con.RegisterHandler(*handler)
     self.handlers_registered = True
Esempio n. 2
0
 def _unregister_new_handlers(self, con):
     if not con:
         return
     for handler in modules.get_handlers(self):
         if len(handler) > 4:
             handler = handler[:4]
         con.UnregisterHandler(*handler)
     self.handlers_registered = False
Esempio n. 3
0
 def cleanup(self):
     self._destroyed = True
     if Monitor.is_available():
         Monitor.disconnect(self._idle_handler_id)
         app.app.disconnect(self._screensaver_handler_id)
     if self._client is not None:
         # cleanup() is called before nbmxpp.Client has disconnected,
         # when we disable the account. So we need to unregister
         # handlers here.
         # TODO: cleanup() should not be called before disconnect is finished
         for handler in modules.get_handlers(self):
             self._client.unregister_handler(handler)
     modules.unregister_modules(self)
Esempio n. 4
0
    def _create_client(self):
        if self._destroyed:
            # If we disable an account cleanup() is called and all
            # modules are unregistered. Because disable_account() does not wait
            # for the client to properly disconnect, handlers of the
            # nbxmpp.Client() are emitted after we called cleanup().
            # After nbxmpp.Client() disconnects and is destroyed we create a
            # new instance with this method but modules.get_handlers() fails
            # because modules are already unregistered.
            # TODO: Make this nicer
            return
        log.info('Create new nbxmpp client')
        self._client = NBXMPPClient(log_context=self._account)
        self.connection = self._client
        self._client.set_domain(self._hostname)
        self._client.set_username(self._user)
        self._client.set_resource(get_resource(self._account))

        pass_saved = app.settings.get_account_setting(self._account,
                                                      'savepass')
        if pass_saved:
            # Request password from keyring only if the user chose to save
            # his password
            self.password = passwords.get_password(self._account)

        self._client.set_password(self.password)
        self._client.set_accepted_certificates(
            app.cert_store.get_certificates())

        self._client.subscribe('resume-failed', self._on_resume_failed)
        self._client.subscribe('resume-successful', self._on_resume_successful)
        self._client.subscribe('disconnected', self._on_disconnected)
        self._client.subscribe('connection-failed', self._on_connection_failed)
        self._client.subscribe('connected', self._on_connected)

        self._client.subscribe('stanza-sent', self._on_stanza_sent)
        self._client.subscribe('stanza-received', self._on_stanza_received)

        for handler in modules.get_handlers(self):
            self._client.register_handler(handler)
    def _register_handlers(self, con, con_type):
        # try to find another way to register handlers in each class
        # that defines handlers

        con.RegisterHandler('iq', self._siSetCB, 'set', nbxmpp.NS_SI)
        con.RegisterHandler('iq', self._siErrorCB, 'error', nbxmpp.NS_SI)
        con.RegisterHandler('iq', self._siResultCB, 'result', nbxmpp.NS_SI)
        con.RegisterHandler('iq', self._bytestreamSetCB, 'set',
                            nbxmpp.NS_BYTESTREAM)
        con.RegisterHandler('iq', self._bytestreamResultCB, 'result',
                            nbxmpp.NS_BYTESTREAM)
        con.RegisterHandler('iq', self._bytestreamErrorCB, 'error',
                            nbxmpp.NS_BYTESTREAM)
        con.RegisterHandlerOnce('iq', self.IBBAllIqHandler)
        con.RegisterHandler('iq', self.IBBIqHandler, ns=nbxmpp.NS_IBB)
        con.RegisterHandler('message',
                            self.IBBMessageHandler,
                            ns=nbxmpp.NS_IBB)

        con.RegisterHandler('iq', self._JingleCB, 'result')
        con.RegisterHandler('iq', self._JingleCB, 'error')
        con.RegisterHandler('iq', self._JingleCB, 'set', nbxmpp.NS_JINGLE)
        con.RegisterHandler('iq', self._ErrorCB, 'error')
        con.RegisterHandler('iq', self._IqCB)
        con.RegisterHandler('iq', self._ResultCB, 'result')
        con.RegisterHandler('unknown',
                            self._StreamCB,
                            nbxmpp.NS_XMPP_STREAMS,
                            xmlns=nbxmpp.NS_STREAMS)
        con.RegisterHandler('iq', self._PubkeyGetCB, 'get',
                            nbxmpp.NS_PUBKEY_PUBKEY)
        con.RegisterHandler('iq', self._PubkeyResultCB, 'result',
                            nbxmpp.NS_PUBKEY_PUBKEY)

        for handler in modules.get_handlers(self):
            con.RegisterHandler(*handler)
 def _unregister_handlers(self):
     if not self.connection:
         return
     for handler in modules.get_handlers(self):
         self.connection.UnregisterHandler(*handler)