diff options
author | Lance Stout <lancestout@gmail.com> | 2013-02-10 11:30:37 -0800 |
---|---|---|
committer | Lance Stout <lancestout@gmail.com> | 2013-02-10 11:30:37 -0800 |
commit | 1a2db7fb113cfa726b1ec0d64e458d017139eb0c (patch) | |
tree | 98ff530aaf3068bba8d544d554c96dcc8efdf1fd /sleekxmpp/plugins/xep_0077/register.py | |
parent | da3223ac92f15e15ae03cece00ff487d81913c77 (diff) | |
parent | 9a6bfc66141dfc79de0bc31294def76cb876b4db (diff) | |
download | slixmpp-1a2db7fb113cfa726b1ec0d64e458d017139eb0c.tar.gz slixmpp-1a2db7fb113cfa726b1ec0d64e458d017139eb0c.tar.bz2 slixmpp-1a2db7fb113cfa726b1ec0d64e458d017139eb0c.tar.xz slixmpp-1a2db7fb113cfa726b1ec0d64e458d017139eb0c.zip |
Merge branch 'xep_0077'
Diffstat (limited to 'sleekxmpp/plugins/xep_0077/register.py')
-rw-r--r-- | sleekxmpp/plugins/xep_0077/register.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/sleekxmpp/plugins/xep_0077/register.py b/sleekxmpp/plugins/xep_0077/register.py index d4da21a5..ee07548b 100644 --- a/sleekxmpp/plugins/xep_0077/register.py +++ b/sleekxmpp/plugins/xep_0077/register.py @@ -7,6 +7,7 @@ """ import logging +import ssl from sleekxmpp.stanza import StreamFeatures, Iq from sleekxmpp.xmlstream import register_stanza_plugin, JID @@ -29,6 +30,7 @@ class XEP_0077(BasePlugin): stanza = stanza default_config = { 'create_account': True, + 'force_registration': False, 'order': 50 } @@ -45,10 +47,29 @@ class XEP_0077(BasePlugin): 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) + def plugin_end(self): if not self.xmpp.is_component: self.xmpp.unregister_feature('register', self.order) + def _force_registration(self, event): + if self.force_registration: + self.xmpp.add_filter('in', self._force_stream_feature) + + def _force_stream_feature(self, stanza): + if isinstance(stanza, StreamFeatures): + if self.xmpp.use_tls or self.xmpp.use_ssl: + if 'starttls' not in self.xmpp.features: + return stanza + elif not isinstance(self.xmpp.socket, ssl.SSLSocket): + return stanza + if 'mechanisms' not in self.xmpp.features: + log.debug('Forced adding in-band registration stream feature') + stanza.enable('register') + self.xmpp.del_filter('in', self._force_stream_feature) + return stanza + def _handle_register_feature(self, features): if 'mechanisms' in self.xmpp.features: # We have already logged in with an account |