def iqHandler(self, conn, node): """ handle iq stanza's. """ rlog(5, self.name, str(node)) iq = Jabberiq(node) iq.toirc(self) jcallbacks.check(self, iq)
def presenceHandler(self, conn, pres): """ overloaded presence handler. """ rlog(5, self.name, 'incoming: %s' % str(pres)) p = Jabberpresence(pres) p.toirc(self) frm = p.getFrom() nickk = "" nick = frm.getResource() if nick: self.userhosts[nick] = str(frm) nickk = nick jid = None for i in p.getPayload(): try: if i.getName() == 'x': for j in i.getPayload(): if j.getName() == 'item': attrs = j.getAttrs() if attrs.has_key('jid'): jid = xmpp.JID(attrs['jid']) except AttributeError: continue if nickk and jid: channel = frm.getStripped() if not self.jids.has_key(channel): self.jids[channel] = {} self.jids[channel][nickk] = jid self.userhosts[nickk.lower()] = str(jid) rlog(0, self.name, 'setting jid of %s (%s) to %s' % (nickk, \ channel, jid)) if p.type == 'subscribe': fromm = p.getFrom() self.send(xmpp.Presence(to=fromm, typ='subscribed')) self.send(xmpp.Presence(to=fromm, typ='subscribe')) nick = p.resource if p.type != 'unavailable': self.userchannels.adduniq(nick, p.channel) p.joined = True elif self.me in p.userhost: try: del self.jids[p.channel] rlog(10, self.name, 'removed %s channel jids' % p.channel) except KeyError: pass else: try: del self.jids[p.channel][p.nick] rlog(10, self.name, 'removed %s jid' % p.nick) except KeyError: pass p.conn = conn jcallbacks.check(self, p) if p.getType() == 'error': err = p.getErrorCode() if err: rlog(10, self.name + '.error', "%s => %s: %s" % (p.getFrom(),\ err, p.getError())) rlog(10, self.name + '.error', str(p)) self.errorwait.check(p) try: method = getattr(self, 'handle_' + err) # try to call method try: method(p) except: handle_exception() except AttributeError: # no command method to handle event pass
def messageHandler(self, conn, msg): """ message handler. """ rlog(5, self.name, 'incoming: %s' % str(msg)) if self.test: return if 'jabber:x:delay' in str(msg): return m = Jabbermsg(msg) m.toirc(self) if m.groupchat and m.getSubject(): self.topiccheck(m) nm = Jabbermsg(msg) nm.copyin(m) print nm jcallbacks.check(self, nm) return self.privwait.check(m) if m.isresponse: return if not m.txt: return if self.me in m.userhost: return 0 if m.groupchat and self.nick == m.resource: return 0 go = 0 try: cc = self.channels[m.channel]['cc'] except (TypeError, KeyError): cc = config['defaultcc'] or '!' try: channick = self.channels[m.channel]['nick'] except (TypeError, KeyError): channick = self.nick if m.msg and not config['noccinmsg']: go = 1 elif m.txt[0] in cc: go = 1 elif m.txt.startswith("%s: " % channick): m.txt = m.txt.replace("%s: " % channick, "") go = 1 elif m.txt.startswith("%s, " % channick): m.txt = m.txt.replace("%s, " % channick, "") go = 1 if m.txt[0] in cc: m.txt = m.txt[1:] if go: try: if plugins.woulddispatch(self, m): m.usercmnd = True plugins.trydispatch(self, m) except: handle_exception() try: nm = Jabbermsg(msg) nm.copyin(m) jcallbacks.check(self, nm) if nm.getType() == 'error': err = nm.getErrorCode() if err: rlog(10, self.name + '.error', "%s => %s: %s" % (nm.getFrom(),\ err, nm.getError())) rlog(10, self.name + '.error', str(nm)) self.errorwait.check(nm) try: method = getattr(self, 'handle_' + err) # try to call method try: method(nm) except: handle_exception() except AttributeError: # no command method to handle event pass except Exception, ex: handle_exception()
def presenceHandler(self, conn, pres): """ overloaded presence handler. """ rlog(5, self.name, 'incoming: %s' % str(pres)) p = Jabberpresence(pres) p.toirc(self) frm = p.getFrom() nickk = "" nick = frm.getResource() if nick: self.userhosts[nick] = str(frm) nickk = nick jid = None for i in p.getPayload(): try: if i.getName() == 'x': for j in i.getPayload(): if j.getName() == 'item': attrs = j.getAttrs() if attrs.has_key('jid'): jid = xmpp.JID(attrs['jid']) except AttributeError: continue if nickk and jid: channel = frm.getStripped() if not self.jids.has_key(channel): self.jids[channel] = {} self.jids[channel][nickk] = jid self.userhosts[nickk.lower()] = str(jid) rlog(0, self.name, 'setting jid of %s (%s) to %s' % (nickk, \ channel, jid)) if p.type == 'subscribe': fromm = p.getFrom() self.send(xmpp.Presence(to=fromm, typ='subscribed')) self.send(xmpp.Presence(to=fromm, typ='subscribe')) nick = p.resource if p.type != 'unavailable': self.userchannels.adduniq(nick, p.channel) p.joined = True elif self.me in p.userhost: try: del self.jids[p.channel] rlog(10, self.name, 'removed %s channel jids' % p.channel) except KeyError: pass else: try: del self.jids[p.channel][p.nick] rlog(10, self.name, 'removed %s jid' % p.nick) except KeyError: pass p.conn = conn jcallbacks.check(self, p) if p.getType() == 'error': err = p.getErrorCode() if err: rlog(10, self.name + '.error', "%s => %s: %s" % (p.getFrom(),\ err, p.getError())) rlog(10, self.name + '.error', str(p)) self.errorwait.check(p) try: method = getattr(self,'handle_' + err) # try to call method try: method(p) except: handle_exception() except AttributeError: # no command method to handle event pass
def messageHandler(self, conn, msg): """ message handler. """ rlog(5, self.name, 'incoming: %s' % str(msg)) if self.test: return if 'jabber:x:delay' in str(msg): return m = Jabbermsg(msg) m.toirc(self) if m.groupchat and m.getSubject(): self.topiccheck(m) nm = Jabbermsg(msg) nm.copyin(m) print nm jcallbacks.check(self, nm) return self.privwait.check(m) if m.isresponse: return if not m.txt: return if self.me in m.userhost: return 0 if m.groupchat and self.nick == m.resource: return 0 go = 0 try: cc = self.channels[m.channel]['cc'] except (TypeError, KeyError): cc = config['defaultcc'] or '!' try: channick = self.channels[m.channel]['nick'] except (TypeError, KeyError): channick = self.nick if m.msg and not config['noccinmsg']: go = 1 elif m.txt[0] in cc: go = 1 elif m.txt.startswith("%s: " % channick): m.txt = m.txt.replace("%s: " % channick, "") go = 1 elif m.txt.startswith("%s, " % channick): m.txt = m.txt.replace("%s, " % channick, "") go = 1 if m.txt[0] in cc: m.txt = m.txt[1:] if go: try: if plugins.woulddispatch(self, m): m.usercmnd = True plugins.trydispatch(self, m) except: handle_exception() try: nm = Jabbermsg(msg) nm.copyin(m) jcallbacks.check(self, nm) if nm.getType() == 'error': err = nm.getErrorCode() if err: rlog(10, self.name + '.error', "%s => %s: %s" % (nm.getFrom(),\ err, nm.getError())) rlog(10, self.name + '.error', str(nm)) self.errorwait.check(nm) try: method = getattr(self,'handle_' + err) # try to call method try: method(nm) except: handle_exception() except AttributeError: # no command method to handle event pass except Exception, ex: handle_exception()