openconnect: Restore support for vpnc-script hooks
authorMatthew Sykes <redacted>
Sat, 20 Dec 2014 15:56:53 +0000 (10:56 -0500)
committerMatthew Sykes <redacted>
Sat, 20 Dec 2014 16:09:33 +0000 (11:09 -0500)
* 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 <redacted>
net/openconnect/files/openconnect.sh
net/openconnect/files/vpnc-script

index cdeac4061c9a85d7c33f6b1dcae6972be7d7baa8..553a4ed51ac4a82fdae4413f42bad8e8f6489543 100755 (executable)
@@ -40,14 +40,14 @@ proto_openconnect_setup() {
 
        [ -f /etc/openconnect/user-cert-vpn-$config.pem ] && append cmdline "-c /etc/openconnect/user-cert-vpn-$config.pem"
        [ -f /etc/openconnect/user-key-vpn-$config.pem ] && append cmdline "--sslkey /etc/openconnect/user-key-vpn-$config.pem"
-       if test -f /etc/openconnect/ca-vpn-$config.pem;then
+       [ -f /etc/openconnect/ca-vpn-$config.pem ] && {
                append cmdline "--cafile /etc/openconnect/ca-vpn-$config.pem"
                append cmdline "--no-system-trust"
-       fi
-       if test -n "$serverhash";then
+       }
+       [ -n "$serverhash" ] && {
                append cmdline " --servercert=$serverhash"
                append cmdline "--no-system-trust"
-       fi
+       }
        [ -n "$authgroup" ] && append cmdline "--authgroup $authgroup"
        [ -n "$username" ] && append cmdline "-u $username"
        [ -n "$password" ] && {
@@ -63,7 +63,7 @@ proto_openconnect_setup() {
        proto_export INTERFACE="$config"
        logger -t openconnect "executing 'openconnect $cmdline'"
 
-       if [ -f "$pwfile" ];then
+       if [ -f "$pwfile" ]; then
                proto_run_command "$config" /usr/sbin/openconnect-wrapper $pwfile $cmdline
        else
                proto_run_command "$config" /usr/sbin/openconnect $cmdline
index c8151471b947d09708d5cd729689bdef25e21006..2a7debcad6dc321e3110efaa63e7e2d94fd9f344 100755 (executable)
@@ -26,6 +26,8 @@
 #* CISCO_IPV6_SPLIT_INC_%d_ADDR -- IPv6 network address
 #* CISCO_IPV6_SPLIT_INC_$%d_MASKLEN -- IPv6 subnet masklen
 
+HOOKS_DIR=/etc/openconnect
+
 # FIXMEs:
 
 # Section A: route handling
@@ -50,7 +52,7 @@
 do_connect() {
        if [ -n "$CISCO_BANNER" ]; then
                logger -t openconnect "Connect Banner:"
-               logger -t openconnect "$CISCO_BANNER" | while read LINE ; do logger -t openconnect "|" "$LINE" ; done
+               echo "$CISCO_BANNER" | while read LINE ; do logger -t openconnect "|" "$LINE" ; done
        fi
 
        proto_init_update "$TUNDEV" 1
@@ -122,6 +124,17 @@ do_disconnect() {
        proto_send_update "$INTERFACE"
 }
 
+#### Hooks
+run_hooks() {
+       HOOK="$1"
+
+       if [ -d ${HOOKS_DIR}/${HOOK}.d ]; then
+               for script in ${HOOKS_DIR}/${HOOK}.d/* ; do
+                       [ -f $script ] && . $script
+               done
+       fi
+}
+
 #### Main
 
 if [ -z "$reason" ]; then
@@ -137,14 +150,20 @@ fi
 
 case "$reason" in
        pre-init)
+               run_hooks pre-init
                ;;
        connect)
+               run_hooks connect
                do_connect
+               run_hooks post-connect
                ;;
        disconnect)
+               run_hooks disconnect
                do_disconnect
+               run_hooks post-disconnect
                ;;
        reconnect)
+               run_hooks reconnect
                ;;
        *)
                logger -t openconnect "unknown reason '$reason'. Maybe vpnc-script is out of date" 1>&2
git clone https://git.99rst.org/PROJECT