diff --git a/sleekxmpp/componentxmpp.py b/sleekxmpp/componentxmpp.py index 8eaa1408..33514859 100755 --- a/sleekxmpp/componentxmpp.py +++ b/sleekxmpp/componentxmpp.py @@ -23,14 +23,6 @@ from __future__ import absolute_import from . basexmpp import basexmpp from xml.etree import cElementTree as ET -# some servers use different namespaces for components -- this is a hack, but is there for compatibility -from . xmlstream.matcher import xmlmask -from . xmlstream.matcher import xpath - -xmlmask.ignore_ns = True -xpath.ignore_ns = True -# ---------- - from . xmlstream.xmlstream import XMLStream from . xmlstream.xmlstream import RestartStream from . xmlstream.matcher.xmlmask import MatchXMLMask @@ -77,6 +69,14 @@ class ComponentXMPP(basexmpp, XMLStream): MatchXMLMask("" % self.default_ns), \ MatchXMLMask("" % self.default_ns) \ )), self._handlePresenceSubscription)) + + def incoming_filter(self, xmlobj): + if xmlobj.tag.startswith('{jabber:client}'): + xmlobj.tag = xmlobj.tag.replace('jabber:client', 'jabber:component:accept') + for child in xmlobj.children(): + child = self.incoming_filter(child) + return xmlobj + def _handlePresenceProbe(self, stanza): xml = stanza.xml diff --git a/sleekxmpp/xmlstream/xmlstream.py b/sleekxmpp/xmlstream/xmlstream.py index 1c47d9ae..c2a581aa 100644 --- a/sleekxmpp/xmlstream/xmlstream.py +++ b/sleekxmpp/xmlstream/xmlstream.py @@ -289,10 +289,14 @@ class XMLStream(object): self.state.set('ssl',False) time.sleep(1) self.connect() + + def incoming_filter(self, xmlobj): + return xmlobj def __spawnEvent(self, xmlobj): "watching xmlOut and processes handlers" #convert XML into Stanza + xmlobj = self.incoming_filter(xmlobj) logging.debug("PROCESSING: %s" % xmlobj.tag) stanza = None for stanza_class in self.__root_stanza: