fix: правильный парсинг initiator из вебхука Nexus
Nexus присылает initiator в формате 'username/IP' (напр. admin/172.21.0.3). Теперь initiator и source_ip правильно разделяются из этого поля. Лог Webhook payload выводит распарсенные значения.
This commit is contained in:
@@ -96,15 +96,24 @@ async def nexus_webhook(
|
||||
if action not in RELEVANT_WEBHOOK_ACTIONS:
|
||||
return {"status": WEBHOOK_STATUS_IGNORED, "action": action}
|
||||
|
||||
# Log full payload for debugging (to discover available fields)
|
||||
log.info("Webhook payload: initiator=%s nodeId=%s keys=%s",
|
||||
data.get("initiator"), data.get("nodeId"), sorted(data.keys()))
|
||||
# Nexus sends initiator as "username/IP" — parse both fields
|
||||
raw_initiator = data.get("initiator", "")
|
||||
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", "")
|
||||
asset = data.get("asset")
|
||||
component = data.get("component")
|
||||
initiator = data.get("initiator")
|
||||
source_ip = request.client.host if request.client else None
|
||||
|
||||
if asset:
|
||||
asset_path = _extract_asset_path(asset)
|
||||
|
||||
Reference in New Issue
Block a user