openconnect: allow processing multiple passwords from stdin
[feed/packages.git] / net / openconnect / files / openconnect.sh
index bdac9bc867485e7a9ff71454f2de1f7d3dce46ef..9b1e652bd7e12a3c81188718d055d9fa692c41e3 100755 (executable)
@@ -10,9 +10,12 @@ proto_openconnect_init_config() {
        proto_config_add_string "serverhash"
        proto_config_add_string "authgroup"
        proto_config_add_string "password"
+       proto_config_add_string "password2"
        proto_config_add_string "token_mode"
        proto_config_add_string "token_secret"
        proto_config_add_string "interface"
+       proto_config_add_string "os"
+       proto_config_add_string "csd_wrapper"
        no_device=1
        available=1
 }
@@ -20,7 +23,7 @@ proto_openconnect_init_config() {
 proto_openconnect_setup() {
        local config="$1"
 
-       json_get_vars server port username serverhash authgroup password interface token_mode token_secret
+       json_get_vars server port username serverhash authgroup password password2 interface token_mode token_secret os csd_wrapper
 
        grep -q tun /proc/modules || insmod tun
 
@@ -63,11 +66,14 @@ proto_openconnect_setup() {
                mkdir -p /var/etc
                pwfile="/var/etc/openconnect-$config.passwd"
                echo "$password" > "$pwfile"
+               [ -n "$password2" ] && echo "$password2" >> "$pwfile"
                append cmdline "--passwd-on-stdin"
        }
 
        [ -n "$token_mode" ] && append cmdline "--token-mode=$token_mode"
        [ -n "$token_secret" ] && append cmdline "--token-secret=$token_secret"
+       [ -n "$os" ] && append cmdline "--os=$os"
+       [ -n "$csd_wrapper" ] && [ -x "$csd_wrapper" ] && append cmdline "--csd-wrapper=$csd_wrapper"
 
        proto_export INTERFACE="$config"
        logger -t openconnect "executing 'openconnect $cmdline'"