def handle_message(self, message, address=['*']): if self.filter and message.startswith(self.filter): message = aes.decrypt(message[len(self.filter):], settings.KEY) elif self.filter: return elif self.parse_message: message = self.parse_message(message) ob = json.loads(message) ob['address'] = address[0] ob['timestamp'] = datetime.datetime.utcnow() self.logger.info("Got Message: %s" % ob) if not self.callback(ob, **self.kwargs): self.stop()
def parse_message(self, message): for k,n in self.nodes.iteritems(): try: return n.parse_message(message) except Exception as e: self.logger.exception(e) try: return aes.decrypt(message, settings.KEY) except Exception as e: self.logger.exception(e) return message
def initialize_rpc(self, obj, **kwargs): rpc = zmq.Context() rpc_socket = rpc.socket(zmq.REP) rpc_socket.bind("tcp://*:%s" % obj.get('port')) self.logger.info("RPC listening on: %s" % obj.get('port')) settings.KEY = base64.urlsafe_b64decode(str(obj.get('key'))) self.logger.info("%s Initialized" % self.name) while True: if self.initializing: self.initializing = False self.publish(dict(method='initialized')) message = aes.decrypt(rpc_socket.recv(), settings.KEY) ob = json.loads(message) try: res = getattr(self, ob.get("method"))(ob) st = json.dumps(res, cls=ComplexEncoder) rpc_socket.send(aes.encrypt(st, settings.KEY)) except Exception as e: self.logger.exception(e) gevent.sleep(.1)
def run(self): rpc = zmq.Context() rpc_socket = rpc.socket(zmq.REP) rpc_socket.bind("tcp://*:%s" % settings.CLIENT_RPC) self.logger.info("RPC listening on: %s" % settings.CLIENT_RPC) while True: try: self.logger.info("Waiting for RPC") message = rpc_socket.recv() self.logger.info("RPC Got: %s" % message) message = aes.decrypt(message, settings.KEY) ob = json.loads(message) res = getattr(self, ob.get("method"))(ob) self.logger.info("Result: %s" % res) st = json.dumps(res, cls=ComplexEncoder) st = aes.encrypt(st, settings.KEY) self.logger.info("Result: %s" % st) rpc_socket.send(st) except Exception as e: rpc_socket.send("{'error':true}") self.logger.exception(e)
def parse_message(self, message): return aes.decrypt(message, settings.KEY)
def parse_message(self, message): return aes.decrypt(message, self.key)