mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-07-28 03:01:54 +08:00
141 lines
3.9 KiB
Bash
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
|
|
}
|