Files
op-packages/beszel-agent/files/beszel-agent.init
T

125 lines
3.6 KiB
Bash

#!/bin/sh /etc/rc.common
START=99
USE_PROCD=1
NAME=beszel-agent
PROG=/usr/bin/beszel-agent
append_fs() {
local value="$1"
if [ -z "$FS_LIST" ]; then
FS_LIST="$value"
else
FS_LIST="$FS_LIST,$value"
fi
}
append_nic() {
local value="$1"
if [ -z "$NIC_LIST" ]; then
NIC_LIST="$value"
else
NIC_LIST="$NIC_LIST,$value"
fi
}
boot() {
local delay
delay="$(uci -q get $NAME.@main.boot_delay)"
sleep "${delay:-15}"
start "$@"
}
start_service() {
local enable data_dir docker_host gpu_collector hub_url intel_gpu_device key listen log_level port token skip_gpu skip_systemd system_name
config_load "$NAME"
config_get_bool enable "main" "enable" 0
[ "$enable" -eq 1 ] || return 0
config_get data_dir "main" "data_dir" "/etc/beszel-agent"
config_get docker_host "main" "docker_host" ""
config_get gpu_collector "main" "gpu_collector" ""
config_get hub_url "main" "hub_url" ""
config_get intel_gpu_device "main" "intel_gpu_device" ""
config_get key "main" "key" ""
config_get listen "main" "listen" ""
config_get log_level "main" "log_level" "info"
config_get port "main" "port" "45876"
config_get skip_gpu "main" "skip_gpu" "false"
case "$(uname -m)" in
x86_64|i?86)
if ! ls /sys/class/drm/card[0-9]* >/dev/null 2>&1; then
skip_gpu="true"
fi
;;
*)
skip_gpu="true"
;;
esac
config_get skip_systemd "main" "skip_systemd" "false"
config_get system_name "main" "system_name" ""
config_get token "main" "token" ""
if [ -n "$data_dir" ]; then
mkdir -p "$data_dir"
if [ -f /etc/sysupgrade.conf ]; then
if ! grep -qFx "$data_dir" /etc/sysupgrade.conf; then
echo "$data_dir" >> /etc/sysupgrade.conf
fi
fi
fi
FS_LIST=""
config_list_foreach "main" "extra_filesystems" append_fs
NIC_LIST=""
config_list_foreach "main" "nics" append_nic
procd_open_instance "beszel-agent"
procd_set_param command "$PROG"
procd_set_param env HOST_PROC="/proc" HOST_SYS="/sys"
if [ -n "$listen" ]; then
procd_append_param env LISTEN="$listen"
else
procd_append_param env PORT="$port"
fi
[ -n "$docker_host" ] && procd_append_param env DOCKER_HOST="$docker_host"
[ -n "$data_dir" ] && procd_append_param env DATA_DIR="$data_dir"
[ -n "$FS_LIST" ] && procd_append_param env EXTRA_FILESYSTEMS="$FS_LIST"
[ -n "$hub_url" ] && procd_append_param env HUB_URL="$hub_url"
[ -n "$key" ] && procd_append_param env KEY="$key"
[ -n "$log_level" ] && procd_append_param env LOG_LEVEL="$log_level"
[ -n "$NIC_LIST" ] && procd_append_param env NICS="$NIC_LIST"
[ -n "$skip_gpu" ] && procd_append_param env SKIP_GPU="$skip_gpu"
[ -n "$skip_systemd" ] && procd_append_param env SKIP_SYSTEMD="$skip_systemd"
[ -n "$system_name" ] && procd_append_param env SYSTEM_NAME="$system_name"
[ -n "$token" ] && procd_append_param env TOKEN="$token"
if [ "$skip_gpu" = "false" ]; then
[ -n "$gpu_collector" ] && procd_append_param env GPU_COLLECTOR="$gpu_collector"
if [ "$gpu_collector" = "intel_gpu_top" ] || [ -z "$gpu_collector" ]; then
[ -n "$intel_gpu_device" ] && procd_append_param env INTEL_GPU_DEVICE="$intel_gpu_device"
fi
fi
procd_set_param stdout 1
procd_set_param stderr 1
procd_set_param respawn
procd_close_instance
}
service_triggers() {
procd_add_reload_trigger "beszel-agent"
}
reload_service() {
stop
start
}