mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-02-12 10:31:51 +00:00
Add v2ray tracker and fix VPS domain address support
This commit is contained in:
parent
a03847acbb
commit
556d980c6e
6 changed files with 175 additions and 41 deletions
|
@ -241,38 +241,44 @@ while true; do
|
|||
config_foreach _ping_server server $OMR_TRACKER_DEVICE
|
||||
fi
|
||||
if [ "$serverip_ping" = false ] && [ -n "$OMR_TRACKER_HOST" ]; then
|
||||
OMR_TRACKER_HOST=$(resolveip -4 $OMR_TRACKER_HOST | tr -d "\n")
|
||||
if [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "3g" ] || [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "qmi" ] || [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "ncm" ]; then
|
||||
# Check if route is not used
|
||||
while ! ip route add $OMR_TRACKER_HOST via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE src $OMR_TRACKER_DEVICE_IP > /dev/null 2>&1
|
||||
do
|
||||
logger -t "omr-tracker" "Can't create route to $OMR_TRACKER_HOST via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE src $OMR_TRACKER_DEVICE_IP. waiting..."
|
||||
sleep 2
|
||||
ip route del "$OMR_TRACKER_HOST" via "$OMR_TRACKER_DEVICE_GATEWAY" dev "$OMR_TRACKER_DEVICE" src "$OMR_TRACKER_DEVICE_IP" > /dev/null 2>&1
|
||||
_restart
|
||||
done
|
||||
fi
|
||||
if [ "$OMR_TRACKER_TYPE" = "ping" ]; then
|
||||
_ping "$OMR_TRACKER_HOST" "$OMR_TRACKER_DEVICE" "yes"
|
||||
statusb=$?
|
||||
elif [ "$OMR_TRACKER_TYPE" = "httping" ]; then
|
||||
_httping "$OMR_TRACKER_HOST" "$OMR_TRACKER_DEVICE_IP" "yes"
|
||||
statusb=$?
|
||||
elif [ "$OMR_TRACKER_TYPE" = "dns" ]; then
|
||||
_dns "$OMR_TRACKER_HOST" "$OMR_TRACKER_DEVICE_IP" "yes"
|
||||
statusb=$?
|
||||
fi
|
||||
ip route del "$OMR_TRACKER_HOST" via "$OMR_TRACKER_DEVICE_GATEWAY" dev "$OMR_TRACKER_DEVICE" src "$OMR_TRACKER_DEVICE_IP" > /dev/null 2>&1
|
||||
if $(exit $statusb); then
|
||||
OMR_TRACKER_HOST=$(resolveip -4 -t 5 $OMR_TRACKER_HOST | head -n 1 | tr -d "\n")
|
||||
if [ -n "$OMR_TRACKER_HOST" ]; then
|
||||
if [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "3g" ] || [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "qmi" ] || [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "ncm" ]; then
|
||||
# Check if route is not used
|
||||
while ! ip route add $OMR_TRACKER_HOST via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE src $OMR_TRACKER_DEVICE_IP > /dev/null 2>&1
|
||||
do
|
||||
logger -t "omr-tracker" "Can't create route to $OMR_TRACKER_HOST via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE src $OMR_TRACKER_DEVICE_IP. waiting..."
|
||||
sleep 2
|
||||
ip route del "$OMR_TRACKER_HOST" via "$OMR_TRACKER_DEVICE_GATEWAY" dev "$OMR_TRACKER_DEVICE" src "$OMR_TRACKER_DEVICE_IP" > /dev/null 2>&1
|
||||
_restart
|
||||
done
|
||||
fi
|
||||
if [ "$OMR_TRACKER_TYPE" = "ping" ]; then
|
||||
_ping "$OMR_TRACKER_HOST" "$OMR_TRACKER_DEVICE" "yes"
|
||||
statusb=$?
|
||||
elif [ "$OMR_TRACKER_TYPE" = "httping" ]; then
|
||||
_httping "$OMR_TRACKER_HOST" "$OMR_TRACKER_DEVICE_IP" "yes"
|
||||
statusb=$?
|
||||
elif [ "$OMR_TRACKER_TYPE" = "dns" ]; then
|
||||
_dns "$OMR_TRACKER_HOST" "$OMR_TRACKER_DEVICE_IP" "yes"
|
||||
statusb=$?
|
||||
fi
|
||||
ip route del "$OMR_TRACKER_HOST" via "$OMR_TRACKER_DEVICE_GATEWAY" dev "$OMR_TRACKER_DEVICE" src "$OMR_TRACKER_DEVICE_IP" > /dev/null 2>&1
|
||||
if $(exit $statusb); then
|
||||
OMR_TRACKER_STATUS_MSG=""
|
||||
OMR_TRACKER_STATUS="OK"
|
||||
break
|
||||
else
|
||||
if [ "$OMR_TRACKER_LIST_HOSTS" = "" ]; then
|
||||
OMR_TRACKER_LIST_HOSTS="$OMR_TRACKER_HOST"
|
||||
else
|
||||
OMR_TRACKER_LIST_HOSTS="$OMR_TRACKER_LIST_HOSTS,$OMR_TRACKER_HOST"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
OMR_TRACKER_STATUS_MSG=""
|
||||
OMR_TRACKER_STATUS="OK"
|
||||
break
|
||||
else
|
||||
if [ "$OMR_TRACKER_LIST_HOSTS" = "" ]; then
|
||||
OMR_TRACKER_LIST_HOSTS="$OMR_TRACKER_HOST"
|
||||
else
|
||||
OMR_TRACKER_LIST_HOSTS="$OMR_TRACKER_LIST_HOSTS,$OMR_TRACKER_HOST"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
OMR_TRACKER_STATUS_MSG=""
|
||||
|
|
|
@ -76,7 +76,7 @@ while true; do
|
|||
last=$((last + 1 ))
|
||||
[ -z "$nocontact" ] && nocontact="$host" || nocontact="$nocontact, $host"
|
||||
[ "${last}" -ge "${retry}" ] && {
|
||||
if [ -n "$(iptables -t nat -L -n | grep ss_rules)" ]; then
|
||||
if [ -n "$(iptables -t nat -L -n | grep ssr)" ]; then
|
||||
_log "Shadowsocks is down (can't contact via http ${nocontact})"
|
||||
uci -q set openmptcprouter.omr.shadowsocks="down"
|
||||
uci -q commit openmptcprouter.omr
|
||||
|
|
95
omr-tracker/files/bin/omr-tracker-v2ray
Executable file
95
omr-tracker/files/bin/omr-tracker-v2ray
Executable file
|
@ -0,0 +1,95 @@
|
|||
#!/bin/sh
|
||||
# vim: set noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 :
|
||||
|
||||
name=$0
|
||||
basename="$(basename $0)"
|
||||
|
||||
_log() {
|
||||
logger -p daemon.info -t "${basename}" "$@"
|
||||
}
|
||||
|
||||
_ping_server() {
|
||||
local host=$1
|
||||
ret=$(ping \
|
||||
-w "$OMR_TRACKER_TIMEOUT" \
|
||||
-c 1 \
|
||||
-q \
|
||||
"${host}"
|
||||
) && echo "$ret" | grep -sq " 0% packet loss" && {
|
||||
server_ping=true
|
||||
}
|
||||
}
|
||||
|
||||
_get_ip() {
|
||||
uci -q set openmptcprouter.omr=router
|
||||
if [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ]; then
|
||||
check_ipv4_website="$(uci -q get openmptcprouter.settings.check_ipv4_website)"
|
||||
[ -z "$check_ipv4_website" ] && check_ipv4_website="http://ip.openmptcprouter.com"
|
||||
check_ipv6_website="$(uci -q get openmptcprouter.settings.check_ipv6_website)"
|
||||
[ -z "$check_ipv6_website" ] && check_ipv6_website="http://ipv6.openmptcprouter.com"
|
||||
uci -q set openmptcprouter.omr.detected_public_ipv4="$(curl -s -4 -m 3 $check_ipv4_website)"
|
||||
if [ "$(uci -q get openmptcprouter.omr.shadowsocks)" != "down" ]; then
|
||||
uci -q set openmptcprouter.omr.detected_ss_ipv4="$(curl -s -4 --socks5 "${proxy}" --max-time 3 $check_ipv4_website)"
|
||||
fi
|
||||
if [ "$(uci -q get openmptcprouter.settings.disable_ipv6)" != "1" ]; then
|
||||
uci -q set openmptcprouter.omr.detected_public_ipv6="$(curl -s -6 -m 3 $check_ipv6_website)"
|
||||
# uci -q set openmptcprouter.omr.detected_ss_ipv6=$(curl -s -6 --socks5 ":::1111" --max-time 3 http://ip.openmptcprouter.com)
|
||||
fi
|
||||
fi
|
||||
uci -q commit openmptcprouter
|
||||
}
|
||||
|
||||
timeout=${OMR_TRACKER_TIMEOUT:-5}
|
||||
interval=${OMR_TRACKER_INTERVAL:-10}
|
||||
retry=${OMR_TRACKER_TRIES:-4}
|
||||
proxy=${OMR_TRACKER_PROXY:-127.0.0.1:1111}
|
||||
hosts=${OMR_TRACKER_HOSTS:-1.1.1.1 1.0.0.1}
|
||||
|
||||
nodns=0
|
||||
|
||||
last=0
|
||||
nocontact=""
|
||||
uci -q set openmptcprouter.omr=router
|
||||
uci -q delete openmptcprouter.omr.v2ray
|
||||
_get_ip
|
||||
|
||||
while true; do
|
||||
host="${hosts%% *}"
|
||||
[ "$host" = "$hosts" ] || {
|
||||
hosts="${hosts#* } $host"
|
||||
}
|
||||
if [ "$(curl -s -I -w %{http_code} --socks5 ${proxy} --max-time ${timeout} $host -o /dev/null)" != "000" ]; then
|
||||
nocontact=""
|
||||
[ "${last}" -ge "${retry}" ] || [ "$(uci -q get openmptcprouter.omr.v2ray)" = "" ] && {
|
||||
_log "V2Ray is up (can contact via http ${host})"
|
||||
uci -q set openmptcprouter.omr.v2ray="up"
|
||||
uci -q commit openmptcprouter.omr
|
||||
}
|
||||
if [ -z "$(iptables -t nat -L -n | grep v2r)" ]; then
|
||||
_log "Reload V2Ray rules"
|
||||
/etc/init.d/v2ray rules_up 2> /dev/null
|
||||
_get_ip
|
||||
fi
|
||||
[ "$(uci -q get openmptcprouter.omr.detected_public_ipv4)" = "" ] || ([ "$(uci -q get openmptcprouter.settings.disable_ipv6)" != "1" ] && [ "$(uci -q get openmptcprouter.omr.detected_public_ipv6)" = "" ]) && _get_ip
|
||||
last=0
|
||||
else
|
||||
last=$((last + 1 ))
|
||||
[ -z "$nocontact" ] && nocontact="$host" || nocontact="$nocontact, $host"
|
||||
[ "${last}" -ge "${retry}" ] && {
|
||||
if [ -n "$(iptables -t nat -L -n | grep v2r)" ]; then
|
||||
_log "V2Ray is down (can't contact via http ${nocontact})"
|
||||
uci -q set openmptcprouter.omr.v2ray="down"
|
||||
uci -q commit openmptcprouter.omr
|
||||
/etc/init.d/v2ray rules_down 2> /dev/null
|
||||
_get_ip
|
||||
server_ping=false
|
||||
server="$(uci -q get v2ray.omrout.s_vless_address)"
|
||||
_ping_server $server
|
||||
if [ "$server_ping" = false ]; then
|
||||
_log "Server ($server) seems down, no answer to ping"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
fi
|
||||
sleep "${interval}"
|
||||
done
|
|
@ -18,7 +18,7 @@ config defaults 'defaults'
|
|||
option type 'ping'
|
||||
option options ''
|
||||
|
||||
config shadowsocks 'shadowsocks'
|
||||
config proxy 'proxy'
|
||||
option enabled '1'
|
||||
list hosts '1.1.1.1'
|
||||
list hosts '1.0.0.1'
|
||||
|
|
|
@ -143,7 +143,7 @@ _launch_shadowsocks_tracker() {
|
|||
|
||||
[ "$1" = "tracker" ] || return
|
||||
|
||||
_validate_section "shadowsocks" "shadowsocks"
|
||||
_validate_section "proxy" "proxy"
|
||||
|
||||
config_get local_port "$1" local_port
|
||||
local disabled
|
||||
|
@ -167,6 +167,26 @@ _launch_shadowsocks_tracker() {
|
|||
procd_close_instance
|
||||
}
|
||||
|
||||
_launch_v2ray_tracker() {
|
||||
local hosts timeout tries interval local_port enabled server
|
||||
|
||||
_validate_section "proxy" "proxy"
|
||||
[ "$enabled" = "0" ] || [ -z "$hosts" ] && return
|
||||
|
||||
procd_open_instance
|
||||
# shellcheck disable=SC2086
|
||||
procd_set_param command /bin/omr-tracker-ss "$1"
|
||||
procd_append_param env "OMR_TRACKER_HOSTS=$hosts"
|
||||
procd_append_param env "OMR_TRACKER_TIMEOUT=$timeout"
|
||||
procd_append_param env "OMR_TRACKER_TRIES=$tries"
|
||||
procd_append_param env "OMR_TRACKER_INTERVAL=$interval"
|
||||
procd_append_param env "OMR_TRACKER_PROXY=127.0.0.1:1111"
|
||||
procd_set_param limits nofile="51200 51200"
|
||||
procd_set_param respawn 0 10 0
|
||||
procd_set_param stderr 1
|
||||
procd_close_instance
|
||||
}
|
||||
|
||||
_multi_server() {
|
||||
config_get backup $1 backup
|
||||
[ "$backup" = "1" ] && multiserver=true
|
||||
|
@ -187,6 +207,11 @@ start_service() {
|
|||
#elif [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ]; then
|
||||
# /etc/init.d/shadowsocks-libev rules_down
|
||||
fi
|
||||
config_load v2ray
|
||||
config_get v2rayenabled main enabled
|
||||
if [ "$v2rayenabled" = "1" ]; then
|
||||
_launch_v2ray_tracker
|
||||
fi
|
||||
|
||||
multiserver=false
|
||||
config_load openmptcprouter
|
||||
|
|
|
@ -23,16 +23,24 @@ if [ "$(uci -q get omr-tracker.defaults.interval_tries)" = "" ]; then
|
|||
commit omr-tracker
|
||||
EOF
|
||||
fi
|
||||
if [ "$(uci -q get omr-tracker.shadowsocks.hosts | grep '23.96.52.53')" != "" ]; then
|
||||
|
||||
if [ "$(uci -q get omr-tracker.shadowsocks)" != "" ]; then
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
del_list omr-tracker.shadowsocks.hosts='23.96.52.53'
|
||||
del_list omr-tracker.shadowsocks.hosts='104.40.211.35'
|
||||
del_list omr-tracker.shadowsocks.hosts='80.67.169.12'
|
||||
add_list omr-tracker.shadowsocks.hosts='104.16.1.1'
|
||||
add_list omr-tracker.shadowsocks.hosts='103.224.182.242'
|
||||
add_list omr-tracker.shadowsocks.hosts='198.27.92.1'
|
||||
add_list omr-tracker.shadowsocks.hosts='88.191.250.176'
|
||||
add_list omr-tracker.shadowsocks.hosts='151.101.129.164'
|
||||
rename omr-tracker.shadowsocks=proxy
|
||||
uci set omr-tracker.proxy=proxy
|
||||
EOF
|
||||
fi
|
||||
|
||||
if [ "$(uci -q get omr-tracker.proxy.hosts | grep '23.96.52.53')" != "" ]; then
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
del_list omr-tracker.proxy.hosts='23.96.52.53'
|
||||
del_list omr-tracker.proxy.hosts='104.40.211.35'
|
||||
del_list omr-tracker.proxy.hosts='80.67.169.12'
|
||||
add_list omr-tracker.proxy.hosts='104.16.1.1'
|
||||
add_list omr-tracker.proxy.hosts='103.224.182.242'
|
||||
add_list omr-tracker.proxy.hosts='198.27.92.1'
|
||||
add_list omr-tracker.proxy.hosts='88.191.250.176'
|
||||
add_list omr-tracker.proxy.hosts='151.101.129.164'
|
||||
EOF
|
||||
fi
|
||||
exit 0
|
Loading…
Reference in a new issue