コード例 #1
0
ファイル: event.py プロジェクト: buzzworkers/tl
 def parse(self, handler, request, path=None):
     """ parse request/response into a WebEvent. """
     self.handler = handler
     self.request = request
     self.userhost = tornado.escape.xhtml_escape(handler.current_user)
     if not self.userhost: raise Exception("no current user.")
     try: how = request.arguments['how'][0]
     except KeyError: how = "background"
     if not how: how = "background"
     self.how = how
     if self.how == "undefined": self.how = "overwrite"
     logging.warn("web - how is %s" % self.how)
     input = request.headers.get('content') or request.headers.get('cmnd')
     if not input:
         try: input = request.arguments['content'] or request.arguments['cmnd']
         except KeyError: pass
     self.isweb = True
     if not input: logging.warn("input is %s" % input) ; raise NoInput(input)
     self.txt = fromenc(input[0].strip(), self.bot.encoding)
     self.nick = self.userhost.split("@")[0]
     self.auth = fromenc(self.userhost)
     self.stripped = stripped(self.auth)
     self.channel = stripped(self.userhost)
     self.createdfrom = str(handler)
     logging.debug('tornado - parsed - %s - %s' % (self.txt, self.userhost)) 
     self.prepare()
     return self
コード例 #2
0
ファイル: event.py プロジェクト: buzzworkers/tl
 def parseAPI(self, handler, apitype, path):
     """ parse request/response into a WebEvent. """
     #logging.warn(dir(handler))
     #logging.warn(dir(handler.request))
     #logging.warn(request.arguments)
     #logging.warn(request.body)
     self.handler = handler
     self.request = handler.request
     self.query = self.request.query
     self.upath = path
     self.apitype = apitype
     self.userhost = tornado.escape.xhtml_escape(handler.current_user)
     if not self.userhost: raise Exception("no current user.")
     input = path
     self.isweb = True
     logging.warn("input is %s" % input)
     if not input: raise NoInput(input)
     self.txt = fromenc(input.strip(), self.bot.encoding)
     self.nick = self.userhost.split("@")[0]
     self.auth = fromenc(self.userhost)
     self.stripped = stripped(self.auth)
     self.channel = stripped(self.userhost)
     self.createdfrom = str(handler)
     logging.debug('tornado - parsed - %s - %s' % (self.txt, self.userhost)) 
     self.prepare()
     return self
コード例 #3
0
ファイル: bot.py プロジェクト: buzzworkers/tl
 def handle_presence(self, data, *args, **kwargs):
     """ message handler. """   
     try:
         p = Presence()
         p.parse(data, self)
         frm = p.fromm
         nickk = ""   
         nick = p.nick
         if self.cfg.user in frm: self.pongcheck = True
         if nick: 
             self.userhosts[nick] = stripped(frm)
             nickk = nick
         jid = p.fromm
         if nickk and jid and self.cfg.fulljids:
             channel = p.channel
             if channel not in self.jids:
                 self.jids[channel] = {}
             self.jids[channel][nickk] = jid
             self.userhosts[nickk] = stripped(jid)
             logging.info('%s - setting jid of %s (%s) to %s' % (self.cfg.name, nickk, channel, self.userhosts[nickk]))
         if p.type == 'subscribe':
             pres = Presence({'to': p.fromm, 'type': 'subscribed'})
             self.send(pres)
             pres = Presence({'to': p.fromm, 'type': 'subscribe'})
             self.send(pres)
         nick = p.resource
         if p.type != 'unavailable':
             p.joined = True
             p.type = 'available'
         elif self.cfg.user in p.userhost:
             try:
                 del self.jids[p.channel]
                 logging.debug('%s - removed %s channel jids' % (self.cfg.name, p.channel))
             except KeyError: pass
         else:   
             try:
                 del self.jids[p.channel][p.nick]
                 logging.debug('%s - removed %s jid' % (self.cfg.name, p.nick))
             except KeyError: pass
         self.put(p)
     except Exception as ex: handle_exception()
コード例 #4
0
ファイル: event.py プロジェクト: buzzworkers/tl
 def parsesocket(self, handler, message):
     """ parse request/response into a WebEvent. """
     self.handler = handler
     try: data = LazyDict(json.loads(message))
     except Exception as ex: logging.error("failed to parse data: %s - %s" % (message, str(ex))) ; return self
     logging.info("incoming: %s" % message)
     self.div = data.target
     self.userhost = tornado.escape.xhtml_escape(handler.current_user)
     if not self.userhost: raise Exception("no current user.")
     self.isweb = True
     input = data.cmnd
     self.how = data.how or self.how
     logging.warn("cmnd is %s - how is %s" % (input, self.how))
     self.txt = fromenc(input.strip(), self.bot.encoding)
     self.nick = self.userhost.split("@")[0]
     self.auth = fromenc(self.userhost)
     self.stripped = stripped(self.auth)
     self.channel = stripped(self.userhost)
     self.createdfrom  = str(handler)
     logging.debug('tornado - parsed - %s - %s' % (self.txt, self.userhost)) 
     self.prepare()
     return self
コード例 #5
0
ファイル: bot.py プロジェクト: buzzworkers/tl
 def handle_message(self, data, *args, **kwargs):
     """ message handler. """   
     if '<delay xmlns="urn:xmpp:delay"' in str(data): logging.debug("ignoring delayed message") ; return
     m = Message()
     m.parse(data, self)
     if m.type == 'groupchat' and m.subject:
         logging.debug("%s - checking topic" % self.cfg.name)
         self.topiccheck(m)
         nm = Message(m)   
         callbacks.check(self, nm)
         return
     if m.isresponse:
         logging.debug("%s - message is a response" % self.cfg.name)
         return
     jid = None
     m.origjid = m.jid
     if self.cfg.fulljids and not m.msg:
         utarget = self.userhosts.get(m.nick)
         if utarget: m.userhost = m.jid = m.auth = stripped(utarget)
         else: m.userhost = m.jid
     if m.msg: m.userhost = stripped(m.userhost)
     logging.debug("using %s as userhost" % m.userhost)
     m.dontbind = False
     self.put(m)