From 7a15d14c939dbc9ecc9822c81da55bdb648dcbdb Mon Sep 17 00:00:00 2001
From: Nathan Fritz <fritzy@netflint.net>
Date: Sat, 11 Jul 2009 21:46:31 +0000
Subject: added incoming_filter

---
 sleekxmpp/componentxmpp.py       | 16 ++++++++--------
 sleekxmpp/xmlstream/xmlstream.py |  4 ++++
 2 files changed, 12 insertions(+), 8 deletions(-)

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("<presence xmlns='%s' type='unsubscribe'/>" % self.default_ns), \
 			 MatchXMLMask("<presence xmlns='%s' type='unsubscribed'/>" % 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:
-- 
cgit v1.2.3