From 7ed99f1e38379fb24b5d71a8bb04628ab79db58e Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 22 Apr 2020 19:09:50 +0200 Subject: [PATCH] Get ip via VPS script --- luci-app-openmptcprouter/root/bin/omr-ip-intf | 43 +++++++++++++++---- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/luci-app-openmptcprouter/root/bin/omr-ip-intf b/luci-app-openmptcprouter/root/bin/omr-ip-intf index 9903631b4..4c87b4256 100755 --- a/luci-app-openmptcprouter/root/bin/omr-ip-intf +++ b/luci-app-openmptcprouter/root/bin/omr-ip-intf @@ -1,10 +1,35 @@ #!/bin/sh -check_ipv4_website="$(uci -q get openmptcprouter.settings.check_ipv4_website)" -[ -z "$check_ipv4_website" ] && check_ipv4_website="http://ip.openmptcprouter.com" -checkip=$(echo $check_ipv4_website | sed -e 's/https:\/\///' -e 's/http:\/\///' | xargs dig +short A | tr -d "\n") -ipset add ss_rules_dst_bypass_all $checkip > /dev/null 2>&1 -ip="$(curl -s -4 -m 2 --interface $1 $check_ipv4_website)" -ipset del ss_rules_dst_bypass_all $checkip > /dev/null 2>&1 -if expr "$ip" : '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$' >/dev/null; then - echo $ip -fi \ No newline at end of file +. /lib/functions.sh + +intf=$1 + +get_ip_from_server() { + serverip=$(uci -q get openmptcprouter.$1.ip) + serverport=$(uci -q get openmptcprouter.$1.port) + getip="$(curl -s -k -4 -m 2 --interface $intf https://$serverip:$serverport/clienthost)" + [ -n "$getip" ] && getip=$(echo $getip | jsonfilter -e '@.client_host') + if expr "$getip" : '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$' >/dev/null; then + ip=$getip + break + fi +} + +get_ip_from_website() { + check_ipv4_website="$(uci -q get openmptcprouter.settings.check_ipv4_website)" + [ -z "$check_ipv4_website" ] && check_ipv4_website="http://ip.openmptcprouter.com" + checkip=$(echo $check_ipv4_website | sed -e 's/https:\/\///' -e 's/http:\/\///' | xargs dig +short A | tr -d "\n") + ipset add ss_rules_dst_bypass_all $checkip > /dev/null 2>&1 + getip="$(curl -s -4 -m 2 --interface $intf $check_ipv4_website)" + ipset del ss_rules_dst_bypass_all $checkip > /dev/null 2>&1 + if expr "$getip" : '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$' >/dev/null; then + ip=$getip + break + fi +} + +[ -z "$intf" ] && return +ip="" +config_load openmptcprouter +config_foreach get_ip_from_server server +[ -z "$ip" ] && get_ip_from_website +echo $ip \ No newline at end of file