GL-AR300M side switch - swap between VPN providers

rotate_ovpn_server.sh

#!/bin/sh

clientid="$(uci get glconfig.openvpn.clientid)"

group_index="${clientid:4}"

server_file_name=$(uci get ovpnclients.ovpn$group_index.defaultserver)


groups=$(ls -d /etc/openvpn/ovpn*)
files=$(ls -d /etc/openvpn/ovpn*/*.ovpn)

group_num=$(echo "$groups" | wc -l)

next_file=$(echo $files | awk -v v="/etc/openvpn/ovpn${group_index}/${server_file_name}" '{for(i=1;i<=NF;i++)if($i==v){if(i<NF){print $(i+1);exit}}}')
if [ -z "$next_file" ]; then
	next_file=$(echo $files|cut -f1 -d" ")
fi
dir_next_file=$(dirname $next_file)
next_file_group_index=${dir_next_file:17}

# Update the main_server option
uci set glconfig.openvpn.clientid="ovpn$next_file_group_index"
uci set glconfig.openvpn.ovpn=$next_file
uci set ovpnclients.ovpn${next_file_group_index}.defaultserver=$(basename $next_file)

uci commit glconfig
uci commit ovpnclients
/etc/init.d/startvpn restart

Also need to change /usr/bin/switchaction

1 Like