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