Exemplo n.º 1
0
    def plugin_init(self):
        register_stanza_plugin(Message, Propose)
        register_stanza_plugin(Message, Retract)
        register_stanza_plugin(Message, Accept)
        register_stanza_plugin(Message, Proceed)
        register_stanza_plugin(Message, Reject)

        self.xmpp.register_handler(
            Callback('Indicating Intent to Start a Session',
                StanzaPath('message/jingle_propose'),
                self._handle_propose))
        self.xmpp.register_handler(
            Callback('Disavowing Intent to Start a Session',
                StanzaPath('message/jingle_retract'),
                self._handle_retract))
        self.xmpp.register_handler(
            Callback('Accepting Intent to Start a Session',
                StanzaPath('message/jingle_accept'),
                self._handle_accept))
        self.xmpp.register_handler(
            Callback('Proceed',
                StanzaPath('message/jingle_proceed'),
                self._handle_accept))
        self.xmpp.register_handler(
            Callback('Rejecting Intent to Start a Session',
                StanzaPath('message/jingle_reject'),
                self._handle_reject))
Exemplo n.º 2
0
    def plugin_init(self):
        self._streams = {}
        self._preauthed_sids = {}

        register_stanza_plugin(Iq, Open)
        register_stanza_plugin(Iq, Close)
        register_stanza_plugin(Iq, Data)
        register_stanza_plugin(Message, Data)

        self.xmpp.register_handler(
            CoroutineCallback('IBB Open', StanzaPath('iq@type=set/ibb_open'),
                              self._handle_open_request))

        self.xmpp.register_handler(
            CoroutineCallback('IBB Close', StanzaPath('iq@type=set/ibb_close'),
                              self._handle_close))

        self.xmpp.register_handler(
            CoroutineCallback('IBB Data', StanzaPath('iq@type=set/ibb_data'),
                              self._handle_data))

        self.xmpp.register_handler(
            CoroutineCallback('IBB Message Data',
                              StanzaPath('message/ibb_data'),
                              self._handle_data))

        self.api.register(self._authorized, 'authorized', default=True)
        self.api.register(self._authorized_sid, 'authorized_sid', default=True)
        self.api.register(self._preauthorize_sid,
                          'preauthorize_sid',
                          default=True)
        self.api.register(self._get_stream, 'get_stream', default=True)
        self.api.register(self._set_stream, 'set_stream', default=True)
        self.api.register(self._del_stream, 'del_stream', default=True)
Exemplo n.º 3
0
    def plugin_init(self):
        self.node_event_map = {}

        self.xmpp.register_handler(
            Callback('Pubsub Event: Items',
                     StanzaPath('message/pubsub_event/items'),
                     self._handle_event_items))
        self.xmpp.register_handler(
            Callback('Pubsub Event: Purge',
                     StanzaPath('message/pubsub_event/purge'),
                     self._handle_event_purge))
        self.xmpp.register_handler(
            Callback('Pubsub Event: Delete',
                     StanzaPath('message/pubsub_event/delete'),
                     self._handle_event_delete))
        self.xmpp.register_handler(
            Callback('Pubsub Event: Configuration',
                     StanzaPath('message/pubsub_event/configuration'),
                     self._handle_event_configuration))
        self.xmpp.register_handler(
            Callback('Pubsub Event: Subscription',
                     StanzaPath('message/pubsub_event/subscription'),
                     self._handle_event_subscription))

        self.xmpp['xep_0131'].supported_headers.add('SubID')
Exemplo n.º 4
0
    def plugin_init(self):
        """
        Start the XEP-0030 plugin.
        """
        self.xmpp.register_handler(
            Callback('Disco Info', StanzaPath('iq/disco_info'),
                     self._handle_disco_info))

        self.xmpp.register_handler(
            Callback('Disco Items', StanzaPath('iq/disco_items'),
                     self._handle_disco_items))

        register_stanza_plugin(Iq, DiscoInfo)
        register_stanza_plugin(Iq, DiscoItems)

        self.static = StaticDisco(self.xmpp, self)

        self._disco_ops = [
            'get_info', 'set_info', 'set_identities', 'set_features',
            'get_items', 'set_items', 'del_items', 'add_identity',
            'del_identity', 'add_feature', 'del_feature', 'add_item',
            'del_item', 'del_identities', 'del_features', 'cache_info',
            'get_cached_info', 'supports', 'has_identity'
        ]

        for op in self._disco_ops:
            self.api.register(getattr(self.static, op), op, default=True)
Exemplo n.º 5
0
    def plugin_init(self):
        """ Start the XEP-0325 plugin """

        self.xmpp.register_handler(
            Callback('Control Event:DirectSet', StanzaPath('message/set'),
                     self._handle_direct_set))

        self.xmpp.register_handler(
            Callback('Control Event:SetReq', StanzaPath('iq@type=set/set'),
                     self._handle_set_req))

        self.xmpp.register_handler(
            Callback('Control Event:SetResponse',
                     StanzaPath('iq@type=result/setResponse'),
                     self._handle_set_response))

        self.xmpp.register_handler(
            Callback('Control Event:SetResponseError',
                     StanzaPath('iq@type=error/setResponse'),
                     self._handle_set_response))

        # Server side dicts
        self.nodes = {}
        self.sessions = {}

        self.last_seqnr = 0

        ## For testning only
        self.test_authenticated_from = ""
Exemplo n.º 6
0
    def plugin_init(self):
        self._cids = {}

        register_stanza_plugin(Iq, BitsOfBinary)
        register_stanza_plugin(Message, BitsOfBinary)
        register_stanza_plugin(Presence, BitsOfBinary)

        self.xmpp.register_handler(
            Callback('Bits of Binary - Iq',
                StanzaPath('iq/bob'),
                self._handle_bob_iq))

        self.xmpp.register_handler(
            Callback('Bits of Binary - Message',
                StanzaPath('message/bob'),
                self._handle_bob))

        self.xmpp.register_handler(
            Callback('Bits of Binary - Presence',
                StanzaPath('presence/bob'),
                self._handle_bob))

        self.api.register(self._get_bob, 'get_bob', default=True)
        self.api.register(self._set_bob, 'set_bob', default=True)
        self.api.register(self._del_bob, 'del_bob', default=True)
Exemplo n.º 7
0
    def plugin_init(self):
        self.gpg = GPG(gnupghome=self.gpg_home,
                       gpgbinary=self.gpg_binary,
                       use_agent=self.use_agent,
                       keyring=self.keyring)

        self.xmpp.add_filter('out', self._sign_presence)

        self._keyids = {}

        self.api.register(self._set_keyid, 'set_keyid', default=True)
        self.api.register(self._get_keyid, 'get_keyid', default=True)
        self.api.register(self._del_keyid, 'del_keyid', default=True)
        self.api.register(self._get_keyids, 'get_keyids', default=True)

        register_stanza_plugin(Presence, Signed)
        register_stanza_plugin(Message, Encrypted)

        self.xmpp.add_event_handler('unverified_signed_presence',
                                    self._handle_unverified_signed_presence)

        self.xmpp.register_handler(
            Callback('Signed Presence', StanzaPath('presence/signed'),
                     self._handle_signed_presence))

        self.xmpp.register_handler(
            Callback('Encrypted Message', StanzaPath('message/encrypted'),
                     self._handle_encrypted_message))
Exemplo n.º 8
0
    def plugin_init(self):
        register_stanza_plugin(Iq, Confirm)
        register_stanza_plugin(Message, Confirm)

        self.xmpp.register_handler(
            Callback('Confirm', StanzaPath('iq@type=get/confirm'),
                     self._handle_iq_confirm))

        self.xmpp.register_handler(
            Callback('Confirm', StanzaPath('message/confirm'),
                     self._handle_message_confirm))
Exemplo n.º 9
0
 def plugin_init(self):
     stanza.register_plugins()
     self.xmpp.register_handler(Callback(
         'RAI Received',
         StanzaPath("presence/rai"),
         self._handle_rai,
     ))
     self.xmpp.register_handler(Callback(
         'RAI Activity Received',
         StanzaPath("presence/rai/activity"),
         self._handle_rai_activity,
     ))
Exemplo n.º 10
0
    def plugin_init(self):
        register_stanza_plugin(Iq, BlockList)
        register_stanza_plugin(Iq, Block)
        register_stanza_plugin(Iq, Unblock)

        self.xmpp.register_handler(
            Callback('Blocked Contact', StanzaPath('iq@type=set/block'),
                     self._handle_blocked))

        self.xmpp.register_handler(
            Callback('Unblocked Contact', StanzaPath('iq@type=set/unblock'),
                     self._handle_unblocked))
Exemplo n.º 11
0
 def plugin_init(self):
     self.xmpp.register_handler(
         Callback('HTTP Request', StanzaPath('iq/http-req'),
                  self._handle_request))
     self.xmpp.register_handler(
         Callback('HTTP Response', StanzaPath('iq/http-resp'),
                  self._handle_response))
     register_stanza_plugin(Iq, HTTPRequest, iterable=True)
     register_stanza_plugin(Iq, HTTPResponse, iterable=True)
     register_stanza_plugin(HTTPRequest, Headers, iterable=True)
     register_stanza_plugin(HTTPRequest, HTTPData, iterable=True)
     register_stanza_plugin(HTTPResponse, Headers, iterable=True)
     register_stanza_plugin(HTTPResponse, HTTPData, iterable=True)
Exemplo n.º 12
0
    def plugin_init(self):
        register_stanza_plugin(Message, Request)
        register_stanza_plugin(Message, Received)

        self.xmpp.add_filter('out', self._filter_add_receipt_request)

        self.xmpp.register_handler(
            Callback('Message Receipt', StanzaPath('message/receipt'),
                     self._handle_receipt_received))

        self.xmpp.register_handler(
            Callback('Message Receipt Request',
                     StanzaPath('message/request_receipt'),
                     self._handle_receipt_request))
Exemplo n.º 13
0
    def plugin_init(self):
        register_stanza_plugin(StreamFeatures, RegisterFeature)
        register_stanza_plugin(Iq, Register)

        if self.xmpp.is_component:
            self.xmpp["xep_0030"].add_feature("jabber:iq:register")
            self.xmpp.register_handler(
                CoroutineCallback(
                    "registration",
                    StanzaPath("/iq/register"),
                    self._handle_registration,
                )
            )
            self._user_store = {}
            self.api.register(self._user_get, "user_get")
            self.api.register(self._user_remove, "user_remove")
            self.api.register(self._make_registration_form, "make_registration_form")
            self.api.register(self._user_validate, "user_validate")
        else:
            self.xmpp.register_feature(
                "register",
                self._handle_register_feature,
                restart=False,
                order=self.order,
            )

        register_stanza_plugin(Register, self.xmpp['xep_0004'].stanza.Form)
        register_stanza_plugin(Register, self.xmpp['xep_0066'].stanza.OOB)

        self.xmpp.add_event_handler('connected', self._force_registration)
Exemplo n.º 14
0
    def retrieve(self,
                 jid=None,
                 start=None,
                 end=None,
                 with_jid=None,
                 ifrom=None,
                 timeout=None,
                 callback=None,
                 iterator=False):
        iq = self.xmpp.Iq()
        query_id = iq['id']

        iq['to'] = jid
        iq['from'] = ifrom
        iq['type'] = 'get'
        iq['mam']['queryid'] = query_id
        iq['mam']['start'] = start
        iq['mam']['end'] = end
        iq['mam']['with'] = with_jid

        collector = Collector(
            'MAM_Results_%s' % query_id,
            StanzaPath('message/mam_result@queryid=%s' % query_id))
        self.xmpp.register_handler(collector)

        if iterator:
            return self.xmpp['xep_0059'].iterate(iq, 'mam', 'results')

        def wrapped_cb(iq):
            results = collector.stop()
            if iq['type'] == 'result':
                iq['mam']['results'] = results
            callback(iq)

        return iq.send(timeout=timeout, callback=wrapped_cb)
Exemplo n.º 15
0
    def view(self, nodes, ifrom=None, timeout=None, callback=None,
             timeout_callback=None):
        if not isinstance(nodes, (list, set)):
            nodes = [nodes]

        iq = self.xmpp.Iq()
        iq['type'] = 'get'
        iq['from'] = ifrom
        offline = iq['offline']
        for node in nodes:
            item = stanza.Item()
            item['node'] = node
            item['action'] = 'view'
            offline.append(item)

        collector = Collector(
            'Offline_Results_%s' % iq['id'],
            StanzaPath('message/offline'))
        self.xmpp.register_handler(collector)

        def wrapped_cb(iq):
            results = collector.stop()
            if iq['type'] == 'result':
                iq['offline']['results'] = results
            callback(iq)
        iq.send(timeout=timeout, callback=wrapped_cb,
                       timeout_callback=timeout_callback)
Exemplo n.º 16
0
    def plugin_init(self):
        register_stanza_plugin(Message, Markable)
        register_stanza_plugin(Message, Received)
        register_stanza_plugin(Message, Displayed)
        register_stanza_plugin(Message, Acknowledged)

        self.xmpp.register_handler(
            Callback('Received Chat Marker', StanzaPath('message/received'),
                     self._handle_received))
        self.xmpp.register_handler(
            Callback('Displayed Chat Marker', StanzaPath('message/displayed'),
                     self._handle_displayed))
        self.xmpp.register_handler(
            Callback('Acknowledged Chat Marker',
                     StanzaPath('message/acknowledged'),
                     self._handle_acknowledged))
Exemplo n.º 17
0
    def retrieve(self,
                 jid=None,
                 start=None,
                 end=None,
                 with_jid=None,
                 ifrom=None,
                 timeout=None,
                 callback=None,
                 iterator=False,
                 rsm=None):
        iq = self.xmpp.Iq()
        query_id = iq['id']

        iq['to'] = jid
        iq['from'] = ifrom
        iq['type'] = 'set'
        iq['mam']['queryid'] = query_id
        iq['mam']['start'] = start
        iq['mam']['end'] = end
        iq['mam']['with'] = with_jid
        if rsm:
            for key, value in rsm.items():
                iq['mam']['rsm'][key] = str(value)

        cb_data = {}

        def pre_cb(query):
            query['mam']['queryid'] = query['id']
            collector = Collector(
                'MAM_Results_%s' % query_id,
                StanzaPath('message/mam_result@queryid=%s' % query['id']))
            self.xmpp.register_handler(collector)
            cb_data['collector'] = collector

        def post_cb(result):
            results = cb_data['collector'].stop()
            if result['type'] == 'result':
                result['mam']['results'] = results

        if iterator:
            return self.xmpp['xep_0059'].iterate(iq,
                                                 'mam',
                                                 'results',
                                                 recv_interface='mam_fin',
                                                 pre_cb=pre_cb,
                                                 post_cb=post_cb)

        collector = Collector(
            'MAM_Results_%s' % query_id,
            StanzaPath('message/mam_result@queryid=%s' % query_id))
        self.xmpp.register_handler(collector)

        def wrapped_cb(iq):
            results = collector.stop()
            if iq['type'] == 'result':
                iq['mam']['results'] = results
            if callback:
                callback(iq)

        return iq.send(timeout=timeout, callback=wrapped_cb)
Exemplo n.º 18
0
    def plugin_init(self):
        self.xmpp.register_handler(
            Callback('Direct MUC Invitations',
                     StanzaPath('message/groupchat_invite'),
                     self._handle_invite))

        register_stanza_plugin(Message, Invite)
Exemplo n.º 19
0
    def plugin_init(self):
        register_stanza_plugin(Iq, stanza.UserSettings)

        self.xmpp.register_handler(
            Callback('Google Settings',
                     StanzaPath('iq@type=set/google_settings'),
                     self._handle_settings_change))
Exemplo n.º 20
0
    def plugin_init(self):
        """Start the XEP-0224 plugin."""
        register_stanza_plugin(Message, stanza.Attention)

        self.xmpp.register_handler(
            Callback('Attention', StanzaPath('message/attention'),
                     self._handle_attention))
Exemplo n.º 21
0
 def pre_cb(query):
     query['mam']['queryid'] = query['id']
     collector = Collector(
         'MAM_Results_%s' % query_id,
         StanzaPath('message/mam_result@queryid=%s' % query['id']))
     self.xmpp.register_handler(collector)
     cb_data['collector'] = collector
Exemplo n.º 22
0
    def rawxml(self, args):
        """
        /rawxml <xml stanza>
        """

        if not args:
            return

        stanza = args
        try:
            stanza = StanzaBase(self.core.xmpp, xml=ET.fromstring(stanza))
            if stanza.xml.tag == 'iq' and stanza.xml.attrib.get('type') in (
                    'get', 'set'):
                iq_id = stanza.xml.attrib.get('id')
                if not iq_id:
                    iq_id = self.core.xmpp.new_id()
                    stanza['id'] = iq_id

                def iqfunc(iq):
                    "handler for an iq reply"
                    self.core.information('%s' % iq, 'Iq')
                    self.core.xmpp.remove_handler('Iq %s' % iq_id)

                self.core.xmpp.register_handler(
                    Callback('Iq %s' % iq_id, StanzaPath('iq@id=%s' % iq_id),
                             iqfunc))
            stanza.send()
        except:
            self.core.information('Could not send custom stanza', 'Error')
            log.debug('/rawxml: Could not send custom stanza (%s)',
                      repr(stanza),
                      exc_info=True)
Exemplo n.º 23
0
    def plugin_init(self):
        register_stanza_plugin(Message, stanza.NoSave)
        register_stanza_plugin(Iq, stanza.NoSaveQuery)

        self.xmpp.register_handler(
            Callback('Google Nosave', StanzaPath('iq@type=set/google_nosave'),
                     self._handle_nosave_change))
Exemplo n.º 24
0
 def plugin_init(self) -> None:
     stanza.register_plugins()
     self.xmpp.register_handler(
         Callback(
             "Message Retracted",
             StanzaPath("message/apply_to/retract"),
             self._handle_retract_message,
         ))
Exemplo n.º 25
0
 def plugin_init(self) -> None:
     stanza.register_plugins()
     self.xmpp.register_handler(Callback(
         'Action received',
         StanzaPath('message/action'),
         self._handle_action,
     ))
     self.xmpp.register_handler(Callback(
         'Response received',
         StanzaPath('message/response'),
         self._handle_response,
     ))
     self.xmpp.register_handler(Callback(
         'ActionSelected received',
         StanzaPath('message/action_selected'),
         self._handle_action_selected,
     ))
Exemplo n.º 26
0
    def plugin_init(self):
        self.xmpp.register_handler(
            Callback('Data Form', StanzaPath('message/form'),
                     self.handle_form))

        register_stanza_plugin(FormField, FieldOption, iterable=True)
        register_stanza_plugin(Form, FormField, iterable=True)
        register_stanza_plugin(Message, Form)
Exemplo n.º 27
0
 def plugin_init(self) -> None:
     stanza.register_plugins()
     self.xmpp.register_handler(
         Callback(
             'Moderated Message',
             StanzaPath('message/apply_to/moderated/retract'),
             self._handle_moderated,
         ))
Exemplo n.º 28
0
    def plugin_init(self):
        self.xmpp.register_handler(
            Callback('Message Correction', StanzaPath('message/replace'),
                     self._handle_correction))

        register_stanza_plugin(Message, Replace)

        self.xmpp.use_message_ids = True
Exemplo n.º 29
0
    def plugin_init(self):
        self.xmpp.register_handler(
            Callback('Carbon Received', StanzaPath('message/carbon_received'),
                     self._handle_carbon_received))
        self.xmpp.register_handler(
            Callback('Carbon Sent', StanzaPath('message/carbon_sent'),
                     self._handle_carbon_sent))

        register_stanza_plugin(Message, stanza.ReceivedCarbon)
        register_stanza_plugin(Message, stanza.SentCarbon)
        register_stanza_plugin(Message, stanza.PrivateCarbon)
        register_stanza_plugin(Iq, stanza.CarbonEnable)
        register_stanza_plugin(Iq, stanza.CarbonDisable)

        register_stanza_plugin(stanza.ReceivedCarbon,
                               self.xmpp['xep_0297'].stanza.Forwarded)
        register_stanza_plugin(stanza.SentCarbon,
                               self.xmpp['xep_0297'].stanza.Forwarded)
Exemplo n.º 30
0
 def plugin_init(self):
     self._idle_stamps = {}
     register_stanza_plugin(Presence, stanza.Idle)
     self.api.register(self._set_idle, 'set_idle', default=True)
     self.api.register(self._get_idle, 'get_idle', default=True)
     self.xmpp.register_handler(
         Callback('Idle Presence', StanzaPath('presence/idle'),
                  self._idle_presence))
     self.xmpp.add_filter('out', self._stamp_idle_presence)