Files
ServerStatus/server/entrypoint-server.sh
T
2026-07-01 11:55:45 +08:00

59 lines
1.5 KiB
Bash

#!/bin/sh
set -eu
: "${CONFIG_PATH:=/ServerStatus/server/config.json}"
: "${WEB_DIR:=/usr/share/nginx/html}"
: "${SERGATE_PID_FILE:=/tmp/serverstatus-sergate.pid}"
: "${ADMIN_API_BIND:=127.0.0.1}"
: "${ADMIN_API_PORT:=35602}"
STOPPING=0
SERGATE_PID=""
API_PID=""
stop_all() {
STOPPING=1
if [ -n "$SERGATE_PID" ] && kill -0 "$SERGATE_PID" 2>/dev/null; then
kill -TERM "$SERGATE_PID" 2>/dev/null || true
fi
if [ -n "$API_PID" ] && kill -0 "$API_PID" 2>/dev/null; then
kill -TERM "$API_PID" 2>/dev/null || true
fi
nginx -s quit 2>/dev/null || true
}
trap 'stop_all; exit 0' INT TERM QUIT
mkdir -p "$WEB_DIR/json"
nginx
CONFIG_PATH="$CONFIG_PATH" \
SERGATE_PID_FILE="$SERGATE_PID_FILE" \
ADMIN_API_BIND="$ADMIN_API_BIND" \
ADMIN_API_PORT="$ADMIN_API_PORT" \
ADMIN_TOKEN="${ADMIN_TOKEN:-}" \
ADMIN_CORS_ORIGIN="${ADMIN_CORS_ORIGIN:-}" \
python3 /ServerStatus/server/manage_api.py &
API_PID="$!"
if [ -n "${ADMIN_TOKEN:-}" ]; then
echo "management API enabled on ${ADMIN_API_BIND}:${ADMIN_API_PORT}"
else
echo "management API running in read-only discovery mode; set ADMIN_TOKEN to enable writes"
fi
while [ "$STOPPING" -eq 0 ]; do
/ServerStatus/server/sergate --config="$CONFIG_PATH" --web-dir="$WEB_DIR" &
SERGATE_PID="$!"
echo "$SERGATE_PID" > "$SERGATE_PID_FILE"
set +e
wait "$SERGATE_PID"
STATUS="$?"
set -e
rm -f "$SERGATE_PID_FILE"
if [ "$STOPPING" -eq 1 ]; then
exit "$STATUS"
fi
echo "sergate exited with status ${STATUS}; restarting in 1s"
sleep 1
done