mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-08-02 15:39:31 +08:00
76 lines
2.0 KiB
Bash
76 lines
2.0 KiB
Bash
#!/bin/sh /etc/rc.common
|
|
|
|
START=99
|
|
STOP=10
|
|
|
|
USE_PROCD=1
|
|
PROG=/usr/bin/beszel-agent
|
|
DATA_DIR=/var/lib/beszel-agent
|
|
FP_FILE="$DATA_DIR/fingerprint"
|
|
OLD_FP_FILE=/usr/share/beszel-agent/fingerprint
|
|
|
|
start_service() {
|
|
local enabled port key url token extra_fs fp
|
|
|
|
config_load 'beszel-agent'
|
|
config_get_bool enabled 'agent' 'enabled' '0'
|
|
config_get port 'agent' 'port' '45876'
|
|
config_get key 'agent' 'public_key' ''
|
|
config_get url 'agent' 'hub_url' ''
|
|
config_get token 'agent' 'token' ''
|
|
config_get extra_fs 'agent' 'extra_filesystems' ''
|
|
config_get fp 'agent' 'fingerprint' ''
|
|
|
|
[ "$enabled" -eq 0 ] && return 0
|
|
|
|
[ -z "$key" ] && {
|
|
logger -t beszel-agent "Public key not set!"
|
|
return 1
|
|
}
|
|
|
|
if [ -n "$url" ] || [ -n "$token" ]; then
|
|
if [ -z "$url" ] || [ -z "$token" ]; then
|
|
logger -t beszel-agent "Outbound mode requires both hub_url and token, but only one set!"
|
|
return 1
|
|
fi
|
|
fi
|
|
|
|
mkdir -p "$DATA_DIR"
|
|
|
|
# migrate from pre-UCI storage on flash
|
|
[ -z "$fp" ] && [ -s "$OLD_FP_FILE" ] && fp=$(cat "$OLD_FP_FILE")
|
|
|
|
if [ -z "$fp" ]; then
|
|
DATA_DIR="$DATA_DIR" "$PROG" fingerprint > /dev/null 2>&1
|
|
[ -s "$FP_FILE" ] && fp=$(cat "$FP_FILE")
|
|
fi
|
|
|
|
if [ -n "$fp" ]; then
|
|
printf '%s' "$fp" > "$FP_FILE"
|
|
[ "$(uci -q get beszel-agent.agent.fingerprint)" = "$fp" ] || {
|
|
uci set beszel-agent.agent.fingerprint="$fp"
|
|
uci commit beszel-agent
|
|
logger -t beszel-agent "Fingerprint saved to UCI: $fp"
|
|
}
|
|
else
|
|
logger -t beszel-agent "Failed to obtain fingerprint, agent will generate one"
|
|
fi
|
|
|
|
procd_open_instance beszel-agent
|
|
procd_set_param command "$PROG" -listen "$port" -key "$key"
|
|
[ -n "$url" ] && [ -n "$token" ] && {
|
|
procd_append_param command -url "$url" -token "$token"
|
|
}
|
|
|
|
procd_set_param env DATA_DIR="$DATA_DIR"
|
|
[ -n "$extra_fs" ] && procd_append_param env EXTRA_FILESYSTEMS="$extra_fs"
|
|
procd_set_param respawn 3600 5 5
|
|
procd_set_param stdout 1
|
|
procd_set_param stderr 1
|
|
procd_close_instance
|
|
}
|
|
|
|
service_triggers() {
|
|
procd_add_reload_trigger 'beszel-agent'
|
|
}
|