1
0
Fork 0
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:
Ycarus (Yannick Chabanois) 2020-09-04 22:05:24 +02:00
parent a03847acbb
commit 556d980c6e
6 changed files with 175 additions and 41 deletions

View file

@ -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=""

View file

@ -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

View 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

View file

@ -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'

View file

@ -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

View file

@ -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