mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-02-13 11:01:50 +00:00
44 lines
No EOL
1.4 KiB
Bash
Executable file
44 lines
No EOL
1.4 KiB
Bash
Executable file
#!/bin/sh
|
|
. /lib/functions.sh
|
|
|
|
intf=$1
|
|
|
|
timeout=$(uci -q get openmptcprouter.settings.status_getip_timeout)
|
|
[ -z "$timeout" ] && timeout="1"
|
|
|
|
get_ip_from_server() {
|
|
serverport=$(uci -q get openmptcprouter.$1.port)
|
|
get_ip() {
|
|
serverip=$1
|
|
getip="$(curl -s -k -4 -m ${timeout} --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
|
|
}
|
|
config_list_foreach $1 ip get_ip
|
|
[ -n "$ip" ] && break
|
|
}
|
|
|
|
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 ${timeout} --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
|
|
if [ -n "$(ip -4 a show dev $intf)" ]; then
|
|
ip=""
|
|
config_load openmptcprouter
|
|
config_foreach get_ip_from_server server
|
|
[ -z "$ip" ] && get_ip_from_website
|
|
echo $ip
|
|
fi |