def authd(self, xmlstream): self.logger.log("INFO", "Authenticating with Jabber server.") self.xmlstream = xmlstream presence = domish.Element(('jabber:client', 'presence')) xmlstream.send(presence) xmlstream.addObserver('/message', self.debug) xmlstream.addObserver('/presence', self.debug) xmlstream.addObserver('/iq', self.debug) xmlstream.addObserver('/iq', self.pong) xmlstream.addObserver('/message', self.gotMessage)
def authd(self, xmlstream): self.logger.log("INFO", "Authenticating with Jabber server.") self.xmlstream = xmlstream presence = domish.Element(('jabber:client','presence')) xmlstream.send(presence) xmlstream.addObserver('/message', self.debug) xmlstream.addObserver('/presence', self.debug) xmlstream.addObserver('/iq', self.debug) xmlstream.addObserver('/iq', self.pong) xmlstream.addObserver('/message', self.gotMessage)
def gotPresence(el): t = el.attributes['type'] if t == 'subscribe': # Grant every subscription request xmlstream.send(domish.Element(('jabber:client', 'presence'), attribs={ 'from': _me.full() , 'to':el.attributes['from'], 'type':'subscribed' }))
def authd(self, xmlstream): # need to send presence so clients know we're # actually online. presence = domish.Element(('jabber:client', 'presence')) presence.addElement('status').addContent('Online') xmlstream.send(presence) # add a callback for the messages xmlstream.addObserver('/message', self.gotMessage) self.xmlstream = xmlstream
def authd(xmlstream): global _xmlstream logger.debug("authenticated") _xmlstream = xmlstream presence = domish.Element(('jabber:client', 'presence')) presence.addElement('status').addContent('Online') xmlstream.send(presence) # add a callback for the messages -- need to handle subscribe xmlstream.addObserver('/presence', gotPresence) reactor.stop() # stop the reactor.. so we can use iterate instead.
def authd(xmlstream): global _xmlstream logger.debug("authenticated") _xmlstream = xmlstream presence = domish.Element(('jabber:client', 'presence')) presence.addElement('status').addContent('Online') xmlstream.send(presence) # add a callback for the messages -- need to handle subscribe xmlstream.addObserver('/presence', gotPresence) reactor.stop() # stop the reactor.. so we can use iterate instead.
def authd(self, xmlstream): """Authenticate with the server""" print "authenticated" presence = domish.Element(('jabber:client', 'presence')) presence.addElement('status').addContent('Online') xmlstream.send(presence) #xmlstream.addObserver('/message', self.debug) #xmlstream.addObserver('/presence', self.debug) #xmlstream.addObserver('twisted.words.xish.xmlstream.STREAM_ERROR_EVENT', self.debug) self.xmlstream = xmlstream self.joinRoom(xmlstream)
def gotPresence(el): t = el.attributes['type'] if t == 'subscribe': # Grant every subscription request xmlstream.send( domish.Element( ('jabber:client', 'presence'), attribs={ 'from': _me.full(), 'to': el.attributes['from'], 'type': 'subscribed' }))
def authd(self, xmlstream): self.thexmlstream = xmlstream self.statusListener("System", "Logged in") #need to send presence so clients know we're #actually online presence = domish.Element(('jabber:client', 'presence')) presence.addElement('status').addContent('Online') xmlstream.send(presence) xmlstream.addObserver('/message', self.gotMessage) xmlstream.addObserver('/presence', self.gotPresence) xmlstream.addObserver('/iq', self.gotIq) xmlstream.addObserver('/*', self.debug) self.joinChatroom(self.teamChat) self.joinChatroom(self.globalChat)
def joinRoom(self, xmlstream): """Join a MUC""" #We don't want to recieve any history upon entering the room history = domish.Element((None, 'history')) history['maxchars'] = '0' #We're using Multi-User Chat x = domish.Element((None, 'x')) x['xmlns'] = 'http://jabber.org/protocol/muc' #And we're sending it to this chat room presence = domish.Element((None, 'presence')) presence['from'] = self.jid presence['to'] = self.room + '/' + self.nickname x.addChild(history) presence.addChild(x) print presence.toXml() xmlstream.send(presence)
def onConnect(self,xmlstream): print "auth" self.active = True self.xs=xmlstream self.informer._addClient(self) presence = domish.Element(('jabber:client','presence')) presence.addElement('priority').addContent("100") presence.addElement("show", None, ":)") presence.addElement('status').addContent('Online') xmlstream.send(presence) xmlstream.addObserver('/iq', self.onIq) xmlstream.addObserver('/message', self.onMessage) xmlstream.addObserver('/presence', self.onPresence) xmlstream.addObserver('/presence[@type="unsubscribe"]', self.onPresenceUnsubscribe) xmlstream.addObserver('/presence[@type="unsubscribed"]', self.onPresenceUnsubscribed) xmlstream.addObserver('/presence[@type="subscribe"]', self.onPresenceSubscribe) xmlstream.addObserver('/iq/query[@xmlns="jabber:iq:roster"]',self.onRoster) xmlstream.addObserver('/iq/query[@xmlns="jabber:iq:version"]',self.onVersion) xmlstream.addObserver('/iq/time[@xmlns="urn:xmpp:time"]', self.onTime) xmlstream.addObserver('/iq/query/item[@subscription="remove"]', self.onRemove) xmlstream.addObserver('/message[@type="chat"]/body', self.onChat) xmlstream.addObserver('/message[@type="error"]/error', self.onError) iq = component.xmlstream.IQ(xmlstream, 'get') iq['type'] = 'get' query = iq.addElement('query') query['xmlns']='jabber:iq:roster' iq.send() """ keep-alive """ lc = LoopingCall(xmlstream.send, ' ') xmlstream.addObserver('//event/stream/end', lambda _: lc.stop()) lc.start(60)