- #!/bin/sh
-
- # This script wraps openfortivpn in order to obtain the password
- # file from cmd and to daemonize
-
- # $1 password file
- # $2 is the config name
- # $3... are passed to openconnect
-
- test -z "$1" && exit 1
-
- pwfile=$1; shift
- config=$1; shift
- killed=0
-
- trap_with_arg() {
- func="$1" ; shift
- for sig ; do
- trap "$func $sig" "$sig"
- done
- }
-
- func_trap() {
- logger "openfortivpn-wrapper[$$]" "$config: sending signal ${1}"
- killed=1
- kill -${1} $child 2>/dev/null
- }
-
- trap_with_arg func_trap INT TERM KILL
-
-
- start_time=$(date '+%s')
- /usr/sbin/openfortivpn "$@" < $pwfile 2>/dev/null &
- child=$!
- wait $child || {
- [ "$killed" = 1 ] && exit 0
- current_time=$(date '+%s')
- elapsed=$(($current_time-$start_time))
- . /lib/netifd/netifd-proto.sh
- proto_notify_error "$config" "Failed to connect after $elapsed seconds."
- proto_block_restart "$config"
- exit 1
- }
|