fix(launcher): принимать JSON-массив results от MikroTik
Docker / build (push) Failing after 28s

RouterOS serialize превращает results в объект с ключами 0,1 — API отвечал 400. ros-6 собирает массив, ingest принимает оба формата.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Denozordec
2026-08-26 15:59:30 +07:00
co-authored by Cursor
parent d7bcd0d4ec
commit f53ca1ed7d
9 changed files with 130 additions and 20 deletions
+11 -8
View File
@@ -6,7 +6,7 @@
:local vtToken "__VT_INGEST_TOKEN__"
:local vtDaily "__VT_DAILY__"
:local vtRemove "__VT_REMOVE_DAILY__"
:local launcherVer "ros-5"
:local launcherVer "ros-6"
:local schedName "vt-cc"
:local dstFile "vt-cc.rsc"
@@ -100,7 +100,8 @@
"autodesk.com";"graylog.org";"redis.io";"copilot.microsoft.com"\
}
:local results ({})
:local resultJson ""
:local itemJson ""
:local code 0
:local data
:local line
@@ -142,22 +143,24 @@
}
:put ($host . " " . $code)
:set item { service=$host; raw={ https={ ipv4={ status=$code } } } }
:set ($results->[:len $results]) $item
:set itemJson [:serialize to=json value=$item]
:if ([:len $resultJson] > 0) do={ :set resultJson ($resultJson . ",") }
:set resultJson ($resultJson . $itemJson)
}
:local probe { publicIp=$publicIp }
:if ([:len $hoster] > 0) do={ :set ($probe->"hoster") $hoster }
:local payload {\
:local meta {\
schemaVersion=1;\
runId=$runId;\
probe=$probe;\
launcherVersion=$launcherVer;\
censorcheck={ version="ros"; mode="https" };\
results=$results\
censorcheck={ version="ros"; mode="https" }\
}
:local json [:serialize to=json value=$payload]
:local hdrs ("Content-Type:application/json,Authorization:Bearer " . $vtToken)
:local metaJson [:serialize to=json value=$meta]
:local json ([:pick $metaJson 0 ([:len $metaJson] - 1)] . ",\"results\":[" . $resultJson . "]}")
:local hdrs {"Content-Type: application/json"; ("Authorization: Bearer " . $vtToken)}
:put ("Отправляю ingest (" . [:len $json] . " B)...")
:set ingestOk false
:onerror err,attr in={
+11 -8
View File
@@ -6,7 +6,7 @@
:local vtToken "__VT_INGEST_TOKEN__"
:local vtDaily "__VT_DAILY__"
:local vtRemove "__VT_REMOVE_DAILY__"
:local launcherVer "ros-5"
:local launcherVer "ros-6"
:local schedName "vt-ic"
:local dstFile "vt-ic.rsc"
@@ -102,7 +102,8 @@
"ip-api.com";"cloudflare cdn"\
}
:local results ({})
:local resultJson ""
:local itemJson ""
:local url ""
:local method "get"
:local postData ""
@@ -259,22 +260,24 @@
:put ($name . " " . $iso)
:set item { service=$name; ipv4=$iso }
:set ($results->[:len $results]) $item
:set itemJson [:serialize to=json value=$item]
:if ([:len $resultJson] > 0) do={ :set resultJson ($resultJson . ",") }
:set resultJson ($resultJson . $itemJson)
}
:local probe { publicIp=$publicIp }
:if ([:len $hoster] > 0) do={ :set ($probe->"hoster") $hoster }
:local payload {\
:local meta {\
schemaVersion=1;\
runId=$runId;\
probe=$probe;\
launcherVersion=$launcherVer;\
ipregion={ version="ros" };\
results=$results\
ipregion={ version="ros" }\
}
:local json [:serialize to=json value=$payload]
:local hdrs ("Content-Type:application/json,Authorization:Bearer " . $vtToken)
:local metaJson [:serialize to=json value=$meta]
:local json ([:pick $metaJson 0 ([:len $metaJson] - 1)] . ",\"results\":[" . $resultJson . "]}")
:local hdrs {"Content-Type: application/json"; ("Authorization: Bearer " . $vtToken)}
:put ("Отправляю ingest (" . [:len $json] . " B)...")
:set ingestOk false
:onerror err,attr in={