示例#1
0
文件: smtp.py 项目: 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)
示例#2
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)
示例#3
0
文件: http.py 项目: B-Rich/ibid-1
 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
示例#4
0
文件: http.py 项目: 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
示例#5
0
文件: telnet.py 项目: 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'
示例#6
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
示例#7
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
示例#8
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
示例#9
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)
示例#10
0
文件: smtp.py 项目: B-Rich/ibid-1
    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)