diff --git a/sleekxmpp/basexmpp.py b/sleekxmpp/basexmpp.py index 43ad420..b188e76 100644 --- a/sleekxmpp/basexmpp.py +++ b/sleekxmpp/basexmpp.py @@ -167,12 +167,12 @@ class BaseXMPP(XMLStream): if not module: try: module = sleekxmpp.plugins - module = __import__("%s.%s" % (module.__name__, plugin), - globals(), locals(), [plugin]) + module = __import__(str("%s.%s" % (module.__name__, plugin)), + globals(), locals(), [str(plugin)]) except ImportError: module = sleekxmpp.features - module = __import__("%s.%s" % (module.__name__, plugin), - globals(), locals(), [plugin]) + module = __import__(str("%s.%s" % (module.__name__, plugin)), + globals(), locals(), [str(plugin)]) if isinstance(module, str): # We probably want to load a module from outside # the sleekxmpp package, so leave out the globals(). diff --git a/sleekxmpp/clientxmpp.py b/sleekxmpp/clientxmpp.py index 9c2696d..7245053 100644 --- a/sleekxmpp/clientxmpp.py +++ b/sleekxmpp/clientxmpp.py @@ -87,8 +87,6 @@ class ClientXMPP(BaseXMPP): self.features = [] self._stream_feature_handlers = {} self._stream_feature_order = [] - self._sasl_mechanism_handlers = {} - self._sasl_mechanism_priorities = [] #TODO: Use stream state here self.authenticated = False diff --git a/sleekxmpp/features/__init__.py b/sleekxmpp/features/__init__.py index 940a37f..65d2bdb 100644 --- a/sleekxmpp/features/__init__.py +++ b/sleekxmpp/features/__init__.py @@ -7,4 +7,5 @@ """ __all__ = ['feature_starttls', 'feature_mechanisms', + 'feature_bind', 'feature_session', 'sasl_plain', 'sasl_anonymous'] diff --git a/sleekxmpp/features/feature_bind/__init__.py b/sleekxmpp/features/feature_bind/__init__.py new file mode 100644 index 0000000..fce94dd --- /dev/null +++ b/sleekxmpp/features/feature_bind/__init__.py @@ -0,0 +1,10 @@ +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2010 Nathanael C. Fritz + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +from sleekxmpp.features.feature_bind.bind import feature_bind +from sleekxmpp.features.feature_bind.stanza import Bind diff --git a/sleekxmpp/features/feature_bind.py b/sleekxmpp/features/feature_bind/bind.py similarity index 84% rename from sleekxmpp/features/feature_bind.py rename to sleekxmpp/features/feature_bind/bind.py index caa3844..e177d7b 100644 --- a/sleekxmpp/features/feature_bind.py +++ b/sleekxmpp/features/feature_bind/bind.py @@ -8,6 +8,9 @@ import logging +from sleekxmpp.stanza import Iq, StreamFeatures +from sleekxmpp.features.feature_bind import stanza +from sleekxmpp.xmlstream import register_stanza_plugin from sleekxmpp.xmlstream.matcher import * from sleekxmpp.xmlstream.handler import * from sleekxmpp.plugins.base import base_plugin @@ -22,12 +25,16 @@ class feature_bind(base_plugin): self.name = 'Bind Resource' self.rfc = '6120' self.description = 'Resource Binding Stream Feature' + self.stanza = stanza self.xmpp.register_feature('bind', self._handle_bind_resource, restart=False, order=10000) + register_stanza_plugin(Iq, stanza.Bind) + register_stanza_plugin(StreamFeatures, stanza.Bind) + def _handle_bind_resource(self, features): """ Handle requesting a specific resource. diff --git a/sleekxmpp/stanza/stream/bind.py b/sleekxmpp/features/feature_bind/stanza.py similarity index 73% rename from sleekxmpp/stanza/stream/bind.py rename to sleekxmpp/features/feature_bind/stanza.py index 165afcb..f3e025f 100644 --- a/sleekxmpp/stanza/stream/bind.py +++ b/sleekxmpp/features/feature_bind/stanza.py @@ -6,8 +6,7 @@ See the file LICENSE for copying permission. """ -from sleekxmpp.stanza import Iq -from sleekxmpp.stanza.stream import StreamFeatures +from sleekxmpp.stanza import Iq, StreamFeatures from sleekxmpp.xmlstream import ElementBase, ET, register_stanza_plugin @@ -21,7 +20,3 @@ class Bind(ElementBase): interfaces = set(('resource', 'jid')) sub_interfaces = interfaces plugin_attrib = 'bind' - - -register_stanza_plugin(Iq, Bind) -register_stanza_plugin(StreamFeatures, Bind) diff --git a/sleekxmpp/features/feature_mechanisms/__init__.py b/sleekxmpp/features/feature_mechanisms/__init__.py new file mode 100644 index 0000000..a93b2b6 --- /dev/null +++ b/sleekxmpp/features/feature_mechanisms/__init__.py @@ -0,0 +1,10 @@ +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2010 Nathanael C. Fritz + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +from sleekxmpp.features.feature_mechanisms.mechanisms import feature_mechanisms +from sleekxmpp.features.feature_mechanisms.stanza import * diff --git a/sleekxmpp/features/feature_mechanisms.py b/sleekxmpp/features/feature_mechanisms/mechanisms.py similarity index 100% rename from sleekxmpp/features/feature_mechanisms.py rename to sleekxmpp/features/feature_mechanisms/mechanisms.py diff --git a/sleekxmpp/stanza/stream/sasl.py b/sleekxmpp/features/feature_mechanisms/stanza.py similarity index 100% rename from sleekxmpp/stanza/stream/sasl.py rename to sleekxmpp/features/feature_mechanisms/stanza.py diff --git a/sleekxmpp/features/feature_session/__init__.py b/sleekxmpp/features/feature_session/__init__.py new file mode 100644 index 0000000..1399f73 --- /dev/null +++ b/sleekxmpp/features/feature_session/__init__.py @@ -0,0 +1,10 @@ +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2010 Nathanael C. Fritz + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +from sleekxmpp.features.feature_session.session import feature_session +from sleekxmpp.features.feature_session.stanza import Session diff --git a/sleekxmpp/features/feature_session.py b/sleekxmpp/features/feature_session/session.py similarity index 79% rename from sleekxmpp/features/feature_session.py rename to sleekxmpp/features/feature_session/session.py index 5bae358..4d17b2d 100644 --- a/sleekxmpp/features/feature_session.py +++ b/sleekxmpp/features/feature_session/session.py @@ -8,10 +8,14 @@ import logging +from sleekxmpp.stanza import Iq, StreamFeatures +from sleekxmpp.xmlstream import register_stanza_plugin from sleekxmpp.xmlstream.matcher import * from sleekxmpp.xmlstream.handler import * from sleekxmpp.plugins.base import base_plugin +from sleekxmpp.features.feature_session import stanza + log = logging.getLogger(__name__) @@ -22,12 +26,16 @@ class feature_session(base_plugin): self.name = 'Start Session' self.rfc = '3920' self.description = 'Start Session Stream Feature' + self.stanza = stanza self.xmpp.register_feature('session', self._handle_start_session, restart=False, order=10001) + register_stanza_plugin(Iq, stanza.Session) + register_stanza_plugin(StreamFeatures, stanza.Session) + def _handle_start_session(self, features): """ Handle the start of the session. diff --git a/sleekxmpp/stanza/stream/session.py b/sleekxmpp/features/feature_session/stanza.py similarity index 71% rename from sleekxmpp/stanza/stream/session.py rename to sleekxmpp/features/feature_session/stanza.py index 87f2185..2047a4f 100644 --- a/sleekxmpp/stanza/stream/session.py +++ b/sleekxmpp/features/feature_session/stanza.py @@ -6,8 +6,7 @@ See the file LICENSE for copying permission. """ -from sleekxmpp.stanza import Iq -from sleekxmpp.stanza.stream import StreamFeatures +from sleekxmpp.stanza import Iq, StreamFeatures from sleekxmpp.xmlstream import ElementBase, ET, register_stanza_plugin @@ -20,7 +19,3 @@ class Session(ElementBase): namespace = 'urn:ietf:params:xml:ns:xmpp-session' interfaces = set() plugin_attrib = 'session' - - -register_stanza_plugin(Iq, Session) -register_stanza_plugin(StreamFeatures, Session) diff --git a/sleekxmpp/features/feature_starttls/__init__.py b/sleekxmpp/features/feature_starttls/__init__.py new file mode 100644 index 0000000..042e37f --- /dev/null +++ b/sleekxmpp/features/feature_starttls/__init__.py @@ -0,0 +1,10 @@ +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2010 Nathanael C. Fritz + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +from sleekxmpp.features.feature_starttls.starttls import feature_starttls +from sleekxmpp.features.feature_starttls.stanza import * diff --git a/sleekxmpp/stanza/stream/tls.py b/sleekxmpp/features/feature_starttls/stanza.py similarity index 94% rename from sleekxmpp/stanza/stream/tls.py rename to sleekxmpp/features/feature_starttls/stanza.py index d85f9b4..5fdafab 100644 --- a/sleekxmpp/stanza/stream/tls.py +++ b/sleekxmpp/features/feature_starttls/stanza.py @@ -45,6 +45,3 @@ class Failure(StanzaBase): name = 'failure' namespace = 'urn:ietf:params:xml:ns:xmpp-tls' interfaces = set() - - -register_stanza_plugin(StreamFeatures, STARTTLS) diff --git a/sleekxmpp/features/feature_starttls.py b/sleekxmpp/features/feature_starttls/starttls.py similarity index 79% rename from sleekxmpp/features/feature_starttls.py rename to sleekxmpp/features/feature_starttls/starttls.py index 5367fa4..cbb94be 100644 --- a/sleekxmpp/features/feature_starttls.py +++ b/sleekxmpp/features/feature_starttls/starttls.py @@ -8,11 +8,12 @@ import logging -from sleekxmpp.stanza.stream import tls -from sleekxmpp.xmlstream import RestartStream +from sleekxmpp.stanza import StreamFeatures +from sleekxmpp.xmlstream import RestartStream, register_stanza_plugin from sleekxmpp.xmlstream.matcher import * from sleekxmpp.xmlstream.handler import * from sleekxmpp.plugins.base import base_plugin +from sleekxmpp.features.feature_starttls import stanza log = logging.getLogger(__name__) @@ -24,11 +25,11 @@ class feature_starttls(base_plugin): self.name = "STARTTLS" self.rfc = '6120' self.description = "STARTTLS Stream Feature" + self.stanza = stanza - self.xmpp.register_stanza(tls.Proceed) self.xmpp.register_handler( Callback('STARTTLS Proceed', - MatchXPath(tls.Proceed.tag_name()), + MatchXPath(stanza.Proceed.tag_name()), self._handle_starttls_proceed, instream=True)) self.xmpp.register_feature('starttls', @@ -36,6 +37,10 @@ class feature_starttls(base_plugin): restart=True, order=self.config.get('order', 0)) + self.xmpp.register_stanza(stanza.Proceed) + self.xmpp.register_stanza(stanza.Failure) + register_stanza_plugin(StreamFeatures, stanza.STARTTLS) + def _handle_starttls(self, features): """ Handle notification that the server supports TLS. diff --git a/sleekxmpp/stanza/__init__.py b/sleekxmpp/stanza/__init__.py index 05df883..4bd37dc 100644 --- a/sleekxmpp/stanza/__init__.py +++ b/sleekxmpp/stanza/__init__.py @@ -11,7 +11,5 @@ from sleekxmpp.stanza.error import Error from sleekxmpp.stanza.iq import Iq from sleekxmpp.stanza.message import Message from sleekxmpp.stanza.presence import Presence -from sleekxmpp.stanza.stream import StreamFeatures -from sleekxmpp.stanza.stream import Bind -from sleekxmpp.stanza.stream import Session -from sleekxmpp.stanza.stream import StreamError +from sleekxmpp.stanza.stream_features import StreamFeatures +from sleekxmpp.stanza.stream_error import StreamError diff --git a/sleekxmpp/stanza/stream/__init__.py b/sleekxmpp/stanza/stream/__init__.py index a386bba..2cb7967 100644 --- a/sleekxmpp/stanza/stream/__init__.py +++ b/sleekxmpp/stanza/stream/__init__.py @@ -6,8 +6,3 @@ See the file LICENSE for copying permission. """ - -from sleekxmpp.stanza.stream.error import StreamError -from sleekxmpp.stanza.stream.features import StreamFeatures -from sleekxmpp.stanza.stream.bind import Bind -from sleekxmpp.stanza.stream.session import Session diff --git a/sleekxmpp/stanza/stream/error.py b/sleekxmpp/stanza/stream_error.py similarity index 100% rename from sleekxmpp/stanza/stream/error.py rename to sleekxmpp/stanza/stream_error.py diff --git a/sleekxmpp/stanza/stream/features.py b/sleekxmpp/stanza/stream_features.py similarity index 100% rename from sleekxmpp/stanza/stream/features.py rename to sleekxmpp/stanza/stream_features.py