X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=package%2Fnetwork%2Fservices%2Fopenvpn%2Ffiles%2Fopenvpn.init;h=a560b89ff243cbd37c430cfdac4216cdb8c443c6;hb=8fe9940db66517679f09fa1d2f6f79229b6a8361;hp=7e6cfd9c351d70f65c9679efee60135dfd159a13;hpb=28d3a1b54b6726a0a93477d75d09a25f74ee361f;p=openwrt%2Fstaging%2Fdedeckeh.git diff --git a/package/network/services/openvpn/files/openvpn.init b/package/network/services/openvpn/files/openvpn.init index 7e6cfd9c35..a560b89ff2 100644 --- a/package/network/services/openvpn/files/openvpn.init +++ b/package/network/services/openvpn/files/openvpn.init @@ -49,6 +49,20 @@ append_params() { done } +append_list() { + local p; local v; local s="$1"; shift + + list_cb_append() { + v="${v}:$1" + } + + for p in $*; do + unset v + config_list_foreach "$s" "$p" list_cb_append + [ -n "$v" ] && append_param "$s" "$p" && echo " ${v:1}" >> "/var/etc/openvpn-$s.conf" + done +} + section_enabled() { config_get_bool enable "$1" 'enable' 0 config_get_bool enabled "$1" 'enabled' 0 @@ -59,13 +73,17 @@ openvpn_add_instance() { local name="$1" local dir="$2" local conf="$3" + local security="$4" procd_open_instance "$name" procd_set_param command "$PROG" \ --syslog "openvpn($name)" \ --status "/var/run/openvpn.$name.status" \ --cd "$dir" \ - --config "$conf" + --config "$conf" \ + --up "/usr/libexec/openvpn-hotplug up $name" \ + --down "/usr/libexec/openvpn-hotplug down $name" \ + --script-security "${security:-2}" procd_set_param file "$dir/$conf" procd_set_param term_timeout 15 procd_set_param respawn @@ -86,11 +104,14 @@ start_instance() { return 1 } + local script_security + config_get script_security "$s" script_security + [ ! -d "/var/run" ] && mkdir -p "/var/run" if [ ! -z "$config" ]; then append UCI_STARTED "$config" "$LIST_SEP" - openvpn_add_instance "$s" "${config%/*}" "$config" + openvpn_add_instance "$s" "${config%/*}" "$config" "$script_security" return fi @@ -99,8 +120,9 @@ start_instance() { append_bools "$s" $OPENVPN_BOOLS append_params "$s" $OPENVPN_PARAMS + append_list "$s" $OPENVPN_LIST - openvpn_add_instance "$s" "/var/etc" "openvpn-$s.conf" + openvpn_add_instance "$s" "/var/etc" "openvpn-$s.conf" "$script_security" } start_service() {