# Licensed for distribution under the GPL version 2, check COPYING for details
import utils
-if(utils.checkTwisted()):
- from twisted.xish.domish import Element
- from twisted.words.protocols.jabber import jid
-else:
- from tlib.domish import Element
- from tlib.jabber import jid
+from tlib.xmlw import Element, jid
from debug import LogEvent, INFO, WARN, ERROR
import disco
def sendPresence(pytrans, to, fro, show=None, status=None, priority=None, ptype=None, avatarHash=None, nickname=None, payload=[]):
# Strip the resource off any presence subscribes (as per XMPP RFC 3921 Section 5.1.6)
# Makes eJabberd behave :)
- if(ptype == "subscribe"):
- (user,host,res) = jid.parse(to)
- to = "%s@%s" % (user, host)
+ if ptype in ("subscribe", "subscribed", "unsubscribe", "unsubscribed"):
+ to = jid.intern(to).userhost()
+ fro = jid.intern(fro).userhost()
el = Element((None, "presence"))
el.attributes["to"] = to
error.attributes["type"] = etype
error.attributes["code"] = str(utils.errorCodeMap[condition])
desc = error.addElement(condition)
- desc.attributes["xmlns"] = "urn:ietf:params:xml:ns:xmpp-stanzas"
+ desc.attributes["xmlns"] = disco.XMPP_STANZAS
text = error.addElement("text")
- text.attributes["xmlns"] = "urn:ietf:params:xml:ns:xmpp-stanzas"
+ text.attributes["xmlns"] = disco.XMPP_STANZAS
text.addContent(explanation)
if(body and len(body) > 0):
b = el.addElement("body")
fro = el.getAttribute("from")
to = el.getAttribute("to")
try:
- froj = jid.JID(fro)
- toj = jid.JID(to)
+ froj = jid.intern(fro)
+ toj = jid.intern(to)
except Exception, e:
LogEvent(WARN, self.jabberID)
return
""" Handles incoming presence packets """
#LogEvent(INFO, self.jabberID)
fro = el.getAttribute("from")
- froj = jid.JID(fro)
+ froj = jid.intern(fro)
to = el.getAttribute("to")
- toj = jid.JID(to)
+ toj = jid.intern(to)
# Grab the contents of the <presence/> packet
ptype = el.getAttribute("type")
if ptype and (ptype.startswith("subscribe") or ptype.startswith("unsubscribe")):
LogEvent(INFO, self.jabberID, "Parsed subscription presence packet")
- self.subscriptionReceived(toj.userhost(), ptype)
+ self.subscriptionReceived(fro, toj.userhost(), ptype)
else:
status = None
show = None
show = child.__str__()
elif(child.name == "priority"):
priority = child.__str__()
- elif(child.defaultUri == disco.XVCARDUPDATE):
+ elif(child.uri == disco.XVCARDUPDATE):
avatarHash = " "
for child2 in child.elements():
if(child2.name == "photo"):
""" Override this method to be notified when presence is received """
pass
- def subscriptionReceived(self, source, subtype):
+ def subscriptionReceived(self, source, dest, subtype):
""" Override this method to be notified when a subscription packet is received """
pass