Esempio n. 1
0
 def _post_connect(self):
     """Initialize authentication when the connection is established
     and we are the initiator."""
     if not self.initiator:
         if "plain" in self.auth_methods or "digest" in self.auth_methods:
             self.set_iq_get_handler("query", "jabber:iq:auth",
                                     self.auth_in_stage1)
             self.set_iq_set_handler("query", "jabber:iq:auth",
                                     self.auth_in_stage2)
     elif self.registration_callback:
         iq = Iq(stanza_type="get")
         iq.set_content(Register())
         self.set_response_handlers(iq, self.registration_form_received,
                                    self.registration_error)
         self.send(iq)
         return
     ClientStream._post_connect(self)
Esempio n. 2
0
    def registration_form_received(self, stanza):
        """Handle registration form received.

        [client only]

        Call self.registration_callback with the registration form received
        as the argument. Use the value returned by the callback will be a
        filled-in form.

        :Parameters:
            - `stanza`: the stanza received.
        :Types:
            - `stanza`: `pyxmpp.iq.Iq`"""
        self.lock.acquire()
        try:
            self.__register = Register(stanza.get_query())
            self.registration_callback(stanza, self.__register.get_form())
        finally:
            self.lock.release()
Esempio n. 3
0
 def parse_stanza(self, xml):
     doc = libxml2.parseDoc(xml)
     root = doc.getRootElement()
     iq = Iq(root)
     register = iq.get_query()
     return Register(register)