feat: add bds core, locale updates and safety fixes
This commit is contained in:
72
lib/report.sh
Normal file
72
lib/report.sh
Normal file
@@ -0,0 +1,72 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
json_escape() {
|
||||
local raw="${1//\\/\\\\}"
|
||||
raw="${raw//\"/\\\"}"
|
||||
raw="${raw//$'\n'/\\n}"
|
||||
echo "$raw"
|
||||
}
|
||||
|
||||
send_report() {
|
||||
local status="$1"
|
||||
local message="${2:-}"
|
||||
local step="${3:-}"
|
||||
local step_index="${4:-}"
|
||||
local step_total="${5:-}"
|
||||
local step_percent="null"
|
||||
local step_index_json="null"
|
||||
local step_total_json="null"
|
||||
local step_percent_json="null"
|
||||
|
||||
if [[ "$step_index" =~ ^[0-9]+$ ]]; then
|
||||
step_index_json="$step_index"
|
||||
fi
|
||||
|
||||
if [[ "$step_total" =~ ^[0-9]+$ && "$step_total" -gt 0 ]]; then
|
||||
step_total_json="$step_total"
|
||||
fi
|
||||
|
||||
if [[ "$step_index_json" != "null" && "$step_total_json" != "null" ]]; then
|
||||
if (( step_index > step_total )); then
|
||||
step_percent_json=100
|
||||
else
|
||||
step_percent=$(( step_index * 100 / step_total ))
|
||||
step_percent_json="$step_percent"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -z "${REPORT_URL:-}" || -z "${REPORT_TOKEN:-}" ]]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
local payload
|
||||
payload="$(printf '{ "status":"%s", "core":"%s", "dir":"%s", "port":%s, "protocol":"%s", "service":"%s", "message":"%s", "step":"%s", "step_index":%s, "step_total":%s, "step_percent":%s }' \
|
||||
"$(json_escape "$status")" \
|
||||
"$(json_escape "${CORE}")" \
|
||||
"$(json_escape "${SERVER_DIR}")" \
|
||||
"${SERVER_PORT}" \
|
||||
"$(json_escape "${CORE_PROTOCOL}")" \
|
||||
"$(json_escape "${SERVICE_MODE_ACTIVE}")" \
|
||||
"$(json_escape "$message")" \
|
||||
"$(json_escape "$step")" \
|
||||
"$step_index_json" \
|
||||
"$step_total_json" \
|
||||
"$step_percent_json")"
|
||||
|
||||
local attempt
|
||||
for attempt in 1 2; do
|
||||
if [[ "${DRY_RUN}" == "yes" ]]; then
|
||||
info "$(t report_dry_run "$payload")"
|
||||
return 0
|
||||
fi
|
||||
if curl -fsSL -X POST "$REPORT_URL" \
|
||||
-H "Authorization: Bearer ${REPORT_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$payload" >/dev/null 2>&1; then
|
||||
return 0
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
|
||||
warn "$(t report_failed)"
|
||||
}
|
||||
Reference in New Issue
Block a user