lede-packages-rs

git clone git://archive.git.mtrnord.blog/MTRNord/lede-packages-rs.git
Log | Files | Refs | README | LICENSE

openconnect.sh (3334B)


      1 #!/bin/sh
      2 . /lib/functions.sh
      3 . ../netifd-proto.sh
      4 init_proto "$@"
      5 
      6 proto_openconnect_init_config() {
      7 	proto_config_add_string "server"
      8 	proto_config_add_int "port"
      9 	proto_config_add_string "username"
     10 	proto_config_add_string "serverhash"
     11 	proto_config_add_string "authgroup"
     12 	proto_config_add_string "password"
     13 	proto_config_add_string "password2"
     14 	proto_config_add_string "token_mode"
     15 	proto_config_add_string "token_secret"
     16 	proto_config_add_string "interface"
     17 	proto_config_add_string "os"
     18 	proto_config_add_string "csd_wrapper"
     19 	no_device=1
     20 	available=1
     21 }
     22 
     23 proto_openconnect_setup() {
     24 	local config="$1"
     25 
     26 	json_get_vars server port username serverhash authgroup password password2 interface token_mode token_secret os csd_wrapper
     27 
     28 	grep -q tun /proc/modules || insmod tun
     29 	ifname="vpn-$config"
     30 
     31 	logger -t openconnect "initializing..."
     32 
     33 	logger -t "openconnect" "adding host dependency for $server at $config"
     34 	for ip in $(resolveip -t 10 "$server"); do
     35 		logger -t "openconnect" "adding host dependency for $ip at $config"
     36 		proto_add_host_dependency "$config" "$ip"
     37 	done
     38 
     39 	[ -n "$port" ] && port=":$port"
     40 
     41 	cmdline="$server$port -i "$ifname" --non-inter --syslog --script /lib/netifd/vpnc-script"
     42 
     43 	# migrate to standard config files
     44 	[ -f "/etc/config/openconnect-user-cert-vpn-$config.pem" ] && mv "/etc/config/openconnect-user-cert-vpn-$config.pem" "/etc/openconnect/user-cert-vpn-$config.pem"
     45 	[ -f "/etc/config/openconnect-user-key-vpn-$config.pem" ] && mv "/etc/config/openconnect-user-key-vpn-$config.pem" "/etc/openconnect/user-key-vpn-$config.pem"
     46 	[ -f "/etc/config/openconnect-ca-vpn-$config.pem" ] && mv "/etc/config/openconnect-ca-vpn-$config.pem" "/etc/openconnect/ca-vpn-$config.pem"
     47 
     48 	[ -f /etc/openconnect/user-cert-vpn-$config.pem ] && append cmdline "-c /etc/openconnect/user-cert-vpn-$config.pem"
     49 	[ -f /etc/openconnect/user-key-vpn-$config.pem ] && append cmdline "--sslkey /etc/openconnect/user-key-vpn-$config.pem"
     50 	[ -f /etc/openconnect/ca-vpn-$config.pem ] && {
     51 		append cmdline "--cafile /etc/openconnect/ca-vpn-$config.pem"
     52 		append cmdline "--no-system-trust"
     53 	}
     54 	[ -n "$serverhash" ] && {
     55 		append cmdline " --servercert=$serverhash"
     56 		append cmdline "--no-system-trust"
     57 	}
     58 	[ -n "$authgroup" ] && append cmdline "--authgroup $authgroup"
     59 	[ -n "$username" ] && append cmdline "-u $username"
     60 	[ -n "$password" ] && {
     61 		umask 077
     62 		mkdir -p /var/etc
     63 		pwfile="/var/etc/openconnect-$config.passwd"
     64 		echo "$password" > "$pwfile"
     65 		[ -n "$password2" ] && echo "$password2" >> "$pwfile"
     66 		append cmdline "--passwd-on-stdin"
     67 	}
     68 
     69 	[ -n "$token_mode" ] && append cmdline "--token-mode=$token_mode"
     70 	[ -n "$token_secret" ] && append cmdline "--token-secret=$token_secret"
     71 	[ -n "$os" ] && append cmdline "--os=$os"
     72 	[ -n "$csd_wrapper" ] && [ -x "$csd_wrapper" ] && append cmdline "--csd-wrapper=$csd_wrapper"
     73 
     74 	proto_export INTERFACE="$config"
     75 	logger -t openconnect "executing 'openconnect $cmdline'"
     76 
     77 	if [ -f "$pwfile" ]; then
     78 		proto_run_command "$config" /usr/sbin/openconnect-wrapper $pwfile $cmdline
     79 	else
     80 		proto_run_command "$config" /usr/sbin/openconnect $cmdline
     81 	fi
     82 }
     83 
     84 proto_openconnect_teardown() {
     85 	local config="$1"
     86 
     87 	pwfile="/var/etc/openconnect-$config.passwd"
     88 
     89 	rm -f $pwfile
     90 	logger -t openconnect "bringing down openconnect"
     91 	proto_kill_command "$config" 2
     92 }
     93 
     94 add_protocol openconnect