mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +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
|
config_foreach _ping_server server $OMR_TRACKER_DEVICE
|
||||||
fi
|
fi
|
||||||
if [ "$serverip_ping" = false ] && [ -n "$OMR_TRACKER_HOST" ]; then
|
if [ "$serverip_ping" = false ] && [ -n "$OMR_TRACKER_HOST" ]; then
|
||||||
OMR_TRACKER_HOST=$(resolveip -4 $OMR_TRACKER_HOST | tr -d "\n")
|
OMR_TRACKER_HOST=$(resolveip -4 -t 5 $OMR_TRACKER_HOST | head -n 1 | 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
|
if [ -n "$OMR_TRACKER_HOST" ]; then
|
||||||
# Check if route is not used
|
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
|
||||||
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
|
# Check if route is not used
|
||||||
do
|
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
|
||||||
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..."
|
do
|
||||||
sleep 2
|
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..."
|
||||||
ip route del "$OMR_TRACKER_HOST" via "$OMR_TRACKER_DEVICE_GATEWAY" dev "$OMR_TRACKER_DEVICE" src "$OMR_TRACKER_DEVICE_IP" > /dev/null 2>&1
|
sleep 2
|
||||||
_restart
|
ip route del "$OMR_TRACKER_HOST" via "$OMR_TRACKER_DEVICE_GATEWAY" dev "$OMR_TRACKER_DEVICE" src "$OMR_TRACKER_DEVICE_IP" > /dev/null 2>&1
|
||||||
done
|
_restart
|
||||||
fi
|
done
|
||||||
if [ "$OMR_TRACKER_TYPE" = "ping" ]; then
|
fi
|
||||||
_ping "$OMR_TRACKER_HOST" "$OMR_TRACKER_DEVICE" "yes"
|
if [ "$OMR_TRACKER_TYPE" = "ping" ]; then
|
||||||
statusb=$?
|
_ping "$OMR_TRACKER_HOST" "$OMR_TRACKER_DEVICE" "yes"
|
||||||
elif [ "$OMR_TRACKER_TYPE" = "httping" ]; then
|
statusb=$?
|
||||||
_httping "$OMR_TRACKER_HOST" "$OMR_TRACKER_DEVICE_IP" "yes"
|
elif [ "$OMR_TRACKER_TYPE" = "httping" ]; then
|
||||||
statusb=$?
|
_httping "$OMR_TRACKER_HOST" "$OMR_TRACKER_DEVICE_IP" "yes"
|
||||||
elif [ "$OMR_TRACKER_TYPE" = "dns" ]; then
|
statusb=$?
|
||||||
_dns "$OMR_TRACKER_HOST" "$OMR_TRACKER_DEVICE_IP" "yes"
|
elif [ "$OMR_TRACKER_TYPE" = "dns" ]; then
|
||||||
statusb=$?
|
_dns "$OMR_TRACKER_HOST" "$OMR_TRACKER_DEVICE_IP" "yes"
|
||||||
fi
|
statusb=$?
|
||||||
ip route del "$OMR_TRACKER_HOST" via "$OMR_TRACKER_DEVICE_GATEWAY" dev "$OMR_TRACKER_DEVICE" src "$OMR_TRACKER_DEVICE_IP" > /dev/null 2>&1
|
fi
|
||||||
if $(exit $statusb); then
|
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_MSG=""
|
||||||
OMR_TRACKER_STATUS="OK"
|
OMR_TRACKER_STATUS="OK"
|
||||||
break
|
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
|
fi
|
||||||
else
|
else
|
||||||
OMR_TRACKER_STATUS_MSG=""
|
OMR_TRACKER_STATUS_MSG=""
|
||||||
|
|
|
@ -76,7 +76,7 @@ while true; do
|
||||||
last=$((last + 1 ))
|
last=$((last + 1 ))
|
||||||
[ -z "$nocontact" ] && nocontact="$host" || nocontact="$nocontact, $host"
|
[ -z "$nocontact" ] && nocontact="$host" || nocontact="$nocontact, $host"
|
||||||
[ "${last}" -ge "${retry}" ] && {
|
[ "${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})"
|
_log "Shadowsocks is down (can't contact via http ${nocontact})"
|
||||||
uci -q set openmptcprouter.omr.shadowsocks="down"
|
uci -q set openmptcprouter.omr.shadowsocks="down"
|
||||||
uci -q commit openmptcprouter.omr
|
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 type 'ping'
|
||||||
option options ''
|
option options ''
|
||||||
|
|
||||||
config shadowsocks 'shadowsocks'
|
config proxy 'proxy'
|
||||||
option enabled '1'
|
option enabled '1'
|
||||||
list hosts '1.1.1.1'
|
list hosts '1.1.1.1'
|
||||||
list hosts '1.0.0.1'
|
list hosts '1.0.0.1'
|
||||||
|
|
|
@ -143,7 +143,7 @@ _launch_shadowsocks_tracker() {
|
||||||
|
|
||||||
[ "$1" = "tracker" ] || return
|
[ "$1" = "tracker" ] || return
|
||||||
|
|
||||||
_validate_section "shadowsocks" "shadowsocks"
|
_validate_section "proxy" "proxy"
|
||||||
|
|
||||||
config_get local_port "$1" local_port
|
config_get local_port "$1" local_port
|
||||||
local disabled
|
local disabled
|
||||||
|
@ -167,6 +167,26 @@ _launch_shadowsocks_tracker() {
|
||||||
procd_close_instance
|
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() {
|
_multi_server() {
|
||||||
config_get backup $1 backup
|
config_get backup $1 backup
|
||||||
[ "$backup" = "1" ] && multiserver=true
|
[ "$backup" = "1" ] && multiserver=true
|
||||||
|
@ -187,6 +207,11 @@ start_service() {
|
||||||
#elif [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ]; then
|
#elif [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ]; then
|
||||||
# /etc/init.d/shadowsocks-libev rules_down
|
# /etc/init.d/shadowsocks-libev rules_down
|
||||||
fi
|
fi
|
||||||
|
config_load v2ray
|
||||||
|
config_get v2rayenabled main enabled
|
||||||
|
if [ "$v2rayenabled" = "1" ]; then
|
||||||
|
_launch_v2ray_tracker
|
||||||
|
fi
|
||||||
|
|
||||||
multiserver=false
|
multiserver=false
|
||||||
config_load openmptcprouter
|
config_load openmptcprouter
|
||||||
|
|
|
@ -23,16 +23,24 @@ if [ "$(uci -q get omr-tracker.defaults.interval_tries)" = "" ]; then
|
||||||
commit omr-tracker
|
commit omr-tracker
|
||||||
EOF
|
EOF
|
||||||
fi
|
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
|
uci -q batch <<-EOF >/dev/null
|
||||||
del_list omr-tracker.shadowsocks.hosts='23.96.52.53'
|
rename omr-tracker.shadowsocks=proxy
|
||||||
del_list omr-tracker.shadowsocks.hosts='104.40.211.35'
|
uci set omr-tracker.proxy=proxy
|
||||||
del_list omr-tracker.shadowsocks.hosts='80.67.169.12'
|
EOF
|
||||||
add_list omr-tracker.shadowsocks.hosts='104.16.1.1'
|
fi
|
||||||
add_list omr-tracker.shadowsocks.hosts='103.224.182.242'
|
|
||||||
add_list omr-tracker.shadowsocks.hosts='198.27.92.1'
|
if [ "$(uci -q get omr-tracker.proxy.hosts | grep '23.96.52.53')" != "" ]; then
|
||||||
add_list omr-tracker.shadowsocks.hosts='88.191.250.176'
|
uci -q batch <<-EOF >/dev/null
|
||||||
add_list omr-tracker.shadowsocks.hosts='151.101.129.164'
|
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
|
EOF
|
||||||
fi
|
fi
|
||||||
exit 0
|
exit 0
|
Loading…
Add table
Add a link
Reference in a new issue