def testBasicCommRequest(self): req = BotMessage("req1", ["Foo", "Bar"], True) comm = BotCommClient("", 424242, self.key, self.iv, "ECHO") comm.start() rcv = comm.request(req, "req_result1", 1.0) comm.kill() self.assert_(rcv.type == "req_result1") self.assert_(rcv.data == ["Foo", "Bar"])
def testBasicCommRequest(self): req = BotMessage("req1",["Foo","Bar"],True) comm = BotCommClient("",424242,self.key,self.iv,"ECHO") comm.start() rcv = comm.request(req,"req_result1",1.0) comm.kill() self.assert_(rcv.type == "req_result1") self.assert_(rcv.data == ["Foo","Bar"])
def testCommRequestExtraMessage(self): req = BotMessage("req2", ["Foo", "Bar"], True) comm = BotCommClient("", 424242, self.key, self.iv, "ECHO") comm.start() for i in range(0, 50): msg = BotMessage("norm", ["Test_%d" % i]) comm.send(msg) for i in xrange(5): rcv = comm.request(req, "req_result2", 1.0) self.assertEquals(rcv.type, "req_result2") self.assertEquals(rcv.data, ["Foo", "Bar"]) for i in range(0, 50): rcv = comm.receive(True, 1) self.assert_(rcv.data == ["Test_%d" % i]) for i in xrange(5): xtra = comm.receive(True, 1) self.assert_(xtra != None) self.assertEquals(xtra.data, i + 1) comm.kill()
def testCommRequestExtraMessage(self): req = BotMessage("req2",["Foo","Bar"],True) comm = BotCommClient("",424242,self.key,self.iv,"ECHO") comm.start() for i in range(0,50): msg = BotMessage("norm",["Test_%d" % i]) comm.send(msg) for i in xrange(5): rcv = comm.request(req,"req_result2",1.0) self.assertEquals(rcv.type,"req_result2") self.assertEquals(rcv.data,["Foo","Bar"]) for i in range(0,50): rcv = comm.receive(True,1) self.assert_(rcv.data == ["Test_%d" % i]) for i in xrange(5): xtra = comm.receive(True,1) self.assert_(xtra != None) self.assertEquals(xtra.data,i+1) comm.kill()
class WebBot(Process): def __init__(self, conf, init=False): Process.__init__(self) self.conf = conf self.comm = None self.init = init self.webserver = None self.logger = conf.buildLogger("WebBot") self.cmd_q = Queue.Queue() self.buffered_msgs = [] def cmd(self, cmd, q): self.cmd_q.put((cmd, q)) """ #Only have to worry about handeling outside events #Buffered messages will all be handled after WebBot comms def __getResponse(self, msg_type): result = None while(result == None): msg = self.comm.receive() if(msg.type == msg_type): result = msg else: self.buffered_msgs.append(msg) return result """ def run(self): server_info = self.conf.getGameStateServerInfo() self.comm = BotCommClient(server_info.host, server_info.port, server_info.key, server_info.iv, "ATTACK_WEB_BOT") self.comm.start() self.webserver = WebserverThread(self) self.webserver.start() while (True): cmd, thread_q = self.cmd_q.get() if (cmd == "LIST_EXPLOITS"): msg = self.comm.request(BotMessage("LIST_EXPLOITS", None), 5) assert (msg.type == "LIST_EXPLOITS_RESULT") thread_q.put(msg.data) elif (cmd == "GET_FLAG_STATS"): msg = self.comm.request(BotMessage("GET_FLAG_STATS", None), 5) if (msg != None): assert (msg.type == "GET_FLAG_STATS_RESULT") thread_q.put(msg.data) thread_q.put(None) elif (cmd.startswith("GET_LOG:")): (exploit, lines) = cmd[8:].split("|") msg = self.comm.request(BotMessage(cmd, (exploit, lines)), 5) thread_q.put(msg.data) elif (cmd.startswith("GET_EXPLOIT:")): exploit = cmd[12:] msg = self.comm.request(BotMessage(cmd, (exploit, )), 5) thread_q.put(msg.data) elif (cmd.startswith("TOGGLE_EXPLOIT:")): self.comm.send(BotMessage(cmd, None)) msg = self.comm.getPendingMessages() if (msg != None): self.logger.error("Unexpected message: %r %r" % (msg.type, msg.data)) self.webserver.join()
class WebBot(Process): def __init__(self,conf,init=False): Process.__init__(self) self.conf = conf self.comm = None self.init = init self.webserver = None self.logger = conf.buildLogger("WebBot") self.cmd_q = Queue.Queue() self.buffered_msgs = [] def cmd(self,cmd,q): self.cmd_q.put((cmd,q)) """ #Only have to worry about handeling outside events #Buffered messages will all be handled after WebBot comms def __getResponse(self, msg_type): result = None while(result == None): msg = self.comm.receive() if(msg.type == msg_type): result = msg else: self.buffered_msgs.append(msg) return result """ def run(self): server_info = self.conf.getGameStateServerInfo() self.comm = BotCommClient( server_info.host, server_info.port, server_info.key, server_info.iv, "ATTACK_WEB_BOT") self.comm.start() self.webserver = WebserverThread(self) self.webserver.start() while(True): cmd,thread_q = self.cmd_q.get() if(cmd == "LIST_EXPLOITS"): msg = self.comm.request(BotMessage("LIST_EXPLOITS",None),5) assert(msg.type == "LIST_EXPLOITS_RESULT") thread_q.put(msg.data) elif(cmd == "GET_FLAG_STATS"): msg = self.comm.request(BotMessage("GET_FLAG_STATS",None),5) if(msg != None): assert(msg.type == "GET_FLAG_STATS_RESULT") thread_q.put(msg.data) thread_q.put(None) elif(cmd.startswith("GET_LOG:")): (exploit,lines) = cmd[8:].split("|") msg = self.comm.request(BotMessage(cmd,(exploit,lines)),5) thread_q.put(msg.data) elif(cmd.startswith("GET_EXPLOIT:")): exploit = cmd[12:] msg = self.comm.request(BotMessage(cmd,(exploit,)),5) thread_q.put(msg.data) elif(cmd.startswith("TOGGLE_EXPLOIT:")): self.comm.send(BotMessage(cmd,None)) msg = self.comm.getPendingMessages() if(msg != None): self.logger.error("Unexpected message: %r %r" % (msg.type,msg.data)) self.webserver.join()