class Controller(Parent): def models(self): self.agents = Agent(self.config) self.sender = RPCSender(self.config) # BELOW THIS LINE ARE ALL CONTROLLER ACTIONS def setFiles(self, body, resp): response = [] data = body['data'] # Create body for sending to agent sbody = {"files": data['files']} for agent in data['agents']: ag = self.agents.find(agent) if ag is not None: self.logger.info("Sending %s to %s" % (sbody, agent)) r = {agent: self.sender.send_request( 'SETFILES', agent, sbody, '000000000000', 'agentmanager', key=ag.QUEUE)} self.logger.info("Sent!") else: r = {agent: 'Agent Doesnt Exist!'} response.append(r) resp.respond(response)
class Controller(Parent): def models(self): self.agents = Agent(self.config) def send_agent_event(self, agent, key): event = {"agents": {}} event['agents'][agent.UUID] = agent.to_hash() self.event(event, 'agent.%s' % key) # BELOW THIS LINE ARE ALL CONTROLLER ACTIONS def handshake(self, data, resp): id = str(uuid.uuid4()) agent = self.agents.new() agent.UUID = id agent.HEARTBEAT = time.time() agent.DEAD = False agent.AUTHENTICATED = False agent.QUEUE = data['reply_to'] agent.MACHINEID = data['machineid'] agent.BOUND = False agent.METADATA = {} agent = self.agents.save(agent) self.send_agent_event(agent, "new") resp.respond(id) def update(self, body, resp): agent = self.agents.find(body['data']['UUID']) for column in self.agents.columns: if column in body['data']: setattr(agent, column, body['data'][column]) self.agents.save(agent) self.send_agent_event(agent, "update") resp.respond(agent.to_hash()) def goodbye(self, data, resp): agent = self.agents.find(data["from"]) self.agents.delete(agent) resp.respond("GOODBYE!") def get_agents(self, data, resp): agents = self.agents.findAll() response = {} for agent in agents: response[agent.UUID] = agent.to_hash() resp.respond(response) def get_agents_count(self, data, resp): agents = self.agents.findAll() count = len(agents) resp.respond(count) def get_single_agent(self, data, resp): agent = self.agents.find(data["data"]["id"]) response = None if agent is not None: response = {} response[agent.UUID] = agent.to_hash() resp.respond(response) def heartbeat(self, data, resp): self.logger.debug("Received HeartBeat from: %s", data["from"]) agent = self.agents.find(data["from"]) agent.HEARTBEAT = time.time() agent.DEAD = False self.agents.save(agent)