Package pyxmpp :: Package jabber :: Module clientstream :: Class LegacyClientStream |
[hide private]

# Class LegacyClientStream

source code

               streamtls.StreamTLSMixIn --+
                                          |
          sasl.core.PasswordManager --+   |
                                      |   |
             streamsasl.StreamSASLMixIn --+
                                          |
    stanzaprocessor.StanzaProcessor --+   |
                                      |   |
             xmlextra.StreamHandler --+   |
                                      |   |
                  streambase.StreamBase --+
                                          |
                              stream.Stream --+
                                              |
                      clientstream.ClientStream --+
                                                  |
                                                 LegacyClientStream

Handles Jabber (both XMPP and legacy protocol) client connection stream.

Both client and server side of the connection is supported. This class handles client SASL and legacy authentication, authorisation and XMPP resource binding.

Instance Methods | [hide private]
__init__(self, jid, password=None, server=None, port=5222, auth_methods=`(``'``sasl:DIGEST-MD5``'``,` `'``digest``'``)`, tls_settings=None, keepalive=0, owner=None) Initialize a LegacyClientStream object. | source code
_reset(self) Reset the LegacyClientStream object state, making the object ready to handle new connections. | source code
_post_connect(self) Initialize authentication when the connection is established and we are the initiator. | source code
_post_auth(self) Unregister legacy authentication handlers after successfull authentication. | source code
_try_auth(self) Try to authenticate using the first one of allowed authentication methods left. | source code
auth_in_stage1(self, stanza) Handle the first stage (<iq type='get'/>) of legacy ("plain" or "digest") authentication. | source code
auth_in_stage2(self, stanza) Handle the second stage (<iq type='set'/>) of legacy ("plain" or "digest") authentication. | source code
_auth_stage1(self) Do the first stage (<iq type='get'/>) of legacy ("plain" or "digest") authentication. | source code
auth_timeout(self) Handle legacy authentication timeout. | source code
auth_error(self, stanza) Handle legacy authentication error. | source code
auth_stage2(self, stanza) Handle the first stage authentication response (result of the <iq type="get"/>). | source code
_plain_auth_stage2(self, _unused) Do the second stage (<iq type='set'/>) of legacy "plain" authentication. | source code
_plain_auth_in_stage2(self, username, _unused, stanza) Handle the second stage (<iq type='set'/>) of legacy "plain" authentication. | source code
_digest_auth_stage2(self, _unused) Do the second stage (<iq type='set'/>) of legacy "digest" authentication. | source code
_digest_auth_in_stage2(self, username, _unused, stanza) Handle the second stage (<iq type='set'/>) of legacy "digest" authentication. | source code
auth_finish(self, _unused) Handle success of the legacy authentication. | source code
registration_error(self, stanza) Handle in-band registration error. | source code
registration_form_received(self, stanza) Handle registration form received. | source code
submit_registration_form(self, form) Submit a registration form. | source code
registration_success(self, stanza) Handle registration success. | source code
Inherited from `clientstream.ClientStream`: `accept`, `check_authzid`, `choose_realm`, `connect`, `do_bind`, `fix_in_stanza`, `fix_out_stanza`, `get_password`, `get_realms`, `get_serv_host`, `get_serv_name`, `get_serv_type` Inherited from `clientstream.ClientStream` (private): `_connect`, `_get_stream_features` Inherited from `stream.Stream` (private): `_got_features`, `_make_stream_features`, `_process_node` Inherited from `streamtls.StreamTLSMixIn`: `get_tls_connection`, `tls_default_verify_callback`, `tls_is_certificate_valid` Inherited from `streamtls.StreamTLSMixIn` (private): `_handle_tls_features`, `_make_stream_tls_features`, `_make_tls_connection`, `_process`, `_process_node_tls`, `_process_tls_node`, `_read`, `_read_tls`, `_request_tls`, `_reset_tls`, `_write_raw` Inherited from `streamsasl.StreamSASLMixIn` (private): `_handle_sasl_features`, `_make_stream_sasl_features`, `_process_node_sasl`, `_process_sasl_abort`, `_process_sasl_auth`, `_process_sasl_challenge`, `_process_sasl_failure`, `_process_sasl_node`, `_process_sasl_response`, `_process_sasl_success`, `_reset_sasl`, `_sasl_authenticate` Inherited from `sasl.core.PasswordManager`: `check_password`, `generate_nonce` Inherited from `streambase.StreamBase`: `__del__`, `bind`, `check_to`, `close`, `connected`, `disconnect`, `error`, `fileno`, `generate_id`, `idle`, `loop`, `loop_iter`, `process`, `process_stream_error`, `send`, `stanza`, `stanza_start`, `state_change`, `stream_end`, `stream_start`, `write_raw` Inherited from `streambase.StreamBase` (private): `_accept`, `_bind_error`, `_bind_success`, `_close`, `_connect_socket`, `_disconnect`, `_feed_reader`, `_idle`, `_loop_iter`, `_make_reader`, `_process_stream_node`, `_restart_stream`, `_send`, `_send_stream_end`, `_send_stream_error`, `_send_stream_features`, `_send_stream_start`, `_write_node` Inherited from `stanzaprocessor.StanzaProcessor`: `process_iq`, `process_message`, `process_presence`, `process_response`, `process_stanza`, `route_stanza`, `set_iq_get_handler`, `set_iq_set_handler`, `set_message_handler`, `set_presence_handler`, `set_response_handlers`, `unset_iq_get_handler`, `unset_iq_set_handler` Inherited from `stanzaprocessor.StanzaProcessor` (private): `_set_response_handlers` Inherited from `xmlextra.StreamHandler` (private): `_stanza`, `_stream_end`, `_stream_start`

Instance Variables | [hide private]
Inherited from `clientstream.ClientStream`: `auth_methods`, `my_jid`, `password`, `port`, `server` Inherited from `stream.Stream`: `features`, `initiator`, `lock`, `me`, `peer`, `process_all_stanzas`, `tls` Inherited from `stream.Stream` (private): `_reader` Inherited from `streambase.StreamBase`: `owner`

Method Details | [hide private]

### __init__(self, jid, password=None, server=None, port=5222, auth_methods=`(``'``sasl:DIGEST-MD5``'``,` `'``digest``'``)`, tls_settings=None, keepalive=0, owner=None) (Constructor) | source code
Initialize a LegacyClientStream object. Parameters: `jid` (pyxmpp.JID) - local JID. `password` (`unicode`) - user's password. `server` (`unicode`) - server to use. If not given then address will be derived form the JID. `port` (`int`) - port number to use. If not given then address will be derived form the JID. `auth_methods` (sequence of `str`) - sallowed authentication methods. SASL authentication mechanisms in the list should be prefixed with "sasl:" string. `tls_settings` (pyxmpp.TLSSettings) - settings for StartTLS -- TLSSettings instance. `keepalive` (`int`) - keepalive output interval. 0 to disable. `owner` - Client, Component or similar object "owning" this stream. Overrides: xmlextra.StreamHandler.__init__

### _reset(self) | source code
Reset the LegacyClientStream object state, making the object ready to handle new connections. Overrides: streambase.StreamBase._reset

### _post_connect(self) | source code
Initialize authentication when the connection is established and we are the initiator. Overrides: streambase.StreamBase._post_connect

### _post_auth(self) | source code
Unregister legacy authentication handlers after successfull authentication. Overrides: streambase.StreamBase._post_auth

### _try_auth(self) | source code
Try to authenticate using the first one of allowed authentication methods left. [client only] Overrides: clientstream.ClientStream._try_auth

### auth_in_stage1(self, stanza) | source code
Handle the first stage (<iq type='get'/>) of legacy ("plain" or "digest") authentication. [server only]

### auth_in_stage2(self, stanza) | source code
Handle the second stage (<iq type='set'/>) of legacy ("plain" or "digest") authentication. [server only]

### _auth_stage1(self) | source code
Do the first stage (<iq type='get'/>) of legacy ("plain" or "digest") authentication. [client only]

### auth_timeout(self) | source code
Handle legacy authentication timeout. [client only]

### auth_error(self, stanza) | source code
Handle legacy authentication error. [client only]

### auth_stage2(self, stanza) | source code
Handle the first stage authentication response (result of the <iq type="get"/>). [client only]

### _plain_auth_stage2(self, _unused) | source code
Do the second stage (<iq type='set'/>) of legacy "plain" authentication. [client only]

### _plain_auth_in_stage2(self, username, _unused, stanza) | source code
Handle the second stage (<iq type='set'/>) of legacy "plain" authentication. [server only]

### _digest_auth_stage2(self, _unused) | source code
Do the second stage (<iq type='set'/>) of legacy "digest" authentication. [client only]

### _digest_auth_in_stage2(self, username, _unused, stanza) | source code
Handle the second stage (<iq type='set'/>) of legacy "digest" authentication. [server only]

### registration_error(self, stanza) | source code
Handle in-band registration error. [client only] Parameters: `stanza` (pyxmpp.stanza.Stanza) - the error stanza received or `None` on timeout.

### registration_form_received(self, stanza) | source code
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` (pyxmpp.iq.Iq) - the stanza received.

### submit_registration_form(self, form) | source code
Submit a registration form. [client only] Parameters: `form` (pyxmpp.jabber.dataforms.Form) - the filled-in form. When form is `None` or its type is "cancel" the registration is to be canceled.

### registration_success(self, stanza) | source code
Handle registration success. [client only] Clean up registration stuff, change state to "registered" and initialize authentication. Parameters: `stanza` (pyxmpp.iq.Iq) - the stanza received.