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]))
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 ""