op-packages/rustdesk-server/files/rustdesk-server.init
github-actions[bot] 32600acc60 🌴 Sync 2026-03-05 23:51:42
2026-03-05 23:51:42 +08:00

141 lines
3.9 KiB
Bash

#!/bin/sh /etc/rc.common
USE_PROCD=1
START=99
CONF="rustdesk-server"
RUNDIR="/var/run/rustdesk-server"
WORKDIR="/etc/rustdesk-server"
start_service() {
local auto_fw global_key global_port
local hbbr_enabled hbbr_downgrade_start_check hbbr_downgrade_threshold \
hbbr_limit_speed hbbr_total_bandwidth hbbr_single_bandwidth
local hbbs_enabled hbbs_always_use_relay
config_load "$CONF"
config_get_bool auto_fw "global" "auto_fw" "0"
config_get global_key "global" "key" ""
config_get global_port "global" "port" "21116"
config_get_bool hbbr_enabled "hbbr" "enabled" "0"
config_get hbbr_downgrade_start_check "hbbr" "downgrade_start_check" ""
config_get hbbr_downgrade_threshold "hbbr" "downgrade_threshold" ""
config_get hbbr_limit_speed "hbbr" "limit_speed" ""
config_get hbbr_total_bandwidth "hbbr" "total_bandwidth" ""
config_get hbbr_single_bandwidth "hbbr" "single_bandwidth" ""
config_get_bool hbbs_enabled "hbbs" "enabled" "0"
config_get hbbs_always_use_relay "hbbs" "always_use_relay" ""
[ "$hbbr_enabled" -eq "1" ] || [ "$hbbs_enabled" -eq "1" ] || return 1
for dir in "$RUNDIR" "$WORKDIR"; do
if [ ! -d "$dir" ] && ! mkdir -p "$dir"; then
logger -p daemon.error -t "rustdesk-server" "Failed to create working directory: $dir"
return 1
fi
chown -R rustdesk-server:rustdesk-server "$dir"
done
if [ "$hbbr_enabled" -eq "1" ]; then
procd_open_instance "hbbr"
procd_set_param command /usr/bin/hbbr
procd_set_param env \
DOWNGRADE_START_CHECK="$hbbr_downgrade_start_check" \
DOWNGRADE_THRESHOLD="$hbbr_downgrade_threshold" \
KEY="$global_key" \
LIMIT_SPEED="$hbbr_limit_speed" \
PORT="$global_port" \
SINGLE_BANDWIDTH="$hbbr_single_bandwidth" \
TOTAL_BANDWIDTH="$hbbr_total_bandwidth"
procd_add_jail hbbr log procfs sysfs
procd_add_jail_mount "/etc/ssl/"
procd_add_jail_mount_rw "/etc/rustdesk-server/"
procd_add_jail_mount_rw "/var/run/rustdesk-server/"
procd_set_param respawn
procd_set_param user rustdesk-server
procd_set_param group rustdesk-server
if [ "$auto_fw" -eq "1" ]; then
hbbr_tcp_ports="$(( global_port + 1 ))"
procd_open_data
json_add_array firewall
json_add_object ""
json_add_string type rule
json_add_string name "Allow-rustdesk-relay-tcp"
json_add_string proto "tcp"
json_add_string src "*"
json_add_string dest_port "$hbbr_tcp_ports"
json_add_string target "ACCEPT"
json_close_object
json_close_array
procd_close_data
fi
procd_close_instance
fi
if [ "$hbbs_enabled" -eq "1" ]; then
procd_open_instance "hbbs"
procd_set_param command /usr/bin/hbbs
procd_set_param env \
ALWAYS_USE_RELAY="$hbbs_always_use_relay" \
KEY="$global_key" \
PORT="$global_port"
procd_add_jail hbbs log procfs sysfs
procd_add_jail_mount "/etc/ssl/"
procd_add_jail_mount_rw "/etc/rustdesk-server/"
procd_add_jail_mount_rw "/var/run/rustdesk-server/"
procd_set_param respawn
procd_set_param user rustdesk-server
procd_set_param group rustdesk-server
if [ "$auto_fw" -eq "1" ]; then
hbbs_tcp_ports="$(( global_port - 1 )) $global_port"
hbbs_udp_ports="$global_port"
procd_open_data
json_add_array firewall
json_add_object ""
json_add_string type rule
json_add_string name "Allow-rustdesk-server-tcp"
json_add_string proto "tcp"
json_add_string src "*"
json_add_string dest_port "$hbbs_tcp_ports"
json_add_string target "ACCEPT"
json_close_object
json_add_object ""
json_add_string type rule
json_add_string name "Allow-rustdesk-server-udp"
json_add_string proto "udp"
json_add_string src "*"
json_add_string dest_port "$hbbs_udp_ports"
json_add_string target "ACCEPT"
json_close_object
json_close_array
procd_close_data
fi
procd_close_instance
fi
}
stop_service() {
rm -f "$RUNDIR"/hbbr*.log "$RUNDIR"/hbbs*.log
}
service_triggers() {
procd_add_reload_trigger "$CONF"
}
reload_service() {
restart
}