Beispiel #1
0
    def __init__(self, con):
        BaseModule.__init__(self, con)

        self.handlers = [
            StanzaHandler(name='iq', typ='result',
                          callback=self._on_jingle_iq),
            StanzaHandler(name='iq', typ='error', callback=self._on_jingle_iq),
            StanzaHandler(name='iq',
                          typ='set',
                          ns=Namespace.JINGLE,
                          callback=self._on_jingle_iq),
            StanzaHandler(name='iq',
                          typ='get',
                          ns=Namespace.PUBKEY_PUBKEY,
                          callback=self._on_pubkey_request),
            StanzaHandler(name='iq',
                          typ='result',
                          ns=Namespace.PUBKEY_PUBKEY,
                          callback=self._pubkey_result_received),
        ]

        # dictionary: sessionid => JingleSession object
        self._sessions = {}

        # dictionary: (jid, iq stanza id) => JingleSession object,
        # one time callbacks
        self.__iq_responses = {}
        self.files = []
Beispiel #2
0
    def __init__(self, con):
        BaseModule.__init__(self, con, plugin=True)

        self.handlers = [
            StanzaHandler(name='message',
                          callback=self._message_received,
                          ns=nbxmpp.NS_OMEMO_TEMP,
                          priority=9),
            StanzaHandler(name='presence',
                          callback=self._on_muc_user_presence,
                          ns=nbxmpp.NS_MUC_USER,
                          priority=48),
        ]

        self._register_pubsub_handler(self._devicelist_notification_received)

        self.available = True

        self._own_jid = self._con.get_own_jid().getStripped()
        self._backend = self._get_backend()

        self._omemo_groupchats = set()
        self._muc_temp_store = {}
        self._query_for_bundles = []
        self._device_bundle_querys = []
        self._query_for_devicelists = []
Beispiel #3
0
    def __init__(self, con):
        BaseModule.__init__(self, con)

        self.handlers = [
            StanzaHandler(name='presence',
                          callback=self._presence_received,
                          priority=50),
            StanzaHandler(name='presence',
                          callback=self._subscribe_received,
                          typ='subscribe',
                          priority=49),
            StanzaHandler(name='presence',
                          callback=self._subscribed_received,
                          typ='subscribed',
                          priority=49),
            StanzaHandler(name='presence',
                          callback=self._unsubscribe_received,
                          typ='unsubscribe',
                          priority=49),
            StanzaHandler(name='presence',
                          callback=self._unsubscribed_received,
                          typ='unsubscribed',
                          priority=49),
        ]

        # keep the jids we auto added (transports contacts) to not send the
        # SUBSCRIBED event to GUI
        self.automatically_added = []

        # list of jid to auto-authorize
        self._jids_for_auto_auth = set()
Beispiel #4
0
    def _register_handlers(self):
        self._caller.peerhost = self.Connection._sock.getsockname()

        self.RegisterHandler(
            *StanzaHandler(name='message', callback=self._caller._messageCB))
        self.RegisterHandler(
            *StanzaHandler(name='message',
                           typ='error',
                           callback=self._caller._message_error_received))

        self._caller._register_new_handlers(self)
    def __init__(self, con):
        BaseModule.__init__(self, con)

        self.handlers = [
            StanzaHandler(name='iq',
                          callback=self.received_item,
                          typ='set',
                          ns=Namespace.ROSTERX),
            StanzaHandler(name='message',
                          callback=self.received_item,
                          ns=Namespace.ROSTERX),
        ]
Beispiel #6
0
    def __init__(self, client):
        BaseModule.__init__(self, client)

        self._client = client
        self.handlers = [
            StanzaHandler(name='message',
                          callback=self._process_message_base,
                          priority=5),
            StanzaHandler(name='message',
                          callback=self._process_message_after_base,
                          priority=10),
        ]
Beispiel #7
0
    def __init__(self, con):
        BaseModule.__init__(self, con)

        self.handlers = [
            StanzaHandler(name='iq',
                          callback=self._roster_push_received,
                          typ='set',
                          ns=Namespace.ROSTER),
            StanzaHandler(name='presence', callback=self._presence_received),
        ]

        self._data = {}
        self._set = None
Beispiel #8
0
    def __init__(self, con):
        BaseModule.__init__(self, con)

        self.handlers = [
            StanzaHandler(name='iq',
                          callback=self._answer_disco_info,
                          typ='get',
                          ns=nbxmpp.NS_DISCO_INFO),
            StanzaHandler(name='iq',
                          callback=self._answer_disco_items,
                          typ='get',
                          ns=nbxmpp.NS_DISCO_ITEMS),
        ]
 def __init__(self, client):
     BaseModule.__init__(self, client)
     self._client = client
     self.handlers = [
         StanzaHandler(name='message',
                       callback=self._process_http_auth,
                       ns=Namespace.HTTP_AUTH,
                       priority=40),
         StanzaHandler(name='iq',
                       callback=self._process_http_auth,
                       typ='get',
                       ns=Namespace.HTTP_AUTH,
                       priority=40)
     ]
Beispiel #10
0
    def __init__(self, client):
        BaseModule.__init__(self, client)

        self._client = client
        self.handlers = [
            StanzaHandler(name='message',
                          callback=self._process_message_delay,
                          ns=Namespace.DELAY2,
                          priority=15),
            StanzaHandler(name='presence',
                          callback=self._process_presence_delay,
                          ns=Namespace.DELAY2,
                          priority=15)
        ]
Beispiel #11
0
    def __init__(self, client):
        BaseModule.__init__(self, client)

        self._client = client
        self.handlers = [
            StanzaHandler(name='message',
                          callback=self._process_pgplegacy_message,
                          ns=Namespace.ENCRYPTED,
                          priority=7),
            StanzaHandler(name='presence',
                          callback=self._process_signed,
                          ns=Namespace.SIGNED,
                          priority=15)
        ]
Beispiel #12
0
    def __init__(self, con):
        BaseModule.__init__(self, con)

        self.handlers = [
            StanzaHandler(name='message',
                          callback=self._http_auth,
                          ns=NS_HTTP_AUTH,
                          priority=45),
            StanzaHandler(name='iq',
                          callback=self._http_auth,
                          typ='get',
                          ns=NS_HTTP_AUTH,
                          priority=45)
        ]
Beispiel #13
0
    def __init__(self, client):
        BaseModule.__init__(self, client)

        self._client = client
        self.handlers = [
            StanzaHandler(name='message',
                          callback=self._process_omemo_devicelist,
                          ns=Namespace.PUBSUB_EVENT,
                          priority=16),
            StanzaHandler(name='message',
                          callback=self._process_omemo_message,
                          ns=Namespace.OMEMO_TEMP,
                          priority=7),
        ]
Beispiel #14
0
    def __init__(self, client):
        BaseModule.__init__(self, client)

        self._client = client
        self.handlers = [
            StanzaHandler(name='message',
                          callback=self._process_pubsub_openpgp,
                          ns=Namespace.PUBSUB_EVENT,
                          priority=16),
            StanzaHandler(name='message',
                          callback=self._process_openpgp_message,
                          ns=Namespace.OPENPGP,
                          priority=7),
        ]
    def test_purge_event(self):
        def _on_message(_con, _stanza, properties):

            pubsub_event = PubSubEventData(node='princely_musings',
                                           id=None,
                                           item=None,
                                           data=None,
                                           deleted=False,
                                           retracted=False,
                                           purged=True)

            self.assertEqual(pubsub_event, properties.pubsub_event)

        event = '''
            <message from='*****@*****.**' id='b5ac48d0-0f9c-11dc-8754-001143d5d5db'>
                <event xmlns='http://jabber.org/protocol/pubsub#event'>
                    <purge node='princely_musings'/>
                </event>
            </message>
        '''

        self.dispatcher.register_handler(
            StanzaHandler(name='message',
                          callback=_on_message,
                          ns=Namespace.PUBSUB_EVENT,
                          priority=16))

        self.dispatcher.process_data(event)
    def test_retracted_event(self):
        def _on_message(_con, _stanza, properties):

            pubsub_event = PubSubEventData(
                node='princely_musings',
                id='ae890ac52d0df67ed7cfdf51b644e901',
                item=None,
                data=None,
                deleted=False,
                retracted=True,
                purged=False)

            self.assertEqual(pubsub_event, properties.pubsub_event)

        event = '''
            <message from='*****@*****.**' id='b5ac48d0-0f9c-11dc-8754-001143d5d5db'>
                <items node='princely_musings'>
                    <retract id='ae890ac52d0df67ed7cfdf51b644e901'/>
                </items>
            </message>
        '''

        self.dispatcher.register_handler(
            StanzaHandler(name='message',
                          callback=_on_message,
                          ns=Namespace.PUBSUB_EVENT,
                          priority=16))

        self.dispatcher.process_data(event)
    def test_delete_event(self):
        def _on_message(_con, _stanza, properties):

            pubsub_event = PubSubEventData(node='princely_musings',
                                           id=None,
                                           item=None,
                                           data=None,
                                           deleted=True,
                                           retracted=False,
                                           purged=False)

            self.assertEqual(pubsub_event, properties.pubsub_event)

        event = '''
            <message from='*****@*****.**' id='b5ac48d0-0f9c-11dc-8754-001143d5d5db'>
                <delete node='princely_musings'>
                    <redirect uri='xmpp:[email protected]?;node=blog'/>
                </delete>
            </message>
        '''

        self.dispatcher.register_handler(
            StanzaHandler(name='message',
                          callback=_on_message,
                          ns=Namespace.PUBSUB_EVENT,
                          priority=16))

        self.dispatcher.process_data(event)
Beispiel #18
0
    def _create_client(self):
        self._client = Client(log_context='TEST')
        self._client.set_domain(self.address.domain)
        self._client.set_username(self.address.localpart)
        self._client.set_resource('test')

        proxy_ip = self._builder.proxy_ip.get_text()
        if proxy_ip:
            proxy_port = int(self._builder.proxy_port.get_text())
            proxy_host = '%s:%s' % (proxy_ip, proxy_port)
            proxy = ProxyData(
                self._builder.proxy_type.get_active_text().lower(), proxy_host,
                self._builder.proxy_username.get_text() or None,
                self._builder.proxy_password.get_text() or None)
            self._client.set_proxy(proxy)

        self._client.set_connection_types(self._get_connection_types())
        self._client.set_protocols(self._get_connection_protocols())

        self._client.set_password(self.password)

        self._client.subscribe('resume-failed', self._on_signal)
        self._client.subscribe('resume-successful', self._on_signal)
        self._client.subscribe('disconnected', self._on_signal)
        self._client.subscribe('connection-lost', self._on_signal)
        self._client.subscribe('connection-failed', self._on_signal)
        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)

        self._client.register_handler(
            StanzaHandler('message', self._on_message))
Beispiel #19
0
    def test_bookmark_1_parsing(self):
        def _on_message(_con, _stanza, properties):

            data = [
                BookmarkData(
                    jid=JID.from_string('*****@*****.**'),
                    name='The Play\'s the Thing',
                    autojoin=True,
                    password='******',
                    nick='JC'),
                BookmarkData(
                    jid=JID.from_string('*****@*****.**'),
                    name='Second room',
                    autojoin=False,
                    password=None,
                    nick=None)
            ]

            pubsub_event = PubSubEventData(node='storage:bookmarks',
                                           id='current',
                                           item=None,
                                           data=data,
                                           deleted=False,
                                           retracted=False,
                                           purged=False)

            # We cant compare Node objects
            pubsub_event_ = properties.pubsub_event._replace(item=None)
            self.assertEqual(pubsub_event, pubsub_event_)

        event = '''
            <message from='*****@*****.**'>
                <event xmlns='http://jabber.org/protocol/pubsub#event'>
                    <items node='storage:bookmarks'>
                        <item id='current'>
                            <storage xmlns='storage:bookmarks'>
                                <conference name='The Play&apos;s the Thing'
                                            autojoin='true'
                                            jid='*****@*****.**'>
                                    <password>pass</password>
                                    <nick>JC</nick>
                                </conference>
                                <conference name='Second room'
                                            autojoin='0'
                                            jid='*****@*****.**'>
                                </conference>
                            </storage>
                        </item>
                    </items>
                </event>
            </message>
        '''

        self.dispatcher.register_handler(
            StanzaHandler(name='message',
                          callback=_on_message,
                          ns=Namespace.PUBSUB_EVENT))

        self.dispatcher.process_data(event)
Beispiel #20
0
    def __init__(self, con):
        BaseModule.__init__(self, con)

        self.handlers = [
            StanzaHandler(name='message',
                          callback=self._set_message_archive_info,
                          priority=41),
            StanzaHandler(name='message',
                          callback=self._mam_message_received,
                          priority=51),
        ]

        self.available = False
        self._mam_query_ids = {}

        # Holds archive jids where catch up was successful
        self._catch_up_finished = []
Beispiel #21
0
    def __init__(self, con):
        BaseModule.__init__(self, con)

        self.handlers = [
            StanzaHandler(name='iq',
                          callback=self._ibb_received,
                          ns=Namespace.IBB),
        ]
Beispiel #22
0
    def __init__(self, con):
        BaseModule.__init__(self, con)

        self.handlers = [
            StanzaHandler(name='iq',
                          callback=self._answer_request,
                          typ='get',
                          ns=Namespace.TIME_REVISED),
        ]
Beispiel #23
0
    def __init__(self, con):
        BaseModule.__init__(self, con)

        self.handlers = [
            StanzaHandler(name='message',
                          callback=self._process_chat_marker,
                          ns=Namespace.CHATMARKERS,
                          priority=47),
        ]
Beispiel #24
0
    def __init__(self, con):
        BaseModule.__init__(self, con)

        self.handlers = [
            StanzaHandler(name='message',
                          callback=self._check_if_unknown_contact,
                          priority=41),
            StanzaHandler(name='message',
                          callback=self._message_received,
                          priority=50),
            StanzaHandler(name='message',
                          typ='error',
                          callback=self._message_error_received,
                          priority=50),
        ]

        # XEPs for which this message module should not be executed
        self._message_namespaces = set([Namespace.ROSTERX, Namespace.IBB])
Beispiel #25
0
    def __init__(self, con):
        BaseModule.__init__(self, con)

        self.handlers = [
            StanzaHandler(name='iq',
                          typ='get',
                          callback=self._answer_request,
                          ns=nbxmpp.NS_LAST),
        ]
Beispiel #26
0
    def __init__(self, con):
        BaseModule.__init__(self, con)

        self.handlers = [
            StanzaHandler(name='message',
                          callback=self._process_message_receipt,
                          ns=Namespace.RECEIPTS,
                          priority=46),
        ]
Beispiel #27
0
Datei: iq.py Projekt: bj-h/gajim
    def __init__(self, con):
        BaseModule.__init__(self, con)

        self.handlers = [
            StanzaHandler(name='iq',
                          callback=self._iq_error_received,
                          typ='error',
                          priority=51),
        ]
Beispiel #28
0
    def __init__(self, client):
        BaseModule.__init__(self, client)

        self._client = client
        self.handlers = [
            StanzaHandler(name='message',
                          callback=self._process_pubsub_nickname,
                          ns=Namespace.PUBSUB_EVENT,
                          priority=16),
            StanzaHandler(name='message',
                          callback=self._process_nickname,
                          ns=Namespace.NICK,
                          priority=40),
            StanzaHandler(name='presence',
                          callback=self._process_nickname,
                          ns=Namespace.NICK,
                          priority=40),
        ]
Beispiel #29
0
    def register_handlers(self):
        handlers = [
            StanzaHandler(name='enabled',
                          callback=self._on_enabled,
                          xmlns=Namespace.STREAM_MGMT),
            StanzaHandler(name='failed',
                          callback=self._on_failed,
                          xmlns=Namespace.STREAM_MGMT),
            StanzaHandler(name='r',
                          callback=self._send_ack,
                          xmlns=Namespace.STREAM_MGMT),
            StanzaHandler(name='a',
                          callback=self._on_ack,
                          xmlns=Namespace.STREAM_MGMT)
        ]

        for handler in handlers:
            self._client.register_handler(handler)
Beispiel #30
0
    def __init__(self, client):
        BaseModule.__init__(self, client)

        self._client = client
        self.handlers = [
            StanzaHandler(name='presence',
                          callback=self._process_presence_base,
                          priority=10),
        ]