Exemple #1
0
 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})
Exemple #2
0
 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"})
Exemple #3
0
 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())
Exemple #4
0
 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"})
Exemple #5
0
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))
Exemple #6
0
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))