feat(import): user-extensible BOR_IMPORT_EXTENSIONS — any well-formed extension, A9 family stays the default

This commit is contained in:
2026-08-31 22:42:41 -04:00
parent 281f3555c3
commit d94f3d5a52
9 changed files with 485 additions and 47 deletions
+39
View File
@@ -0,0 +1,39 @@
#!/usr/bin/env bash
# UPTIME-PROBE-SENTINEL-9c2f — phase 56 fixture marker: this token exists
# nowhere else, so the extension_kb rows are unambiguous in the shared DB.
#
# uptime.sh — homelab service probe: polls the core services and posts a
# ntfy alert on the first failure. A novel (.sh) file on purpose — it
# only imports when BOR_IMPORT_EXTENSIONS names the sh extension.
set -euo pipefail
ALERT_TOPIC="homelab-alerts"
NTFY_URL="https://ntfy.reeseapps.com"
CHECKS=(
"k3s|https://10.0.1.10:6443/healthz"
"gitlab|https://gitlab.reeseapps.com/-/health_check"
"ntfy|https://ntfy.reeseapps.com/health"
)
probe() {
local name="$1" url="$2"
curl -s -o /dev/null -w "%{http_code}" --max-time 10 "$url"
}
main() {
local line name code
for line in "${CHECKS[@]}"; do
name="${line%%|*}"
code="$(probe "$name" "${line#*|}")"
if [[ "$code" != "200" ]]; then
echo "uptime: $name answered $code (expected 200)" >&2
curl -s -X POST "$NTFY_URL/$ALERT_TOPIC" \
-H "Title: homelab check failed" \
-d "$name is down (HTTP $code)"
fi
done
echo "uptime: round complete"
}
main "$@"