Example #1
0
    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)
Example #2
0
 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)