Merge pull request #2364 from guardicore/2274-agent-logs-endpoint

Use new agent logs endpoint
This commit is contained in:
Mike Salvatore 2022-09-28 15:28:40 -04:00 committed by GitHub
commit 1b4f72e5e3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 18 additions and 23 deletions

View File

@ -68,13 +68,6 @@ class ControlClient:
except Exception as exc:
logger.warning(f"Error connecting to control server {self.server_address}: {exc}")
def send_log(self, log):
try:
telemetry = {"monkey_guid": GUID, "log": json.dumps(log)}
self._island_api_client.send_log(json.dumps(telemetry))
except Exception as exc:
logger.warning(f"Error connecting to control server {self.server_address}: {exc}")
def get_pba_file(self, filename):
try:
return self._island_api_client.get_pba_file(filename)

View File

@ -16,7 +16,7 @@ from common.common_consts.timeouts import (
SHORT_REQUEST_TIMEOUT,
)
from common.credentials import Credentials
from common.types import SocketAddress
from common.types import AgentID, SocketAddress
from . import (
AbstractIslandAPIClientFactory,
@ -92,9 +92,9 @@ class HTTPIslandAPIClient(IIslandAPIClient):
self._api_url = f"https://{island_server}/api"
@handle_island_errors
def send_log(self, log_contents: str):
response = requests.post( # noqa: DUO123
f"{self._api_url}/log",
def send_log(self, agent_id: AgentID, log_contents: str):
response = requests.put( # noqa: DUO123
f"{self._api_url}/agent-logs/{agent_id}",
json=log_contents,
verify=False,
timeout=MEDIUM_REQUEST_TIMEOUT,

View File

@ -5,7 +5,7 @@ from common import AgentRegistrationData, AgentSignals, OperatingSystem
from common.agent_configuration import AgentConfiguration
from common.agent_events import AbstractAgentEvent
from common.credentials import Credentials
from common.types import SocketAddress
from common.types import AgentID, SocketAddress
class IIslandAPIClient(ABC):
@ -30,10 +30,11 @@ class IIslandAPIClient(ABC):
"""
@abstractmethod
def send_log(self, log_contents: str):
def send_log(self, agent_id: AgentID, log_contents: str):
"""
Send the contents of the agent's log to the island
:param agent_id: The ID of the agent whose logs are being sent
:param log_contents: The contents of the agent's log
:raises IslandAPIConnectionError: If the client cannot successfully connect to the island
:raises IslandAPIRequestError: If an error occurs while attempting to connect to the

View File

@ -111,6 +111,7 @@ class InfectionMonkey:
self._singleton = SystemSingleton()
self._opts = self._get_arguments(args)
self._agent_id = get_agent_id()
self._agent_event_serializer_registry = self._setup_agent_event_serializers()
@ -122,7 +123,7 @@ class InfectionMonkey:
server_address=self._island_address, island_api_client=self._island_api_client
)
self._control_channel = ControlChannel(
str(self._island_address), get_agent_id(), self._island_api_client
str(self._island_address), self._agent_id, self._island_api_client
)
self._register_agent()
@ -176,7 +177,7 @@ class InfectionMonkey:
def _register_agent(self):
agent_registration_data = AgentRegistrationData(
id=get_agent_id(),
id=self._agent_id,
machine_hardware_id=get_machine_id(),
start_time=agent_process.get_start_time(),
# parent_id=parent,
@ -496,11 +497,11 @@ class InfectionMonkey:
monkey_log_path = get_agent_log_path()
if monkey_log_path.is_file():
with open(monkey_log_path, "r") as f:
log = f.read()
log_contents = f.read()
else:
log = ""
log_contents = ""
self._control_client.send_log(log)
self._island_api_client.send_log(self._agent_id, log_contents)
@staticmethod
def _self_delete() -> bool:

View File

@ -37,7 +37,7 @@ AGENT_REGISTRATION = AgentRegistrationData(
TIMESTAMP = 123456789
ISLAND_URI = f"https://{SERVER}/api?action=is-up"
ISLAND_SEND_LOG_URI = f"https://{SERVER}/api/log"
ISLAND_SEND_LOG_URI = f"https://{SERVER}/api/agent-logs/{AGENT_ID}"
ISLAND_GET_PBA_FILE_URI = f"https://{SERVER}/api/pba/download/{PBA_FILE}"
ISLAND_GET_AGENT_BINARY_URI = f"https://{SERVER}/api/agent-binaries/{WINDOWS}"
ISLAND_SEND_EVENTS_URI = f"https://{SERVER}/api/agent-events"
@ -119,8 +119,8 @@ def test_island_api_client__send_log(island_api_client, actual_error, expected_e
island_api_client.connect(SERVER)
with pytest.raises(expected_error):
m.post(ISLAND_SEND_LOG_URI, exc=actual_error)
island_api_client.send_log(log_contents="some_data")
m.put(ISLAND_SEND_LOG_URI, exc=actual_error)
island_api_client.send_log(agent_id=AGENT_ID, log_contents="some_data")
@pytest.mark.parametrize(
@ -136,8 +136,8 @@ def test_island_api_client_send_log__status_code(island_api_client, status_code,
island_api_client.connect(SERVER)
with pytest.raises(expected_error):
m.post(ISLAND_SEND_LOG_URI, status_code=status_code)
island_api_client.send_log(log_contents="some_data")
m.put(ISLAND_SEND_LOG_URI, status_code=status_code)
island_api_client.send_log(agent_id=AGENT_ID, log_contents="some_data")
@pytest.mark.parametrize(