blob: eaaf9cfe84734229a848d46aaa5d29bea388e7c6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
#!/bin/sh /etc/rc.common
# shellcheck disable=SC2034,SC2154
START=98
STOP=10
USE_PROCD=1
NAME=rustdesk-server
# Use wrapper scripts that set working directory for key generation
# See /usr/libexec/rustdesk-hbbs and /usr/libexec/rustdesk-hbbr for details
PROG_HBBS=/usr/libexec/rustdesk-hbbs
PROG_HBBR=/usr/libexec/rustdesk-hbbr
BIN_HBBS=/usr/bin/hbbs
BIN_HBBR=/usr/bin/hbbr
KEY_DIR=/etc/rustdesk
get_config() {
config_get_bool enabled "$1" enabled 0
config_get_bool enabled_relay "$1" enabled_relay 0
# HBBS settings
config_get server_port "$1" server_port
config_get server_key "$1" server_key
config_get server_relay_servers "$1" server_relay_servers
config_get server_rendezvous_servers "$1" server_rendezvous_servers
config_get server_mask "$1" server_mask
config_get server_rmem "$1" server_rmem
config_get server_serial "$1" server_serial
config_get server_software_url "$1" server_software_url
config_get_bool server_env_always_use_relay "$1" server_env_always_use_relay 0
config_get server_env_rust_log "$1" server_env_rust_log
# HBBR settings
config_get relay_port "$1" relay_port
config_get relay_key "$1" relay_key
config_get relay_env_rust_log "$1" relay_env_rust_log
config_get relay_env_limit_speed "$1" relay_env_limit_speed
config_get relay_env_single_bandwidth "$1" relay_env_single_bandwidth
config_get relay_env_total_bandwidth "$1" relay_env_total_bandwidth
config_get relay_env_downgrade_threshold "$1" relay_env_downgrade_threshold
config_get relay_env_downgrade_start_check "$1" relay_env_downgrade_start_check
}
start_hbbs() {
[ "$enabled" = "1" ] || return 0
[ -x "$BIN_HBBS" ] || {
logger -t "$NAME" "Error: $BIN_HBBS not found or not executable"
return 1
}
# Convert UCI lists (space-separated) to comma-separated for CLI
local relay_servers_csv="${server_relay_servers// /,}"
local rendezvous_servers_csv="${server_rendezvous_servers// /,}"
# Build command arguments
local cmd_args="${server_port:+ -p $server_port}${relay_servers_csv:+ -r $relay_servers_csv}${server_key:+ -k $server_key}${rendezvous_servers_csv:+ -R $rendezvous_servers_csv}${server_mask:+ --mask $server_mask}${server_rmem:+ -M $server_rmem}${server_serial:+ -s $server_serial}${server_software_url:+ -u $server_software_url}"
procd_open_instance hbbs
procd_set_param command "$PROG_HBBS" $cmd_args
procd_set_param respawn 3600 5 5
procd_set_param stdout 1
procd_set_param stderr 1
procd_set_param pidfile /var/run/hbbs.pid
# Environment variables
procd_append_param env "DB_URL=/tmp/rustdesk_db_v2.sqlite3"
[ "$server_env_always_use_relay" = "1" ] && procd_append_param env "ALWAYS_USE_RELAY=Y"
[ -n "$server_env_rust_log" ] && procd_append_param env "RUST_LOG=$server_env_rust_log"
procd_close_instance
}
start_hbbr() {
[ "$enabled_relay" = "1" ] || return 0
[ -x "$BIN_HBBR" ] || {
logger -t "$NAME" "Error: $BIN_HBBR not found or not executable"
return 1
}
# Build command arguments
local cmd_args="${relay_port:+ -p $relay_port}${relay_key:+ -k $relay_key}"
procd_open_instance hbbr
procd_set_param command "$PROG_HBBR" $cmd_args
procd_set_param respawn 3600 5 5
procd_set_param stdout 1
procd_set_param stderr 1
procd_set_param pidfile /var/run/hbbr.pid
# Environment variables
[ -n "$relay_env_rust_log" ] && procd_append_param env "RUST_LOG=$relay_env_rust_log"
[ "${relay_env_limit_speed:-0}" != "0" ] && procd_append_param env "LIMIT_SPEED=$relay_env_limit_speed"
[ "${relay_env_single_bandwidth:-0}" != "0" ] && procd_append_param env "SINGLE_BANDWIDTH=$relay_env_single_bandwidth"
[ "${relay_env_total_bandwidth:-0}" != "0" ] && procd_append_param env "TOTAL_BANDWIDTH=$relay_env_total_bandwidth"
[ -n "$relay_env_downgrade_threshold" ] && procd_append_param env "DOWNGRADE_THRESHOLD=$relay_env_downgrade_threshold"
[ -n "$relay_env_downgrade_start_check" ] && procd_append_param env "DOWNGRADE_START_CHECK=$relay_env_downgrade_start_check"
procd_close_instance
}
start_service() {
mkdir -p "$KEY_DIR"
config_load "$NAME"
config_foreach get_config "$NAME"
[ "$enabled" != "1" ] && [ "$enabled_relay" != "1" ] && {
logger -t "$NAME" "Services disabled. Not starting."
return 0
}
start_hbbs
start_hbbr
}
stop_service() {
logger -t "$NAME" "Service stopping"
}
service_triggers() {
procd_add_reload_trigger "$NAME"
}
reload_service() {
stop
start
}
|