@@ -37,22 +37,26 @@ set_prop () { setpropf "$LOCKFILE" "$1" "$2"; }
37
37
38
38
check_health () {
39
39
if [ -s " $LOCKFILE " ]; then
40
- if [ grep -q " dnscrypt-resolvers=" " $LOCKFILE " ]; then
41
- resolvers=" public-resolvers.md"
42
- minisig=" $resolvers .minisig"
43
-
44
- DNSCRYPT_RESOLV_PATH=" $( get_prop ' dnscrypt-resolvers' ) "
40
+ while IFS== read -r KEY VALUE || [[ -n $KEY ]]; do
41
+ [[ " $KEY " = [#! ]* ]] && continue;
42
+ export " $KEY =$VALUE "
43
+ done < $LOCKFILE
44
+
45
+ if [ -z " ${DNSCRYPT_RESOLV_PATH:- } " ]; then
45
46
confdir=${DNSCRYPT_RESOLV_PATH:- `dirname " $CONFIG_FILE " `}
46
-
47
- if check_resolvers $confdir /$resolvers ; then
48
- log_debug_msg " copy $confdir /$resolvers to $PIDDIR ..."
49
- cp $confdir /{$resolvers ,$minisig } $PIDDIR /
50
- else
51
- log_debug_msg " $confdir /$resolvers (.minisig): file not found"
52
- fi
47
+
48
+ resolvers=$( ls $confdir /* .md 2> /dev/null)
49
+ for file in " $resolvers " ; do
50
+ if check_resolvers $file ; then
51
+ log_debug_msg " copy $file to $PIDDIR ..."
52
+ cp $file $file .minisig $PIDDIR
53
+ else
54
+ log_debug_msg " $file (.minisig): file not found"
55
+ fi
56
+ done
53
57
fi
54
58
55
- if [ " $( get_prop ' ipv4-enabled ' ) " = " false " ]; then
59
+ if [ -z " ${DNSCRYPT_ADDR_LOCK :- } " ]; then
56
60
log_debug_msg " ipv4_addr_unlock: enable IPv4"
57
61
ipv4_addr_unlock
58
62
fi
@@ -62,12 +66,6 @@ check_health () {
62
66
fi
63
67
}
64
68
65
- _wfd_call () {
66
- if ! ls " $PIDDIR " /* .md 2> /dev/null; then
67
- return 1
68
- fi
69
- }
70
-
71
69
do_start () {
72
70
if test ! -s " $CONFIG_FILE " ; then
73
71
log_debug_msg " missing config file $CONFIG_FILE "
@@ -76,6 +74,12 @@ do_start () {
76
74
77
75
mkdir -p -m 01755 " $PIDDIR " 2> /dev/null || \
78
76
{ log_debug_msg " cannot access $PIDDIR directory, are you root?" ; exit 1; }
77
+
78
+ if ! $DAEMON -check -config " $CONFIG_FILE " > /dev/null; then
79
+ log_error_msg " $NAME configuration is invalid"
80
+ set_prop " DNSCRYPT_RESOLV_PATH" " "
81
+ return 10
82
+ fi
79
83
80
84
nohup $DAEMON -config " $CONFIG_FILE " \
81
85
-pidfile=" $PIDFILE " > /dev/null 2>&1 &
@@ -86,19 +90,14 @@ do_start () {
86
90
87
91
case " $status " in
88
92
0)
89
- if [[ " $DNSCRYPT_NOLIST " = 1 ]]; then
90
- sleep $WAITFORDAEMON
91
- elif ! wait_for_daemon _wfd_call; then
92
- log_error_msg " the resolvers file couldn't be uploaded?"
93
- set_prop " dnscrypt-resolvers" " "
94
- return 10
95
- fi
96
93
log_debug_msg " enabling iptables firewall rules"
97
94
iptrules_on
98
95
;;
99
96
* ) # offline
100
97
log_error_msg " ipv4_addr_lock: disable IPv4 (#$status )"
101
- ipv4_addr_lock && $( set_prop " ipv4-enabled" " false" )
98
+ ipv4_addr_lock
99
+
100
+ set_prop " DNSCRYPT_ADDR_LOCK" " 1"
102
101
return 1
103
102
;;
104
103
esac
@@ -107,7 +106,7 @@ do_start () {
107
106
108
107
do_stop () {
109
108
if ! killproc " $DAEMON " " $PIDFILE " ; then
110
- killall $NAME > /dev/null 2>&1
109
+ killall $NAME > /dev/null 2>&1 &
111
110
fi
112
111
113
112
log_debug_msg " disabling iptables firewall rules"
@@ -135,21 +134,18 @@ case "$1" in
135
134
continue
136
135
elif [[ $arg == -f || $arg == --force ]]; then
137
136
DNSCRYPT_FORCE=1
138
- elif [[ $arg == -s || $arg == --no-lists ]]; then
139
- DNSCRYPT_NOLIST=1
140
137
elif [[ $arg == -r || $arg == --resolv_path ]]; then
141
138
:
142
139
elif [[ $prev == -r || $prev == --resolv_path ]]; then
143
- set_prop " dnscrypt-resolvers " " $arg " # use with --force flag
140
+ set_prop " DNSCRYPT_RESOLV_PATH " " $arg " # use with --force flag
144
141
else
145
142
echo Unrecognized argument $arg
146
143
fi
147
144
prev=$arg
148
145
done
149
146
150
- do_start
151
-
152
- status=" $? "
147
+ status=" 0"
148
+ do_start || status=" $? "
153
149
if [[ " $status " -ne 0 || " $DNSCRYPT_FORCE " = 1 ]]; then
154
150
log_debug_msg " restore $DESC (#$status )"
155
151
do_restart
@@ -173,6 +169,8 @@ case "$1" in
173
169
3) log_error_msg " could not access PID file" ;;
174
170
* ) log_error_msg " $NAME is NOT running (#$status )" ;;
175
171
esac
172
+
173
+ $DAEMON -check -config " $CONFIG_FILE " >&2
176
174
177
175
exit $status
178
176
;;
0 commit comments