-
Notifications
You must be signed in to change notification settings - Fork 82
Open
Labels
2025-nov-sprintenhancementNew feature or requestNew feature or requestgood first issueGood for newcomersGood for newcomers
Description
These changes unblocked the reporting user but the proxy will need to come from config (rather than be hard coded):
diff --git a/server/secops-soar/secops_soar_mcp/http_client.py b/server/secops-soar/secops_soar_mcp/http_client.py
index 1c03768..9530406 100644
--- a/server/secops-soar/secops_soar_mcp/http_client.py
+++ b/server/secops-soar/secops_soar_mcp/http_client.py
@@ -29,10 +29,12 @@ class HttpClient:
self.base_url = base_url
self.app_key = app_key
self._session = None
+ self.proxy = "http://<proxy:port>"
def _get_session(self) -> aiohttp.ClientSession:
if self._session is None:
self._session = aiohttp.ClientSession()
+ # self._session = aiohttp.ClientSession(connector=aiohttp.TCPConnector(ssl=False))
return self._session
async def _get_headers(self):
@@ -58,7 +60,7 @@ class HttpClient:
headers = await self._get_headers()
try:
async with self._get_session().get(
- self.base_url + endpoint, params=params, headers=headers
+ self.base_url + endpoint, params=params, headers=headers, proxy=self.proxy
) as response:
response.raise_for_status() # Raise an exception for 4xx/5xx responses
return await response.json()
@@ -87,16 +89,29 @@ class HttpClient:
headers = await self._get_headers()
try:
async with self._get_session().post(
- self.base_url + endpoint, json=req, params=params, headers=headers
+ self.base_url + endpoint, json=req, params=params, headers=headers, proxy=self.proxy
) as response:
+ if response.status == 500:
+ # For 500 errors, try to get the error message from the response
+ try:
+ error_data = await response.json()
+ logger.error("Server error (500) for endpoint %s: %s", endpoint, error_data)
+ return {"error": f"Server error (500): {error_data}"}
+ except:
+ error_text = await response.text()
+ logger.error("Server error (500) for endpoint %s: %s", endpoint, error_text)
+ return {"error": f"Server error (500): {error_text}"}
+
response.raise_for_status()
data = await response.content.read()
decoded_data = data.decode("utf-8")
return json.loads(decoded_data)
except aiohttp.ClientResponseError as e:
- logger.debug("HTTP error occurred: %s", e)
+ logger.error("HTTP error occurred for endpoint %s: %s", endpoint, e)
+ return {"error": f"HTTP error: {e}"}
except Exception as e:
- logger.debug("An error occurred: %s", e)
+ logger.error("An error occurred for endpoint %s: %s", endpoint, e)
+ return {"error": f"Unexpected error: {e}"}
return None
async def patch(
@@ -118,7 +133,7 @@ class HttpClient:
headers = await self._get_headers()
try:
async with self._get_session().patch(
- self.base_url + endpoint, json=req, params=params, headers=headers
+ self.base_url + endpoint, json=req, params=params, headers=headers, proxy=self.proxy
) as response:
response.raise_for_status()
return await response.json()Metadata
Metadata
Assignees
Labels
2025-nov-sprintenhancementNew feature or requestNew feature or requestgood first issueGood for newcomersGood for newcomers