diff --git a/openmptcprouter/files/etc/init.d/openmptcprouter-vps b/openmptcprouter/files/etc/init.d/openmptcprouter-vps index 3c5ca2aaf..be3920ee1 100755 --- a/openmptcprouter/files/etc/init.d/openmptcprouter-vps +++ b/openmptcprouter/files/etc/init.d/openmptcprouter-vps @@ -17,29 +17,32 @@ _parse_result() { _login() { local username password auth - server="$(uci -q get openmptcprouter.${servername}.ip)" - [ -z "$server" ] && server="$(uci -q get shadowsocks-libev.sss0.server)" + #server="$(uci -q get openmptcprouter.${servername}.ip)" + #[ -z "$server" ] && server="$(uci -q get shadowsocks-libev.sss0.server)" username="$(uci -q get openmptcprouter.${servername}.username)" password="$(uci -q get openmptcprouter.${servername}.password)" serverport="$(uci -q get openmptcprouter.${servername}.port)" if [ -z "$token" ]; then - #auth=`curl --max-time 10 -s -k -H "Content-Type: application/json" -X POST -d '{"username":"'$username'","password":"'$password'"}' https://$server:$serverport/login` - resolve="$(resolveip $server)" - valid_ip6=$(valid_subnet6 $server) - if [ "$resolve" != "$server" ] || [ "$valid_ip6" != "ok" ]; then - auth=`curl --max-time 10 -s -k -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -X POST -d 'username='$username'&password='$password https://$server:$serverport/token` - else - auth=`curl --max-time 10 -s -k -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -X POST -d 'username='$username'&password='$password https://[$server]:$serverport/token` - fi - [ -z "$auth" ] && return - token="$(echo "$auth" | jsonfilter -q -e '@.access_token')" - uci -q set openmptcprouter.${servername}.token="$token" + login_on_server() { + server=$1 + #auth=`curl --max-time 10 -s -k -H "Content-Type: application/json" -X POST -d '{"username":"'$username'","password":"'$password'"}' https://$server:$serverport/login` + resolve="$(resolveip $server)" + valid_ip6=$(valid_subnet6 $server) + if [ "$resolve" != "$server" ] || [ "$valid_ip6" != "ok" ]; then + auth=`curl --max-time 10 -s -k -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -X POST -d 'username='$username'&password='$password https://$server:$serverport/token` + else + auth=`curl --max-time 10 -s -k -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -X POST -d 'username='$username'&password='$password https://[$server]:$serverport/token` + fi + [ -z "$auth" ] && return + token="$(echo "$auth" | jsonfilter -q -e '@.access_token')" + uci -q set openmptcprouter.${servername}.token="$token" + } + config_list_foreach ${servername} ip login_on_server fi } _ping_server() { - server="$(uci -q get openmptcprouter.${servername}.ip)" - [ -z "$server" ] && server="$(uci -q get shadowsocks-libev.sss0.server)" + server="$1" ret=$(ping -c 3 -w 3 -Q 184 $server 2>&1) && echo "$ret" | grep -sq "bytes from" && return false } @@ -1586,30 +1589,36 @@ _config_service() { _login [ -z "$token" ] && { reason="" - _ping_server - status=$? - if $(exit $status); then - reason="can ping server ${servername}" - else - reason="can't ping server ${servername}" - fi + test_ping() { + _ping_server $1 + status=$? + if $(exit $status); then + reason="can ping server ${servername} on $1" + else + reason="can't ping server ${servername} on $1" + fi + } + config_list_foreach "${servername}" ip test_ping port="$(uci -q get openmptcprouter.${servername}.port)" - server="$(uci -q get openmptcprouter.${servername}.ip)" - resolve="$(resolveip $server)" - valid_ip6=$(valid_subnet6 $server) - if [ "$resolve" != "$server" ] || [ "$valid_ip6" != "ok" ]; then - if [ "$(curl -k -m 3 https://${server}:${port}/)" = "" ]; then - reason="$reason, no server API answer" + api_test() { + server="$1" + resolve="$(resolveip $server)" + valid_ip6=$(valid_subnet6 $server) + if [ "$resolve" != "$server" ] || [ "$valid_ip6" != "ok" ]; then + if [ "$(curl -k -m 3 https://${server}:${port}/)" = "" ]; then + reason="$reason, no server API answer on $1" + else + reason="$reason, server API answer on $1" + fi else - reason="$reason, server API answer" + if [ "$(curl -k -m 3 https://[${server}]:${port}/)" = "" ]; then + reason="$reason, no server API answer on $1" + else + reason="$reason, server API answer on $1" + fi fi - else - if [ "$(curl -k -m 3 https://[${server}]:${port}/)" = "" ]; then - reason="$reason, no server API answer" - else - reason="$reason, server API answer" - fi - fi + } + config_list_foreach "${servername}" ip api_test if [ "$(uci -q get openmptcprouter.${servername}.username)" != "openmptcprouter" ]; then reason="$reason, custom username" fi