1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-feeds.git synced 2025-03-09 15:40:03 +00:00
This commit is contained in:
suyuan 2024-02-24 20:10:39 +08:00 committed by GitHub
commit 522f582143
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 91 additions and 50 deletions

View file

@ -1,6 +1,6 @@
.container { .container {
/* container for entire page. fixes bootstrap theme's ridiculously small page width */ /* container for entire page. fixes bootstrap theme's ridiculously small page width */
max-width: 1044px; max-width: 1644px;
} }
#interface_field { #interface_field {
padding: 12px 20px 20px 20px; padding: 12px 20px 20px 20px;
@ -31,10 +31,6 @@
text-align: center; text-align: center;
} }
/* Mwan3 ligthed CSS */ /* Mwan3 ligthed CSS */
.container {
/* container for entire page. fixes bootstrap theme's ridiculously small page width */
max-width: 1044px;
}
#interface_field { #interface_field {
padding: 0px; padding: 0px;
} }

View file

@ -708,6 +708,7 @@ dns_flush() {
# Get the current multipath status # Get the current multipath status
multipath_status="off" multipath_status="off"
[ "$OMR_TRACKER_INTERFACE" = "omrvpn" ] && multipath $OMR_TRACKER_DEVICE off 2>&1 >/dev/null [ "$OMR_TRACKER_INTERFACE" = "omrvpn" ] && multipath $OMR_TRACKER_DEVICE off 2>&1 >/dev/null
[ "$OMR_TRACKER_INTERFACE" = "omr6in4" ] && multipath $OMR_TRACKER_DEVICE off 2>&1 >/dev/null
if [ -e "/sys/class/net/$OMR_TRACKER_DEVICE" ]; then if [ -e "/sys/class/net/$OMR_TRACKER_DEVICE" ]; then
case "$(multipath "$OMR_TRACKER_DEVICE")" in case "$(multipath "$OMR_TRACKER_DEVICE")" in
*default*) multipath_status="on" ;; *default*) multipath_status="on" ;;
@ -878,7 +879,7 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ "$interface_up" != "true" ]; then
ifup $OMR_TRACKER_INTERFACE 2>&1 >/dev/null ifup $OMR_TRACKER_INTERFACE 2>&1 >/dev/null
} }
if [ "$OMR_TRACKER_INTERFACE" = "glorytun" ] || [ "$OMR_TRACKER_INTERFACE" = "omrvpn" ]; then if [ "$OMR_TRACKER_INTERFACE" = "glorytun" ] || [ "$OMR_TRACKER_INTERFACE" = "omrvpn" ] || [ "$OMR_TRACKER_INTERFACE" = "omr6in4" ]; then
if [ "$OMR_TRACKER_STATUS_MSG" = "" ]; then if [ "$OMR_TRACKER_STATUS_MSG" = "" ]; then
_log "$OMR_TRACKER_INTERFACE down" _log "$OMR_TRACKER_INTERFACE down"
else else
@ -917,7 +918,7 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ "$interface_up" != "true" ]; then
fi fi
if [ "$(uci -q get openvpn.omr.enabled)" = "1" ]; then if [ "$(uci -q get openvpn.omr.enabled)" = "1" ]; then
_log "OpenVPN down, restart it" _log "OpenVPN down, restart it"
/etc/init.d/openvpn restart 2>&1 >/dev/null /etc/init.d/openvpn restart omr 2>&1 >/dev/null
fi fi
config_load openmptcprouter config_load openmptcprouter
config_foreach disable_pihole server config_foreach disable_pihole server
@ -944,7 +945,7 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ "$interface_up" != "true" ]; then
exit 0 exit 0
fi fi
if [ "$OMR_TRACKER_INTERFACE" = "glorytun" ] || [ "$OMR_TRACKER_INTERFACE" = "omrvpn" ]; then if [ "$OMR_TRACKER_INTERFACE" = "glorytun" ] || [ "$OMR_TRACKER_INTERFACE" = "omrvpn" ] || [ "$OMR_TRACKER_INTERFACE" = "omr6in4" ]; then
if [ "$(uci -q get openmptcprouter.settings.shadowsocksudp)" = "1" ] && [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ -n "$(uci -q get shadowsocks-libev.sss0)" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.redir_udp)" = "hi1" ]; then if [ "$(uci -q get openmptcprouter.settings.shadowsocksudp)" = "1" ] && [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ -n "$(uci -q get shadowsocks-libev.sss0)" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.redir_udp)" = "hi1" ]; then
_log "Tunnel up disable use of ShadowSocks for UDP" _log "Tunnel up disable use of ShadowSocks for UDP"
uci -q delete shadowsocks-libev.ss_rules.redir_udp uci -q delete shadowsocks-libev.ss_rules.redir_udp
@ -1149,7 +1150,7 @@ if [ "$multipath_config" = "master" ]; then
config_load network config_load network
config_foreach set_route_balancing6 interface config_foreach set_route_balancing6 interface
[ -n "$routesbalancing6" ] && { [ -n "$routesbalancing6" ] && {
([ "$nbintf6" -gt "1" ] && [ "$(ip -6 r show default metric 1 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancing6 " ] && [ "$(ip -6 r show default metric 1 | tr -d '\t' | tr -d '\n')" != "default $routesbalancing6 " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show default metric 1 | grep $OMR_TRACKER_DEVICE)" = "" ] && [ -n "$OMR_TRACKER_DEVICE_IP6" ]) && { ([ "$nbintf6" -gt "1" ] && [ "$(ip -6 r show default metric 1 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancing6 " ] && [ "$(ip -6 r show default metric 1 | tr -d '\t' | tr -d '\n')" != "default $routesbalancing6 " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show default metric 1 | grep $OMR_TRACKER_DEVICE)" = "" ] && [ "$(ip -6 r show default metric 1 | grep omr6in4)" = "" ] && [ -n "$OMR_TRACKER_DEVICE_IP6" ]) && {
_log "Set ip -6 route replace default scope global metric 1 $routesbalancing6" _log "Set ip -6 route replace default scope global metric 1 $routesbalancing6"
ip -6 route replace default scope global metric 1 $routesbalancing6 2>&1 >/dev/null ip -6 route replace default scope global metric 1 $routesbalancing6 2>&1 >/dev/null
} }

View file

@ -26,7 +26,7 @@ while true; do
[ -z "$peer" ] && peer=$(ip -4 r list dev $iface | grep via | grep -v default | grep -v metric | grep -v / | awk '{print $1; exit}' | tr -d "\n") [ -z "$peer" ] && peer=$(ip -4 r list dev $iface | grep via | grep -v default | grep -v metric | grep -v / | awk '{print $1; exit}' | tr -d "\n")
[ -z "$peer" ] && peer=$(ip -4 r list dev $iface | grep kernel | awk '/proto kernel/ {print $1}' | grep -v / | tr -d "\n") [ -z "$peer" ] && peer=$(ip -4 r list dev $iface | grep kernel | awk '/proto kernel/ {print $1}' | grep -v / | tr -d "\n")
[ -n "$addr" ] && [ -n "$peer" ] && { [ -n "$addr" ] && [ -n "$peer" ] && {
if [ "$addr" != "$(uci -q get network.omr6in4.ipaddr)" ] || [ "$peer" != "$(uci -q get network.omr6in4.peeraddr)" ] || [ "$(ip -6 route show default | grep via)" = "" ]; then if ([ "$addr" != "$(uci -q get network.omr6in4.ipaddr)" ] || [ "$peer" != "$(uci -q get network.omr6in4.peeraddr)" ]) && [ "$(ip -6 route show default dev 6in4-omr6in4 metric 1 | grep via)" = "" ]; then
logger -t "omr6in4" "Set network for OMR 6in4 to local $addr peer $peer" logger -t "omr6in4" "Set network for OMR 6in4 to local $addr peer $peer"
uci -q batch <<-EOF uci -q batch <<-EOF
set network.omr6in4.ipaddr=$addr set network.omr6in4.ipaddr=$addr

View file

@ -4,6 +4,8 @@
name=$0 name=$0
basename="$(basename $0)" basename="$(basename $0)"
. /usr/lib/unbound/iptools.sh
_log() { _log() {
logger -p daemon.info -t "${basename}" "$@" logger -p daemon.info -t "${basename}" "$@"
} }
@ -24,13 +26,23 @@ _check_server() {
local host=$1 local host=$1
local port=$2 local port=$2
local k=0 local k=0
local valid_ip6=$(valid_subnet6 $host)
while [ "$server_ping" = false ] && [ "$k" -le "$retry" ]; do while [ "$server_ping" = false ] && [ "$k" -le "$retry" ]; do
ret=$(curl \ if [ "$valid_ip6" != "ok" ]; then
--max-time "$OMR_TRACKER_TIMEOUT" \ ret=$(curl \
-s \ --max-time "$OMR_TRACKER_TIMEOUT" \
-k \ -s \
"https://${host}:${port}/" -k \
) "https://${host}:${port}/"
)
else
ret=$(curl \
--max-time "$OMR_TRACKER_TIMEOUT" \
-s \
-k \
"https://[${host}]:${port}/"
)
fi
[ -n "$ret" ] && server_ping=true [ -n "$ret" ] && server_ping=true
k=$((k+1)) k=$((k+1))
sleep "${intervaltries}" sleep "${intervaltries}"
@ -40,16 +52,26 @@ _check_server() {
_check_server_intf() { _check_server_intf() {
local host=$1 local host=$1
local port=$2 local port=$2
local valid_ip6=$(valid_subnet6 $host)
for intf in $(multipath | awk '/default/ {print $1}'); do for intf in $(multipath | awk '/default/ {print $1}'); do
local k=0 local k=0
while [ "$server_ping" = false ] && [ "$k" -le "$retry" ]; do while [ "$server_ping" = false ] && [ "$k" -le "$retry" ]; do
ret=$(curl \ if [ "$valid_ip6" != "ok" ]; then
--max-time "$OMR_TRACKER_TIMEOUT" \ ret=$(curl \
-s \ --max-time "$OMR_TRACKER_TIMEOUT" \
-k \ -s \
--interface $intf \ -k \
"https://${host}:${port}/" --interface $intf \
) "https://${host}:${port}/"
)
else
ret=$(curl \
--max-time "$OMR_TRACKER_TIMEOUT" \
-s \
-k \
"https://[${host}%${intf}]:${port}/"
)
fi
[ -n "$ret" ] && { [ -n "$ret" ] && {
server_ping=true server_ping=true
} }
@ -89,21 +111,26 @@ _check_master() {
config_get ip $1 ip config_get ip $1 ip
config_get port $1 port "65500" config_get port $1 port "65500"
config_get disabled $1 disabled config_get disabled $1 disabled
serverip=""
[ "$master" = "1" ] && [ -n "$ip" ] && [ "$disabled" != "1" ] && { [ "$master" = "1" ] && [ -n "$ip" ] && [ "$disabled" != "1" ] && {
set_ip() { check_ip() {
local ipd=$1 local ipd=$1
local ip=""
ipresolve="$(resolveip -4 $ipd | head -n 1)" ipresolve="$(resolveip -4 $ipd | head -n 1)"
if [ -n "$ipresolve" ]; then if [ -n "$ipresolve" ]; then
ip="$ipresolve" serverip="$ipresolve"
else else
ip6resolve="$(resolveip -6 $ipd | head -n 1)" ip6resolve="$(resolveip -6 $ipd | head -n 1)"
[ -n "$ip6resolve" ] && ip="$ip6resolve" [ -n "$ip6resolve" ] && serverip="$ip6resolve"
fi fi
[ -z "$ip" ] && return [ -z "$serverip" ] && return
#_ping_server $ip #_ping_server $serverip
#_check_server $ip $port #_check_server $serverip $port
_check_server_intf $ip $port _check_server_intf $serverip $port
[ "$server_ping" = true ] && return
countips=$((countips+1))
}
set_ip() {
ip="$serverip"
if [ "$server_ping" = true ]; then if [ "$server_ping" = true ]; then
if [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" != "$ip" ]; then if [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" != "$ip" ]; then
logger -t "OMR-Tracker-Server" "Master server ${name} up ($ip), set it back" logger -t "OMR-Tracker-Server" "Master server ${name} up ($ip), set it back"
@ -204,10 +231,10 @@ _check_master() {
script_alert_down="$(uci -q get omr-tracker.proxy.script_alert_down)" script_alert_down="$(uci -q get omr-tracker.proxy.script_alert_down)"
[ -n "$script_alert_down" ] && eval $script_alert_down [ -n "$script_alert_down" ] && eval $script_alert_down
fi fi
countips=$((countips+1))
} }
config_load openmptcprouter config_load openmptcprouter
config_list_foreach $1 ip set_ip config_list_foreach $1 ip check_ip
set_ip
#if [ "$server_ping" = true ] && [ "$countips" = "1" ]; then #if [ "$server_ping" = true ] && [ "$countips" = "1" ]; then
# uci -q batch <<-EOF >/dev/null # uci -q batch <<-EOF >/dev/null
# set shadowsocks-libev.sss${count}.server=$ip # set shadowsocks-libev.sss${count}.server=$ip
@ -233,19 +260,26 @@ _check_backup() {
config_get ip $1 ip config_get ip $1 ip
config_get port $1 port config_get port $1 port
config_get disabled $1 disabled config_get disabled $1 disabled
serverip=""
[ "$backup" = "1" ] && [ -n "$ip" ] && [ "$disabled" != "1" ] && { [ "$backup" = "1" ] && [ -n "$ip" ] && [ "$disabled" != "1" ] && {
set_ip() { check_ip() {
local ip=$1 local ipd=$1
ipresolve="$(resolveip -4 $ip | head -n 1)" ipresolve="$(resolveip -4 $ipd | head -n 1)"
if [ -n "$ipresolve" ]; then if [ -n "$ipresolve" ]; then
ip="$ipresolve" serverip="$ipresolve"
else else
ip6resolve="$(resolveip -6 $ip | head -n 1)" ip6resolve="$(resolveip -6 $ipd | head -n 1)"
[ -n "$ip6resolve" ] && ip="$ip6resolve" [ -n "$ip6resolve" ] && serverip="$ip6resolve"
fi fi
#_ping_server $ip [ -z "$serverip" ] && return
#_check_server $ip $port #_ping_server $serverip
_check_server_intf $ip $port #_check_server $serverip $port
_check_server_intf $serverip $port
[ "$server_ping" = true ] && return
countips=$((countips+1))
}
set_ip() {
ip="$serverip"
#[ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" = "$ip" ] && break #[ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" = "$ip" ] && break
if [ "$server_ping" = true ]; then if [ "$server_ping" = true ]; then
if [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" != "$ip" ]; then if [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" != "$ip" ]; then
@ -349,7 +383,8 @@ _check_backup() {
countips=$((countips+1)) countips=$((countips+1))
} }
config_load openmptcprouter config_load openmptcprouter
config_list_foreach $1 ip set_ip config_list_foreach $1 ip check_ip
set_ip
#if [ "$server_ping" = true ] && [ "$countips" = "1" ]; then #if [ "$server_ping" = true ] && [ "$countips" = "1" ]; then
# uci -q batch <<-EOF >/dev/null # uci -q batch <<-EOF >/dev/null
# set shadowsocks-libev.sss${count}.server=$ip # set shadowsocks-libev.sss${count}.server=$ip

View file

@ -283,7 +283,7 @@ _launch_shadowsocks_tracker() {
[ "$enabled" = "0" ] || [ "$disabled" = "1" ] || [ -z "$hosts" ] && return [ "$enabled" = "0" ] || [ "$disabled" = "1" ] || [ -z "$hosts" ] && return
[ -z "$server" ] && return [ -z "$server" ] && return
[ "$server" = "192.168.1.3" ] || [ "$server" = "" ] && return [ "$(uci -q get shadowsocks-libev.${server}.disabled)" = "1" ] && return
procd_open_instance procd_open_instance
# shellcheck disable=SC2086 # shellcheck disable=SC2086
@ -317,7 +317,7 @@ _launch_shadowsocks_rust_tracker() {
[ "$enabled" = "0" ] || [ "$disabled" = "1" ] || [ -z "$hosts" ] && return [ "$enabled" = "0" ] || [ "$disabled" = "1" ] || [ -z "$hosts" ] && return
[ -z "$server" ] && return [ -z "$server" ] && return
[ "$server" = "192.168.1.3" ] || [ "$server" = "" ] && return [ "$(uci -q get shadowsocks-rust.${server}.disabled)" = "1" ] && return
procd_open_instance procd_open_instance
# shellcheck disable=SC2086 # shellcheck disable=SC2086
@ -385,12 +385,17 @@ _dns_server() {
local ip=$1 local ip=$1
resolv=$(resolveip -4 ${ip} | head -n 1) resolv=$(resolveip -4 ${ip} | head -n 1)
[ -n "${resolv}" ] && [ "${resolv}" != "${ip}" ] && multiserver=true [ -n "${resolv}" ] && [ "${resolv}" != "${ip}" ] && multiserver=true
resolv=$(resolveip -6 ${ip} | head -n 1)
[ -n "${resolv}" ] && [ "${resolv}" != "${ip}" ] && multiserver=true
ipcount=$((ipcount+1))
} }
_multi_server() { _multi_server() {
local ipcount=0
config_get backup $1 backup config_get backup $1 backup
[ "$backup" = "1" ] && multiserver=true [ "$backup" = "1" ] && multiserver=true
config_list_foreach $1 ip _dns_server config_list_foreach $1 ip _dns_server
[ "$ipcount" != "0" ] && [ "$ipcount" != "1" ] && multiserver=true
} }
_gre_tunnel() { _gre_tunnel() {

View file

@ -1056,12 +1056,16 @@ function interfaces_status()
mArray.openmptcprouter["tun_state"] = "DOWN" mArray.openmptcprouter["tun_state"] = "DOWN"
end end
if mArray.openmptcprouter["ipv6"] == "enabled" or mArray.openmptcprouter["service_addr_ip6"] ~= "" then if mArray.openmptcprouter["ipv6"] == "enabled" or mArray.openmptcprouter["service_addr_ip6"] ~= "" then
local tunnel_ipv6_gw = uci:get("network","omr6in4","gateway") local tunnel_ipv6_gw = uci:get("network","omr6in4","gateway") or ""
local tunnel_ping6_test = ut.trim(sys.exec("ping6 -w 1 -c 1 " .. tunnel_ipv6_gw .. "%6in4-omr6in4 | grep '100% packet loss'")) if tunnel_ipv6_gw ~= "" then
if tunnel_ping6_test == "" then local tunnel_ping6_test = ut.trim(sys.exec("ping6 -w 1 -c 1 " .. tunnel_ipv6_gw .. "%6in4-omr6in4 | grep '100% packet loss'"))
mArray.openmptcprouter["tun6_state"] = "UP" if tunnel_ping6_test == "" then
mArray.openmptcprouter["tun6_state"] = "UP"
else
mArray.openmptcprouter["tun6_state"] = "DOWN"
end
else else
mArray.openmptcprouter["tun6_state"] = "DOWN" mArray.openmptcprouter["tun6_state"] = "UNKNOWN"
end end
end end
else else