Ver Fonte

openvpn: clean up and fix the init script

- clean up duplication of procd instance handling code
- using --cd *after* --config is rather pointless
- to be able to log errors properly, --syslog needs to be passed before --config
- tell procd about the generated or referenced config file instead of
  the uci file. this avoids having to restart all instances if only one
  of them changes.

Signed-off-by: Felix Fietkau <[email protected]>

SVN-Revision: 38632
Felix Fietkau há 12 anos atrás
pai
commit
2c84ff42f7
1 ficheiros alterados com 16 adições e 17 exclusões
  1. 16 17
      package/network/services/openvpn/files/openvpn.init

+ 16 - 17
package/network/services/openvpn/files/openvpn.init

@@ -51,6 +51,20 @@ section_enabled() {
 	[ $enable -gt 0 ] || [ $enabled -gt 0 ]
 }
 
+openvpn_add_instance() {
+	local name="$1"
+	local dir="$2"
+	local conf="$3"
+
+	procd_open_instance
+	procd_set_param command "$PROG"	\
+		--syslog "openvpn($name)" \
+		--cd "$dir" \
+		--config "$conf"
+	procd_set_param file "$dir/$conf"
+	procd_close_instance
+}
+
 start_instance() {
 	local s="$1"
 
@@ -61,14 +75,7 @@ start_instance() {
 	[ ! -d "/var/run" ] && mkdir -p "/var/run"
 
 	if [ ! -z "$config" ]; then
-		procd_open_instance
-		procd_set_param command "$PROG"	\
-			--config "$config" \
-			--cd "$(dirname $config)" \
-			--syslog "openvpn($s)" \
-			--writepid "/var/run/openvpn-$s.pid"
-		procd_set_param file "/etc/config/openvpn"
-		procd_close_instance
+		openvpn_add_instance "$s" "$(dirname "$config")" "$(basename "$config")"
 		return
 	fi
 
@@ -108,15 +115,7 @@ start_instance() {
 		tls_cipher tls_remote tls_timeout tls_verify tmp_dir topology tran_window \
 		tun_mtu tun_mtu_extra txqueuelen user verb down push up
 
-
-	procd_open_instance
-	procd_set_param command "$PROG"	\
-		--config "/var/etc/openvpn-$s.conf" \
-		--cd "/var/etc" \
-		--syslog "openvpn($s)" \
-		--writepid "/var/run/openvpn-$s.pid"
-	procd_set_param file "/etc/config/openvpn"
-	procd_close_instance
+	openvpn_add_instance "$s" "/var/etc" "openvpn-$s.conf"
 }
 
 start_service() {