60 lines
1.4 KiB
Bash
Executable file
60 lines
1.4 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
AGENTDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
AGENT="${AGENTDIR}/ogp_agent.pl"
|
|
PID_FILE=""
|
|
TIMEOUT=10
|
|
|
|
while [ "$#" -gt 0 ]; do
|
|
case "$1" in
|
|
-pidfile)
|
|
PID_FILE="${2:-}"
|
|
shift 2
|
|
;;
|
|
*)
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
|
|
mkdir -p "${AGENTDIR}/logs" "${AGENTDIR}/screenlogs" "${AGENTDIR}/tmp" "${AGENTDIR}/_gsp_content/hooks" "${AGENTDIR}/_gsp_content/generated" "${AGENTDIR}/_gsp_content/runtime"
|
|
touch "${AGENTDIR}/_gsp_content/runtime/server_content.pids" 2>/dev/null || true
|
|
|
|
if [ "$(id -u)" -eq 0 ]; then
|
|
echo "ERROR: Do not run the GSP agent as root. Run it as the configured agent user." >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -f "${AGENTDIR}/Cfg/Config.pm" ]; then
|
|
echo "ERROR: Missing ${AGENTDIR}/Cfg/Config.pm. Run ./agent_conf.sh --guided." >&2
|
|
exit 1
|
|
fi
|
|
|
|
if grep -Eq "CHANGE_ME_PANEL_AGENT_KEY|key[[:space:]]*=>[[:space:]]*''" "${AGENTDIR}/Cfg/Config.pm"; then
|
|
echo "ERROR: ${AGENTDIR}/Cfg/Config.pm still has a placeholder agent key." >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -x "$AGENT" ]; then
|
|
chmod ug+x "$AGENT" 2>/dev/null || true
|
|
fi
|
|
|
|
if [ -n "$PID_FILE" ]; then
|
|
echo "$$" > "$PID_FILE"
|
|
fi
|
|
|
|
cd "$AGENTDIR"
|
|
|
|
while true; do
|
|
perl "$AGENT" "$@" || rc=$?
|
|
rc="${rc:-0}"
|
|
if [ "$rc" -eq 0 ]; then
|
|
echo "$(date): GSP Agent stopped cleanly"
|
|
exit 0
|
|
fi
|
|
echo "$(date): GSP Agent exited with status ${rc}; restarting in ${TIMEOUT}s" >&2
|
|
sleep "$TIMEOUT"
|
|
unset rc
|
|
done
|