mirror of
				https://github.com/Ysurac/openmptcprouter-feeds.git
				synced 2025-03-09 15:40:03 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			41 lines
		
	
	
		
			No EOL
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			No EOL
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/sh
 | |
| . /lib/functions.sh
 | |
| 
 | |
| intf=$1
 | |
| 
 | |
| get_ip_from_server() {
 | |
| 	serverport=$(uci -q get openmptcprouter.$1.port)
 | |
| 	get_ip() {
 | |
| 		serverip=$1
 | |
| 		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
 | |
| 	}
 | |
| 	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 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
 | |
| 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 |