Exemplo n.º 1
0
    def handlepresence(self, msg):
        """handlepresence(msg) -> <stanza outcome>

        Handle a Jabber presence stanza. If it signals a failure to join the
        MUC, perform 'tryjoin' again. If it comes from the actor's MUC room,
        it is passed along to handlemucpresence(). If it is the actor's own
        JID being unavailable, consider the MUC to be dead. Otherwise, it is
        ignored.
        """
        
        typestr = msg.getattr('type', '')
                
        fromstr = msg.getattr('from')
        if (fromstr):
            jid = interface.JID(fromstr)
        else:
            jid = None

        if (not (jid and self.jid.barematch(jid))):
            if (self.log.isEnabledFor(logging.DEBUG)):
                self.log.debug('received presence:\n%s', msg.serialize(True))
            else:
                self.log.info('received presence \'%s\' from %s', typestr, unicode(jid))

        if (self.mucnick == jid and typestr == 'unavailable'):
            self.log.warning('MUC has closed; shutting down')
            self.queueaction(self.stop)
            raise interface.StanzaHandled()

        if (typestr == 'error'
            and msg.getchild('x', namespace=interface.NS_MUC)
            and self.state == 'joining'):
            errnod = msg.getchild('error')
            if (errnod
                and (errnod.getattr('code') == '409'
                    or errnod.getchild('conflict'))
                and self.mucnickcount < 15):
                # nickname conflict
                self.log.info('mucnick %s failed; retrying',
                    unicode(self.mucnick))
                self.perform('tryjoin')
                raise interface.StanzaHandled()
            # else, simple join failure
            self.log.info('unable to join MUC; shutting down')
            self.queueaction(self.stop)
            raise interface.StanzaHandled()

        if (jid
            and jid.getnode() == self.refereejid.getresource()
            and jid.getdomain() == self.muc.getdomain()):
            self.handlemucpresence(typestr, jid.getresource(), msg)
            
        raise interface.StanzaHandled()
Exemplo n.º 2
0
    def handlemessage(self, msg):
        """handlemessage(msg) -> <stanza outcome>

        Handle a Jabber message stanza. The Actor does not react to messages,
        so this just raises StanzaHandled to end processing for the stanza.
        """
        
        if (self.log.isEnabledFor(logging.DEBUG)):
            self.log.info('received message')
            #self.log.debug('received message:\n%s', msg.serialize(True))
        raise interface.StanzaHandled()
Exemplo n.º 3
0
    def handlepresence(self, msg):
        """handlepresence(msg) -> <stanza outcome>

        Handle a Jabber presence stanza. The Parlor does not react to presence,
        so this just raises StanzaHandled to end processing for the stanza.
        """

        typestr = msg.getattr('type', '')

        fromstr = msg.getattr('from')
        if (fromstr):
            jid = interface.JID(fromstr)
        else:
            jid = None

        if (not (jid and self.jid.barematch(jid))):
            if (self.log.isEnabledFor(logging.DEBUG)):
                self.log.debug('received presence:\n%s', msg.serialize(True))
            else:
                self.log.info('received presence \'%s\' from %s', typestr,
                              unicode(jid))
        raise interface.StanzaHandled()