Ejemplo n.º 1
0
Archivo: smtp.py Proyecto: vhata/ibid
    def eomReceived(self):
        mail = message_from_string('\n'.join(self.lines))

        event = Event(self.name, u'message')
        (realname, address) = email_utils.parseaddr(mail['from'])
        event.channel = event.sender['connection'] = event.sender[
            'id'] = unicode(address, 'utf-8', 'replace')
        event.sender['nick'] = realname != '' and unicode(
            realname, 'utf-8', 'replace') or event.channel
        event.public = False
        event.addressed = True
        event.subject = unicode(mail['subject'], 'utf-8', 'replace')
        event.headers = dict((i[0].lower(), unicode(i[1], 'utf-8', 'replace'))
                             for i in mail.items())

        message = mail.is_multipart() and mail.get_payload()[0].get_payload(
        ) or mail.get_payload()
        if len(message) > 0:
            stripsig = re.compile(r'^-- $.*', re.M + re.S)
            event.message = stripsig.sub('',
                                         unicode(message, 'utf-8',
                                                 'replace')).strip().replace(
                                                     '\n', ' ')
        else:
            event.message = event.subject

        self.log.debug(u"Received message from %s: %s",
                       event.sender['connection'], event.message)
        ibid.dispatcher.dispatch(event).addCallback(
            ibid.sources[self.name.lower()].respond)
        return defer.succeed(None)
Ejemplo n.º 2
0
 def create_event(self, message, event_type=u'message'):
     event = Event(u'fakesource', event_type)
     event.message = {
         'raw': message,
         'deaddressed': message,
         'clean': message,
         'stripped': message,
     }
     return event
Ejemplo n.º 3
0
 def remote_message(self, message):
     event = Event(self.name, u'message')
     event.sender['connection'] = event.sender['id'] = event.sender[
         'nick'] = event.channel = self.name
     event.addressed = True
     event.public = False
     event.message = unicode(message, 'utf-8', 'replace')
     self.log.debug(u'message("%s")' % event.message)
     return ibid.dispatcher.dispatch(event).addCallback(self.respond)
Ejemplo n.º 4
0
 def create_event(self, message, event_type=u'message'):
     event = Event(u'fakesource', event_type)
     event.message = {
         'raw': message,
         'deaddressed': message,
         'clean': message,
         'stripped': message,
     }
     return event
Ejemplo n.º 5
0
 def render_POST(self, request):
     event = Event(self.name, u'message')
     event.sender['nick'] = event.sender['id'] = event.sender['connection'] = event.channel = unicode(request.transport.getPeer().host)
     event.addressed = True
     event.public = False
     event.message = unicode(request.args['m'][0], 'utf-8', 'replace')
     self.log.debug(u"Received GET request from %s: %s", event.sender['connection'], event.message)
     ibid.dispatcher.dispatch(event).addCallback(self.respond, request)
     return server.NOT_DONE_YET
Ejemplo n.º 6
0
Archivo: http.py Proyecto: shoosen/ibid
 def render_POST(self, request):
     event = Event(self.name, u'message')
     event.sender['nick'] = event.sender['id'] = event.sender['connection'] = event.channel = unicode(request.transport.getPeer().host)
     event.addressed = True
     event.public = False
     event.message = unicode(request.args['m'][0], 'utf-8', 'replace')
     self.log.debug(u"Received GET request from %s: %s", event.sender['connection'], event.message)
     ibid.dispatcher.dispatch(event).addCallback(self.respond, request)
     return server.NOT_DONE_YET
Ejemplo n.º 7
0
Archivo: telnet.py Proyecto: vhata/ibid
 def telnet_Query(self, line):
     event = Event(self.factory.name, u'message')
     event.message = unicode(line.strip(), 'utf-8', 'replace')
     event.sender['connection'] = self.user
     event.sender['id'] = self.user
     event.sender['nick'] = event.sender['connection']
     event.channel = event.sender['connection']
     event.addressed = True
     event.public = False
     self.factory.log.debug(u"Received message from %s: %s", self.user, event.message)
     ibid.dispatcher.dispatch(event).addCallback(self.respond)
     return 'Query'
Ejemplo n.º 8
0
    def eomReceived(self):
        mail = message_from_string('\n'.join(self.lines))

        event = Event(self.name, u'message')
        (realname, address) = email_utils.parseaddr(mail['from'])
        event.channel = event.sender['connection'] = event.sender['id'] = unicode(address, 'utf-8', 'replace')
        event.sender['nick'] = realname != '' and unicode(realname, 'utf-8', 'replace') or event.channel
        event.public = False
        event.addressed = True
        event.subject = unicode(mail['subject'], 'utf-8', 'replace')
        event.headers = dict((i[0].lower(), unicode(i[1], 'utf-8', 'replace')) for i in mail.items())

        message = mail.is_multipart() and mail.get_payload()[0].get_payload() or mail.get_payload()
        if len(message) > 0:
            stripsig = re.compile(r'^-- $.*', re.M+re.S)
            event.message = stripsig.sub('', unicode(message, 'utf-8', 'replace')).strip().replace('\n', ' ')
        else:
            event.message = event.subject

        self.log.debug(u"Received message from %s: %s", event.sender['connection'], event.message)
        ibid.dispatcher.dispatch(event).addCallback(ibid.sources[self.name.lower()].respond)
        return defer.succeed(None)
Ejemplo n.º 9
0
    def make_event(self, message=None, type=u"message"):
        event = Event(self.source, type)
        event.sender["id"] = event.sender["connection"] = event.sender["nick"] = self.username
        event.identity = self.identity.id
        event.account = None
        event.addressed = not self.public
        event.public = self.public
        event.channel = u"testchan"

        if message is not None:
            event.message = unicode(message)

        return event
Ejemplo n.º 10
0
    def make_event(self, message=None, type=u'message'):
        event = Event(self.source, type)
        event.sender['id'] = event.sender['connection'] = \
            event.sender['nick'] = self.username
        event.identity = self.identity.id
        event.account = None
        event.addressed = not self.public
        event.public = self.public
        event.channel = u'testchan'

        if message is not None:
            event.message = unicode(message)

        return event
Ejemplo n.º 11
0
    def make_event(self, message=None, type=u'message'):
        event = Event(self.source, type)
        event.sender['id'] = event.sender['connection'] = \
            event.sender['nick'] = self.username
        event.identity = self.identity.id
        event.account = None
        event.addressed = not self.public
        event.public = self.public
        event.channel = u'testchan'

        if message is not None:
            event.message = unicode(message)

        return event
Ejemplo n.º 12
0
    def onMessage(self, message):
        self.parent.log.debug(u"Received %s message from %s: %s", message['type'], message['from'], message.body)

        if message.x and message.x.defaultUri == 'jabber:x:delay':
            self.parent.log.debug(u"Ignoring delayed message")
            return

        if self.parent.accept_domains:
            if message['from'].split('/')[0].split('@')[1] not in self.parent.accept_domains:
                self.parent.log.info(u"Ignoring message because sender is not in accept_domains")
                return

        if message.body is None:
            self.parent.log.info(u'Ignoring empty message')
            return

        event = Event(self.parent.name, u'message')
        event.message = unicode(message.body)
        event.sender['connection'] = message['from']

        if message['type'] == 'groupchat':
            if message['from'] in self.room_users:
                event.sender['connection'] = self.room_users[message['from']]
                event.sender['id'] = event.sender['connection'].split('/')[0]
            else:
                event.sender['id'] = message['from']
            if event.sender['id'] == self.parent.nick:
                return
            if '/' in message['from']:
                event.sender['nick'] = message['from'].split('/')[1]
            else:
                event.sender['nick'] = message['from']
            event.channel = message['from'].split('/')[0]
            event.public = True
        else:
            event.sender['id'] = event.sender['connection'].split('/')[0]
            event.sender['nick'] = event.sender['connection'].split('@')[0]
            event.channel = event.sender['connection']
            event.public = False
            event.addressed = True

        ibid.dispatcher.dispatch(event).addCallback(self.respond)
Ejemplo n.º 13
0
Archivo: log.py Proyecto: shoosen/ibid
    def log_handler(self, event):
        self.log_event(event)

        for response in event.responses:
            if 'reply' in response and isinstance(response['reply'], basestring):
                type = 'message'
                if response.get('action', False):
                    type = 'action'
                elif response.get('notice', False):
                    type = 'notice'
                e = Event(response['source'], type)
                e.source = response['source']
                e.channel = response['target']
                e.time = datetime.utcnow()
                e.sender = {
                    'id': ibid.config['botname'],
                    'connection': ibid.config['botname'],
                    'nick': ibid.config['botname'],
                }
                e.message = response['reply']
                self.log_event(e)
Ejemplo n.º 14
0
Archivo: log.py Proyecto: B-Rich/ibid-1
    def log_handler(self, event):
        self.log_event(event)

        for response in event.responses:
            if 'reply' in response and isinstance(response['reply'], basestring):
                type = 'message'
                if response.get('action', False):
                    type = 'action'
                elif response.get('notice', False):
                    type = 'notice'
                e = Event(response['source'], type)
                e.source = response['source']
                e.channel = response['target']
                e.time = datetime.utcnow()
                e.sender = {
                    'id': ibid.config['botname'],
                    'connection': ibid.config['botname'],
                    'nick': ibid.config['botname'],
                }
                e.message = response['reply']
                self.log_event(e)