def run(self): print("WorkerResponder started.") while True: address = self.socket.recv() self.socket.recv() msg = self.socket.recv_pyobj() cmd = msg['cmd'] worker_dir = path.join(WORK_DIR,address) print("received from {}: {}".format(address,cmd)) if cmd == WREQ.REQ_FILE: fileutil.send_file(self.socket,msg['path'],msg['target'],msg['loc'],address) elif cmd == WREQ.REP_FILE: fileutil.write_req_file(self.socket,msg['path'],msg['target'],WORK_DIR,msg['body'],address) elif cmd == WREQ.REQ_ANALYSIS: try: w = analysis_queue.get_nowait() a = w['droidblaze'] # TODO: get apk from somewhere and transfer with message app = w['file'] f = open(app,'rb') app_data = f.read() f.close() self.socket.send(address,zmq.SNDMORE) self.socket.send("",zmq.SNDMORE) self.socket.send_pyobj({'cmd':WREQ.REP_ANALYSIS,'droidblaze':a,'app':app_data}) except Empty: self.socket.send(address,zmq.SNDMORE) self.socket.send("",zmq.SNDMORE) self.socket.send_pyobj({'cmd':WREQ.DONE}) elif cmd == WREQ.FIN_ANALYSIS: a = msg['droidblaze'] ret = msg['status'] fileutil.untar(path.join(WORK_DIR,a.analysis_id),msg['result']) a.merging_summary(path.join(WORK_DIR,a.analysis_id),ret) self.socket.send(address,zmq.SNDMORE) self.socket.send("",zmq.SNDMORE) self.socket.send_pyobj({'cmd':WREQ.DONE}) elif cmd == WREQ.DONE: self.socket.send(address,zmq.SNDMORE) self.socket.send("",zmq.SNDMORE) self.socket.send_pyobj({'cmd':WREQ.DONE}) elif cmd == WREQ.STATUS: status = msg['status'] client_status[address] = status updated_client.add(address) self.socket.send(address,zmq.SNDMORE) self.socket.send("",zmq.SNDMORE) self.socket.send_pyobj({'cmd':WREQ.DONE}) else: print("what?: "+cmd)
def filetransfer(self): global status status = "file transfer" while True: msg = self.socket.recv_pyobj() cmd = msg['cmd'] self.report_status() if cmd == WREQ.REP_FILE: fileutil.write_req_file(self.socket,msg['path'],msg['target'],self.workdir,msg['body']) elif cmd == WREQ.REQ_FILE: fileutil.send_file(self.socket,msg['path'],msg['target'],msg['loc']) elif cmd == WREQ.DONE: break else: print("what?? "+cmd)