blob: 3ec81e593658600c50e6c35c4cc4734883607af3 (
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
|
#!/bin/sh /etc/rc.common
START=90
STOP=10
USE_PROCD=1
PROG=/usr/bin/syncthing
config_cb() {
[ $# -eq 0 ] && return
option_cb() {
local option="$1"
local value="$2"
case $option in
enabled|macprocs|nice|user|logfile)
eval $option=$value
;;
debug)
extra_args="$extra_args --${option//_/-}-$value"
;;
_*)
[ "$value" = "0" ] || extra_args="$extra_args -${option//_/-}"
;;
*)
extra_args="$extra_args --${option//_/-}=$value"
;;
esac
}
list_cb() {
local name="$1"
local value="$2"
[ "$name" = "_" ] && extra_args="$extra_args --${value//_/-}" || return 0
}
}
service_triggers()
{
procd_add_reload_trigger "syncthing"
}
start_service() {
local extra_args="--no-browser"
# Options with default value different with the syncthing should be defined explicitly here
local enabled=0
local gui_address="http://0.0.0.0:8384"
local home="/etc/syncthing"
local logfile="/etc/syncthing/syncthing.log"
local macprocs=0
local nice=0
local user="syncthing"
config_load "syncthing"
# Some of the default values below might not match the defaults
# in /etc/config/syncthing: the reason is to remain backwards
# compatible with the older versions of this service as it
# evolves.
[ "$enabled" -gt 0 ] || return 0
# For backwards compatibility
IDX_DB=$(readlink -n "$home"/index-v0.14.0.db)
if [ ! -z "$IDX_DB" ]; then
[ -d "$IDX_DB" ] || mkdir -p "$IDX_DB"
# A separate step to handle an upgrade use case
[ -d "$IDX_DB" ] && chown -R $user:$user "$IDX_DB"
fi
[ -d "$home" ] || mkdir -p "$home"
# A separate step to handle an upgrade use case
[ -d "$home" ] && chown -R $user:$user "$home"
# Changes to "niceness"/macprocs are not picked up by "reload_config"
# nor by "restart": the service has to be stopped/started
# for it to take effect
if [ $macprocs -le 0 ]; then
# Default to the number of cores in this case
macprocs=$(grep -c ^processor /proc/cpuinfo)
fi
procd_open_instance
procd_set_param command "$PROG"
procd_set_param env GOMAXPROCS="$macprocs" STNOUPGRADE=1
procd_append_param command serve
procd_append_param command --gui-address="$gui_address"
procd_append_param command --home="$home"
procd_append_param command --logfile="$logfile"
[ -z "$extra_args" ] || procd_append_param command $extra_args
procd_set_param nice "$nice"
procd_set_param term_timeout 15
procd_set_param user "$user"
procd_set_param respawn
procd_set_param stdout 0
procd_set_param stderr 1
procd_close_instance
}
reload_service() {
stop
start
}
|