aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/services/openvpn
diff options
context:
space:
mode:
authorMichal Hrusecky <michal@hrusecky.net>2020-07-23 12:10:45 +0200
committerJo-Philipp Wich <jo@mein.io>2020-07-23 13:10:09 +0200
commit8483bf3126583041bd6f5808978dc3b14ad15a1a (patch)
tree08df0e5d4377ff29051bbe2eae7d3a43ea5445f1 /package/network/services/openvpn
parenteda9751d86927672bb86f895e31a5b8bea76cdfc (diff)
downloadupstream-8483bf3126583041bd6f5808978dc3b14ad15a1a.tar.gz
upstream-8483bf3126583041bd6f5808978dc3b14ad15a1a.tar.bz2
upstream-8483bf3126583041bd6f5808978dc3b14ad15a1a.zip
openpvn: Split out config parsing code for reuse
Split out code that parses openvpn configuration file into separate file that can be later included in various scripts and reused. Signed-off-by: Michal Hrusecky <michal@hrusecky.net> (cherry picked from commit 86d8467c8ab792c79809a08c223dd9d40da6da2e)
Diffstat (limited to 'package/network/services/openvpn')
-rw-r--r--package/network/services/openvpn/Makefile5
-rw-r--r--package/network/services/openvpn/files/etc/hotplug.d/openvpn/01-user15
-rw-r--r--package/network/services/openvpn/files/lib/functions/openvpn.sh16
3 files changed, 23 insertions, 13 deletions
diff --git a/package/network/services/openvpn/Makefile b/package/network/services/openvpn/Makefile
index f1170bbd37..3bd7ad8d1c 100644
--- a/package/network/services/openvpn/Makefile
+++ b/package/network/services/openvpn/Makefile
@@ -112,6 +112,7 @@ define Package/openvpn-$(BUILD_VARIANT)/install
$(1)/etc/init.d \
$(1)/etc/config \
$(1)/etc/openvpn \
+ $(1)/lib/functions \
$(1)/lib/upgrade/keep.d \
$(1)/usr/libexec \
$(1)/etc/hotplug.d/openvpn
@@ -129,6 +130,10 @@ define Package/openvpn-$(BUILD_VARIANT)/install
$(1)/usr/libexec/openvpn-hotplug
$(INSTALL_DATA) \
+ files/lib/functions/openvpn.sh \
+ $(1)/lib/functions/openvpn.sh
+
+ $(INSTALL_DATA) \
files/etc/hotplug.d/openvpn/01-user \
$(1)/etc/hotplug.d/openvpn/01-user
diff --git a/package/network/services/openvpn/files/etc/hotplug.d/openvpn/01-user b/package/network/services/openvpn/files/etc/hotplug.d/openvpn/01-user
index 6d45f0b7c6..86be69e805 100644
--- a/package/network/services/openvpn/files/etc/hotplug.d/openvpn/01-user
+++ b/package/network/services/openvpn/files/etc/hotplug.d/openvpn/01-user
@@ -1,17 +1,6 @@
#!/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
-}
+. /lib/functions/openvpn.sh
[ -e "/etc/openvpn.user" ] && {
env -i ACTION="$ACTION" INSTANCE="$INSTANCE" \
@@ -23,7 +12,7 @@ get_option() {
# Wrap user defined scripts on up/down events
case "$ACTION" in
up|down)
- if get_option command "$ACTION"; then
+ if get_openvpn_option "$config" command "$ACTION"; then
exec /bin/sh -c "$command $ACTION $INSTANCE $*"
fi
;;
diff --git a/package/network/services/openvpn/files/lib/functions/openvpn.sh b/package/network/services/openvpn/files/lib/functions/openvpn.sh
new file mode 100644
index 0000000000..83fb1bb453
--- /dev/null
+++ b/package/network/services/openvpn/files/lib/functions/openvpn.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+get_openvpn_option() {
+ local config="$1"
+ local variable="$2"
+ local option="$3"
+
+ 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
+}
+