openvpn: add generic hotplug mechanism
[openwrt/staging/dedeckeh.git] / package / network / services / openvpn / files / etc / hotplug.d / openvpn / 01-user
1 #!/bin/sh
2
3 get_option() {
4 local variable="$1"
5 local option="$2"
6
7 local value="$(sed -rne 's/^[ \t]*'"$option"'[ \t]+(([^ \t\\]|\\.)+)[ \t]*$/\1/p' "$config" | tail -n1 | sed -re 's/\\(.)/\1/g')"
8 [ -n "$value" ] || value="$(sed -rne 's/^[ \t]*'"$option"'[ \t]+'"'([^']+)'"'[ \t]*$/\1/p' "$config" | tail -n1)"
9 [ -n "$value" ] || value="$(sed -rne 's/^[ \t]*'"$option"'[ \t]+"(([^"\\]|\\.)+)"[ \t]*$/\1/p' "$config" | tail -n1 | sed -re 's/\\(.)/\1/g')"
10 [ -n "$value" ] || return 1
11
12 export -n "$variable=$value"
13 return 0
14 }
15
16 [ -e "/etc/openvpn.user" ] && {
17 env -i ACTION="$ACTION" INSTANCE="$INSTANCE" \
18 /bin/sh \
19 /etc/openvpn.user \
20 $*
21 }
22
23 # Wrap user defined scripts on up/down events
24 case "$ACTION" in
25 up|down)
26 if get_option command "$ACTION"; then
27 exec /bin/sh -c "$command $ACTION $INSTANCE $*"
28 fi
29 ;;
30 esac
31
32 exit 0