Browse Source

openconnect: Restore support for vpnc-script hooks

* Restore hooks support from vpnc-script
* Use consistent style for tests and blocks in openconnect.sh
* Cleanup code that writes banner to syslog

Signed-off-by: Matthew Sykes <matthew.sykes@gmail.com>
Matthew Sykes 10 years ago
parent
commit
f2fb6217ab
2 changed files with 25 additions and 6 deletions
  1. 5
    5
      net/openconnect/files/openconnect.sh
  2. 20
    1
      net/openconnect/files/vpnc-script

+ 5
- 5
net/openconnect/files/openconnect.sh View File

@@ -40,14 +40,14 @@ proto_openconnect_setup() {
40 40
 
41 41
 	[ -f /etc/openconnect/user-cert-vpn-$config.pem ] && append cmdline "-c /etc/openconnect/user-cert-vpn-$config.pem"
42 42
 	[ -f /etc/openconnect/user-key-vpn-$config.pem ] && append cmdline "--sslkey /etc/openconnect/user-key-vpn-$config.pem"
43
-	if test -f /etc/openconnect/ca-vpn-$config.pem;then
43
+	[ -f /etc/openconnect/ca-vpn-$config.pem ] && {
44 44
 		append cmdline "--cafile /etc/openconnect/ca-vpn-$config.pem"
45 45
 		append cmdline "--no-system-trust"
46
-	fi
47
-	if test -n "$serverhash";then
46
+	}
47
+	[ -n "$serverhash" ] && {
48 48
 		append cmdline " --servercert=$serverhash"
49 49
 		append cmdline "--no-system-trust"
50
-	fi
50
+	}
51 51
 	[ -n "$authgroup" ] && append cmdline "--authgroup $authgroup"
52 52
 	[ -n "$username" ] && append cmdline "-u $username"
53 53
 	[ -n "$password" ] && {
@@ -63,7 +63,7 @@ proto_openconnect_setup() {
63 63
 	proto_export INTERFACE="$config"
64 64
 	logger -t openconnect "executing 'openconnect $cmdline'"
65 65
 
66
-	if [ -f "$pwfile" ];then
66
+	if [ -f "$pwfile" ]; then
67 67
 		proto_run_command "$config" /usr/sbin/openconnect-wrapper $pwfile $cmdline
68 68
 	else
69 69
 		proto_run_command "$config" /usr/sbin/openconnect $cmdline

+ 20
- 1
net/openconnect/files/vpnc-script View File

@@ -26,6 +26,8 @@
26 26
 #* CISCO_IPV6_SPLIT_INC_%d_ADDR -- IPv6 network address
27 27
 #* CISCO_IPV6_SPLIT_INC_$%d_MASKLEN -- IPv6 subnet masklen
28 28
 
29
+HOOKS_DIR=/etc/openconnect
30
+
29 31
 # FIXMEs:
30 32
 
31 33
 # Section A: route handling
@@ -50,7 +52,7 @@
50 52
 do_connect() {
51 53
 	if [ -n "$CISCO_BANNER" ]; then
52 54
 		logger -t openconnect "Connect Banner:"
53
-		logger -t openconnect "$CISCO_BANNER" | while read LINE ; do logger -t openconnect "|" "$LINE" ; done
55
+		echo "$CISCO_BANNER" | while read LINE ; do logger -t openconnect "|" "$LINE" ; done
54 56
 	fi
55 57
 
56 58
 	proto_init_update "$TUNDEV" 1
@@ -122,6 +124,17 @@ do_disconnect() {
122 124
 	proto_send_update "$INTERFACE"
123 125
 }
124 126
 
127
+#### Hooks
128
+run_hooks() {
129
+	HOOK="$1"
130
+
131
+	if [ -d ${HOOKS_DIR}/${HOOK}.d ]; then
132
+		for script in ${HOOKS_DIR}/${HOOK}.d/* ; do
133
+			[ -f $script ] && . $script
134
+		done
135
+	fi
136
+}
137
+
125 138
 #### Main
126 139
 
127 140
 if [ -z "$reason" ]; then
@@ -137,14 +150,20 @@ fi
137 150
 
138 151
 case "$reason" in
139 152
 	pre-init)
153
+		run_hooks pre-init
140 154
 		;;
141 155
 	connect)
156
+		run_hooks connect
142 157
 		do_connect
158
+		run_hooks post-connect
143 159
 		;;
144 160
 	disconnect)
161
+		run_hooks disconnect
145 162
 		do_disconnect
163
+		run_hooks post-disconnect
146 164
 		;;
147 165
 	reconnect)
166
+		run_hooks reconnect
148 167
 		;;
149 168
 	*)
150 169
 		logger -t openconnect "unknown reason '$reason'. Maybe vpnc-script is out of date" 1>&2