def handle_delete_all(self, sender, cc): data0 = yield self.redis.hgetall("leela.xmpp") keys = [] for (key, data1) in data0.iteritems(): data = parser.parse_json(data1) if (data["sender"] == sender.userhost()): keys.append({"key": key}) self.redis.hdel("leela.xmpp", key) cc(200, {"results": keys})
def handle_delete_one(self, key, sender, cc): data0 = yield self.redis.hget("leela.xmpp", key) if (data0 is not None): data = parser.parse_json(data0) if (data["sender"] == sender.userhost()): yield self.redis.hdel("leela.xmpp", key) cc(200, {"results": {"key": key}}) else: cc(403, {"reason": "forbidden"}) else: cc(404, {"reason": "not found"})
def redis_pooling(self): data0 = yield self.redis.hgetall("leela.xmpp") for (key, conn) in list(self.active.iteritems()): if (key not in data0): logger.warn("reaping connection: %s" % (key,)) conn.shutdown() for (key, data1) in data0.iteritems(): data = parser.parse_json(data1) if (key not in self.active): logger.debug("spawning connection: %s: %s" % (key, data["sender"])) conn = Connection(key, xmppim.JID(data["sender"]), data["request"]["select"], self) self.core.connect(conn.factory())
def handle_select(self, request, sender, cc): try: if ((request["select"]["regex"] == "leela.xmpp") and (request["select"]["proc"] == "*")): data0 = yield self.redis.hgetall("leela.xmpp") tmp = [] for (key, data1) in data0.iteritems(): data = parser.parse_json(data1) sql = pp.render_select(data["request"]["select"]["proc"], data["request"]["select"]["regex"]) if (data["sender"] == sender.userhost()): tmp.append({"key": key, "cmd": sql }) cc(200, {"results": tmp}) else: hcode = hashlib.sha512() hcode.update(sender.userhost()) hcode.update(request["select"]["proc"]) hcode.update(request["select"]["regex"]) key = hcode.hexdigest() self.redis.hsetnx("leela.xmpp", key, pp.render_json({"request": request, "sender": sender.userhost()})) except: logger.exception() cc(500, {"reason": "internal server error"})
def unserialize_data(name, k, v, epoch): timetuple = list(unserialize_key(k, epoch=epoch)) timestamp = funcs.timetuple_timestamp(timetuple) return(data.Data(name, parser.parse_json(v), timestamp))
def unserialize_data(name, k, v, epoch): timetuple = list(unserialize_key(k, epoch=epoch)) timestamp = funcs.timetuple_timestamp(timetuple) return (data.Data(name, parser.parse_json(v), timestamp))