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)
Exemple #2
0
    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()
Exemple #5
0
    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
Exemple #6
0
    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()