Exemple #1
0
 def lastseen(self, context, args):
     args.default("search", "")
     search = args.getstr("search")
     if not args.getbool("regex"):
         search = ".*" + re.escape(search) + ".*"
     e = self.checkurl(args.getstr('url'))
     if e:
         return e
     d = self.lastseendb.d[args.getstr('url')]
     s = {}
     d = d['auths'] if args.getbool('auth') else d['names']
     for p in d:
         v = d[p]
         if utils.imatch(p, search):
             s[p] = v
     if not s:
         return "No results."
     if args.getbool('count'):
         return "The number of entries: %d" % len(s)
     p = sorted(s, key=lambda x: -s[x])[0]
     return "%s: %s -- %s ago." % (p,
                                   time.strftime(
                                   "%Y-%m-%d %H:%M:%S UTC",
                                   time.gmtime(s[p])),
                                   timeutils.agostr(s[p]))
Exemple #2
0
 def search(self, context, args):
     args.default("search", "")
     search = args.getstr("search")
     if not args.getbool("regex"):
         search = ".*" + re.escape(search) + ".*"
     e = self.checkurl(args.getstr('url'))
     if e:
         return e
     if time.time() - self.cache[args.getstr('url')].time > 30:
         self.onecache(args.getstr('url'), timeout=2)
     rf = self.cache[args.getstr('url')]
     ret = []
     for server in rf.servers:
         s = []
         l = (server['playerauths']
              if args.getbool('auth')
              else server['players'])
         for p in l:
             if type(p) in (tuple, list):
                 p = p[1]
             if p:
                 if utils.imatch(p, search):
                     s.append(p)
         if s:
             d = server['description']
             # d = d[:d.rindex(' [')]
             if args.getbool('oneline'):
                 ret += s
             else:
                 ret.append(("%s: %s" % (d, '; '.join(s)),
                             len(s)))
     if args.getbool('oneline'):
         return '; '.join(sorted(ret))
     ret = '\n'.join([r[0] for r in sorted(ret,
                                           key=lambda x: -x[1])])
     context.reply(ret or "No results.", more=True)
     return ""