|
|
|
@ -1,15 +1,14 @@ |
|
|
|
|
#!/bin/sh /etc/rc.common |
|
|
|
|
# Copyright (C) 2008-2011 OpenWrt.org |
|
|
|
|
# Copyright (C) 2008-2013 OpenWrt.org |
|
|
|
|
# Copyright (C) 2008 Jo-Philipp Wich |
|
|
|
|
# This is free software, licensed under the GNU General Public License v2. |
|
|
|
|
# See /LICENSE for more information. |
|
|
|
|
|
|
|
|
|
START=95 |
|
|
|
|
START=90 |
|
|
|
|
STOP=10 |
|
|
|
|
|
|
|
|
|
SERVICE_DAEMONIZE=1 |
|
|
|
|
SERVICE_WRITE_PID=1 |
|
|
|
|
|
|
|
|
|
EXTRA_COMMANDS="up down" |
|
|
|
|
USE_PROCD=1 |
|
|
|
|
PROG=/usr/sbin/openvpn |
|
|
|
|
|
|
|
|
|
LIST_SEP=" |
|
|
|
|
" |
|
|
|
@ -21,7 +20,7 @@ append_param() { |
|
|
|
|
*_*_*) v=${v%%_*}-${v#*_}; v=${v%%_*}-${v#*_} ;; |
|
|
|
|
*_*) v=${v%%_*}-${v#*_} ;; |
|
|
|
|
esac |
|
|
|
|
ARGS="$ARGS --$v" |
|
|
|
|
procd_append_param command --"$v" |
|
|
|
|
return 0 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -39,7 +38,7 @@ append_params() { |
|
|
|
|
config_get v "$s" "$p" |
|
|
|
|
IFS="$LIST_SEP" |
|
|
|
|
for v in $v; do |
|
|
|
|
[ -n "$v" ] && append_param "$p" && ARGS="$ARGS $v" |
|
|
|
|
[ -n "$v" ] && append_param "$p" && procd_append_param command "$v" |
|
|
|
|
done |
|
|
|
|
unset IFS |
|
|
|
|
done |
|
|
|
@ -58,6 +57,9 @@ start_instance() { |
|
|
|
|
|
|
|
|
|
ARGS="" |
|
|
|
|
|
|
|
|
|
procd_open_instance |
|
|
|
|
procd_set_param command "$PROG" --syslog "openvpn($s)" --writepid "/var/run/openvpn-$s.pid" |
|
|
|
|
|
|
|
|
|
# append flags |
|
|
|
|
append_bools "$s" \ |
|
|
|
|
auth_nocache auth_retry auth_user_pass_optional bind ccd_exclusive client client_cert_not_required \ |
|
|
|
@ -92,63 +94,10 @@ start_instance() { |
|
|
|
|
tun_mtu tun_mtu_extra txqueuelen user verb down push up |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SERVICE_PID_FILE="/var/run/openvpn-$s.pid" |
|
|
|
|
service_start /usr/sbin/openvpn --syslog "openvpn($s)" --writepid "$SERVICE_PID_FILE" $ARGS |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
stop_instance() { |
|
|
|
|
local s="$1" |
|
|
|
|
|
|
|
|
|
section_enabled "$s" || return 1 |
|
|
|
|
|
|
|
|
|
SERVICE_PID_FILE="/var/run/openvpn-$s.pid" |
|
|
|
|
service_stop /usr/sbin/openvpn |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
reload_instance() { |
|
|
|
|
local s="$1" |
|
|
|
|
|
|
|
|
|
section_enabled "$s" || return 1 |
|
|
|
|
|
|
|
|
|
SERVICE_PID_FILE="/var/run/openvpn-$s.pid" |
|
|
|
|
service_reload /usr/sbin/openvpn |
|
|
|
|
procd_close_instance |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
start() { |
|
|
|
|
start_service() { |
|
|
|
|
config_load 'openvpn' |
|
|
|
|
config_foreach start_instance 'openvpn' |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
stop() { |
|
|
|
|
config_load 'openvpn' |
|
|
|
|
config_foreach stop_instance 'openvpn' |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
reload() { |
|
|
|
|
config_load 'openvpn' |
|
|
|
|
config_foreach reload_instance 'openvpn' |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
up() { |
|
|
|
|
local exists |
|
|
|
|
local instance |
|
|
|
|
config_load 'openvpn' |
|
|
|
|
for instance in "$@"; do |
|
|
|
|
config_get exists "$instance" 'TYPE' |
|
|
|
|
if [ "$exists" == "openvpn" ]; then |
|
|
|
|
start_instance "$instance" |
|
|
|
|
fi |
|
|
|
|
done |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
down() { |
|
|
|
|
local exists |
|
|
|
|
local instance |
|
|
|
|
config_load 'openvpn' |
|
|
|
|
for instance in "$@"; do |
|
|
|
|
config_get exists "$instance" 'TYPE' |
|
|
|
|
if [ "$exists" == "openvpn" ]; then |
|
|
|
|
stop_instance "$instance" |
|
|
|
|
fi |
|
|
|
|
done |
|
|
|
|
} |
|
|
|
|