Browse Source

openvpn: add list element parsing

For the parameters tls-cipher and ncp-ciphers more than one option can
be used in the OpenVPN configuration, separated by a colon, which should
be implemented as a list in order to configure it more clearly. By
adding the new OPENVPN_LIST option to the openvpn.options file with the
tls-cipher and ncp-cipher parameters, uci can now add this option as a
"list" and the init script will generate the appropriate OpenVPN
configuration from it.

Signed-off-by: Hans Dedecker <[email protected]>
Signed-off-by: Florian Eckert <[email protected]>
Florian Eckert 7 years ago
parent
commit
675eb747aa

+ 1 - 1
package/network/services/openvpn/Makefile

@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=openvpn
 
 PKG_VERSION:=2.4.6
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE_URL:=\
 	https://build.openvpn.net/downloads/releases/ \

+ 14 - 0
package/network/services/openvpn/files/openvpn.init

@@ -49,6 +49,19 @@ append_params() {
 	done
 }
 
+append_list() {
+	local p; local v; local s="$1"; shift
+
+	list_cb_append() {
+		v="$1:${v}"
+	}
+
+	for p in $*; do
+		config_list_foreach "$s" "$p" list_cb_append
+	done
+	[ -n "$v" ] && append_param "$s" "$p" && echo " ${v%*:}" >> "/var/etc/openvpn-$s.conf"
+}
+
 section_enabled() {
 	config_get_bool enable  "$1" 'enable'  0
 	config_get_bool enabled "$1" 'enabled' 0
@@ -99,6 +112,7 @@ 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"
 }

+ 5 - 2
package/network/services/openvpn/files/openvpn.options

@@ -68,7 +68,6 @@ mode
 mssfix
 mtu_disc
 mute
-ncp_ciphers
 nice
 ns_cert_type
 ping
@@ -117,7 +116,6 @@ status_version
 syslog
 tcp_queue_limit
 tls_auth
-tls_cipher
 tls_crypt
 tls_timeout
 tls_verify
@@ -190,3 +188,8 @@ up_delay
 up_restart
 username_as_common_name
 '
+
+OPENVPN_LIST='
+tls_cipher
+ncp_ciphers
+'