fix: правильный парсинг initiator из вебхука Nexus

Nexus присылает initiator в формате 'username/IP' (напр. admin/172.21.0.3).
Теперь initiator и source_ip правильно разделяются из этого поля.
Лог Webhook payload выводит распарсенные значения.
This commit is contained in:
Marker689
2026-05-10 08:06:06 +03:00
parent 904e917f1f
commit c99a7bf67c

View File

@@ -96,15 +96,24 @@ async def nexus_webhook(
if action not in RELEVANT_WEBHOOK_ACTIONS: if action not in RELEVANT_WEBHOOK_ACTIONS:
return {"status": WEBHOOK_STATUS_IGNORED, "action": action} return {"status": WEBHOOK_STATUS_IGNORED, "action": action}
# Log full payload for debugging (to discover available fields) # Nexus sends initiator as "username/IP" — parse both fields
log.info("Webhook payload: initiator=%s nodeId=%s keys=%s", raw_initiator = data.get("initiator", "")
data.get("initiator"), data.get("nodeId"), sorted(data.keys())) initiator = None
source_ip = None
if raw_initiator and "/" in raw_initiator:
parts = raw_initiator.rsplit("/", 1)
initiator = parts[0]
source_ip = parts[1]
elif raw_initiator:
initiator = raw_initiator
source_ip = request.client.host if request.client else None
log.info("Webhook: action=%s initiator=%s source_ip=%s",
action, initiator, source_ip)
repository = data.get("repositoryName", "") repository = data.get("repositoryName", "")
asset = data.get("asset") asset = data.get("asset")
component = data.get("component") component = data.get("component")
initiator = data.get("initiator")
source_ip = request.client.host if request.client else None
if asset: if asset:
asset_path = _extract_asset_path(asset) asset_path = _extract_asset_path(asset)