openvpn: add generic hotplug mechanism
Pass a default --up and --down executable to each started OpenVPN instance which triggers /etc/hotplug.d/openvpn/ scripts whenever an instance goes up or down. User-configured up and down scripts are invoked by the default shipped 01-user hotplug handler to ensure that existing setups continue to work as before. As a consequence of this change, the up, down and script_security OpenVPN options are removed from the option file, since we're always passing them via the command line, they do not need to get included into the generated configuration. Signed-off-by: Florian Eckert <fe@dev.tdt.de> [reword commit message, move hotplug executable to /usr/libexec] Signed-off-by: Jo-Philipp Wich <jo@mein.io>master
parent
9c16c46e58
commit
8fe9940db6
@ -0,0 +1,32 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
get_option() {
|
||||||
|
local variable="$1"
|
||||||
|
local option="$2"
|
||||||
|
|
||||||
|
local value="$(sed -rne 's/^[ \t]*'"$option"'[ \t]+(([^ \t\\]|\\.)+)[ \t]*$/\1/p' "$config" | tail -n1 | sed -re 's/\\(.)/\1/g')"
|
||||||
|
[ -n "$value" ] || value="$(sed -rne 's/^[ \t]*'"$option"'[ \t]+'"'([^']+)'"'[ \t]*$/\1/p' "$config" | tail -n1)"
|
||||||
|
[ -n "$value" ] || value="$(sed -rne 's/^[ \t]*'"$option"'[ \t]+"(([^"\\]|\\.)+)"[ \t]*$/\1/p' "$config" | tail -n1 | sed -re 's/\\(.)/\1/g')"
|
||||||
|
[ -n "$value" ] || return 1
|
||||||
|
|
||||||
|
export -n "$variable=$value"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
[ -e "/etc/openvpn.user" ] && {
|
||||||
|
env -i ACTION="$ACTION" INSTANCE="$INSTANCE" \
|
||||||
|
/bin/sh \
|
||||||
|
/etc/openvpn.user \
|
||||||
|
$*
|
||||||
|
}
|
||||||
|
|
||||||
|
# Wrap user defined scripts on up/down events
|
||||||
|
case "$ACTION" in
|
||||||
|
up|down)
|
||||||
|
if get_option command "$ACTION"; then
|
||||||
|
exec /bin/sh -c "$command $ACTION $INSTANCE $*"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# This file is interpreted as shell script.
|
||||||
|
# Put your custom openvpn action here, they will
|
||||||
|
# be executed with each opevnp event.
|
||||||
|
#
|
||||||
|
# $ACTION
|
||||||
|
# <down> down action is generated after the TUN/TAP device is closed
|
||||||
|
# <up> up action is generated after the TUN/TAP device is opened
|
||||||
|
# $INSTANCE Name of the openvpn instance which went up or down
|
||||||
|
|
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
ACTION=$1
|
||||||
|
shift
|
||||||
|
INSTANCE=$1
|
||||||
|
shift
|
||||||
|
|
||||||
|
export ACTION=$ACTION
|
||||||
|
export INSTANCE=$INSTANCE
|
||||||
|
exec /sbin/hotplug-call openvpn "$@"
|
Loading…
Reference in New Issue