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