mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +00:00
fix mansgera
This commit is contained in:
parent
7c7cca4444
commit
98e4043959
62 changed files with 1040 additions and 3286 deletions
|
@ -1,12 +1,12 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=bcm27xx-eeprom
|
PKG_NAME:=bcm27xx-eeprom
|
||||||
PKG_VERSION:=2fec47bd7f981c9cb21b0fb3fdd4fe07f23f9e3b
|
PKG_VERSION:=16bb29427f96dc8276a7102c0526154a1084bffd
|
||||||
PKG_RELEASE:=4
|
PKG_RELEASE:=3
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=https://codeload.github.com/raspberrypi/rpi-eeprom/tar.gz/$(PKG_VERSION)?
|
PKG_SOURCE_URL:=https://codeload.github.com/raspberrypi/rpi-eeprom/tar.gz/$(PKG_VERSION)?
|
||||||
PKG_HASH:=f54c26ec399801dee7d3d0cc0e969c28878b6f42c982e166c863edb91d2d2a21
|
PKG_HASH:=9bf42edbcd5ce38538750860c3c788af435206aa441b7d78cf88d094631dbb14
|
||||||
|
|
||||||
PKG_LICENSE:=BSD-3-Clause Custom
|
PKG_LICENSE:=BSD-3-Clause Custom
|
||||||
PKG_LICENSE_FILES:=LICENSE
|
PKG_LICENSE_FILES:=LICENSE
|
||||||
|
|
|
@ -14,24 +14,22 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||||
|
|
||||||
--- a/rpi-eeprom-update
|
--- a/rpi-eeprom-update
|
||||||
+++ b/rpi-eeprom-update
|
+++ b/rpi-eeprom-update
|
||||||
@@ -24,17 +24,17 @@ else
|
@@ -24,15 +24,15 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Selects the release sub-directory
|
# May be used to select beta or stable releases instead of the default critical updates.
|
||||||
-FIRMWARE_RELEASE_STATUS=${FIRMWARE_RELEASE_STATUS:-default}
|
-FIRMWARE_RELEASE_STATUS=${FIRMWARE_RELEASE_STATUS:-critical}
|
||||||
+FIRMWARE_RELEASE_STATUS=${FIRMWARE_RELEASE_STATUS:-stable}
|
+FIRMWARE_RELEASE_STATUS=${FIRMWARE_RELEASE_STATUS:-stable}
|
||||||
FIRMWARE_IMAGE_DIR=${FIRMWARE_IMAGE_DIR:-${FIRMWARE_ROOT}/${FIRMWARE_RELEASE_STATUS}}
|
FIRMWARE_IMAGE_DIR=${FIRMWARE_IMAGE_DIR:-${FIRMWARE_ROOT}/${FIRMWARE_RELEASE_STATUS}}
|
||||||
-FIRMWARE_BACKUP_DIR=${FIRMWARE_BACKUP_DIR:-/var/lib/raspberrypi/bootloader/backup}
|
-FIRMWARE_BACKUP_DIR=${FIRMWARE_BACKUP_DIR:-/var/lib/raspberrypi/bootloader/backup}
|
||||||
+FIRMWARE_BACKUP_DIR=${FIRMWARE_BACKUP_DIR:-${FIRMWARE_ROOT}/backup}
|
+FIRMWARE_BACKUP_DIR=${FIRMWARE_BACKUP_DIR:-${FIRMWARE_ROOT}/backup}
|
||||||
ENABLE_VL805_UPDATES=${ENABLE_VL805_UPDATES:-1}
|
ENABLE_VL805_UPDATES=${ENABLE_VL805_UPDATES:-1}
|
||||||
|
USE_FLASHROM=${USE_FLASHROM:-0}
|
||||||
RECOVERY_BIN=${RECOVERY_BIN:-${FIRMWARE_ROOT}/${FIRMWARE_RELEASE_STATUS}/recovery.bin}
|
RECOVERY_BIN=${RECOVERY_BIN:-${FIRMWARE_ROOT}/${FIRMWARE_RELEASE_STATUS}/recovery.bin}
|
||||||
BOOTFS=${BOOTFS:-/boot}
|
BOOTFS=${BOOTFS:-/boot}
|
||||||
-VCMAILBOX=${VCMAILBOX:-/opt/vc/bin/vcmailbox}
|
-VCMAILBOX=${VCMAILBOX:-/opt/vc/bin/vcmailbox}
|
||||||
+VCMAILBOX=${VCMAILBOX:-/usr/bin/vcmailbox}
|
+VCMAILBOX=${VCMAILBOX:-/usr/bin/vcmailbox}
|
||||||
CM4_ENABLE_RPI_EEPROM_UPDATE=${CM4_ENABLE_RPI_EEPROM_UPDATE:-0}
|
CM4_ENABLE_RPI_EEPROM_UPDATE=${CM4_ENABLE_RPI_EEPROM_UPDATE:-0}
|
||||||
RPI_EEPROM_UPDATE_CONFIG_TOOL="${RPI_EEPROM_UPDATE_CONFIG_TOOL:-raspi-config}"
|
|
||||||
|
|
||||||
DT_BOOTLOADER_TS=${DT_BOOTLOADER_TS:-/proc/device-tree/chosen/bootloader/build-timestamp}
|
|
||||||
|
|
||||||
EXIT_SUCCESS=0
|
EXIT_SUCCESS=0
|
||||||
EXIT_UPDATE_REQUIRED=1
|
EXIT_UPDATE_REQUIRED=1
|
||||||
|
|
|
@ -24,3 +24,12 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||||
fi
|
fi
|
||||||
|
|
||||||
LOCAL_MODE=0
|
LOCAL_MODE=0
|
||||||
|
@@ -345,7 +345,7 @@ Options:
|
||||||
|
-u Install the specified VL805 (USB EEPROM) image file.
|
||||||
|
|
||||||
|
Environment:
|
||||||
|
-Environment variables should be defined in /etc/default/rpi-eeprom-update
|
||||||
|
+Environment variables should be defined in /etc/bcm27xx-eeprom.conf
|
||||||
|
|
||||||
|
EEPROM_CONFIG_HOOK
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/rpi-eeprom-update 2020-11-05 21:58:02.247836497 +0100
|
--- a/rpi-eeprom-update 2020-11-05 21:58:02.247836497 +0100
|
||||||
+++ b/rpi-eeprom-update 2020-11-05 21:58:36.911266307 +0100
|
+++ b/rpi-eeprom-update 2020-11-05 21:58:36.911266307 +0100
|
||||||
@@ -212,8 +212,8 @@
|
@@ -186,8 +186,8 @@
|
||||||
|| die "Failed to copy ${TMP_EEPROM_IMAGE} to ${BOOTFS}"
|
|| die "Failed to copy ${TMP_EEPROM_IMAGE} to ${BOOTFS}"
|
||||||
|
|
||||||
# For NFS mounts ensure that the files are readable to the TFTP user
|
# For NFS mounts ensure that the files are readable to the TFTP user
|
||||||
|
@ -11,7 +11,7 @@
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "${VL805_UPDATE_IMAGE}" ]; then
|
if [ -n "${VL805_UPDATE_IMAGE}" ]; then
|
||||||
@@ -224,8 +224,8 @@
|
@@ -198,8 +198,8 @@
|
||||||
|| die "Failed to copy ${VL805_UPDATE_IMAGE} to ${BOOTFS}/vl805.bin"
|
|| die "Failed to copy ${VL805_UPDATE_IMAGE} to ${BOOTFS}/vl805.bin"
|
||||||
|
|
||||||
# For NFS mounts ensure that the files are readable to the TFTP user
|
# For NFS mounts ensure that the files are readable to the TFTP user
|
||||||
|
|
|
@ -56,15 +56,11 @@ start_instance() {
|
||||||
|
|
||||||
_log "starting ${PROG_NAME} ${1} instance $*"
|
_log "starting ${PROG_NAME} ${1} instance $*"
|
||||||
|
|
||||||
if [ "$mode" = "to" ]; then
|
|
||||||
bind="bind from addr :: port 5000 to addr $host port $port"
|
|
||||||
else
|
|
||||||
bind="bind from addr $host port $port to addr :: port 5000"
|
|
||||||
fi
|
|
||||||
procd_open_instance
|
procd_open_instance
|
||||||
|
|
||||||
procd_set_param command ${PROG} \
|
procd_set_param command ${PROG} \
|
||||||
${bind} \
|
${host:+bind ${mode} addr "$host"} \
|
||||||
|
${port:+port "$port"} \
|
||||||
${dev:+dev "$dev"} \
|
${dev:+dev "$dev"} \
|
||||||
keyfile /tmp/${PROG_NAME}-${1}.key \
|
keyfile /tmp/${PROG_NAME}-${1}.key \
|
||||||
persist
|
persist
|
||||||
|
|
|
@ -36,16 +36,14 @@ function create_helper_text()
|
||||||
end
|
end
|
||||||
|
|
||||||
function get_provider_name(value)
|
function get_provider_name(value)
|
||||||
if value ~= nil then
|
for filename in fs.dir(providers_dir) do
|
||||||
for filename in fs.dir(providers_dir) do
|
local p_func = loadfile(providers_dir .. filename)
|
||||||
local p_func = loadfile(providers_dir .. filename)
|
setfenv(p_func, { _ = i18n.translate })
|
||||||
setfenv(p_func, { _ = i18n.translate })
|
local p = p_func()
|
||||||
local p = p_func()
|
value = value:gsub('[%p%c%s]', '')
|
||||||
value = value:gsub('[%p%c%s]', '')
|
p.url_match = p.resolver_url:gsub('[%p%c%s]', '')
|
||||||
p.url_match = p.resolver_url:gsub('[%p%c%s]', '')
|
if value:match(p.url_match) then
|
||||||
if value:match(p.url_match) then
|
return p.label
|
||||||
return p.label
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return translate("Unknown Provider")
|
return translate("Unknown Provider")
|
||||||
|
|
|
@ -40,7 +40,7 @@ function run_test(server,proto,mode,updown,omit,parallel,transmit,bitrate)
|
||||||
end
|
end
|
||||||
local port = t[ math.random( #t ) ]
|
local port = t[ math.random( #t ) ]
|
||||||
if password ~= "" then
|
if password ~= "" then
|
||||||
iperf = io.popen("omr-iperf %s -P %s -%s -O %s -t %s -J -Z %s" % {server,parallel,ipv,omit,transmit,options})
|
iperf = io.popen("omr-iperf -P %s -%s -O %s -t %s -J -Z %s" % {parallel,ipv,omit,transmit,options})
|
||||||
else
|
else
|
||||||
iperf = io.popen("iperf3 -c %s -P %s -%s -p %s -O %s -t %s -J -Z %s" % {ut.shellquote(addr),parallel,ipv,port,omit,transmit,options})
|
iperf = io.popen("iperf3 -c %s -P %s -%s -p %s -O %s -t %s -J -Z %s" % {ut.shellquote(addr),parallel,ipv,port,omit,transmit,options})
|
||||||
end
|
end
|
||||||
|
|
|
@ -18,7 +18,7 @@ mtcpck:value(0, translate("disable"))
|
||||||
local mtcpck = s:option(ListValue, "mptcp_debug", translate("Multipath Debug"))
|
local mtcpck = s:option(ListValue, "mptcp_debug", translate("Multipath Debug"))
|
||||||
mtcpck:value(1, translate("enable"))
|
mtcpck:value(1, translate("enable"))
|
||||||
mtcpck:value(0, translate("disable"))
|
mtcpck:value(0, translate("disable"))
|
||||||
local mtcppm = s:option(ListValue, "mptcp_path_manager", translate("Multipath TCP path-manager"), translate("Default is fullmesh"))
|
local mtcppm = s:option(ListValue, "mptcp_path_manager", translate("Multipath TCP path-manager"))
|
||||||
mtcppm:value("default", translate("default"))
|
mtcppm:value("default", translate("default"))
|
||||||
mtcppm:value("fullmesh", translate("fullmesh"))
|
mtcppm:value("fullmesh", translate("fullmesh"))
|
||||||
mtcppm:value("ndiffports", translate("ndiffports"))
|
mtcppm:value("ndiffports", translate("ndiffports"))
|
||||||
|
@ -38,7 +38,7 @@ local mtcpsyn = s:option(Value, "mptcp_syn_retries", translate("Multipath TCP SY
|
||||||
mtcpsyn.datatype = "uinteger"
|
mtcpsyn.datatype = "uinteger"
|
||||||
mtcpsyn.rmempty = false
|
mtcpsyn.rmempty = false
|
||||||
local congestion = s:option(ListValue, "congestion", translate("Congestion Control"),translate("Default is bbr"))
|
local congestion = s:option(ListValue, "congestion", translate("Congestion Control"),translate("Default is bbr"))
|
||||||
local availablecong = sys.exec("sysctl -n net.ipv4.tcp_available_congestion_control | xargs -n1 | sort | xargs")
|
local availablecong = sys.exec("sysctl net.ipv4.tcp_available_congestion_control | awk -F'= ' '{print $NF}'")
|
||||||
for cong in string.gmatch(availablecong, "[^%s]+") do
|
for cong in string.gmatch(availablecong, "[^%s]+") do
|
||||||
congestion:value(cong, translate(cong))
|
congestion:value(cong, translate(cong))
|
||||||
end
|
end
|
||||||
|
|
|
@ -50,8 +50,7 @@ _bypass_domains() {
|
||||||
_bypass_domain() {
|
_bypass_domain() {
|
||||||
local domain=$1
|
local domain=$1
|
||||||
local intf=$2
|
local intf=$2
|
||||||
intf=$(echo $intf | sed -e 's/\./_/')
|
|
||||||
|
|
||||||
[ -z "$intf" ] && intf="all"
|
[ -z "$intf" ] && intf="all"
|
||||||
if [ -n "$domain" ]; then
|
if [ -n "$domain" ]; then
|
||||||
domain=$(echo $domain | sed 's:^\.::')
|
domain=$(echo $domain | sed 's:^\.::')
|
||||||
|
@ -69,7 +68,7 @@ _bypass_domain() {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [ "$(uci -q get dhcp.@dnsmasq[0].ipset | grep /$domain/)" = "" ]; then
|
if [ "$(uci -q get dhcp.@dnsmasq[0].ipset | grep /$domain/)" = "" ]; then
|
||||||
uci -q add_list dhcp.@dnsmasq[0].ipset="/$domain/omr_dst_bypass_$intfuci,omr6_dst_bypass_$intf"
|
uci -q add_list dhcp.@dnsmasq[0].ipset="/$domain/omr_dst_bypass_$intf,omr6_dst_bypass_$intf"
|
||||||
else
|
else
|
||||||
dnsmasqipset=$(uci -q get dhcp.@dnsmasq[0].ipset | sed 's/ /\n/g')
|
dnsmasqipset=$(uci -q get dhcp.@dnsmasq[0].ipset | sed 's/ /\n/g')
|
||||||
for dnsipset in $dnsmasqipset; do
|
for dnsipset in $dnsmasqipset; do
|
||||||
|
@ -91,7 +90,6 @@ _bypass_mac() {
|
||||||
config_get intf $1 interface
|
config_get intf $1 interface
|
||||||
config_get enabled $1 enabled
|
config_get enabled $1 enabled
|
||||||
[ "$enabled" = "0" ] && return
|
[ "$enabled" = "0" ] && return
|
||||||
intf=$(echo $intf | sed -e 's/\./_/')
|
|
||||||
local intfid="$(uci -q get omr-bypass.$intf.id)"
|
local intfid="$(uci -q get omr-bypass.$intf.id)"
|
||||||
|
|
||||||
[ -z "$intf" ] && intf="all"
|
[ -z "$intf" ] && intf="all"
|
||||||
|
@ -133,7 +131,6 @@ _bypass_lan_ip() {
|
||||||
config_get intf $1 interface
|
config_get intf $1 interface
|
||||||
config_get enabled $1 enabled
|
config_get enabled $1 enabled
|
||||||
[ "$enabled" = "0" ] && return
|
[ "$enabled" = "0" ] && return
|
||||||
intf=$(echo $intf | sed -e 's/\./_/')
|
|
||||||
local intfid="$(uci -q get omr-bypass.$intf.id)"
|
local intfid="$(uci -q get omr-bypass.$intf.id)"
|
||||||
|
|
||||||
[ -z "$intf" ] && intf="all"
|
[ -z "$intf" ] && intf="all"
|
||||||
|
@ -191,7 +188,6 @@ _bypass_dest_port() {
|
||||||
config_get intf $1 interface
|
config_get intf $1 interface
|
||||||
config_get enabled $1 enabled
|
config_get enabled $1 enabled
|
||||||
[ "$enabled" = "0" ] && return
|
[ "$enabled" = "0" ] && return
|
||||||
intf=$(echo $intf | sed -e 's/\./_/')
|
|
||||||
local intfid="$(uci -q get omr-bypass.$intf.id)"
|
local intfid="$(uci -q get omr-bypass.$intf.id)"
|
||||||
|
|
||||||
[ -z "$intf" ] && intf="all"
|
[ -z "$intf" ] && intf="all"
|
||||||
|
@ -247,7 +243,6 @@ _bypass_src_port() {
|
||||||
config_get intf $1 interface
|
config_get intf $1 interface
|
||||||
config_get enabled $1 enabled
|
config_get enabled $1 enabled
|
||||||
[ "$enabled" = "0" ] && return
|
[ "$enabled" = "0" ] && return
|
||||||
intf=$(echo $intf | sed -e 's/\./_/')
|
|
||||||
local intfid="$(uci -q get omr-bypass.$intf.id)"
|
local intfid="$(uci -q get omr-bypass.$intf.id)"
|
||||||
|
|
||||||
[ -z "$intf" ] && intf="all"
|
[ -z "$intf" ] && intf="all"
|
||||||
|
@ -301,7 +296,6 @@ _bypass_proto() {
|
||||||
config_get intf $1 interface
|
config_get intf $1 interface
|
||||||
config_get enabled $1 enabled
|
config_get enabled $1 enabled
|
||||||
[ "$enabled" = "0" ] && return
|
[ "$enabled" = "0" ] && return
|
||||||
intf=$(echo $intf | sed -e 's/\./_/')
|
|
||||||
local intfid="$(uci -q get omr-bypass.$intf.id)"
|
local intfid="$(uci -q get omr-bypass.$intf.id)"
|
||||||
|
|
||||||
[ -z "$intf" ] && intf="all"
|
[ -z "$intf" ] && intf="all"
|
||||||
|
@ -375,25 +369,13 @@ _bypass_proto() {
|
||||||
_intf_rule_ss_rules() {
|
_intf_rule_ss_rules() {
|
||||||
rule_name=$1
|
rule_name=$1
|
||||||
[ "$rule_name" = "ss_rules" ] && rule_name="def"
|
[ "$rule_name" = "ss_rules" ] && rule_name="def"
|
||||||
if [ "$(iptables --wait=40 -t nat -L -n | grep ssr_${rule_name}_dst)" != "" ] && [ "$(iptables-save | grep ssr_${rule_name}_dst | grep omr_dst_bypass_$intf)" = "" ]; then
|
if [ "$(iptables --wait=40 -t nat -L -n | grep ssr_${rule_name}_pre_src)" != "" ] && [ "$(iptables --wait=40 -t nat -L -n | grep ssr | grep omr_dst_bypass_$intf)" = "" ]; then
|
||||||
iptables-restore -w --wait=60 --noflush <<-EOF
|
iptables-restore -w --wait=60 --noflush <<-EOF
|
||||||
*nat
|
*nat
|
||||||
-I ssr_${rule_name}_dst 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count
|
-I ssr_${rule_name}_dst 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count
|
||||||
-I ssr_${rule_name}_dst 2 -m mark --mark 0x539$count -j RETURN
|
-I ssr_${rule_name}_dst 2 -m mark --mark 0x539$count -j RETURN
|
||||||
COMMIT
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
if [ "$(iptables --wait=40 -t nat -L -n | grep ssr_${rule_name}_local_out)" != "" ] && [ "$(iptables-save | grep ssr_${rule_name}_local_out | grep omr_dst_bypass_$intf)" = "" ]; then
|
|
||||||
iptables-restore -w --wait=60 --noflush <<-EOF
|
|
||||||
*nat
|
|
||||||
-I ssr_${rule_name}_local_out 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count
|
-I ssr_${rule_name}_local_out 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count
|
||||||
-I ssr_${rule_name}_local_out 2 -m mark --mark 0x539$count -j RETURN
|
-I ssr_${rule_name}_local_out 2 -m mark --mark 0x539$count -j RETURN
|
||||||
COMMIT
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
if [ "$(iptables --wait=40 -t nat -L -n | grep ssr_${rule_name}_pre_src)" != "" ] && [ "$(iptables-save | grep ssr_${rule_name}_pre_src | grep omr_dst_bypass_$intf)" = "" ]; then
|
|
||||||
iptables-restore -w --wait=60 --noflush <<-EOF
|
|
||||||
*nat
|
|
||||||
-I ssr_${rule_name}_pre_src 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count
|
-I ssr_${rule_name}_pre_src 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count
|
||||||
-I ssr_${rule_name}_pre_src 2 -m mark --mark 0x539$count -j RETURN
|
-I ssr_${rule_name}_pre_src 2 -m mark --mark 0x539$count -j RETURN
|
||||||
COMMIT
|
COMMIT
|
||||||
|
@ -407,7 +389,7 @@ _intf_rule_ss_rules() {
|
||||||
COMMIT
|
COMMIT
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
if [ "$(ip6tables --wait=40 -t nat -L -n | grep ssr6_${rule_name}_pre_src)" != "" ] && [ "$(ip6tables-save | grep ssr6 | grep omr6_dst_bypass_$intf)" = "" ]; then
|
if [ "$(ip6tables --wait=40 -t nat -L -n | grep ssr6_${rule_name}_pre_src)" != "" ] && [ "$(ip6tables --wait=40 -t nat -L -n | grep ssr6 | grep omr6_dst_bypass_$intf)" = "" ]; then
|
||||||
ip6tables-restore -w --wait=60 --noflush <<-EOF
|
ip6tables-restore -w --wait=60 --noflush <<-EOF
|
||||||
*nat
|
*nat
|
||||||
-I ssr6_${rule_name}_dst 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count
|
-I ssr6_${rule_name}_dst 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count
|
||||||
|
@ -426,7 +408,7 @@ _intf_rule_v2ray_rules() {
|
||||||
#rule_name=$1
|
#rule_name=$1
|
||||||
#[ "$rule_name" = "ss_rules" ] && rule_name="def"
|
#[ "$rule_name" = "ss_rules" ] && rule_name="def"
|
||||||
rule_name="def"
|
rule_name="def"
|
||||||
if [ "$(iptables --wait=40 -t nat -L -n | grep v2r_${rule_name}_pre_src)" != "" ] && [ "$(iptables-save | grep v2r | grep omr_dst_bypass_$intf)" = "" ]; then
|
if [ "$(iptables --wait=40 -t nat -L -n | grep v2r_${rule_name}_pre_src)" != "" ] && [ "$(iptables --wait=40 -t nat -L -n | grep v2r | grep omr_dst_bypass_$intf)" = "" ]; then
|
||||||
iptables-restore -w --wait=60 --noflush <<-EOF
|
iptables-restore -w --wait=60 --noflush <<-EOF
|
||||||
*nat
|
*nat
|
||||||
-I v2r_${rule_name}_dst 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count
|
-I v2r_${rule_name}_dst 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count
|
||||||
|
@ -439,14 +421,14 @@ _intf_rule_v2ray_rules() {
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
if [ "$disableipv6" = "0" ]; then
|
if [ "$disableipv6" = "0" ]; then
|
||||||
if [ "$(ip6tables-save | grep omr-bypass6 | grep omr6_dst_bypass_$intf)" = "" ]; then
|
if [ "$(ip6tables --wait=40 -t mangle -L -n | grep omr6_dst_bypass_$intf)" = "" ]; then
|
||||||
ip6tables-restore -w --wait=60 --noflush <<-EOF
|
ip6tables-restore -w --wait=60 --noflush <<-EOF
|
||||||
*mangle
|
*mangle
|
||||||
-I omr-bypass6 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count
|
-I omr-bypass6 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count
|
||||||
COMMIT
|
COMMIT
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
if [ "$(ip6tables --wait=40 -t nat -L -n | grep v2r6_${rule_name}_pre_src)" != "" ] && [ "$(ip6tables-save | grep v2r6 | grep omr6_dst_bypass_$intf)" = "" ]; then
|
if [ "$(ip6tables --wait=40 -t nat -L -n | grep v2r6_${rule_name}_pre_src)" != "" ] && [ "$(ip6tables --wait=40 -t nat -L -n | grep v2r6 | grep omr6_dst_bypass_$intf)" = "" ]; then
|
||||||
ip6tables-restore -w --wait=60 --noflush <<-EOF
|
ip6tables-restore -w --wait=60 --noflush <<-EOF
|
||||||
*nat
|
*nat
|
||||||
-I v2r6_${rule_name}_dst 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count
|
-I v2r6_${rule_name}_dst 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count
|
||||||
|
@ -472,7 +454,6 @@ _intf_rule() {
|
||||||
#[ "$mode" = "off" ] && return
|
#[ "$mode" = "off" ] && return
|
||||||
[ -z "$count" ] && return
|
[ -z "$count" ] && return
|
||||||
[ -z "$intf" ] && return
|
[ -z "$intf" ] && return
|
||||||
intf=$(echo $intf | sed -e 's/\./_/')
|
|
||||||
[ "$(echo $1 | grep _dev)" != "" ] && return
|
[ "$(echo $1 | grep _dev)" != "" ] && return
|
||||||
[ -z "$RELOAD" ] || [ "$(ipset --list | grep omr_dst_bypass_$intf)" = "" ] && {
|
[ -z "$RELOAD" ] || [ "$(ipset --list | grep omr_dst_bypass_$intf)" = "" ] && {
|
||||||
unset RELOAD
|
unset RELOAD
|
||||||
|
@ -501,11 +482,10 @@ _intf_rule() {
|
||||||
ip -6 rule add prio 1 fwmark 0x6539$count lookup 6$count > /dev/null 2>&1
|
ip -6 rule add prio 1 fwmark 0x6539$count lookup 6$count > /dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
if [ "$(iptables-save | grep omr-bypass | grep omr_dst_bypass_$intf)" = "" ]; then
|
if [ "$(iptables --wait=40 -t mangle -L -n | grep omr_dst_bypass_$intf)" = "" ]; then
|
||||||
iptables-restore -w --wait=60 --noflush <<-EOF
|
iptables-restore -w --wait=60 --noflush <<-EOF
|
||||||
*mangle
|
*mangle
|
||||||
-I omr-bypass 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count
|
-I omr-bypass 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count
|
||||||
-I omr-bypass-local 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count
|
|
||||||
COMMIT
|
COMMIT
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -71,7 +71,7 @@ ul {
|
||||||
-moz-transition: all 0.5s;
|
-moz-transition: all 0.5s;
|
||||||
}
|
}
|
||||||
.tree ul ul {
|
.tree ul ul {
|
||||||
padding-left: 5px;
|
padding-left: 85px;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
.tree > ul > li:first-child {
|
.tree > ul > li:first-child {
|
||||||
|
@ -152,7 +152,7 @@ right connector from last child*/
|
||||||
top: 50%;
|
top: 50%;
|
||||||
left: 0;
|
left: 0;
|
||||||
border-top: 2px solid black;
|
border-top: 2px solid black;
|
||||||
width: 7px;
|
width: 85px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
.tree li a {
|
.tree li a {
|
||||||
|
@ -222,7 +222,7 @@ right connector from last child*/
|
||||||
width: 2px;
|
width: 2px;
|
||||||
/*height: 50%;*/
|
/*height: 50%;*/
|
||||||
height: 55px;
|
height: 55px;
|
||||||
left: 240px;
|
left: 200px;
|
||||||
/* z-index: -10;*/
|
/* z-index: -10;*/
|
||||||
}
|
}
|
||||||
/*Time for some hover effects*/
|
/*Time for some hover effects*/
|
||||||
|
@ -243,9 +243,9 @@ Thanks :)*/
|
||||||
.network-node {
|
.network-node {
|
||||||
position: relative;
|
position: relative;
|
||||||
background-color: #f3f3f3;
|
background-color: #f3f3f3;
|
||||||
padding: 8px;
|
padding: 12px;
|
||||||
width: 480px;
|
width: 400px;
|
||||||
max-width: 480px;
|
max-width: 400px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
min-height: 170px;
|
min-height: 170px;
|
||||||
}
|
}
|
||||||
|
@ -282,7 +282,7 @@ Thanks :)*/
|
||||||
.network-node .info {
|
.network-node .info {
|
||||||
position: relative;
|
position: relative;
|
||||||
float: right;
|
float: right;
|
||||||
width: 330px;
|
width: 250px;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
color: #757575;
|
color: #757575;
|
||||||
|
@ -319,7 +319,7 @@ Thanks :)*/
|
||||||
width:5px;
|
width:5px;
|
||||||
border-right:2px dotted black;
|
border-right:2px dotted black;
|
||||||
height:70px;
|
height:70px;
|
||||||
padding-right: 240px;
|
padding-right: 195px;
|
||||||
}
|
}
|
||||||
#omr {
|
#omr {
|
||||||
min-height: 190px;
|
min-height: 190px;
|
||||||
|
|
|
@ -36,15 +36,6 @@ end
|
||||||
|
|
||||||
function wizard_add()
|
function wizard_add()
|
||||||
local gostatus = true
|
local gostatus = true
|
||||||
|
|
||||||
-- Force WAN zone firewall members to be a list
|
|
||||||
local fwwan = sys.exec("uci -q get firewall.@zone[1].network")
|
|
||||||
luci.sys.call("uci -q delete firewall.@zone[1].network")
|
|
||||||
for interface in fwwan:gmatch("%S+") do
|
|
||||||
luci.sys.call("uci -q add_list firewall.@zone[1].network=" .. interface)
|
|
||||||
end
|
|
||||||
ucic:save("firewall")
|
|
||||||
|
|
||||||
-- Add new server
|
-- Add new server
|
||||||
local add_server = luci.http.formvalue("add_server") or ""
|
local add_server = luci.http.formvalue("add_server") or ""
|
||||||
local add_server_name = luci.http.formvalue("add_server_name") or ""
|
local add_server_name = luci.http.formvalue("add_server_name") or ""
|
||||||
|
@ -75,8 +66,7 @@ function wizard_add()
|
||||||
ucic:foreach("openmptcprouter", "server", function(s)
|
ucic:foreach("openmptcprouter", "server", function(s)
|
||||||
local servername = s[".name"]
|
local servername = s[".name"]
|
||||||
nbserver = nbserver + 1
|
nbserver = nbserver + 1
|
||||||
server_ips = ucic:get_list("openmptcprouter",servername,"ip")
|
server_ip = ucic:get("openmptcprouter",servername,"ip")
|
||||||
server_ip = server_ips[1]
|
|
||||||
end)
|
end)
|
||||||
if nbserver == 1 and server_ip ~= "" and server_ip ~= nil then
|
if nbserver == 1 and server_ip ~= "" and server_ip ~= nil then
|
||||||
ucic:set("shadowsocks-libev","sss0","server",server_ip)
|
ucic:set("shadowsocks-libev","sss0","server",server_ip)
|
||||||
|
@ -189,7 +179,6 @@ function wizard_add()
|
||||||
luci.sys.call("uci -q commit firewall")
|
luci.sys.call("uci -q commit firewall")
|
||||||
|
|
||||||
luci.sys.call("/etc/init.d/macvlan restart >/dev/null 2>/dev/null")
|
luci.sys.call("/etc/init.d/macvlan restart >/dev/null 2>/dev/null")
|
||||||
luci.sys.call("/etc/init.d/vnstat restart >/dev/null 2>/dev/null")
|
|
||||||
gostatus = false
|
gostatus = false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -199,9 +188,7 @@ function wizard_add()
|
||||||
for intf, _ in pairs(delete_intf) do
|
for intf, _ in pairs(delete_intf) do
|
||||||
local defif = ucic:get("network",intf,"ifname")
|
local defif = ucic:get("network",intf,"ifname")
|
||||||
ucic:delete("network",intf)
|
ucic:delete("network",intf)
|
||||||
if ucic:get("network",intf .. "_dev") ~= "" then
|
ucic:delete("network",intf .. "_dev")
|
||||||
ucic:delete("network",intf .. "_dev")
|
|
||||||
end
|
|
||||||
ucic:save("network")
|
ucic:save("network")
|
||||||
ucic:commit("network")
|
ucic:commit("network")
|
||||||
ucic:delete("sqm",intf)
|
ucic:delete("sqm",intf)
|
||||||
|
@ -231,15 +218,12 @@ function wizard_add()
|
||||||
local typeintf = luci.http.formvalue("cbid.network.%s.type" % intf) or ""
|
local typeintf = luci.http.formvalue("cbid.network.%s.type" % intf) or ""
|
||||||
local masterintf = luci.http.formvalue("cbid.network.%s.masterintf" % intf) or ""
|
local masterintf = luci.http.formvalue("cbid.network.%s.masterintf" % intf) or ""
|
||||||
local ifname = luci.http.formvalue("cbid.network.%s.intf" % intf) or ""
|
local ifname = luci.http.formvalue("cbid.network.%s.intf" % intf) or ""
|
||||||
local vlan = luci.http.formvalue("cbid.network.%s.vlan" % intf) or ""
|
|
||||||
local device_ncm = luci.http.formvalue("cbid.network.%s.device.ncm" % intf) or ""
|
local device_ncm = luci.http.formvalue("cbid.network.%s.device.ncm" % intf) or ""
|
||||||
local device_qmi = luci.http.formvalue("cbid.network.%s.device.qmi" % intf) or ""
|
local device_qmi = luci.http.formvalue("cbid.network.%s.device.qmi" % intf) or ""
|
||||||
local device_modemmanager = luci.http.formvalue("cbid.network.%s.device.modemmanager" % intf) or ""
|
local device_modemmanager = luci.http.formvalue("cbid.network.%s.device.modemmanager" % intf) or ""
|
||||||
local ipaddr = luci.http.formvalue("cbid.network.%s.ipaddr" % intf) or ""
|
local ipaddr = luci.http.formvalue("cbid.network.%s.ipaddr" % intf) or ""
|
||||||
local ip6addr = luci.http.formvalue("cbid.network.%s.ip6addr" % intf) or ""
|
|
||||||
local netmask = luci.http.formvalue("cbid.network.%s.netmask" % intf) or ""
|
local netmask = luci.http.formvalue("cbid.network.%s.netmask" % intf) or ""
|
||||||
local gateway = luci.http.formvalue("cbid.network.%s.gateway" % intf) or ""
|
local gateway = luci.http.formvalue("cbid.network.%s.gateway" % intf) or ""
|
||||||
local ip6gw = luci.http.formvalue("cbid.network.%s.ip6gw" % intf) or ""
|
|
||||||
local apn = luci.http.formvalue("cbid.network.%s.apn" % intf) or ""
|
local apn = luci.http.formvalue("cbid.network.%s.apn" % intf) or ""
|
||||||
local pincode = luci.http.formvalue("cbid.network.%s.pincode" % intf) or ""
|
local pincode = luci.http.formvalue("cbid.network.%s.pincode" % intf) or ""
|
||||||
local delay = luci.http.formvalue("cbid.network.%s.delay" % intf) or ""
|
local delay = luci.http.formvalue("cbid.network.%s.delay" % intf) or ""
|
||||||
|
@ -256,13 +240,10 @@ function wizard_add()
|
||||||
end
|
end
|
||||||
ucic:set("network",intf,"type",typeintf)
|
ucic:set("network",intf,"type",typeintf)
|
||||||
end
|
end
|
||||||
if vlan ~= "" then
|
|
||||||
ifname = ifname .. '.' .. vlan
|
|
||||||
end
|
|
||||||
if typeintf == "macvlan" and masterintf ~= "" then
|
if typeintf == "macvlan" and masterintf ~= "" then
|
||||||
ucic:set("network",intf,"type","macvlan")
|
ucic:set("network",intf,"type","macvlan")
|
||||||
ucic:set("network",intf,"masterintf",masterintf)
|
ucic:set("network",intf,"masterintf",masterintf)
|
||||||
elseif typeintf == "" and ifname ~= "" and (proto == "static" or proto == "dhcp" or proto == "dhcpv6") then
|
elseif typeintf == "" and ifname ~= "" and (proto == "static" or proto == "dhcp" ) then
|
||||||
ucic:set("network",intf,"ifname",ifname)
|
ucic:set("network",intf,"ifname",ifname)
|
||||||
elseif typeintf == "" and device ~= "" and proto == "ncm" then
|
elseif typeintf == "" and device ~= "" and proto == "ncm" then
|
||||||
ucic:set("network",intf,"device",device_ncm)
|
ucic:set("network",intf,"device",device_ncm)
|
||||||
|
@ -299,20 +280,6 @@ function wizard_add()
|
||||||
ucic:set("network",intf,"netmask","")
|
ucic:set("network",intf,"netmask","")
|
||||||
ucic:set("network",intf,"gateway","")
|
ucic:set("network",intf,"gateway","")
|
||||||
end
|
end
|
||||||
if ip6addr ~= "" then
|
|
||||||
ucic:set("network",intf,"ip6addr",ip6addr)
|
|
||||||
ucic:set("network",intf,"ip6gw",ip6gw)
|
|
||||||
else
|
|
||||||
ucic:set("network",intf,"ip6addr","")
|
|
||||||
ucic:set("network",intf,"ip6gw","")
|
|
||||||
end
|
|
||||||
|
|
||||||
if proto == "dhcpv6" then
|
|
||||||
ucic:set("network",intf,"reqaddress","try")
|
|
||||||
ucic:set("network",intf,"reqprefix","no")
|
|
||||||
ucic:set("network",intf,"iface_map","0")
|
|
||||||
ucic:set("network",intf,"ipv6","1")
|
|
||||||
end
|
|
||||||
|
|
||||||
ucic:delete("openmptcprouter",intf,"lc")
|
ucic:delete("openmptcprouter",intf,"lc")
|
||||||
ucic:save("openmptcprouter")
|
ucic:save("openmptcprouter")
|
||||||
|
@ -448,19 +415,7 @@ function wizard_add()
|
||||||
local disablednb = 0
|
local disablednb = 0
|
||||||
local servers = luci.http.formvaluetable("server")
|
local servers = luci.http.formvaluetable("server")
|
||||||
for server, _ in pairs(servers) do
|
for server, _ in pairs(servers) do
|
||||||
local serverips = luci.http.formvaluetable("%s.serverip" % server) or {}
|
local server_ip = luci.http.formvalue("%s.server_ip" % server) or ""
|
||||||
local aserverips = {}
|
|
||||||
for _, ip in pairs(serverips) do
|
|
||||||
if ip ~= "" and ip ~= nil then
|
|
||||||
table.insert(aserverips,ip)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if disableipv6 == "1" then
|
|
||||||
if table.getn(aserverips) == 2 then
|
|
||||||
table.remove(aserverips, 2)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local master = luci.http.formvalue("master") or ""
|
local master = luci.http.formvalue("master") or ""
|
||||||
|
|
||||||
-- OpenMPTCProuter VPS
|
-- OpenMPTCProuter VPS
|
||||||
|
@ -481,14 +436,14 @@ function wizard_add()
|
||||||
if openmptcprouter_vps_disabled == "1" then
|
if openmptcprouter_vps_disabled == "1" then
|
||||||
disablednb = disablednb + 1
|
disablednb = disablednb + 1
|
||||||
end
|
end
|
||||||
if next(aserverips) ~= nil then
|
if server_ip ~= "" then
|
||||||
serversnb = serversnb + 1
|
serversnb = serversnb + 1
|
||||||
end
|
end
|
||||||
ucic:set("openmptcprouter",server,"server")
|
ucic:set("openmptcprouter",server,"server")
|
||||||
ucic:set("openmptcprouter",server,"username",openmptcprouter_vps_username)
|
ucic:set("openmptcprouter",server,"username",openmptcprouter_vps_username)
|
||||||
ucic:set("openmptcprouter",server,"password",openmptcprouter_vps_key)
|
ucic:set("openmptcprouter",server,"password",openmptcprouter_vps_key)
|
||||||
ucic:set("openmptcprouter",server,"disabled",openmptcprouter_vps_disabled)
|
ucic:set("openmptcprouter",server,"disabled",openmptcprouter_vps_disabled)
|
||||||
ucic:set_list("openmptcprouter",server,"ip",aserverips)
|
ucic:set("openmptcprouter",server,"ip",server_ip)
|
||||||
ucic:set("openmptcprouter",server,"port","65500")
|
ucic:set("openmptcprouter",server,"port","65500")
|
||||||
ucic:save("openmptcprouter")
|
ucic:save("openmptcprouter")
|
||||||
end
|
end
|
||||||
|
@ -500,9 +455,7 @@ function wizard_add()
|
||||||
ucic:set("v2ray","main","enabled","0")
|
ucic:set("v2ray","main","enabled","0")
|
||||||
ucic:foreach("shadowsocks-libev", "server", function(s)
|
ucic:foreach("shadowsocks-libev", "server", function(s)
|
||||||
local sectionname = s[".name"]
|
local sectionname = s[".name"]
|
||||||
if sectionname:match("^sss.*") then
|
ucic:set("shadowsocks-libev",sectionname,"disabled","0")
|
||||||
ucic:set("shadowsocks-libev",sectionname,"disabled","0")
|
|
||||||
end
|
|
||||||
end)
|
end)
|
||||||
elseif default_proxy == "v2ray" and serversnb > 0 and serversnb > disablednb then
|
elseif default_proxy == "v2ray" and serversnb > 0 and serversnb > disablednb then
|
||||||
--ucic:set("shadowsocks-libev","sss0","disabled","1")
|
--ucic:set("shadowsocks-libev","sss0","disabled","1")
|
||||||
|
@ -524,13 +477,6 @@ function wizard_add()
|
||||||
ucic:save("shadowsocks-libev")
|
ucic:save("shadowsocks-libev")
|
||||||
ucic:save("v2ray")
|
ucic:save("v2ray")
|
||||||
|
|
||||||
ucic:foreach("shadowsocks-libev","server", function(s)
|
|
||||||
local sectionname = s[".name"]
|
|
||||||
if sectionname:match("^sss.*") then
|
|
||||||
ucic:delete("shadowsocks-libev",sectionname,"ip")
|
|
||||||
ucic:set("shadowsocks-libev",sectionname,"disabled","1")
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
|
|
||||||
local ss_servers_nginx = {}
|
local ss_servers_nginx = {}
|
||||||
local ss_servers_ha = {}
|
local ss_servers_ha = {}
|
||||||
|
@ -540,20 +486,14 @@ function wizard_add()
|
||||||
|
|
||||||
for server, _ in pairs(servers) do
|
for server, _ in pairs(servers) do
|
||||||
local master = luci.http.formvalue("master") or ""
|
local master = luci.http.formvalue("master") or ""
|
||||||
local server_ips = luci.http.formvaluetable("%s.serverip" % server) or {}
|
local server_ip = luci.http.formvalue("%s.server_ip" % server) or ""
|
||||||
local server_ip = ""
|
|
||||||
for _, ip in pairs(server_ips) do
|
|
||||||
if server_ip == "" and ip ~= "" and ip ~= nil then
|
|
||||||
server_ip=ip
|
|
||||||
end
|
|
||||||
end
|
|
||||||
-- We have an IP, so set it everywhere
|
-- We have an IP, so set it everywhere
|
||||||
if server_ip ~= "" and server_ip ~= nil and luci.http.formvalue("%s.openmptcprouter_vps_disabled" % server) ~= "1" then
|
if server_ip ~= "" and luci.http.formvalue("%s.openmptcprouter_vps_disabled" % server) ~= "1" then
|
||||||
-- Check if we have more than one IP, in this case use Nginx HA
|
-- Check if we have more than one IP, in this case use Nginx HA
|
||||||
if serversnb > 1 then
|
if serversnb > 1 then
|
||||||
if master == server then
|
if master == server then
|
||||||
ss_ip=server_ip
|
ss_ip=server_ip
|
||||||
--ucic:set("shadowsocks-libev","sss0","server",server_ip)
|
ucic:set("shadowsocks-libev","sss0","server",server_ip)
|
||||||
ucic:set("glorytun","vpn","host",server_ip)
|
ucic:set("glorytun","vpn","host",server_ip)
|
||||||
ucic:set("glorytun-udp","vpn","host",server_ip)
|
ucic:set("glorytun-udp","vpn","host",server_ip)
|
||||||
ucic:set("dsvpn","vpn","host",server_ip)
|
ucic:set("dsvpn","vpn","host",server_ip)
|
||||||
|
@ -565,17 +505,6 @@ function wizard_add()
|
||||||
luci.sys.call("uci -q add_list openvpn.omr.remote=" .. server_ip)
|
luci.sys.call("uci -q add_list openvpn.omr.remote=" .. server_ip)
|
||||||
ucic:set("qos","serverin","srchost",server_ip)
|
ucic:set("qos","serverin","srchost",server_ip)
|
||||||
ucic:set("qos","serverout","dsthost",server_ip)
|
ucic:set("qos","serverout","dsthost",server_ip)
|
||||||
local nbip = 0
|
|
||||||
for _, ssip in pairs(server_ips) do
|
|
||||||
ucic:set("shadowsocks-libev","sss" .. nbip,"server",ssip)
|
|
||||||
if default_proxy == "shadowsocks" and serversnb > disablednb then
|
|
||||||
ucic:set("shadowsocks-libev","sss" .. nbip,"disabled","0")
|
|
||||||
end
|
|
||||||
if disableipv6 == "1" and nbip > 0 then
|
|
||||||
break
|
|
||||||
end
|
|
||||||
nbip = nbip + 1
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
k = k + 1
|
k = k + 1
|
||||||
ucic:set("nginx-ha","ShadowSocks","enable","0")
|
ucic:set("nginx-ha","ShadowSocks","enable","0")
|
||||||
|
@ -586,7 +515,7 @@ function wizard_add()
|
||||||
ucic:set("openmptcprouter","settings","ha","0")
|
ucic:set("openmptcprouter","settings","ha","0")
|
||||||
ucic:set("nginx-ha","ShadowSocks","enable","0")
|
ucic:set("nginx-ha","ShadowSocks","enable","0")
|
||||||
ucic:set("nginx-ha","VPN","enable","0")
|
ucic:set("nginx-ha","VPN","enable","0")
|
||||||
--ucic:set("shadowsocks-libev","sss0","server",server_ip)
|
ucic:set("shadowsocks-libev","sss0","server",server_ip)
|
||||||
ucic:set("glorytun","vpn","host",server_ip)
|
ucic:set("glorytun","vpn","host",server_ip)
|
||||||
ucic:set("glorytun-udp","vpn","host",server_ip)
|
ucic:set("glorytun-udp","vpn","host",server_ip)
|
||||||
ucic:set("dsvpn","vpn","host",server_ip)
|
ucic:set("dsvpn","vpn","host",server_ip)
|
||||||
|
@ -598,17 +527,6 @@ function wizard_add()
|
||||||
luci.sys.call("uci -q add_list openvpn.omr.remote=" .. server_ip)
|
luci.sys.call("uci -q add_list openvpn.omr.remote=" .. server_ip)
|
||||||
ucic:set("qos","serverin","srchost",server_ip)
|
ucic:set("qos","serverin","srchost",server_ip)
|
||||||
ucic:set("qos","serverout","dsthost",server_ip)
|
ucic:set("qos","serverout","dsthost",server_ip)
|
||||||
local nbip = 0
|
|
||||||
for _, ssip in pairs(server_ips) do
|
|
||||||
ucic:set("shadowsocks-libev","sss" .. nbip,"server",ssip)
|
|
||||||
if default_proxy == "shadowsocks" and serversnb > disablednb then
|
|
||||||
ucic:set("shadowsocks-libev","sss" .. nbip,"disabled","0")
|
|
||||||
end
|
|
||||||
nbip = nbip + 1
|
|
||||||
if disableipv6 == "1" and nbip > 0 then
|
|
||||||
break
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -936,9 +854,6 @@ function settings_add()
|
||||||
-- Enable/disable debug
|
-- Enable/disable debug
|
||||||
local debug = luci.http.formvalue("debug") or "0"
|
local debug = luci.http.formvalue("debug") or "0"
|
||||||
ucic:set("openmptcprouter","settings","debug",debug)
|
ucic:set("openmptcprouter","settings","debug",debug)
|
||||||
ucic:foreach("shadowsocks-libev", "ss_redir", function (section)
|
|
||||||
ucic:set("shadowsocks-libev",section[".name"],"verbose",debug)
|
|
||||||
end)
|
|
||||||
|
|
||||||
-- Enable/disable vnstat backup
|
-- Enable/disable vnstat backup
|
||||||
local savevnstat = luci.http.formvalue("savevnstat") or "0"
|
local savevnstat = luci.http.formvalue("savevnstat") or "0"
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
%>
|
%>
|
||||||
<form class="inline" method="post" action="<%=url('admin/system/' .. menuentry:lower() .. '/update_vps')%>">
|
<form class="inline" method="post" action="<%=url('admin/system/' .. menuentry:lower() .. '/update_vps')%>">
|
||||||
<div class="cbi-map">
|
<div class="cbi-map">
|
||||||
<h2 name="content"><%:Update server%></h2>
|
<h2 name="content"><%:Update VPS%></h2>
|
||||||
<fieldset class="cbi-section" id="update">
|
<fieldset class="cbi-section" id="update">
|
||||||
<div class="cbi-section-descr"><%:Update remotly servers to latest version and reboot them.%> <b><%:Beta%></b></div>
|
<div class="cbi-section-descr"><%:Update remotly the server to latest version when needed.%> <b><%:Beta%></b></div>
|
||||||
<div class="cbi-value">
|
<div class="cbi-value">
|
||||||
<label class="cbi-value-title"><%:Update server%></label>
|
<label class="cbi-value-title"><%:Update server%></label>
|
||||||
<div class="cbi-value-field">
|
<div class="cbi-value-field">
|
||||||
|
@ -40,7 +40,7 @@
|
||||||
<div class="cbi-map">
|
<div class="cbi-map">
|
||||||
<h2 name="content"><%:Advanced Settings%></h2>
|
<h2 name="content"><%:Advanced Settings%></h2>
|
||||||
<fieldset class="cbi-section" id="networks">
|
<fieldset class="cbi-section" id="networks">
|
||||||
<legend><%:Server settings%></legend>
|
<legend><%:VPS settings%></legend>
|
||||||
<%
|
<%
|
||||||
uci:foreach("openmptcprouter","server", function(s)
|
uci:foreach("openmptcprouter","server", function(s)
|
||||||
servername = s[".name"]
|
servername = s[".name"]
|
||||||
|
@ -255,7 +255,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="cbi-value">
|
<div class="cbi-value">
|
||||||
<label class="cbi-value-title"><%:When proxy shadowsocks is used, use it for UDP if VPN down%></label>
|
<label class="cbi-value-title"><%:When proxy shadowsocks is used, use it for UDP if proxy down%></label>
|
||||||
<div class="cbi-value-field">
|
<div class="cbi-value-field">
|
||||||
<input type="checkbox" name="shadowsocksudp" class="cbi-input-checkbox" value="1" <% if luci.model.uci.cursor():get("openmptcprouter","settings","shadowsocksudp") == "1" then %>checked<% end %>>
|
<input type="checkbox" name="shadowsocksudp" class="cbi-input-checkbox" value="1" <% if luci.model.uci.cursor():get("openmptcprouter","settings","shadowsocksudp") == "1" then %>checked<% end %>>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -231,25 +231,14 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm
|
||||||
if ((mArray.openmptcprouter.wan_addr == mArray.openmptcprouter.service_addr || mArray.openmptcprouter.wan_addr == mArray.openmptcprouter.service_addr_ip) && mArray.openmptcprouter.wan_addr != "")
|
if ((mArray.openmptcprouter.wan_addr == mArray.openmptcprouter.service_addr || mArray.openmptcprouter.wan_addr == mArray.openmptcprouter.service_addr_ip) && mArray.openmptcprouter.wan_addr != "")
|
||||||
{
|
{
|
||||||
var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr);
|
var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr);
|
||||||
} else if ((mArray.openmptcprouter.wan_addr6 == mArray.openmptcprouter.service_addr || mArray.openmptcprouter.wan_addr6 == mArray.openmptcprouter.service_addr_ip6) && mArray.openmptcprouter.wan_addr6 != "")
|
|
||||||
{
|
|
||||||
var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr6);
|
|
||||||
} else if (mArray.openmptcprouter.wan_addr != "" && mArray.openmptcprouter.service_addr == "127.0.0.1")
|
} else if (mArray.openmptcprouter.wan_addr != "" && mArray.openmptcprouter.service_addr == "127.0.0.1")
|
||||||
{
|
{
|
||||||
var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr);
|
var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr);
|
||||||
} else if (mArray.openmptcprouter.wan_addr6 != "" && mArray.openmptcprouter.service_addr == "127.0.0.1")
|
|
||||||
{
|
|
||||||
var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr6);
|
|
||||||
} else if (mArray.openmptcprouter.wan_addr != "")
|
} else if (mArray.openmptcprouter.wan_addr != "")
|
||||||
{
|
{
|
||||||
var title = String.format("%s (%s)", _('Direct output'), mArray.openmptcprouter.wan_addr);
|
var title = String.format("%s (%s)", _('Direct output'), mArray.openmptcprouter.wan_addr);
|
||||||
statusMessageClass = "warning";
|
statusMessageClass = "warning";
|
||||||
statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png";
|
statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png";
|
||||||
} else if (mArray.openmptcprouter.wan_addr6 != "")
|
|
||||||
{
|
|
||||||
var title = String.format("%s (%s)", _('Direct output'), mArray.openmptcprouter.wan_addr6);
|
|
||||||
statusMessageClass = "warning";
|
|
||||||
statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png";
|
|
||||||
} else if (mArray.openmptcprouter.ss_addr != "" && mArray.openmptcprouter.vps_status != "DOWN")
|
} else if (mArray.openmptcprouter.ss_addr != "" && mArray.openmptcprouter.vps_status != "DOWN")
|
||||||
{
|
{
|
||||||
var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.ss_addr);
|
var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.ss_addr);
|
||||||
|
@ -259,11 +248,11 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm
|
||||||
var title = '<%:No output%>';
|
var title = '<%:No output%>';
|
||||||
statusMessage += '<%:No output%>' + '<br/>';
|
statusMessage += '<%:No output%>' + '<br/>';
|
||||||
}
|
}
|
||||||
if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.wan_addr6 == "" && mArray.openmptcprouter.ss_addr == "" && mArray.openmptcprouter.external_check == true)
|
if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.ss_addr == "" && mArray.openmptcprouter.external_check == true)
|
||||||
{
|
{
|
||||||
statusMessage += '<%:No server IP address, No WAN IP address%>' + '<br/>';
|
statusMessage += '<%:No server IP address, No WAN IP address%>' + '<br/>';
|
||||||
}
|
}
|
||||||
if (mArray.openmptcprouter.service_addr !== "" && (mArray.openmptcprouter.wan_addr !== "" || mArray.openmptcprouter.wan_addr6 !== "") && mArray.openmptcprouter.vps_status == "DOWN")
|
if (mArray.openmptcprouter.service_addr !== "" && mArray.openmptcprouter.wan_addr !== "" && mArray.openmptcprouter.vps_status == "DOWN")
|
||||||
{
|
{
|
||||||
statusMessage += '<%:Can\'t access and use server part%>' + '<br/>';
|
statusMessage += '<%:Can\'t access and use server part%>' + '<br/>';
|
||||||
}
|
}
|
||||||
|
@ -285,7 +274,7 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm
|
||||||
} else if (mArray.openmptcprouter.v2ray_enabled == true && mArray.openmptcprouter.ss_addr == "" && mArray.openmptcprouter.external_check == true)
|
} else if (mArray.openmptcprouter.v2ray_enabled == true && mArray.openmptcprouter.ss_addr == "" && mArray.openmptcprouter.external_check == true)
|
||||||
{
|
{
|
||||||
statusMessage += '<%:Can\'t get public IP address from V2Ray%>' + '<br/>';
|
statusMessage += '<%:Can\'t get public IP address from V2Ray%>' + '<br/>';
|
||||||
} else if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.wan_addr6 == "" && mArray.openmptcprouter.external_check == true)
|
} else if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.external_check == true)
|
||||||
{
|
{
|
||||||
statusMessage += '<%:No WAN IP address detected in less than 1 second%>' + '<br/>';
|
statusMessage += '<%:No WAN IP address detected in less than 1 second%>' + '<br/>';
|
||||||
}
|
}
|
||||||
|
@ -403,30 +392,18 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm
|
||||||
statusMessage = "";
|
statusMessage = "";
|
||||||
}
|
}
|
||||||
// Populate info
|
// Populate info
|
||||||
var wanip = mArray.wans[i].wanip;
|
var wanip = mArray.wans[i].wanip;
|
||||||
if (anonymize == "true" && testPrivateIP(wanip) == false)
|
if (anonymize == "true" && testPrivateIP(wanip) == false)
|
||||||
{
|
{
|
||||||
wanip=replaceLastNChars(wanip,"x",6);
|
wanip=replaceLastNChars(wanip,"x",6);
|
||||||
}
|
}
|
||||||
var wanip6 = mArray.wans[i].wanip6;
|
var ipaddr = mArray.wans[i].ipaddr;
|
||||||
if (anonymize == "true")
|
|
||||||
{
|
|
||||||
wanip6=replaceLastNChars(wanip6,"x",6);
|
|
||||||
}
|
|
||||||
var ipaddr = mArray.wans[i].ipaddr;
|
|
||||||
if (anonymize == "true" && testPrivateIP(ipaddr) == false)
|
if (anonymize == "true" && testPrivateIP(ipaddr) == false)
|
||||||
{
|
{
|
||||||
ipaddr=replaceLastNChars(ipaddr,"x",6);
|
ipaddr=replaceLastNChars(ipaddr,"x",6);
|
||||||
}
|
}
|
||||||
var ip6addr = mArray.wans[i].ip6addr;
|
var whois = mArray.wans[i].whois;
|
||||||
if (anonymize == "true")
|
var signal = mArray.wans[i].signal;
|
||||||
{
|
|
||||||
ip6addr=replaceLastNChars(ip6addr,"x",6);
|
|
||||||
}
|
|
||||||
var ifname = mArray.wans[i].ifname;
|
|
||||||
var whois = mArray.wans[i].whois;
|
|
||||||
var whois6 = mArray.wans[i].whois6;
|
|
||||||
var signal = mArray.wans[i].signal;
|
|
||||||
var multipath = mArray.wans[i].multipath;
|
var multipath = mArray.wans[i].multipath;
|
||||||
if(multipath == 'master')
|
if(multipath == 'master')
|
||||||
{
|
{
|
||||||
|
@ -443,13 +420,7 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm
|
||||||
{
|
{
|
||||||
gateway=replaceLastNChars(gateway,"x",6);
|
gateway=replaceLastNChars(gateway,"x",6);
|
||||||
}
|
}
|
||||||
var gateway6 = mArray.wans[i].gateway6;
|
|
||||||
if (anonymize == "true" && testPrivateIP(gateway6) == false)
|
|
||||||
{
|
|
||||||
gateway6=replaceLastNChars(gateway6,"x",10);
|
|
||||||
}
|
|
||||||
var gw_ping = mArray.wans[i].gw_ping;
|
var gw_ping = mArray.wans[i].gw_ping;
|
||||||
var gw_ping6 = mArray.wans[i].gw_ping6;
|
|
||||||
var server_ping = mArray.wans[i].server_ping;
|
var server_ping = mArray.wans[i].server_ping;
|
||||||
var ipv6_discover = mArray.wans[i].ipv6_discover;
|
var ipv6_discover = mArray.wans[i].ipv6_discover;
|
||||||
var multipath_available = mArray.wans[i].multipath_available;
|
var multipath_available = mArray.wans[i].multipath_available;
|
||||||
|
@ -467,9 +438,6 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm
|
||||||
if (mArray.wans[i].gateway !== "")
|
if (mArray.wans[i].gateway !== "")
|
||||||
{
|
{
|
||||||
var title = mArray.wans[i].label + " (" + gateway + ")";
|
var title = mArray.wans[i].label + " (" + gateway + ")";
|
||||||
} else if (mArray.wans[i].gateway6 !== "")
|
|
||||||
{
|
|
||||||
var title = mArray.wans[i].label + " (" + gateway6 + ")";
|
|
||||||
} else {
|
} else {
|
||||||
var title = mArray.wans[i].label;
|
var title = mArray.wans[i].label;
|
||||||
}
|
}
|
||||||
|
@ -478,30 +446,14 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm
|
||||||
{
|
{
|
||||||
content += String.format('%s <strong>%s</strong><br />','<%:ip address:%>', ipaddr);
|
content += String.format('%s <strong>%s</strong><br />','<%:ip address:%>', ipaddr);
|
||||||
}
|
}
|
||||||
if(ip6addr !== '' && gateway6 !== '')
|
|
||||||
{
|
|
||||||
content += String.format('%s <strong>%s</strong><br />','<%:ipv6 address:%>', ip6addr);
|
|
||||||
}
|
|
||||||
if(wanip !== '')
|
if(wanip !== '')
|
||||||
{
|
{
|
||||||
content += String.format('%s <strong>%s</strong><br />','<%:wan address:%>', wanip);
|
content += String.format('%s <strong>%s</strong><br />','<%:wan address:%>', wanip);
|
||||||
}
|
}
|
||||||
if(wanip6 !== '')
|
|
||||||
{
|
|
||||||
content += String.format('%s <strong>%s</strong><br />','<%:wan ipv6 address:%>', wanip6);
|
|
||||||
}
|
|
||||||
if(ifname !== '' && ifname !== mArray.wans[i].label)
|
|
||||||
{
|
|
||||||
content += String.format('%s %s<br />','<%:interface:%>', ifname);
|
|
||||||
}
|
|
||||||
if(whois !== '')
|
if(whois !== '')
|
||||||
{
|
{
|
||||||
content += String.format('%s %s<br />','<%:whois:%>', whois);
|
content += String.format('%s %s<br />','<%:whois:%>', whois);
|
||||||
}
|
}
|
||||||
if(whois6 !== '')
|
|
||||||
{
|
|
||||||
content += String.format('%s %s<br />','<%:whois:%>', whois6);
|
|
||||||
}
|
|
||||||
if(latency !== '')
|
if(latency !== '')
|
||||||
{
|
{
|
||||||
content += String.format('%s %s ms<br />','<%:latency:%>', latency);
|
content += String.format('%s %s ms<br />','<%:latency:%>', latency);
|
||||||
|
@ -540,17 +492,14 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm
|
||||||
{
|
{
|
||||||
title += String.format(' <i>%s</i>',networktype);
|
title += String.format(' <i>%s</i>',networktype);
|
||||||
}
|
}
|
||||||
if(ipaddr == '' && ip6addr == '')
|
if(ipaddr == '')
|
||||||
{
|
{
|
||||||
statusMessage += '<%:No IP defined%>' + '<br />';
|
statusMessage += '<%:No IP defined%>' + '<br />';
|
||||||
}
|
}
|
||||||
if(gateway == '' && gateway6 == '')
|
if(gateway == '')
|
||||||
{
|
{
|
||||||
statusMessage += '<%:No gateway defined%>' + '<br />';
|
statusMessage += '<%:No gateway defined%>' + '<br />';
|
||||||
} else if(gw_ping == 'DOWN')
|
} else if(gw_ping == 'DOWN')
|
||||||
{
|
|
||||||
statusMessage += '<%:Gateway DOWN%>' + '<br />';
|
|
||||||
} else if(gw_ping6 == 'DOWN')
|
|
||||||
{
|
{
|
||||||
statusMessage += '<%:Gateway DOWN%>' + '<br />';
|
statusMessage += '<%:Gateway DOWN%>' + '<br />';
|
||||||
} else if(multipath_available == 'ERROR')
|
} else if(multipath_available == 'ERROR')
|
||||||
|
@ -566,11 +515,6 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm
|
||||||
statusMessage += '<%:Wan IP and gateway are identical%>' + '<br />';
|
statusMessage += '<%:Wan IP and gateway are identical%>' + '<br />';
|
||||||
statusMessageClass = "error";
|
statusMessageClass = "error";
|
||||||
}
|
}
|
||||||
if (stat == 'Offline' && ip6addr != '' && ipaddr == mArray.wans[i].gateway6)
|
|
||||||
{
|
|
||||||
statusMessage += '<%:Wan IP and gateway are identical%>' + '<br />';
|
|
||||||
statusMessageClass = "error";
|
|
||||||
}
|
|
||||||
if(multipath == 'master')
|
if(multipath == 'master')
|
||||||
{
|
{
|
||||||
if (master > 1)
|
if (master > 1)
|
||||||
|
@ -613,12 +557,6 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm
|
||||||
|
|
||||||
temp += '</a></li>';
|
temp += '</a></li>';
|
||||||
}
|
}
|
||||||
if (mArray.wans.length == 0)
|
|
||||||
{
|
|
||||||
temp += '<li>';
|
|
||||||
temp += '<%:No WAN with multipath enabled:%>';
|
|
||||||
temp += '</li>';
|
|
||||||
}
|
|
||||||
for( var i = 0; i < mArray.tunnels.length; i++ )
|
for( var i = 0; i < mArray.tunnels.length; i++ )
|
||||||
{
|
{
|
||||||
// Get link color
|
// Get link color
|
||||||
|
|
|
@ -21,20 +21,6 @@
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
function splitstring(inputstr, sep)
|
|
||||||
if inputstr == nil then
|
|
||||||
return ""
|
|
||||||
end
|
|
||||||
if sep == nil then
|
|
||||||
sep = "%s"
|
|
||||||
end
|
|
||||||
local t={}
|
|
||||||
for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
|
|
||||||
table.insert(t, str)
|
|
||||||
end
|
|
||||||
return t
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
%>
|
%>
|
||||||
<script type="text/javascript" src="<%=resource%>/cbi.js?v=git-18.243.49640-2f13420" data-strings="{"path":{"resource":"\/luci-static\/resources","browser":"\/cgi-bin\/luci\/admin\/filebrowser"}}"></script>
|
<script type="text/javascript" src="<%=resource%>/cbi.js?v=git-18.243.49640-2f13420" data-strings="{"path":{"resource":"\/luci-static\/resources","browser":"\/cgi-bin\/luci\/admin\/filebrowser"}}"></script>
|
||||||
|
@ -68,30 +54,17 @@
|
||||||
</div>
|
</div>
|
||||||
<h3><%=servername%></h3>
|
<h3><%=servername%></h3>
|
||||||
<div class="cbi-section-node" id="cbi-omr-wizard-<%=servername%>">
|
<div class="cbi-section-node" id="cbi-omr-wizard-<%=servername%>">
|
||||||
<div class="cbi-value" id="<%=servername%>.server_ip" data-depends="[{"enableipv6":"1"}]" data-index="1">
|
<div class="cbi-value">
|
||||||
<label class="cbi-value-title" for="server_ip.1"><%:Server IP%></label>
|
<label class="cbi-value-title" for="server_ip"><%:Server IP%></label>
|
||||||
<div class="cbi-value-field">
|
<div class="cbi-value-field">
|
||||||
<input name="<%=servername%>.serverip.ip1" id="<%=servername%>.server_ip.1" placeholder="<%:Server IP%>" class="cbi-input-text" value="<%=uci:get_list("openmptcprouter",servername,"ip")[1]%>" data-optional="false">
|
<input name="<%=servername%>.server_ip" id="<%=servername%>.server_ip" placeholder="<%:Server IP%>" class="cbi-input-text" value="<%=uci:get("openmptcprouter",servername,"ip")%>" data-optional="false">
|
||||||
<div class="cbi-value-description">
|
<div class="cbi-value-description">
|
||||||
<%:Server IP will be set for proxy and VPN%>
|
<%:Server IP will be set for proxy and VPN%>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="cbi-value" id="<%=servername%>.server_ipv6" data-depends="[{"enableipv6":"0"}]" data-index="1">
|
|
||||||
<label class="cbi-value-title" for="server_ip.1"><%:Server IP%></label>
|
|
||||||
<div class="cbi-value-field">
|
|
||||||
<input name="<%=servername%>.serverip.ip1" id="<%=servername%>.server_ip.1" placeholder="<%:Primary server IP%>" class="cbi-input-text" value="<%=uci:get_list("openmptcprouter",servername,"ip")[1]%>" data-optional="false">
|
|
||||||
<input name="<%=servername%>.serverip.ip2" id="<%=servername%>.server_ip.2" placeholder="<%:Secondary server IP%>" class="cbi-input-text" value="<%=uci:get_list("openmptcprouter",servername,"ip")[2]%>" data-optional="false">
|
|
||||||
<div class="cbi-value-description">
|
|
||||||
<%:Server IP will be set for proxy and VPN%>
|
|
||||||
</div>
|
|
||||||
<div class="cbi-value-description">
|
|
||||||
<%:A second server's IP can be set for dual IPv4/IPv6 server if WAN IPv6 are set%>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<br />
|
<br />
|
||||||
<div class="cbi-value" data-index="2">
|
<div class="cbi-value">
|
||||||
<label class="cbi-value-title"><%:Server username%></label>
|
<label class="cbi-value-title"><%:Server username%></label>
|
||||||
<div class="cbi-value-field">
|
<div class="cbi-value-field">
|
||||||
<input type="text" name="<%=servername%>.openmptcprouter_vps_username" placeholder="<%:Server username%>" class="cbi-input-text" value="<%=uci:get("openmptcprouter",servername,"username")%>" data-optional="false">
|
<input type="text" name="<%=servername%>.openmptcprouter_vps_username" placeholder="<%:Server username%>" class="cbi-input-text" value="<%=uci:get("openmptcprouter",servername,"username")%>" data-optional="false">
|
||||||
|
@ -101,7 +74,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="cbi-value" data-index="3">
|
<div class="cbi-value">
|
||||||
<label class="cbi-value-title"><%:Server key%></label>
|
<label class="cbi-value-title"><%:Server key%></label>
|
||||||
<div class="cbi-value-field">
|
<div class="cbi-value-field">
|
||||||
<input type="text" name="<%=servername%>.openmptcprouter_vps_key" placeholder="<%:Server key%>" class="cbi-input-text" value="<%=uci:get("openmptcprouter",servername,"password")%>" data-optional="false">
|
<input type="text" name="<%=servername%>.openmptcprouter_vps_key" placeholder="<%:Server key%>" class="cbi-input-text" value="<%=uci:get("openmptcprouter",servername,"password")%>" data-optional="false">
|
||||||
|
@ -115,7 +88,7 @@
|
||||||
if nbserver > 1 then
|
if nbserver > 1 then
|
||||||
%>
|
%>
|
||||||
<br />
|
<br />
|
||||||
<div class="cbi-value" data-index="4">
|
<div class="cbi-value">
|
||||||
<label class="cbi-value-title"><%:Set server as master%></label>
|
<label class="cbi-value-title"><%:Set server as master%></label>
|
||||||
<div class="cbi-value-field">
|
<div class="cbi-value-field">
|
||||||
<input class="cbi-input-radio" type="radio" name="master" value="<%=servername%>" <% if uci:get("openmptcprouter",servername,"master") == "1" then %>checked<% end %>/>
|
<input class="cbi-input-radio" type="radio" name="master" value="<%=servername%>" <% if uci:get("openmptcprouter",servername,"master") == "1" then %>checked<% end %>/>
|
||||||
|
@ -129,7 +102,7 @@
|
||||||
end
|
end
|
||||||
%>
|
%>
|
||||||
<br />
|
<br />
|
||||||
<div class="cbi-value" data-index="5">
|
<div class="cbi-value">
|
||||||
<label class="cbi-value-title"><%:Disable server%></label>
|
<label class="cbi-value-title"><%:Disable server%></label>
|
||||||
<div class="cbi-value-field">
|
<div class="cbi-value-field">
|
||||||
<input class="cbi-input-radio" type="checkbox" name="<%=servername%>.openmptcprouter_vps_disabled" value="1" <% if uci:get("openmptcprouter",servername,"disabled") == "1" then %>checked<% end %>/>
|
<input class="cbi-input-radio" type="checkbox" name="<%=servername%>.openmptcprouter_vps_disabled" value="1" <% if uci:get("openmptcprouter",servername,"disabled") == "1" then %>checked<% end %>/>
|
||||||
|
@ -174,10 +147,7 @@
|
||||||
<div class="cbi-value">
|
<div class="cbi-value">
|
||||||
<label class="cbi-value-title"><%:Enable IPv6%></label>
|
<label class="cbi-value-title"><%:Enable IPv6%></label>
|
||||||
<div class="cbi-value-field">
|
<div class="cbi-value-field">
|
||||||
<select class="cbi-input-select" name="enableipv6" id="enableipv6" data-update="change" size="1">
|
<input class="cbi-input-checkbox" type="checkbox" name="enableipv6" value="0" <% if uci:get("openmptcprouter","settings","disable_ipv6") == "0" then %>checked<% end %> />
|
||||||
<option value="1" <% if uci:get("openmptcprouter","settings","disable_ipv6") ~= "0" then %>selected="selected"<% end %>><%:Disabled%></option>
|
|
||||||
<option value="0" <% if uci:get("openmptcprouter","settings","disable_ipv6") == "0" then %>selected="selected"<% end %>><%:Enabled%></option>
|
|
||||||
</select>
|
|
||||||
<br />
|
<br />
|
||||||
<div class="cbi-value-description">
|
<div class="cbi-value-description">
|
||||||
<%:You should disable IPv6 here if server doesn't provide IPv6.%>
|
<%:You should disable IPv6 here if server doesn't provide IPv6.%>
|
||||||
|
@ -541,7 +511,6 @@
|
||||||
<select class="cbi-input-select" data-update="change" id="cbid.network.<%=ifname%>.proto" name="cbid.network.<%=ifname%>.proto" size="1">
|
<select class="cbi-input-select" data-update="change" id="cbid.network.<%=ifname%>.proto" name="cbid.network.<%=ifname%>.proto" size="1">
|
||||||
<option id="cbid.network.<%=ifname%>.proto-static" value="static"<% if uci:get("network",ifname,"proto") == "static" or uci:get("network",ifname,"proto") == nil then findproto = 1 %> selected="selected"<% end %>><%:Static address%></option>
|
<option id="cbid.network.<%=ifname%>.proto-static" value="static"<% if uci:get("network",ifname,"proto") == "static" or uci:get("network",ifname,"proto") == nil then findproto = 1 %> selected="selected"<% end %>><%:Static address%></option>
|
||||||
<option id="cbid.network.<%=ifname%>.proto-dhcp" value="dhcp"<% if uci:get("network",ifname,"proto") == "dhcp" then findproto = 1 %> selected="selected"<% end %>><%:DHCP%></option>
|
<option id="cbid.network.<%=ifname%>.proto-dhcp" value="dhcp"<% if uci:get("network",ifname,"proto") == "dhcp" then findproto = 1 %> selected="selected"<% end %>><%:DHCP%></option>
|
||||||
<option id="cbid.network.<%=ifname%>.proto-dhcpv6" value="dhcpv6"<% if uci:get("network",ifname,"proto") == "dhcpv6" then findproto = 1 %> selected="selected"<% end %>><%:DHCPv6%></option>
|
|
||||||
<option id="cbid.network.<%=ifname%>.proto-modemmanager" value="modemmanager"<% if uci:get("network",ifname,"proto") == "modemmanager" then findproto = 1 %> selected="selected"<% end %>><%:ModemManager%></option>
|
<option id="cbid.network.<%=ifname%>.proto-modemmanager" value="modemmanager"<% if uci:get("network",ifname,"proto") == "modemmanager" then findproto = 1 %> selected="selected"<% end %>><%:ModemManager%></option>
|
||||||
<option id="cbid.network.<%=ifname%>.proto-ncm" value="ncm"<% if uci:get("network",ifname,"proto") == "ncm" then findproto = 1 %> selected="selected"<% end %>><%:NCM%></option>
|
<option id="cbid.network.<%=ifname%>.proto-ncm" value="ncm"<% if uci:get("network",ifname,"proto") == "ncm" then findproto = 1 %> selected="selected"<% end %>><%:NCM%></option>
|
||||||
<option id="cbid.network.<%=ifname%>.proto-pppoe" value="pppoe"<% if uci:get("network",ifname,"proto") == "pppoe" then findproto = 1 %> selected="selected"<% end %>><%:PPPoE%></option>
|
<option id="cbid.network.<%=ifname%>.proto-pppoe" value="pppoe"<% if uci:get("network",ifname,"proto") == "pppoe" then findproto = 1 %> selected="selected"<% end %>><%:PPPoE%></option>
|
||||||
|
@ -554,36 +523,26 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="cbi-value" id="cbi-network-<%=ifname%>-intf" data-depends="[{"cbid.network.<%=ifname%>.proto":"static"},{"cbid.network.<%=ifname%>.proto":"dhcp"},{"cbid.network.<%=ifname%>.proto":"dhcpv6"}]" data-index="4">
|
<div class="cbi-value" id="cbi-network-<%=ifname%>-intf" data-depends="[{"cbid.network.<%=ifname%>.proto":"static"},{"cbid.network.<%=ifname%>.proto":"dhcp"}]" data-index="4">
|
||||||
<label class="cbi-value-title"><%:Physical interface%></label>
|
<label class="cbi-value-title"><%:Physical interface%></label>
|
||||||
<div class="cbi-value-field">
|
<div class="cbi-value-field">
|
||||||
<select class="cbi-input-select" data-update="change" id="cbid.network.<%=ifname%>.intf" name="cbid.network.<%=ifname%>.intf" size="1">
|
<select class="cbi-input-select" data-update="change" id="cbid.network.<%=ifname%>.intf" name="cbid.network.<%=ifname%>.intf" size="1">
|
||||||
<%
|
<%
|
||||||
iffind=0
|
iffind=0
|
||||||
uciifname=uci:get("network",ifname,"ifname")
|
|
||||||
if uciifname:match("/") then
|
|
||||||
realifname=uciifname
|
|
||||||
vlan=""
|
|
||||||
else
|
|
||||||
realifname=splitstring(uciifname,'.')[1] or ""
|
|
||||||
vlan=splitstring(uciifname,'.')[2] or ""
|
|
||||||
end
|
|
||||||
for _, ifacea in ipairs(ifaces) do
|
for _, ifacea in ipairs(ifaces) do
|
||||||
if not (ifacea == "lo" or ifacea == "6in4-omr6in4" or ifacea == "mlvpn0" or ifacea:match("^ifb.*") or ifacea:match("^sit.*") or ifacea:match("^gre.*") or ifacea:match("^ip6.*") or ifacea:match("^teql.*") or ifacea:match("^erspan.*") or ifacea:match("^tun.*")) and device_notvirtual(ifacea) then
|
if not (ifacea == "lo" or ifacea == "6in4-omr6in4" or ifacea == "mlvpn0" or ifacea:match("^ifb.*") or ifacea:match("^sit.*") or ifacea:match("^gre.*") or ifacea:match("^ip6.*") or ifacea:match("^teql.*") or ifacea:match("^erspan.*") or ifacea:match("^tun.*")) and device_notvirtual(ifacea) then
|
||||||
%>
|
%>
|
||||||
<option value="<%=ifacea%>"<% if realifname == ifacea then iffind = 1 %> selected="selected"<% end %>><%=ifacea%></option>
|
<option value="<%=ifacea%>"<% if uci:get("network",ifname,"ifname") == ifacea then iffind = 1 %> selected="selected"<% end %>><%=ifacea%></option>
|
||||||
<%
|
<%
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if iffind == 0 and uciifname ~= nil then
|
if iffind == 0 and uci:get("network",ifname,"ifname") ~= nil then
|
||||||
%>
|
%>
|
||||||
<option value="<%=uciifname%>" selected="selected"><%=uciifname%></option>
|
<option value="<%=uci:get("network",ifname,"ifname")%>" selected="selected"><%=uci:get("network",ifname,"ifname")%></option>
|
||||||
<%
|
<%
|
||||||
end
|
end
|
||||||
%>
|
%>
|
||||||
</select>
|
</select>
|
||||||
<label><%:VLAN%></label>
|
|
||||||
<input type="text" id="cbid.network.<%=ifname%>.vlan" name="cbid.network.<%=ifname%>.vlan" class="cbi-input-text" placeholder="<%:VLAN%>" value="<%=vlan%>" data-optional="true">
|
|
||||||
<br />
|
<br />
|
||||||
<div class="cbi-value-description">
|
<div class="cbi-value-description">
|
||||||
<%:Choose physical interface.%>
|
<%:Choose physical interface.%>
|
||||||
|
@ -617,60 +576,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<%
|
|
||||||
ipv6list = uci:get_list("network",ifname,"ip6addr")
|
|
||||||
for key, value in pairs(ipv6list) do
|
|
||||||
%>
|
|
||||||
<div class="cbi-value" id="cbi-network-<%=ifname%>-ipv6address" data-index="8">
|
|
||||||
<label class="cbi-value-title"><%:IPv6 address%></label>
|
|
||||||
<div class="cbi-value-field">
|
|
||||||
<input type="text" id="cbid.network.<%=ifname%>.ip6addr" name="cbid.network.<%=ifname%>.ip6addr" class="cbi-input-text" value="<%=value%>" data-type="ip6addr">
|
|
||||||
<br />
|
|
||||||
<div class="cbi-value-description">
|
|
||||||
<%:Set an IP in the same network as the modem%>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<%
|
|
||||||
end
|
|
||||||
if table.getn(ipv6list) ~= 0 then
|
|
||||||
%>
|
|
||||||
<div class="cbi-value" id="cbi-network-<%=ifname%>-ip6gw" data-index="9">
|
|
||||||
<label class="cbi-value-title"><%:IPv6 gateway%></label>
|
|
||||||
<div class="cbi-value-field">
|
|
||||||
<input type="text" id="cbid.network.<%=ifname%>.ip6gw" name="cbid.network.<%=ifname%>.ip6gw" class="cbi-input-text" value="<%=uci:get("network",ifname,"ip6gw")%>" data-type="ip6addr">
|
|
||||||
<br />
|
|
||||||
<div class="cbi-value-description">
|
|
||||||
<%:Set here IP of the modem%>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<%
|
|
||||||
else
|
|
||||||
%>
|
|
||||||
<div class="cbi-value" id="cbi-network-<%=ifname%>-ipv6address" data-depends="[{"enableipv6":"0","cbid.network.<%=ifname%>.proto":"static"},{"enableipv6":"0","cbid.network.<%=ifname%>.type":"macvlan"}]" data-index="8">
|
|
||||||
<label class="cbi-value-title"><%:IPv6 address%></label>
|
|
||||||
<div class="cbi-value-field">
|
|
||||||
<input type="text" id="cbid.network.<%=ifname%>.ip6addr" name="cbid.network.<%=ifname%>.ip6addr" class="cbi-input-text" value="" data-type="ip6addr">
|
|
||||||
<br />
|
|
||||||
<div class="cbi-value-description">
|
|
||||||
<%:Set an IP in the same network as the modem%>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="cbi-value" id="cbi-network-<%=ifname%>-ip6gw" data-depends="[{"enableipv6":"0","cbid.network.<%=ifname%>.proto":"static"},{"enableipv6":"0","cbid.network.<%=ifname%>.type":"macvlan"}]" data-index="9">
|
|
||||||
<label class="cbi-value-title"><%:IPv6 gateway%></label>
|
|
||||||
<div class="cbi-value-field">
|
|
||||||
<input type="text" id="cbid.network.<%=ifname%>.ip6gw" name="cbid.network.<%=ifname%>.ip6gw" class="cbi-input-text" value="<%=uci:get("network",ifname,"ip6gw")%>" data-type="ip6addr">
|
|
||||||
<br />
|
|
||||||
<div class="cbi-value-description">
|
|
||||||
<%:Set here IP of the modem%>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<%
|
|
||||||
end
|
|
||||||
%>
|
|
||||||
<div class="cbi-value" id="cbi-network-<%=ifname%>-device-ncm" data-depends="[{"cbid.network.<%=ifname%>.proto":"ncm"}]" data-index="5">
|
<div class="cbi-value" id="cbi-network-<%=ifname%>-device-ncm" data-depends="[{"cbid.network.<%=ifname%>.proto":"ncm"}]" data-index="5">
|
||||||
<label class="cbi-value-title"><%:Device%></label>
|
<label class="cbi-value-title"><%:Device%></label>
|
||||||
<div class="cbi-value-field">
|
<div class="cbi-value-field">
|
||||||
|
@ -914,13 +819,6 @@
|
||||||
if not (ifacea == "lo" or ifacea == "6in4-omr6in4" or ifacea == "mlvpn0" or ifacea:match("^ifb.*") or ifacea:match("^sit.*") or ifacea:match("^gre.*") or ifacea:match("^ip6.*") or ifacea:match("^teql.*") or ifacea:match("^erspan.*")) and device_notvirtual(ifacea) then
|
if not (ifacea == "lo" or ifacea == "6in4-omr6in4" or ifacea == "mlvpn0" or ifacea:match("^ifb.*") or ifacea:match("^sit.*") or ifacea:match("^gre.*") or ifacea:match("^ip6.*") or ifacea:match("^teql.*") or ifacea:match("^erspan.*")) and device_notvirtual(ifacea) then
|
||||||
%>
|
%>
|
||||||
<option value="<%=ifacea%>"><%=ifacea%></option>
|
<option value="<%=ifacea%>"><%=ifacea%></option>
|
||||||
<%
|
|
||||||
end
|
|
||||||
end
|
|
||||||
for _, ifacea in ipairs(net:get_networks()) do
|
|
||||||
if not (ifacea:name() == "loopback" or ifacea:name() == "lan" or ifacea:name() == "omr6in4" or ifacea:name() == "omrvpn" or ifacea:name():match("^omrip.*")) then
|
|
||||||
%>
|
|
||||||
<option value="<%='@' .. ifacea:name()%>"><%='@' .. ifacea:name() .. ' (alias)'%></option>
|
|
||||||
<%
|
<%
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -939,4 +837,4 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<script type="text/javascript">cbi_init();</script>
|
<script type="text/javascript">cbi_init();</script>
|
||||||
<%+footer%>
|
<%+footer%>
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -28,10 +28,8 @@ get_ip_from_website() {
|
||||||
}
|
}
|
||||||
|
|
||||||
[ -z "$intf" ] && return
|
[ -z "$intf" ] && return
|
||||||
if [ -n "$(ip -4 a show dev $intf)" ]; then
|
ip=""
|
||||||
ip=""
|
config_load openmptcprouter
|
||||||
config_load openmptcprouter
|
config_foreach get_ip_from_server server
|
||||||
config_foreach get_ip_from_server server
|
[ -z "$ip" ] && get_ip_from_website
|
||||||
[ -z "$ip" ] && get_ip_from_website
|
echo $ip
|
||||||
echo $ip
|
|
||||||
fi
|
|
|
@ -1,37 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
. /lib/functions.sh
|
|
||||||
|
|
||||||
intf=$1
|
|
||||||
|
|
||||||
get_ip_from_server() {
|
|
||||||
serverip=$(uci -q get openmptcprouter.$1.ip)
|
|
||||||
serverport=$(uci -q get openmptcprouter.$1.port)
|
|
||||||
getip="$(curl -s -k -6 -m 2 --interface $intf https://$serverip:$serverport/clienthost)"
|
|
||||||
[ -n "$getip" ] && getip=$(echo $getip | jsonfilter -e '@.client_host')
|
|
||||||
if [ -n "$(echo "$getip" | grep :)" ]; then
|
|
||||||
ip=$getip
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
get_ip_from_website() {
|
|
||||||
check_ipv6_website="$(uci -q get openmptcprouter.settings.check_ipv6_website)"
|
|
||||||
[ -z "$check_ipv6_website" ] && check_ipv6_website="http://ipv6.openmptcprouter.com"
|
|
||||||
checkip=$(echo $check_ipv6_website | sed -e 's/https:\/\///' -e 's/http:\/\///' | xargs dig +short AAAA | tr -d "\n")
|
|
||||||
ipset add ss_rules6_dst_bypass_all $checkip > /dev/null 2>&1
|
|
||||||
getip="$(curl -s -6 -m 2 --interface $intf $check_ipv6_website)"
|
|
||||||
ipset del ss_rules6_dst_bypass_all $checkip > /dev/null 2>&1
|
|
||||||
if [ -n "$(echo "$getip" | grep :)" ]; then
|
|
||||||
ip=$getip
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
[ -z "$intf" ] && return
|
|
||||||
if [ -n "$(ip -6 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
|
|
|
@ -1,16 +1,7 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
INTERFACE=$2
|
INTERFACE=$2
|
||||||
SERVER=$1
|
if [ -z "$INTERFACE" ]; then
|
||||||
if [ -n "$(resolveip -4 $SERVER)" ]; then
|
tracebox -m 20 -l "pkt = ip{dst=to} / tcp{dst=65101} / MPCAPABLE / MSS / WSCALE if string.find(tostring(tracebox(pkt)),'-TCPOptionMPTCPCapable') then print 'MPTCP disabled' elseif string.find(tostring(tracebox(pkt)),'MPTCP') then print 'MPTCP enabled' end" $1
|
||||||
if [ -z "$INTERFACE" ]; then
|
|
||||||
tracebox -m 20 -l "pkt = ip{dst=to} / tcp{dst=65101} / MPCAPABLE / MSS / WSCALE if string.find(tostring(tracebox(pkt)),'-TCPOptionMPTCPCapable') then print 'MPTCP disabled' elseif string.find(tostring(tracebox(pkt)),'MPTCP') then print 'MPTCP enabled' end" $SERVER
|
|
||||||
else
|
|
||||||
tracebox -m 20 -l "pkt = ip{dst=to} / tcp{dst=65101} / MPCAPABLE / MSS / WSCALE if string.find(tostring(tracebox(pkt)),'-TCPOptionMPTCPCapable') then print 'MPTCP disabled' elseif string.find(tostring(tracebox(pkt)),'MPTCP') then print 'MPTCP enabled' end" -i $INTERFACE $SERVER
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
if [ -z "$INTERFACE" ]; then
|
tracebox -m 20 -l "pkt = ip{dst=to} / tcp{dst=65101} / MPCAPABLE / MSS / WSCALE if string.find(tostring(tracebox(pkt)),'-TCPOptionMPTCPCapable') then print 'MPTCP disabled' elseif string.find(tostring(tracebox(pkt)),'MPTCP') then print 'MPTCP enabled' end" -i $INTERFACE $1
|
||||||
tracebox -6 -m 20 -l "pkt = ip{dst=to} / tcp{dst=65101} / MPCAPABLE / MSS / WSCALE if string.find(tostring(tracebox(pkt)),'-TCPOptionMPTCPCapable') then print 'MPTCP disabled' elseif string.find(tostring(tracebox(pkt)),'MPTCP') then print 'MPTCP enabled' end" $SERVER
|
|
||||||
else
|
|
||||||
tracebox -6 -m 20 -l "pkt = ip{dst=to} / tcp{dst=65101} / MPCAPABLE / MSS / WSCALE if string.find(tostring(tracebox(pkt)),'-TCPOptionMPTCPCapable') then print 'MPTCP disabled' elseif string.find(tostring(tracebox(pkt)),'MPTCP') then print 'MPTCP enabled' end" -i $INTERFACE $SERVER
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
|
@ -20,26 +20,21 @@ _set_intf_name() {
|
||||||
fi
|
fi
|
||||||
[ -n "$modalias" ] && {
|
[ -n "$modalias" ] && {
|
||||||
if [ -f /sys/class/net/${INTERFACE}/device/uevent ]; then
|
if [ -f /sys/class/net/${INTERFACE}/device/uevent ]; then
|
||||||
mac=""
|
|
||||||
if [ -f /sys/class/net/${INTERFACE}/address ]; then
|
|
||||||
mac="$(cat /sys/class/net/${INTERFACE}/address | tr -d '\n')"
|
|
||||||
fi
|
|
||||||
chk_modalias=$MODALIAS
|
chk_modalias=$MODALIAS
|
||||||
[ -z "$chk_modalias" ] && chk_modalias="$(cat /sys/class/net/${INTERFACE}/device/uevent | grep MODALIAS | cut -d '=' -f2 | tr -d '\n')"
|
[ -z "$chk_modalias" ] && chk_modalias="$(cat /sys/class/net/${INTERFACE}/device/uevent | grep MODALIAS | cut -d '=' -f2 | tr -d '\n')"
|
||||||
if [ -n "$chk_modalias" ]; then
|
if [ -n "$chk_modalias" ]; then
|
||||||
chk_modalias="${chk_modalias}-${mac}"
|
logger -t "OMR-Rename" "dir: $i - modalias: $modalias - chk_modalias: $chk_modalias - ifname: $ifname - INTERFACE: $INTERFACE"
|
||||||
logger -t "OMR-Rename" "modalias: $modalias - chk_modalias: $chk_modalias - ifname: $ifname - INTERFACE: $INTERFACE"
|
|
||||||
if [ "$modalias" = "$chk_modalias" ] && [ "$INTERFACE" != "$ifname" ]; then
|
if [ "$modalias" = "$chk_modalias" ] && [ "$INTERFACE" != "$ifname" ]; then
|
||||||
logger -t "OMR-Rename" "Rename ${INTERFACE} to ${ifname}"
|
logger -t "OMR-Rename" "Rename ${INTERFACE} to ${ifname}"
|
||||||
existif="0"
|
existif=0
|
||||||
ip link set ${INTERFACE} down 2>&1 >/dev/null
|
ip link set ${INTERFACE} down 2>&1 >/dev/null
|
||||||
[ "$(ip link show ${ifname} 2>/dev/null)" != "" ] && {
|
[ "$(ip link show ${ifname} 2>/dev/null)" != "" ] && {
|
||||||
ip link set ${ifname} name ${ifname}tmp 2>&1 >/dev/null
|
ip link set ${ifname} name ${ifname}tmp 2>&1 >/dev/null
|
||||||
existif="1"
|
existif=1
|
||||||
}
|
}
|
||||||
ip link set ${INTERFACE} name ${ifname} 2>&1 >/dev/null
|
ip link set ${INTERFACE} name ${ifname} 2>&1 >/dev/null
|
||||||
ip link set ${ifname} up 2>&1 >/dev/null
|
ip link set ${ifname} up 2>&1 >/dev/null
|
||||||
[ "$existif" = "1" ] && ip link set ${ifname}tmp ${INTERFACE} 2>&1 >/dev/null
|
[ "$existif" = "1" ] && ip link set ${ifname}tmp ${$INTERFACE} 2>&1 >/dev/null
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
elif [ -f /dev/${DEVICE_NAME} ] && [ -n "$MODALIAS" ] && [ "$modalias" = "$MODALIAS" ]; then
|
elif [ -f /dev/${DEVICE_NAME} ] && [ -n "$MODALIAS" ] && [ "$modalias" = "$MODALIAS" ]; then
|
||||||
|
@ -50,22 +45,21 @@ _set_intf_name() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
[ -z "$modalias" ] && [ -n "$device" ] && [ -n "$ifname" ] && [ "/sys${DEVPATH}" = "$device" ] && [ "$INTERFACE" != "$ifname" ] && {
|
[ -z "$modalias" ] && [ -n "$device" ] && [ -n "$ifname" ] && [ "/sys${DEVPATH}" = "$device" ] && [ "$INTERFACE" != "$ifname" ] && {
|
||||||
logger -t "OMR-Rename" "device: $device - devpath: $DEVPATH - ifname: $ifname - INTERFACE: $INTERFACE"
|
|
||||||
logger -t "OMR-Rename" "Rename ${INTERFACE} to ${ifname}"
|
logger -t "OMR-Rename" "Rename ${INTERFACE} to ${ifname}"
|
||||||
ip link set ${INTERFACE} down 2>&1 >/dev/null
|
ip link set ${INTERFACE} down 2>&1 >/dev/null
|
||||||
existif="0"
|
existif=0
|
||||||
[ "$(ip link show ${ifname} 2>/dev/null)" != "" ] && {
|
[ "$(ip link show ${ifname} 2>/dev/null)" != "" ] && {
|
||||||
ip link set ${ifname} name ${ifname}tmp 2>&1 >/dev/null
|
ip link set ${ifname} name ${ifname}tmp 2>&1 >/dev/null
|
||||||
existif="1"
|
existif=1
|
||||||
}
|
}
|
||||||
ip link set ${INTERFACE} name ${ifname} 2>&1 >/dev/null
|
ip link set ${INTERFACE} name ${ifname} 2>&1 >/dev/null
|
||||||
ip link set ${ifname} up 2>&1 >/dev/null
|
ip link set ${ifname} up 2>&1 >/dev/null
|
||||||
[ "$existif" = "1" ] && ip link set ${ifname}tmp ${INTERFACE} 2>&1 >/dev/null
|
[ "$existif" = "1" ] && ip link set ${ifname}tmp ${$INTERFACE} 2>&1 >/dev/null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if [ "$(uci -q get openmptcprouter.settings.disableintfrename)" != "1" ]; then
|
if [ "$(uci -q get openmptcprouter.settings.disableintfrename)" != "0" ]; then
|
||||||
config_load network
|
config_load network
|
||||||
config_foreach _set_intf_name interface
|
config_foreach _set_intf_name interface
|
||||||
# config_foreach _set_intf_name interface
|
config_foreach _set_intf_name interface
|
||||||
fi
|
fi
|
|
@ -1,5 +1,5 @@
|
||||||
#!/bin/sh /etc/rc.common
|
#!/bin/sh /etc/rc.common
|
||||||
# Copyright (C) 2018-2021 Ycarus (Yannick Chabanois) <ycarus@zugaina.org> for OpenMPTCProuter
|
# Copyright (C) 2018 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
|
||||||
# Released under GPL 3. See LICENSE for the full terms.
|
# Released under GPL 3. See LICENSE for the full terms.
|
||||||
|
|
||||||
START=5
|
START=5
|
||||||
|
@ -16,42 +16,6 @@ omr_intf_check() {
|
||||||
}
|
}
|
||||||
|
|
||||||
omr_intf_set() {
|
omr_intf_set() {
|
||||||
local device
|
|
||||||
local ifname
|
|
||||||
config_get ifname "$1" ifname
|
|
||||||
config_get device "$1" device
|
|
||||||
config_get type "$1" type
|
|
||||||
|
|
||||||
[ -z "$ifname" ] && ifname=$(ifstatus "$1" | jsonfilter -q -e '@["l3_device"]')
|
|
||||||
|
|
||||||
if [ "$type" != "macvlan" ] && [ -n "$ifname" ] && [ -f /sys/class/net/${ifname}/device/uevent ]; then
|
|
||||||
devicepath=$(readlink -f /sys/class/net/${ifname})
|
|
||||||
if [ -n "$devicepath" ] && [ "$(echo ${devicepath} | grep virtual)" = "" ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PRODUCT)" != "" ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PCI_SLOT_NAME)" = "" ]; then
|
|
||||||
mac=""
|
|
||||||
if [ -f /sys/class/net/${ifname}/address ]; then
|
|
||||||
mac="$(cat /sys/class/net/${ifname}/address | tr -d '\n')"
|
|
||||||
fi
|
|
||||||
uci -q set network.$1.modalias="$(cat /sys/class/net/${ifname}/device/uevent | grep MODALIAS | cut -d '=' -f2 | tr -d '\n')-$mac"
|
|
||||||
uci -q set network.$1.product="$(cat /sys/class/net/${ifname}/device/uevent | grep PRODUCT | cut -d '=' -f2 | tr -d '\n')"
|
|
||||||
elif [ -n "$devicepath" ] && ([ "$(echo ${devicepath} | grep virtual)" != "" ] || [ "$(echo ${devicepath} | grep virtual)" = "" ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PRODUCT)" = "" ] || [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PCI_SLOT_NAME)" != "" ] || [ "$(cat /sys/class/net/${ifname}tmp/device/uevent)" != "" ]); then
|
|
||||||
uci -q delete network.$1.device
|
|
||||||
uci -q delete network.$1.modalias
|
|
||||||
uci -q delete network.$1.product
|
|
||||||
fi
|
|
||||||
elif [ "$type" != "macvlan" ] && [ -n "$device" ] && [ -f /sys/bus/usb-serial/devices/${devicename}/device/uevent ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PRODUCT)" != "" ]; then
|
|
||||||
mac=""
|
|
||||||
if [ -f /sys/class/net/${ifname}/address ]; then
|
|
||||||
mac="$(cat /sys/class/net/${ifname}/address | tr -d '\n')"
|
|
||||||
fi
|
|
||||||
uci -q set network.$1.modalias="$(cat /sys/bus/usb-serial/devices/${devicename}/device/uevent | grep MODALIAS | cut -d '=' -f2 | tr -d '\n')-$mac"
|
|
||||||
uci -q set network.$1.product="$(cat /sys/bus/usb-serial/devices/${devicename}/device/uevent | grep PRODUCT | cut -d '=' -f2 | tr -d '\n')"
|
|
||||||
else
|
|
||||||
uci -q delete network.$1.modalias
|
|
||||||
uci -q delete network.$1.product
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
omr_set_settings() {
|
|
||||||
local device
|
local device
|
||||||
local ifname
|
local ifname
|
||||||
local multipath
|
local multipath
|
||||||
|
@ -61,30 +25,12 @@ omr_set_settings() {
|
||||||
config_get proto "$1" proto
|
config_get proto "$1" proto
|
||||||
config_get type "$1" type
|
config_get type "$1" type
|
||||||
config_get addlatency "$1" addlatency
|
config_get addlatency "$1" addlatency
|
||||||
[ -z "$multipath" ] || [ "$multipath" = "off" ] && [ "$1" != "omrvpn" ] && [ "$1" != "glorytun" ] && return
|
|
||||||
|
|
||||||
uci -q set openmptcprouter.$1=interface
|
|
||||||
uci -q set openmptcprouter.$1.multipath="$multipath"
|
|
||||||
config_get disable_ipv6 settings disable_ipv6 "0"
|
|
||||||
if [ "$proto" != "dhcpv6" ] && ([ "$disable_ipv6" = "1" ] || [ "$1" != "omr6in4" ]); then
|
|
||||||
uci -q set network.$1.ipv6=0
|
|
||||||
else
|
|
||||||
uci -q set network.$1.ipv6=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
[ -z "$addlatency" ] && addlatency=0
|
[ -z "$addlatency" ] && addlatency=0
|
||||||
devicename=$(echo "$device" | cut -d'/' -f3)
|
devicename=$(echo "$device" | cut -d'/' -f3)
|
||||||
|
|
||||||
[ -z "$ifname" ] && ifname=$(ifstatus "$1" | jsonfilter -q -e '@["l3_device"]')
|
[ -z "$ifname" ] && ifname=$(ifstatus "$1" | jsonfilter -q -e '@["l3_device"]')
|
||||||
|
|
||||||
if [ -n "$ifname" ]; then
|
if [ -n "$ifname" ]; then
|
||||||
if [ "$proto" = "dhcpv6" ]; then
|
|
||||||
# Change interface name for sysctl in case of VLAN (eth0.2 => eth0/2)
|
|
||||||
ifnamesys=$(echo $ifname | sed 's:\.:/:')
|
|
||||||
sysctl -qw net.ipv6.conf.${ifnamesys}.disable_ipv6=0
|
|
||||||
sysctl -qw net.ipv6.conf.${ifnamesys}.accept_ra=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$addlatency" = "0" ] && [ "$(tc qdisc show dev $ifname | grep delay)" != "" ]; then
|
if [ "$addlatency" = "0" ] && [ "$(tc qdisc show dev $ifname | grep delay)" != "" ]; then
|
||||||
tc qdisc del dev ${ifname} root netem
|
tc qdisc del dev ${ifname} root netem
|
||||||
fi
|
fi
|
||||||
|
@ -97,6 +43,31 @@ omr_set_settings() {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "$type" != "macvlan" ] && [ -n "$ifname" ] && [ -f /sys/class/net/${ifname}/device/uevent ]; then
|
||||||
|
devicepath=$(readlink -f /sys/class/net/${ifname})
|
||||||
|
if [ -n "$devicepath" ] && [ "$(echo ${devicepath} | grep virtual)" = "" ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PRODUCT)" != "" ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PCI_SLOT_NAME)" = "" ]; then
|
||||||
|
uci -q set network.$1.modalias="$(cat /sys/class/net/${ifname}/device/uevent | grep MODALIAS | cut -d '=' -f2 | tr -d '\n')"
|
||||||
|
uci -q set network.$1.product="$(cat /sys/class/net/${ifname}/device/uevent | grep PRODUCT | cut -d '=' -f2 | tr -d '\n')"
|
||||||
|
elif [ -n "$devicepath" ] && ([ "$(echo ${devicepath} | grep virtual)" != "" ] || [ "$(echo ${devicepath} | grep virtual)" = "" ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PRODUCT)" = "" ] || [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PCI_SLOT_NAME)" != "" ] || [ "$(cat /sys/class/net/${ifname}tmp/device/uevent)" != "" ]); then
|
||||||
|
uci -q delete network.$1.device
|
||||||
|
uci -q delete network.$1.modalias
|
||||||
|
uci -q delete network.$1.product
|
||||||
|
fi
|
||||||
|
elif [ "$type" != "macvlan" ] && [ -n "$device" ] && [ -f /sys/bus/usb-serial/devices/${devicename}/device/uevent ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PRODUCT)" != "" ]; then
|
||||||
|
uci -q set network.$1.modalias="$(cat /sys/bus/usb-serial/devices/${devicename}/device/uevent | grep MODALIAS | cut -d '=' -f2 | tr -d '\n')"
|
||||||
|
uci -q set network.$1.product="$(cat /sys/bus/usb-serial/devices/${devicename}/device/uevent | grep PRODUCT | cut -d '=' -f2 | tr -d '\n')"
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -z "$multipath" ] || [ "$multipath" = "off" ] && [ "$1" != "omrvpn" ] && [ "$1" != "glorytun" ] && return
|
||||||
|
|
||||||
|
uci -q set openmptcprouter.$1=interface
|
||||||
|
uci -q set openmptcprouter.$1.multipath="$multipath"
|
||||||
|
config_get disable_ipv6 settings disable_ipv6 "0"
|
||||||
|
if [ "$disable_ipv6" = "1" ] || [ "$1" != "omr6in4" ]; then
|
||||||
|
uci -q set network.$1.ipv6=0
|
||||||
|
else
|
||||||
|
uci -q set network.$1.ipv6=1
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
start_service() {
|
start_service() {
|
||||||
|
@ -105,7 +76,7 @@ start_service() {
|
||||||
config_load openmptcprouter
|
config_load openmptcprouter
|
||||||
config_foreach omr_intf_check interface
|
config_foreach omr_intf_check interface
|
||||||
config_load network
|
config_load network
|
||||||
config_foreach omr_set_settings interface
|
config_foreach omr_intf_set interface
|
||||||
uci -q commit network
|
uci -q commit network
|
||||||
uci -q commit openmptcprouter
|
uci -q commit openmptcprouter
|
||||||
|
|
||||||
|
@ -141,13 +112,7 @@ start_service() {
|
||||||
EOF
|
EOF
|
||||||
/etc/init.d/rpcd restart 2>&1 >/dev/null
|
/etc/init.d/rpcd restart 2>&1 >/dev/null
|
||||||
fi
|
fi
|
||||||
}
|
|
||||||
|
|
||||||
stop_service() {
|
|
||||||
config_load network
|
|
||||||
config_foreach omr_intf_set interface
|
|
||||||
uci -q commit network
|
|
||||||
uci -q commit openmptcprouter
|
|
||||||
}
|
}
|
||||||
|
|
||||||
reload_service() {
|
reload_service() {
|
||||||
|
|
|
@ -114,13 +114,6 @@ if [ "$(uci -q get openmptcprouter.settings.menu)" = "" ]; then
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$(uci -q get openmptcprouter.settings.disableintfrename)" = "" ]; then
|
|
||||||
uci -q batch <<-EOF >/dev/null
|
|
||||||
set openmptcprouter.settings.disableintfrename='1'
|
|
||||||
commit openmptcprouter
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
sed -i 's/net.ipv4.tcp_retries2=3$/net.ipv4.tcp_retries2=15/' /etc/sysctl.d/zzz_openmptcprouter.conf
|
sed -i 's/net.ipv4.tcp_retries2=3$/net.ipv4.tcp_retries2=15/' /etc/sysctl.d/zzz_openmptcprouter.conf
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|
|
@ -116,14 +116,14 @@ function add_interface(add_interface_ifname)
|
||||||
ucic:save("sqm")
|
ucic:save("sqm")
|
||||||
ucic:commit("sqm")
|
ucic:commit("sqm")
|
||||||
|
|
||||||
sys.exec("uci -q add_list vnstat.@vnstat[-1].interface=" .. wanif)
|
luci.sys.call("uci -q add_list vnstat.@vnstat[-1].interface=" .. wanif)
|
||||||
sys.exec("uci -q commit vnstat")
|
luci.sys.call("uci -q commit vnstat")
|
||||||
|
|
||||||
-- Dirty way to add new interface to firewall...
|
-- Dirty way to add new interface to firewall...
|
||||||
sys.exec("uci -q add_list firewall.@zone[1].network=wan" .. i)
|
luci.sys.call("uci -q add_list firewall.@zone[1].network=wan" .. i)
|
||||||
sys.exec("uci -q commit firewall")
|
luci.sys.call("uci -q commit firewall")
|
||||||
|
|
||||||
sys.exec("/etc/init.d/macvlan restart >/dev/null 2>/dev/null")
|
luci.sys.call("/etc/init.d/macvlan restart >/dev/null 2>/dev/null")
|
||||||
end
|
end
|
||||||
|
|
||||||
function remove_interface(intf)
|
function remove_interface(intf)
|
||||||
|
@ -140,11 +140,11 @@ function remove_interface(intf)
|
||||||
ucic:save("qos")
|
ucic:save("qos")
|
||||||
ucic:commit("qos")
|
ucic:commit("qos")
|
||||||
if defif ~= nil and defif ~= "" then
|
if defif ~= nil and defif ~= "" then
|
||||||
sys.exec("uci -q del_list vnstat.@vnstat[-1].interface=" .. defif)
|
luci.sys.call("uci -q del_list vnstat.@vnstat[-1].interface=" .. defif)
|
||||||
end
|
end
|
||||||
sys.exec("uci -q commit vnstat")
|
luci.sys.call("uci -q commit vnstat")
|
||||||
sys.exec("uci -q del_list firewall.@zone[1].network=" .. intf)
|
luci.sys.call("uci -q del_list firewall.@zone[1].network=" .. intf)
|
||||||
sys.exec("uci -q commit firewall")
|
luci.sys.call("uci -q commit firewall")
|
||||||
end
|
end
|
||||||
|
|
||||||
function set_interface(intf,proto,ipaddr,netmask,gateway,sqmenabled,downloadspeed,uploadspeed)
|
function set_interface(intf,proto,ipaddr,netmask,gateway,sqmenabled,downloadspeed,uploadspeed)
|
||||||
|
@ -321,30 +321,24 @@ function server_settings(server,server_ip,openmptcprouter_vps_key)
|
||||||
ucic:set("openmptcprouter",server,"ip",server_ip)
|
ucic:set("openmptcprouter",server,"ip",server_ip)
|
||||||
ucic:set("openmptcprouter",server,"port","65500")
|
ucic:set("openmptcprouter",server,"port","65500")
|
||||||
ucic:save("openmptcprouter")
|
ucic:save("openmptcprouter")
|
||||||
if ucic:get("openmptcprouter",server,"master") == "1" then
|
ucic:set("shadowsocks-libev","sss0","server",server_ip)
|
||||||
ucic:set("shadowsocks-libev","sss0","server",server_ip)
|
ucic:set("glorytun","vpn","host",server_ip)
|
||||||
ucic:set("glorytun","vpn","host",server_ip)
|
ucic:set("dsvpn","vpn","host",server_ip)
|
||||||
ucic:set("dsvpn","vpn","host",server_ip)
|
ucic:set("mlvpn","general","host",server_ip)
|
||||||
ucic:set("mlvpn","general","host",server_ip)
|
luci.sys.call("uci -q del openvpn.omr.remote")
|
||||||
sys.exec("uci -q del openvpn.omr.remote")
|
luci.sys.call("uci -q add_list openvpn.omr.remote=" .. server_ip)
|
||||||
sys.exec("uci -q add_list openvpn.omr.remote=" .. server_ip)
|
ucic:set("qos","serverin","srchost",server_ip)
|
||||||
ucic:set("qos","serverin","srchost",server_ip)
|
ucic:set("qos","serverout","dsthost",server_ip)
|
||||||
ucic:set("qos","serverout","dsthost",server_ip)
|
ucic:save("qos")
|
||||||
ucic:set("v2ray","omrout","s_vmess_address",server_ip)
|
ucic:commit("qos")
|
||||||
ucic:set("v2ray","omrout","s_vless_address",server_ip)
|
ucic:save("mlvpn")
|
||||||
ucic:save("qos")
|
ucic:commit("mlvpn")
|
||||||
ucic:commit("qos")
|
ucic:save("dsvpn")
|
||||||
ucic:save("mlvpn")
|
ucic:commit("dsvpn")
|
||||||
ucic:commit("mlvpn")
|
ucic:save("glorytun")
|
||||||
ucic:save("dsvpn")
|
ucic:commit("glorytun")
|
||||||
ucic:commit("dsvpn")
|
ucic:save("shadowsocks-libev")
|
||||||
ucic:save("v2ray")
|
ucic:commit("shadowsocks-libev")
|
||||||
ucic:commit("v2ray")
|
|
||||||
ucic:save("glorytun")
|
|
||||||
ucic:commit("glorytun")
|
|
||||||
ucic:save("shadowsocks-libev")
|
|
||||||
ucic:commit("shadowsocks-libev")
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function set_shadowsocks(shadowsocks_key)
|
function set_shadowsocks(shadowsocks_key)
|
||||||
|
@ -410,22 +404,18 @@ end
|
||||||
|
|
||||||
function restart_all()
|
function restart_all()
|
||||||
-- Restart all
|
-- Restart all
|
||||||
sys.exec("/etc/init.d/macvlan restart >/dev/null 2>/dev/null")
|
luci.sys.call("(env -i /bin/ubus call network reload) >/dev/null 2>/dev/null")
|
||||||
sys.exec("(env -i /bin/ubus call network reload) >/dev/null 2>/dev/null")
|
luci.sys.call("/etc/init.d/mptcp restart >/dev/null 2>/dev/null")
|
||||||
sys.exec("/etc/init.d/omr-tracker stop >/dev/null 2>/dev/null")
|
luci.sys.call("/etc/init.d/openmptcprouter-vps restart >/dev/null 2>/dev/null")
|
||||||
sys.exec("/etc/init.d/mptcp restart >/dev/null 2>/dev/null")
|
os.execute("sleep 2")
|
||||||
sys.exec("/etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null")
|
luci.sys.call("/etc/init.d/v2ray restart >/dev/null 2>/dev/null")
|
||||||
sys.exec("/etc/init.d/glorytun restart >/dev/null 2>/dev/null")
|
luci.sys.call("/etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null")
|
||||||
sys.exec("/etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null")
|
luci.sys.call("/etc/init.d/glorytun restart >/dev/null 2>/dev/null")
|
||||||
sys.exec("/etc/init.d/mlvpn restart >/dev/null 2>/dev/null")
|
luci.sys.call("/etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null")
|
||||||
sys.exec("/etc/init.d/openvpn restart >/dev/null 2>/dev/null")
|
--luci.sys.call("/etc/init.d/mlvpn restart >/dev/null 2>/dev/null")
|
||||||
sys.exec("/etc/init.d/openvpnbonding restart >/dev/null 2>/dev/null")
|
luci.sys.call("/etc/init.d/openvpn restart >/dev/null 2>/dev/null")
|
||||||
sys.exec("/etc/init.d/dsvpn restart >/dev/null 2>/dev/null")
|
luci.sys.call("/etc/init.d/omr-tracker restart >/dev/null 2>/dev/null")
|
||||||
sys.exec("/etc/init.d/omr-tracker start >/dev/null 2>/dev/null")
|
luci.sys.call("/etc/init.d/omr-6in4 restart >/dev/null 2>/dev/null")
|
||||||
sys.exec("/etc/init.d/omr-6in4 restart >/dev/null 2>/dev/null")
|
|
||||||
sys.exec("/etc/init.d/mptcpovervpn restart >/dev/null 2>/dev/null")
|
|
||||||
sys.exec("/etc/init.d/vnstat restart >/dev/null 2>/dev/null")
|
|
||||||
sys.exec("/etc/init.d/v2ray restart >/dev/null 2>/dev/null")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function redirectports(server,redirect_ports)
|
function redirectports(server,redirect_ports)
|
||||||
|
@ -435,26 +425,26 @@ end
|
||||||
|
|
||||||
function tcpkeepalivetime(tcp_keepalive_time)
|
function tcpkeepalivetime(tcp_keepalive_time)
|
||||||
-- Set tcp_keepalive_time
|
-- Set tcp_keepalive_time
|
||||||
sys.exec("sysctl -w net.ipv4.tcp_keepalive_time=%s" % tcp_keepalive_time)
|
luci.sys.exec("sysctl -w net.ipv4.tcp_keepalive_time=%s" % tcp_keepalive_time)
|
||||||
sys.exec("sed -i 's:^net.ipv4.tcp_keepalive_time=[0-9]*:net.ipv4.tcp_keepalive_time=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_keepalive_time)
|
luci.sys.exec("sed -i 's:^net.ipv4.tcp_keepalive_time=[0-9]*:net.ipv4.tcp_keepalive_time=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_keepalive_time)
|
||||||
end
|
end
|
||||||
|
|
||||||
function tcpfintimeout(tcp_fin_timeout)
|
function tcpfintimeout(tcp_fin_timeout)
|
||||||
-- Set tcp_fin_timeout
|
-- Set tcp_fin_timeout
|
||||||
sys.exec("sysctl -w net.ipv4.tcp_fin_timeout=%s" % tcp_fin_timeout)
|
luci.sys.exec("sysctl -w net.ipv4.tcp_fin_timeout=%s" % tcp_fin_timeout)
|
||||||
sys.exec("sed -i 's:^net.ipv4.tcp_fin_timeout=[0-9]*:net.ipv4.tcp_fin_timeout=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_fin_timeout)
|
luci.sys.exec("sed -i 's:^net.ipv4.tcp_fin_timeout=[0-9]*:net.ipv4.tcp_fin_timeout=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_fin_timeout)
|
||||||
end
|
end
|
||||||
|
|
||||||
function tcpsynretries(tcp_syn_retries)
|
function tcpsynretries(tcp_syn_retries)
|
||||||
-- Set tcp_syn_retries
|
-- Set tcp_syn_retries
|
||||||
sys.exec("sysctl -w net.ipv4.tcp_syn_retries=%s" % tcp_syn_retries)
|
luci.sys.exec("sysctl -w net.ipv4.tcp_syn_retries=%s" % tcp_syn_retries)
|
||||||
sys.exec("sed -i 's:^net.ipv4.tcp_syn_retries=[0-9]*:net.ipv4.tcp_syn_retries=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_syn_retries)
|
luci.sys.exec("sed -i 's:^net.ipv4.tcp_syn_retries=[0-9]*:net.ipv4.tcp_syn_retries=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_syn_retries)
|
||||||
end
|
end
|
||||||
|
|
||||||
function tcpfastopen(tcp_fastopen)
|
function tcpfastopen(tcp_fastopen)
|
||||||
-- Set tcp_fastopen
|
-- Set tcp_fastopen
|
||||||
sys.exec("sysctl -w net.ipv4.tcp_fastopen=%s" % tcp_fastopen)
|
luci.sys.exec("sysctl -w net.ipv4.tcp_fastopen=%s" % tcp_fastopen)
|
||||||
sys.exec("sed -i 's:^net.ipv4.tcp_fastopen=[0-3]*:net.ipv4.tcp_fastopen=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_fastopen)
|
luci.sys.exec("sed -i 's:^net.ipv4.tcp_fastopen=[0-3]*:net.ipv4.tcp_fastopen=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_fastopen)
|
||||||
end
|
end
|
||||||
|
|
||||||
function disableipv6(disable_ipv6)
|
function disableipv6(disable_ipv6)
|
||||||
|
@ -462,7 +452,7 @@ function disableipv6(disable_ipv6)
|
||||||
ucic:set("openmptcprouter","settings","disable_ipv6",disable_ipv6)
|
ucic:set("openmptcprouter","settings","disable_ipv6",disable_ipv6)
|
||||||
ucic:save("openmptcprouter")
|
ucic:save("openmptcprouter")
|
||||||
ucic:commit("openmptcprouter")
|
ucic:commit("openmptcprouter")
|
||||||
sys.exec("/etc/init.d/omr-6in4 restart >/dev/null 2>/dev/null")
|
luci.sys.call("/etc/init.d/omr-6in4 restart >/dev/null 2>/dev/null")
|
||||||
end
|
end
|
||||||
|
|
||||||
function externalcheck(externalcheck)
|
function externalcheck(externalcheck)
|
||||||
|
@ -473,7 +463,7 @@ end
|
||||||
|
|
||||||
function savevnstat(savevnstat)
|
function savevnstat(savevnstat)
|
||||||
-- Enable/disable save vnstat
|
-- Enable/disable save vnstat
|
||||||
sys.exec("uci -q set vnstat.@vnstat[0].backup=%s" % savevnstat)
|
luci.sys.exec("uci -q set vnstat.@vnstat[0].backup=%s" % savevnstat)
|
||||||
ucic:commit("vnstat")
|
ucic:commit("vnstat")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -532,27 +522,20 @@ end
|
||||||
|
|
||||||
function update_vps()
|
function update_vps()
|
||||||
-- Update VPS
|
-- Update VPS
|
||||||
local vpsgettoken = sys.exec("/etc/init.d/openmptcprouter-vps restart >/dev/null 2>/dev/null")
|
ucic:foreach("openmptcprouter", "server", function(s)
|
||||||
ucic:foreach("openmptcprouter", "server", function(section)
|
local serverip = ucic:get("openmptcprouter",s[".name"],"ip")
|
||||||
local servername = section[".name"]
|
local adminport = ucic:get("openmptcprouter",s[".name"],"port") or "65500"
|
||||||
local serverip = section["ip"] or ""
|
local token = ucic:get("openmptcprouter",s[".name"],"token") or ""
|
||||||
local adminport = section["port"] or "65500"
|
|
||||||
local token = section["token"] or ""
|
|
||||||
if token ~= "" then
|
if token ~= "" then
|
||||||
local updatevps = sys.exec('curl -4 --max-time 20 -s -k -H "Authorization: Bearer ' .. token .. '" https://' .. serverip .. ":" .. adminport .. "/update")
|
sys.exec('curl -4 --max-time 20 -s -k -H "Authorization: Bearer ' .. token .. '" https://' .. serverip .. ":" .. adminport .. "/update")
|
||||||
|
luci.sys.call("/etc/init.d/openmptcprouter-vps restart >/dev/null 2>/dev/null")
|
||||||
|
luci.http.redirect(luci.dispatcher.build_url("admin/system/openmptcprouter/status"))
|
||||||
|
return
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
local vpsgettoken = sys.exec("/etc/init.d/openmptcprouter-vps restart >/dev/null 2>/dev/null")
|
|
||||||
end
|
|
||||||
|
|
||||||
function get_rootfs()
|
|
||||||
local rootfs = {}
|
|
||||||
rootfs['format'] = luci.util.trim(sys.exec("mount | awk 'NR==1{print $5}'"))
|
|
||||||
return rootfs
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function get_ip(interface)
|
function get_ip(interface)
|
||||||
local ut = require "luci.util"
|
|
||||||
local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {})
|
local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {})
|
||||||
local ip = ""
|
local ip = ""
|
||||||
if dump and dump['ipv4-address'] then
|
if dump and dump['ipv4-address'] then
|
||||||
|
@ -570,42 +553,6 @@ function get_ip(interface)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if ip == "" then
|
|
||||||
local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {})
|
|
||||||
if dump and dump['l3_device'] then
|
|
||||||
local ifname = dump['l3_device']
|
|
||||||
ip = ut.trim(sys.exec("ip -4 -br addr ls dev %s | awk -F'[ /]+' '{print $3}'" % ifname))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return ip
|
|
||||||
end
|
|
||||||
|
|
||||||
function get_ip6(interface)
|
|
||||||
local ut = require "luci.util"
|
|
||||||
local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {})
|
|
||||||
local ip = ""
|
|
||||||
if dump and dump['ipv6-address'] then
|
|
||||||
local _, ipv6address
|
|
||||||
for _, ipv6address in ipairs(dump['ipv6-address']) do
|
|
||||||
ip = dump['ipv6-address'][_].address
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if ip == "" then
|
|
||||||
local dump = require("luci.util").ubus("network.interface.%s_6" % interface, "status", {})
|
|
||||||
if dump and dump['ipv6-address'] then
|
|
||||||
local _, ipv6address
|
|
||||||
for _, ipv6address in ipairs(dump['ipv6-address']) do
|
|
||||||
ip = dump['ipv6-address'][_].address
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if ip == "" then
|
|
||||||
local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {})
|
|
||||||
if dump and dump['l3_device'] then
|
|
||||||
local ifname = dump['l3_device']
|
|
||||||
ip = ut.trim(sys.exec("ip -6 -br addr ls dev %s | awk -F'[ /]+' '{print $3}'" % ifname))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return ip
|
return ip
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -668,56 +615,6 @@ function get_gateway(interface)
|
||||||
return gateway
|
return gateway
|
||||||
end
|
end
|
||||||
|
|
||||||
function get_gateway6(interface)
|
|
||||||
local gateway = ""
|
|
||||||
local dump = nil
|
|
||||||
|
|
||||||
dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {})
|
|
||||||
|
|
||||||
if dump and dump.route then
|
|
||||||
local _, route
|
|
||||||
for _, route in ipairs(dump.route) do
|
|
||||||
if dump.route[_].target == "::" then
|
|
||||||
gateway = dump.route[_].nexthop
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if gateway == "" then
|
|
||||||
if dump and dump.inactive and dump.inactive.route then
|
|
||||||
local _, route
|
|
||||||
for _, route in ipairs(dump.inactive.route) do
|
|
||||||
if dump.inactive.route[_].target == "::" then
|
|
||||||
gateway = dump.inactive.route[_].nexthop
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if gateway == "" then
|
|
||||||
dump = require("luci.util").ubus("network.interface.%s_6" % interface, "status", {})
|
|
||||||
|
|
||||||
if dump and dump.route then
|
|
||||||
local _, route
|
|
||||||
for _, route in ipairs(dump.route) do
|
|
||||||
if dump.route[_].target == "::" then
|
|
||||||
gateway = dump.route[_].nexthop
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if gateway == "" then
|
|
||||||
if dump and dump.inactive and dump.inactive.route then
|
|
||||||
local _, route
|
|
||||||
for _, route in ipairs(dump.inactive.route) do
|
|
||||||
if dump.inactive.route[_].target == "::" then
|
|
||||||
gateway = dump.inactive.route[_].nexthop
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return gateway
|
|
||||||
end
|
|
||||||
|
|
||||||
-- This function come from OverTheBox by OVH with many changes
|
-- This function come from OverTheBox by OVH with many changes
|
||||||
-- Copyright 2015 OVH <OverTheBox@ovh.net>
|
-- Copyright 2015 OVH <OverTheBox@ovh.net>
|
||||||
-- Simon Lelievre (simon.lelievre@corp.ovh.com)
|
-- Simon Lelievre (simon.lelievre@corp.ovh.com)
|
||||||
|
@ -782,25 +679,16 @@ function interfaces_status()
|
||||||
if mArray.openmptcprouter["dns"] == true then
|
if mArray.openmptcprouter["dns"] == true then
|
||||||
-- wanaddr
|
-- wanaddr
|
||||||
--mArray.openmptcprouter["wan_addr"] = uci:get("openmptcprouter","omr","public_detected_ipv4") or ""
|
--mArray.openmptcprouter["wan_addr"] = uci:get("openmptcprouter","omr","public_detected_ipv4") or ""
|
||||||
if mArray.openmptcprouter["service_addr"] ~= "" then
|
|
||||||
mArray.openmptcprouter["service_addr_ip"] = ut.trim(sys.exec("resolveip -4 -t 1 " .. mArray.openmptcprouter["service_addr"] .. " | head -n 1"))
|
|
||||||
mArray.openmptcprouter["service_addr_ip6"] = ut.trim(sys.exec("resolveip -6 -t 1 " .. mArray.openmptcprouter["service_addr"] .. " | head -n 1"))
|
|
||||||
end
|
|
||||||
|
|
||||||
if uci:get("openmptcprouter","settings","external_check") ~= "0" and mArray.openmptcprouter["dns"] == true then
|
if uci:get("openmptcprouter","settings","external_check") ~= "0" and mArray.openmptcprouter["dns"] == true then
|
||||||
if mArray.openmptcprouter["service_addr_ip"] ~= "" and mArray.openmptcprouter["service_addr_ip"] ~= nil then
|
mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("curl -4 -s -m " .. timeout .. " " .. check_ipv4_website))
|
||||||
mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("curl -4 -s -m " .. timeout .. " " .. check_ipv4_website))
|
if mArray.openmptcprouter["wan_addr"] == "" then
|
||||||
if mArray.openmptcprouter["wan_addr"] == "" then
|
mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("dig TXT +timeout=" .. timeout .. " +tries=1 +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'\"' '{print $2}'"))
|
||||||
mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("dig -4 TXT +timeout=" .. timeout .. " +tries=1 +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'\"' '{print $2}'"))
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
if mArray.openmptcprouter["ipv6"] == "enabled" or ( mArray.openmptcprouter["service_addr_ip6"] ~= "" and mArray.openmptcprouter["service_addr_ip6"] ~= nil) then
|
if mArray.openmptcprouter["ipv6"] == "enabled" then
|
||||||
mArray.openmptcprouter["wan_addr6"] = uci:get("openmptcprouter","omr","public_detected_ipv6") or ""
|
mArray.openmptcprouter["wan_addr6"] = uci:get("openmptcprouter","omr","public_detected_ipv6") or ""
|
||||||
if mArray.openmptcprouter["wan_addr6"] == "" then
|
if mArray.openmptcprouter["wan_addr6"] == "" then
|
||||||
mArray.openmptcprouter["wan_addr6"] = ut.trim(sys.exec("curl -6 -s -m " .. timeout .. " " .. check_ipv6_website))
|
mArray.openmptcprouter["wan_addr6"] = ut.trim(sys.exec("curl -6 -s -m " .. timeout .. " " .. check_ipv6_website))
|
||||||
if mArray.openmptcprouter["wan_addr6"] == "" then
|
|
||||||
mArray.openmptcprouter["wan_addr6"] = ut.trim(sys.exec("dig -6 TXT +timeout=" .. timeout .. " +tries=1 +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'\"' '{print $2}'"))
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
mArray.openmptcprouter["external_check"] = true
|
mArray.openmptcprouter["external_check"] = true
|
||||||
|
@ -822,6 +710,9 @@ function interfaces_status()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
if mArray.openmptcprouter["service_addr"] ~= "" then
|
||||||
|
mArray.openmptcprouter["service_addr_ip"] = ut.trim(sys.exec("resolveip -4 -t 1 " .. mArray.openmptcprouter["service_addr"] .. " | head -n 1"))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if mArray.openmptcprouter["service_addr"] ~= "" and mArray.openmptcprouter["service_addr"] ~= "127.0.0.1" then
|
if mArray.openmptcprouter["service_addr"] ~= "" and mArray.openmptcprouter["service_addr"] ~= "127.0.0.1" then
|
||||||
|
@ -837,105 +728,92 @@ function interfaces_status()
|
||||||
mArray.openmptcprouter["vps_hostname"] = "Server"
|
mArray.openmptcprouter["vps_hostname"] = "Server"
|
||||||
-- Get VPS info
|
-- Get VPS info
|
||||||
ucic:foreach("openmptcprouter", "server", function(s)
|
ucic:foreach("openmptcprouter", "server", function(s)
|
||||||
local serverips = uci:get("openmptcprouter",s[".name"],"ip") or { "" }
|
local serverip = uci:get("openmptcprouter",s[".name"],"ip") or ""
|
||||||
local master = uci:get("openmptcprouter",s[".name"],"master") or "1"
|
local master = uci:get("openmptcprouter",s[".name"],"master") or "1"
|
||||||
for key, value in pairs(serverips) do
|
if serverip ~= "" and (master == "1" or mArray.openmptcprouter["wan_addr"] == serverip) then
|
||||||
serverip = value
|
mArray.openmptcprouter["vps_omr_version"] = uci:get("openmptcprouter", s[".name"], "omr_version") or ""
|
||||||
if serverip ~= "" and (master == "1" or mArray.openmptcprouter["wan_addr"] == serverip or mArray.openmptcprouter["wan_addr6"] == serverip) and mArray.openmptcprouter["vps_admin"] == false then
|
mArray.openmptcprouter["vps_kernel"] = uci:get("openmptcprouter",s[".name"],"kernel") or ""
|
||||||
mArray.openmptcprouter["vps_omr_version"] = uci:get("openmptcprouter", s[".name"], "omr_version") or ""
|
mArray.openmptcprouter["vps_machine"] = uci:get("openmptcprouter",s[".name"],"machine") or ""
|
||||||
mArray.openmptcprouter["vps_kernel"] = uci:get("openmptcprouter",s[".name"],"kernel") or ""
|
timeout = uci:get("openmptcprouter","settings","status_vps_timeout") or "2"
|
||||||
mArray.openmptcprouter["vps_machine"] = uci:get("openmptcprouter",s[".name"],"machine") or ""
|
if uci:get("openmptcprouter",s[".name"],"admin_error") == "1" then
|
||||||
timeout = uci:get("openmptcprouter","settings","status_vps_timeout") or "2"
|
mArray.openmptcprouter["vps_admin_error"] = true
|
||||||
if uci:get("openmptcprouter",s[".name"],"admin_error") == "1" then
|
end
|
||||||
mArray.openmptcprouter["vps_admin_error"] = true
|
local adminport = uci:get("openmptcprouter",s[".name"],"port") or "65500"
|
||||||
end
|
local token = uci:get("openmptcprouter",s[".name"],"token") or ""
|
||||||
local adminport = uci:get("openmptcprouter",s[".name"],"port") or "65500"
|
if token ~= "" then
|
||||||
local token = uci:get("openmptcprouter",s[".name"],"token") or ""
|
local vpsinfo_json = sys.exec('curl -4 --max-time ' .. timeout .. ' -s -k -H "Authorization: Bearer ' .. token .. '" https://' .. serverip .. ':' .. adminport .. '/status')
|
||||||
if token ~= "" then
|
if vpsinfo_json ~= "" and vpsinfo_json ~= nil then
|
||||||
local vpsinfo_json = ""
|
local status, vpsinfo = pcall(function()
|
||||||
if mArray.openmptcprouter["service_addr_ip"] ~= "" then
|
return json.decode(vpsinfo_json)
|
||||||
vpsinfo_json = sys.exec('curl --max-time ' .. timeout .. ' -s -k -H "Authorization: Bearer ' .. token .. '" https://' .. serverip .. ':' .. adminport .. '/status')
|
end)
|
||||||
end
|
if status and vpsinfo.vps ~= nil then
|
||||||
if mArray.openmptcprouter["service_addr_ip6"] ~= "" then
|
mArray.openmptcprouter["vps_loadavg"] = vpsinfo.vps.loadavg or ""
|
||||||
vpsinfo_json = sys.exec('curl --max-time ' .. timeout .. ' -s -k -H "Authorization: Bearer ' .. token .. '" https://[' .. serverip .. ']:' .. adminport .. '/status')
|
mArray.openmptcprouter["vps_uptime"] = vpsinfo.vps.uptime or ""
|
||||||
end
|
mArray.openmptcprouter["vps_mptcp"] = vpsinfo.vps.mptcp.enabled or ""
|
||||||
if vpsinfo_json ~= "" and vpsinfo_json ~= nil then
|
mArray.openmptcprouter["vps_hostname"] = vpsinfo.vps.hostname or ""
|
||||||
local status, vpsinfo = pcall(function()
|
mArray.openmptcprouter["vps_time"] = vpsinfo.vps.time or ""
|
||||||
return json.decode(vpsinfo_json)
|
if vpsinfo.vps.kernel ~= nil then
|
||||||
end)
|
mArray.openmptcprouter["vps_kernel"] = vpsinfo.vps.kernel or ""
|
||||||
if status and vpsinfo.vps ~= nil then
|
end
|
||||||
mArray.openmptcprouter["vps_loadavg"] = vpsinfo.vps.loadavg or ""
|
if vpsinfo.vps.omr_version ~= nil then
|
||||||
mArray.openmptcprouter["vps_uptime"] = vpsinfo.vps.uptime or ""
|
mArray.openmptcprouter["vps_omr_version"] = vpsinfo.vps.omr_version or ""
|
||||||
mArray.openmptcprouter["vps_mptcp"] = vpsinfo.vps.mptcp.enabled or ""
|
end
|
||||||
mArray.openmptcprouter["vps_hostname"] = vpsinfo.vps.hostname or ""
|
if vpsinfo.vps.time ~= "" then
|
||||||
mArray.openmptcprouter["vps_time"] = vpsinfo.vps.time or ""
|
if math.abs(os.time() - vpsinfo.vps.time) > 10 then
|
||||||
if vpsinfo.vps.kernel ~= nil then
|
mArray.openmptcprouter["vps_time_accurate"] = false
|
||||||
mArray.openmptcprouter["vps_kernel"] = vpsinfo.vps.kernel or ""
|
else
|
||||||
|
mArray.openmptcprouter["vps_time_accurate"] = true
|
||||||
end
|
end
|
||||||
if vpsinfo.vps.omr_version ~= nil then
|
|
||||||
mArray.openmptcprouter["vps_omr_version"] = vpsinfo.vps.omr_version or ""
|
|
||||||
end
|
|
||||||
if vpsinfo.vps.time ~= "" then
|
|
||||||
if math.abs(os.time() - vpsinfo.vps.time) > 10 then
|
|
||||||
mArray.openmptcprouter["vps_time_accurate"] = false
|
|
||||||
else
|
|
||||||
mArray.openmptcprouter["vps_time_accurate"] = true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
mArray.openmptcprouter["vps_admin"] = true
|
|
||||||
mArray.openmptcprouter["vps_status"] = "UP"
|
|
||||||
mArray.openmptcprouter["vps_admin_error_msg"] = ""
|
|
||||||
else
|
|
||||||
uci:set("openmptcprouter",s[".name"],"admin_error","1")
|
|
||||||
mArray.openmptcprouter["vps_admin_error"] = true
|
|
||||||
uci:delete("openmptcprouter",s[".name"],"token")
|
|
||||||
uci:save("openmptcprouter",s[".name"])
|
|
||||||
uci:commit("openmptcprouter",s[".name"])
|
|
||||||
mArray.openmptcprouter["vps_admin"] = false
|
|
||||||
mArray.openmptcprouter["vps_admin_error_msg"] = "Answer error"
|
|
||||||
end
|
end
|
||||||
if status and vpsinfo.vpn ~= nil then
|
mArray.openmptcprouter["vps_admin"] = true
|
||||||
mArray.openmptcprouter["vpn_traffic_rx"] = vpsinfo.vpn.rx or "0"
|
mArray.openmptcprouter["vps_status"] = "UP"
|
||||||
mArray.openmptcprouter["vpn_traffic_tx"] = vpsinfo.vpn.tx or "0"
|
mArray.openmptcprouter["vps_admin_error_msg"] = ""
|
||||||
mArray.openmptcprouter["vpn_traffic"] = mArray.openmptcprouter["vpn_traffic_tx"] + mArray.openmptcprouter["vpn_traffic_rx"]
|
|
||||||
else
|
|
||||||
mArray.openmptcprouter["vpn_traffic_rx"] = "0"
|
|
||||||
mArray.openmptcprouter["vpn_traffic_tx"] = "0"
|
|
||||||
mArray.openmptcprouter["vpn_traffic"] = "0"
|
|
||||||
end
|
|
||||||
if status and vpsinfo.shadowsocks ~= nil then
|
|
||||||
mArray.openmptcprouter["ss_traffic"] = vpsinfo.shadowsocks.traffic or "0"
|
|
||||||
else
|
|
||||||
mArray.openmptcprouter["ss_traffic"] = "0"
|
|
||||||
end
|
|
||||||
if status and vpsinfo.v2ray ~= nil then
|
|
||||||
mArray.openmptcprouter["v2ray_traffic_rx"] = vpsinfo.v2ray.rx or "0"
|
|
||||||
mArray.openmptcprouter["v2ray_traffic_tx"] = vpsinfo.v2ray.tx or "0"
|
|
||||||
mArray.openmptcprouter["v2ray_traffic"] = mArray.openmptcprouter["v2ray_traffic_tx"] + mArray.openmptcprouter["v2ray_traffic_rx"]
|
|
||||||
else
|
|
||||||
mArray.openmptcprouter["v2ray_traffic_rx"] = "0"
|
|
||||||
mArray.openmptcprouter["v2ray_traffic_tx"] = "0"
|
|
||||||
mArray.openmptcprouter["v2ray_traffic"] = "0"
|
|
||||||
end
|
|
||||||
mArray.openmptcprouter["proxy_traffic"] = mArray.openmptcprouter["ss_traffic"] + mArray.openmptcprouter["v2ray_traffic"]
|
|
||||||
mArray.openmptcprouter["total_traffic"] = mArray.openmptcprouter["proxy_traffic"] + mArray.openmptcprouter["vpn_traffic"]
|
|
||||||
else
|
else
|
||||||
|
uci:set("openmptcprouter",s[".name"],"admin_error","1")
|
||||||
|
mArray.openmptcprouter["vps_admin_error"] = true
|
||||||
|
uci:delete("openmptcprouter",s[".name"],"token")
|
||||||
|
uci:save("openmptcprouter",s[".name"])
|
||||||
|
uci:commit("openmptcprouter",s[".name"])
|
||||||
mArray.openmptcprouter["vps_admin"] = false
|
mArray.openmptcprouter["vps_admin"] = false
|
||||||
mArray.openmptcprouter["vps_admin_error_msg"] = "No result"
|
mArray.openmptcprouter["vps_admin_error_msg"] = "Answer error"
|
||||||
end
|
end
|
||||||
|
if status and vpsinfo.vpn ~= nil then
|
||||||
|
mArray.openmptcprouter["vpn_traffic_rx"] = vpsinfo.vpn.rx or "0"
|
||||||
|
mArray.openmptcprouter["vpn_traffic_tx"] = vpsinfo.vpn.tx or "0"
|
||||||
|
mArray.openmptcprouter["vpn_traffic"] = mArray.openmptcprouter["vpn_traffic_tx"] + mArray.openmptcprouter["vpn_traffic_rx"]
|
||||||
|
else
|
||||||
|
mArray.openmptcprouter["vpn_traffic_rx"] = "0"
|
||||||
|
mArray.openmptcprouter["vpn_traffic_tx"] = "0"
|
||||||
|
mArray.openmptcprouter["vpn_traffic"] = "0"
|
||||||
|
end
|
||||||
|
if status and vpsinfo.shadowsocks ~= nil then
|
||||||
|
mArray.openmptcprouter["ss_traffic"] = vpsinfo.shadowsocks.traffic or "0"
|
||||||
|
else
|
||||||
|
mArray.openmptcprouter["ss_traffic"] = "0"
|
||||||
|
end
|
||||||
|
if status and vpsinfo.v2ray ~= nil then
|
||||||
|
mArray.openmptcprouter["v2ray_traffic_rx"] = vpsinfo.v2ray.rx or "0"
|
||||||
|
mArray.openmptcprouter["v2ray_traffic_tx"] = vpsinfo.v2ray.tx or "0"
|
||||||
|
mArray.openmptcprouter["v2ray_traffic"] = mArray.openmptcprouter["v2ray_traffic_tx"] + mArray.openmptcprouter["v2ray_traffic_rx"]
|
||||||
|
else
|
||||||
|
mArray.openmptcprouter["v2ray_traffic_rx"] = "0"
|
||||||
|
mArray.openmptcprouter["v2ray_traffic_tx"] = "0"
|
||||||
|
mArray.openmptcprouter["v2ray_traffic"] = "0"
|
||||||
|
end
|
||||||
|
mArray.openmptcprouter["proxy_traffic"] = mArray.openmptcprouter["ss_traffic"] + mArray.openmptcprouter["v2ray_traffic"]
|
||||||
|
mArray.openmptcprouter["total_traffic"] = mArray.openmptcprouter["proxy_traffic"] + mArray.openmptcprouter["vpn_traffic"]
|
||||||
else
|
else
|
||||||
mArray.openmptcprouter["vps_admin"] = false
|
mArray.openmptcprouter["vps_admin"] = false
|
||||||
mArray.openmptcprouter["vps_admin_error_msg"] = "No token yet available"
|
mArray.openmptcprouter["vps_admin_error_msg"] = "No result"
|
||||||
end
|
end
|
||||||
if mArray.openmptcprouter["vps_admin"] == false then
|
else
|
||||||
if mArray.openmptcprouter["service_addr_ip"] ~= "" then
|
mArray.openmptcprouter["vps_admin"] = false
|
||||||
local vpstest = sys.exec('curl --max-time ' .. timeout .. ' -s -k https://' .. serverip .. ':' .. adminport .. '/')
|
mArray.openmptcprouter["vps_admin_error_msg"] = "No token yet available"
|
||||||
elseif mArray.openmptcprouter["service_addr_ip6"] ~= "" then
|
end
|
||||||
local vpstest = sys.exec('curl --max-time ' .. timeout .. ' -s -k https://[' .. serverip .. ']:' .. adminport .. '/')
|
if mArray.openmptcprouter["vps_admin"] == false then
|
||||||
end
|
local vpstest = sys.exec('curl -4 --max-time ' .. timeout .. ' -s -k https://' .. serverip .. ':' .. adminport .. '/')
|
||||||
if vpstest == "" then
|
if vpstest == "" then
|
||||||
mArray.openmptcprouter["vps_admin_error_msg"] = mArray.openmptcprouter["vps_admin_error_msg"] .. " - No API script answer"
|
mArray.openmptcprouter["vps_admin_error_msg"] = mArray.openmptcprouter["vps_admin_error_msg"] .. " - No API script answer"
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -971,7 +849,7 @@ function interfaces_status()
|
||||||
else
|
else
|
||||||
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" then
|
||||||
local tunnel_ipv6_gw = uci:get("network","omr6in4","gateway")
|
local tunnel_ipv6_gw = uci:get("network","omr6in4","gateway")
|
||||||
local tunnel_ping6_test = ut.trim(sys.exec("ping6 -w 1 -c 1 " .. tunnel_ipv6_gw .. "%6in4-omr6in4 | grep '100% packet loss'"))
|
local tunnel_ping6_test = ut.trim(sys.exec("ping6 -w 1 -c 1 " .. tunnel_ipv6_gw .. "%6in4-omr6in4 | grep '100% packet loss'"))
|
||||||
if tunnel_ping6_test == "" then
|
if tunnel_ping6_test == "" then
|
||||||
|
@ -987,8 +865,6 @@ function interfaces_status()
|
||||||
end
|
end
|
||||||
elseif uci:get("openmptcprouter","settings","vpn") == "none" then
|
elseif uci:get("openmptcprouter","settings","vpn") == "none" then
|
||||||
mArray.openmptcprouter["tun_service"] = true
|
mArray.openmptcprouter["tun_service"] = true
|
||||||
mArray.openmptcprouter["tun_state"] = "NONE"
|
|
||||||
mArray.openmptcprouter["tun6_state"] = "NONE"
|
|
||||||
end
|
end
|
||||||
|
|
||||||
mArray.openmptcprouter["multi_vpn"] = false
|
mArray.openmptcprouter["multi_vpn"] = false
|
||||||
|
@ -1110,12 +986,9 @@ function interfaces_status()
|
||||||
local interface = section[".name"]
|
local interface = section[".name"]
|
||||||
local net = ntm:get_network(interface)
|
local net = ntm:get_network(interface)
|
||||||
local ipaddr = net:ipaddr() or ""
|
local ipaddr = net:ipaddr() or ""
|
||||||
local ip6addr = net:ip6addr() or ""
|
|
||||||
local gateway = section["gateway"] or ""
|
local gateway = section["gateway"] or ""
|
||||||
local gateway6 = section["ip6gw"] or ""
|
|
||||||
local multipath = section["multipath"]
|
local multipath = section["multipath"]
|
||||||
local enabled = section["auto"]
|
local enabled = section["auto"]
|
||||||
local proto = section["proto"] or ""
|
|
||||||
|
|
||||||
--if not ipaddr or not gateway then return end
|
--if not ipaddr or not gateway then return end
|
||||||
-- Don't show if0 in the overview
|
-- Don't show if0 in the overview
|
||||||
|
@ -1131,7 +1004,7 @@ function interfaces_status()
|
||||||
|
|
||||||
duplicateif = false
|
duplicateif = false
|
||||||
if ifname ~= "" and ifname ~= nil then
|
if ifname ~= "" and ifname ~= nil then
|
||||||
if allintf[ifname] and not section["ifname"]:match("^@.*") then
|
if allintf[ifname] then
|
||||||
connectivity = "ERROR"
|
connectivity = "ERROR"
|
||||||
duplicateif = true
|
duplicateif = true
|
||||||
else
|
else
|
||||||
|
@ -1145,19 +1018,13 @@ function interfaces_status()
|
||||||
if enabled == "0" then return end
|
if enabled == "0" then return end
|
||||||
|
|
||||||
local connectivity = "OK"
|
local connectivity = "OK"
|
||||||
if ipaddr == "" and ifname ~= nil and ifname ~= "" and proto ~= "dhcpv6" then
|
if ipaddr == "" and ifname ~= nil and ifname ~= "" then
|
||||||
ipaddr = ut.trim(sys.exec("ip -4 -br addr ls dev " .. ifname .. " | awk -F'[ /]+' '{print $3}' | tr -d '\n'"))
|
ipaddr = ut.trim(sys.exec("ip -4 -br addr ls dev " .. ifname .. " | awk -F'[ /]+' '{print $3}' | tr -d '\n'"))
|
||||||
end
|
end
|
||||||
if ipaddr == "" and ifname ~= nil and ifname ~= "" and proto ~= "dhcpv6" then
|
if ipaddr == "" and ifname ~= nil and ifname ~= "" then
|
||||||
ipaddr = ut.trim(sys.exec("ip -4 addr show dev " .. ifname .. " | grep -m 1 inet | awk '{print $2}' | cut -d'/' -s -f1 | tr -d '\n'"))
|
ipaddr = ut.trim(sys.exec("ip -4 addr show dev " .. ifname .. " | grep -m 1 inet | awk '{print $2}' | cut -d'/' -s -f1 | tr -d '\n'"))
|
||||||
end
|
end
|
||||||
if ip6addr == "" and ifname ~= nil and ifname ~= "" then
|
if ipaddr == "" then
|
||||||
ip6addr = ut.trim(sys.exec("ip -6 -br addr ls dev " .. ifname .. " | awk -F'[ /]+' '{print $3}' | tr -d '\n'"))
|
|
||||||
end
|
|
||||||
if ip6addr == "" and ifname ~= nil and ifname ~= "" then
|
|
||||||
ip6addr = ut.trim(sys.exec("ip -6 addr show dev " .. ifname .. " | grep -m 1 inet | awk '{print $2}' | cut -d'/' -s -f1 | tr -d '\n'"))
|
|
||||||
end
|
|
||||||
if ipaddr == "" and ip6addr == "" then
|
|
||||||
connectivity = "ERROR"
|
connectivity = "ERROR"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1194,18 +1061,14 @@ function interfaces_status()
|
||||||
|
|
||||||
-- Detect WAN gateway status
|
-- Detect WAN gateway status
|
||||||
local gw_ping = "UP"
|
local gw_ping = "UP"
|
||||||
local gw_ping6 = "UP"
|
if ifname ~= nil and ifname:match("^tun.*") and interface:match("^ovpn.*") then
|
||||||
if ifname ~= nil and not (ifname:match("^tun.*") or interface:match("^ovpn.*")) then
|
gateway = ut.trim(sys.exec("ip -4 r list dev " .. ifname .. " | grep via | grep -v default | grep -v metric | awk '{print $1}' | tr -d '\n'"))
|
||||||
if proto ~= "dhcpv6" then
|
|
||||||
gateway = ut.trim(sys.exec("ip -4 r list dev " .. ifname .. " | grep via | grep -v default | grep -v metric | awk '{print $1}' | tr -d '\n'"))
|
|
||||||
end
|
|
||||||
gateway6 = ut.trim(sys.exec("ip -6 r list dev " .. ifname .. " | grep via | grep -v default | grep -v metric | awk '{print $1}' | tr -d '\n'"))
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if gateway == "" and proto ~= "dhcpv6" then
|
if gateway == "" then
|
||||||
gateway = get_gateway(interface)
|
gateway = get_gateway(interface)
|
||||||
end
|
end
|
||||||
if gateway == "" and ifname ~= nil and ifname ~= "" and proto ~= "dhcpv6" then
|
if gateway == "" and ifname ~= nil and ifname ~= "" then
|
||||||
if fs.access("/sys/class/net/" .. ifname) then
|
if fs.access("/sys/class/net/" .. ifname) then
|
||||||
gateway = ut.trim(sys.exec("ip -4 r list dev " .. ifname .. " | grep kernel | awk '/proto kernel/ {print $1}' | grep -v / | tr -d '\n'"))
|
gateway = ut.trim(sys.exec("ip -4 r list dev " .. ifname .. " | grep kernel | awk '/proto kernel/ {print $1}' | grep -v / | tr -d '\n'"))
|
||||||
if gateway == "" then
|
if gateway == "" then
|
||||||
|
@ -1213,50 +1076,18 @@ function interfaces_status()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if gateway6 == "" then
|
|
||||||
gateway6 = get_gateway6(interface)
|
|
||||||
end
|
|
||||||
if gateway6 == "" and ifname ~= nil and ifname ~= "" then
|
|
||||||
if fs.access("/sys/class/net/" .. ifname) then
|
|
||||||
gateway6 = ut.trim(sys.exec("ip -6 r list dev " .. ifname .. " | grep kernel | awk '/proto kernel/ {print $1}' | grep -v / | tr -d '\n'"))
|
|
||||||
if gateway6 == "" then
|
|
||||||
gateway6 = ut.trim(sys.exec("ip -6 r list dev " .. ifname .. " | grep default | awk '{print $3}' | tr -d '\n'"))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
local signal = ""
|
local signal = ""
|
||||||
local operator = ""
|
local operator = ""
|
||||||
local phonenumber = ""
|
local phonenumber = ""
|
||||||
local donglestate = ""
|
local donglestate = ""
|
||||||
local networktype = ""
|
local networktype = ""
|
||||||
if gateway ~= "" or gateway6 ~= "" then
|
if gateway ~= "" then
|
||||||
if uci:get("openmptcprouter", "settings", "disablegwping") ~= "1" and connectivity ~= "ERROR" then
|
if uci:get("openmptcprouter", "settings", "disablegwping") ~= "1" and connectivity ~= "ERROR" then
|
||||||
if gateway ~= "" then
|
local gw_ping_test = ut.trim(sys.exec("ping -w 1 -c 1 " .. gateway .. " | grep '100% packet loss'"))
|
||||||
local gw_ping_test = ""
|
if gw_ping_test ~= "" then
|
||||||
if ifname ~= "" and ifname ~= nil then
|
gw_ping = "DOWN"
|
||||||
gw_ping_test = ut.trim(sys.exec("ping -w 1 -c 1 -I " .. ifname .. " " .. gateway .. " | grep '100% packet loss'"))
|
if connectivity == "OK" then
|
||||||
else
|
connectivity = "WARNING"
|
||||||
gw_ping_test = ut.trim(sys.exec("ping -w 1 -c 1 " .. gateway .. " | grep '100% packet loss'"))
|
|
||||||
end
|
|
||||||
if gw_ping_test ~= "" then
|
|
||||||
gw_ping = "DOWN"
|
|
||||||
if connectivity == "OK" then
|
|
||||||
connectivity = "WARNING"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if gateway6 ~= "" then
|
|
||||||
local gw_ping6_test = ""
|
|
||||||
if ifname ~= "" and ifname ~= nil then
|
|
||||||
gw_ping6_test = ut.trim(sys.exec("ping -w 1 -c 1 -I " .. ifname .. " " .. gateway6 .. " | grep '100% packet loss'"))
|
|
||||||
else
|
|
||||||
gw_ping6_test = ut.trim(sys.exec("ping -w 1 -c 1 " .. gateway6 .. " | grep '100% packet loss'"))
|
|
||||||
end
|
|
||||||
if gw_ping6_test ~= "" then
|
|
||||||
gw_ping6 = "DOWN"
|
|
||||||
if connectivity == "OK" then
|
|
||||||
connectivity = "WARNING"
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1270,13 +1101,13 @@ function interfaces_status()
|
||||||
networktype = ut.trim(sys.exec("echo '".. intfdata .. "' | awk -F';' '{print $5}'"))
|
networktype = ut.trim(sys.exec("echo '".. intfdata .. "' | awk -F';' '{print $5}'"))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
elseif gateway == "" and gateway6 == "" then
|
elseif gateway == "" then
|
||||||
gw_ping = "DOWN"
|
gw_ping = "DOWN"
|
||||||
connectivity = "ERROR"
|
connectivity = "ERROR"
|
||||||
end
|
end
|
||||||
|
|
||||||
if ifname ~= "" and ifname ~= nil then
|
if ifname ~= "" and ifname ~= nil then
|
||||||
--local proto = section['proto']
|
local proto = section['proto']
|
||||||
if proto == "qmi" then
|
if proto == "qmi" then
|
||||||
local device = section['device']
|
local device = section['device']
|
||||||
intfdata = ut.trim(sys.exec("omr-qmi " .. device .. " all"))
|
intfdata = ut.trim(sys.exec("omr-qmi " .. device .. " all"))
|
||||||
|
@ -1306,7 +1137,7 @@ function interfaces_status()
|
||||||
local latency = ""
|
local latency = ""
|
||||||
local server_ping = ""
|
local server_ping = ""
|
||||||
--if connectivity ~= "ERROR" and ifname ~= "" and gateway ~= "" and gw_ping ~= "DOWN" and ifname ~= nil and mArray.openmptcprouter["service_addr"] ~= "" and ipaddr ~= "" then
|
--if connectivity ~= "ERROR" and ifname ~= "" and gateway ~= "" and gw_ping ~= "DOWN" and ifname ~= nil and mArray.openmptcprouter["service_addr"] ~= "" and ipaddr ~= "" then
|
||||||
if ifname ~= "" and (gateway ~= "" or gateway6 ~= "") and gw_ping ~= "DOWN" and ifname ~= nil and mArray.openmptcprouter["service_addr"] ~= "" and (ipaddr ~= "" or ip6addr ~= "") and connectivity ~= "ERROR" then
|
if ifname ~= "" and gateway ~= "" and gw_ping ~= "DOWN" and ifname ~= nil and mArray.openmptcprouter["service_addr"] ~= "" and ipaddr ~= "" and connectivity ~= "ERROR" then
|
||||||
local serverip = mArray.openmptcprouter["service_addr"]
|
local serverip = mArray.openmptcprouter["service_addr"]
|
||||||
if serverip == "127.0.0.1" then
|
if serverip == "127.0.0.1" then
|
||||||
serverip = mArray.openmptcprouter["wan_addr"]
|
serverip = mArray.openmptcprouter["wan_addr"]
|
||||||
|
@ -1329,7 +1160,7 @@ function interfaces_status()
|
||||||
|
|
||||||
local multipath_available = ""
|
local multipath_available = ""
|
||||||
local multipath_available_state = ""
|
local multipath_available_state = ""
|
||||||
if connectivity ~= "ERROR" and mArray.openmptcprouter["dns"] == true and ifname ~= nil and ifname ~= "" and (gateway ~= "" or gateway6 ~= "") and (gw_ping == "UP" or gw_ping6 == "UP") then
|
if connectivity ~= "ERROR" and mArray.openmptcprouter["dns"] == true and ifname ~= nil and ifname ~= "" and gateway ~= "" and gw_ping == "UP" then
|
||||||
-- Test if multipath can work on the connection
|
-- Test if multipath can work on the connection
|
||||||
local multipath_available_state = uci:get("openmptcprouter",interface,"mptcp_status") or ""
|
local multipath_available_state = uci:get("openmptcprouter",interface,"mptcp_status") or ""
|
||||||
if multipath_available_state == "" then
|
if multipath_available_state == "" then
|
||||||
|
@ -1366,9 +1197,7 @@ function interfaces_status()
|
||||||
-- end
|
-- end
|
||||||
local mtu = ""
|
local mtu = ""
|
||||||
local whois = ""
|
local whois = ""
|
||||||
local whois6 = ""
|
|
||||||
local publicIP = ""
|
local publicIP = ""
|
||||||
local publicIP6 = ""
|
|
||||||
|
|
||||||
if connectivity ~= "ERROR" then
|
if connectivity ~= "ERROR" then
|
||||||
if ifname ~= nil and ifname:match("^tun.*") and interface:match("^ovpn.*") then
|
if ifname ~= nil and ifname:match("^tun.*") and interface:match("^ovpn.*") then
|
||||||
|
@ -1376,39 +1205,24 @@ function interfaces_status()
|
||||||
if ifname ~= nil and publicIP == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then
|
if ifname ~= nil and publicIP == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then
|
||||||
publicIP = ut.trim(sys.exec("omr-ip-intf " .. get_device(interface:sub(5))))
|
publicIP = ut.trim(sys.exec("omr-ip-intf " .. get_device(interface:sub(5))))
|
||||||
end
|
end
|
||||||
publicIP6 = uci:get("openmptcprouter",interface:sub(5),"publicip6") or ""
|
|
||||||
if ifname ~= nil and publicIP6 == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then
|
|
||||||
publicIP6 = ut.trim(sys.exec("omr-ip6-intf " .. get_device(interface:sub(5))))
|
|
||||||
end
|
|
||||||
else
|
else
|
||||||
publicIP = uci:get("openmptcprouter",interface,"publicip") or ""
|
publicIP = uci:get("openmptcprouter",interface,"publicip") or ""
|
||||||
if ifname ~= nil and publicIP == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then
|
if ifname ~= nil and publicIP == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then
|
||||||
publicIP = ut.trim(sys.exec("omr-ip-intf " .. ifname))
|
publicIP = ut.trim(sys.exec("omr-ip-intf " .. ifname))
|
||||||
end
|
end
|
||||||
publicIP6 = uci:get("openmptcprouter",interface,"publicip6") or ""
|
|
||||||
if ifname ~= nil and publicIP6 == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then
|
|
||||||
publicIP6 = ut.trim(sys.exec("omr-ip6-intf " .. ifname))
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
if publicIP ~= "" then
|
if publicIP ~= "" then
|
||||||
whois = uci:get("openmptcprouter",interface,"asn") or ""
|
whois = uci:get("openmptcprouter",interface,"asn") or ""
|
||||||
if whois == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then
|
if whois == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then
|
||||||
whois = ut.trim(sys.exec("whois " .. publicIP .. " | grep -i 'netname' | awk '{print $2}'"))
|
--whois = ut.trim(sys.exec("whois " .. publicIP .. " | grep -i 'netname' | awk '{print $2}'"))
|
||||||
--whois = ut.trim(sys.exec("wget -4 -qO- -T 1 'http://api.iptoasn.com/v1/as/ip/" .. publicIP .. "' | jsonfilter -q -e '@.as_description'"))
|
whois = ut.trim(sys.exec("wget -4 -qO- -T 1 'http://api.iptoasn.com/v1/as/ip/" .. publicIP .. "' | jsonfilter -q -e '@.as_description'"))
|
||||||
end
|
|
||||||
end
|
|
||||||
if publicIP6 ~= "" then
|
|
||||||
whois6 = uci:get("openmptcprouter",interface,"asn") or ""
|
|
||||||
if whois6 == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then
|
|
||||||
whois6 = ut.trim(sys.exec("whois " .. publicIP6 .. " | grep -i 'netname' | awk '{print $2}'"))
|
|
||||||
--whois6 = ut.trim(sys.exec("wget -6 -qO- -T 1 'http://api.iptoasn.com/v1/as/ip/" .. publicIP6 .. "' | jsonfilter -q -e '@.as_description'"))
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if ifname ~= "" and ifname ~= nil then
|
if ifname ~= "" and ifname ~= nil then
|
||||||
if fs.access("/sys/class/net/" .. ifname) then
|
if fs.access("/sys/class/net/" .. ifname) then
|
||||||
mtu = ut.trim(sys.exec("cat /sys/class/net/" .. ifname .. "/mtu | tr -d '\n'"))
|
mtu = ut.trim(sys.exec("cat /sys/class/net/" .. ifname .. "/mtu | tr -d '\n'"))
|
||||||
if mtu == "" and interface ~= nil then
|
if mtu == "" and interface ~= nil then
|
||||||
mtu = uci:get("openmptcprouter",interface,"mtu") or ""
|
mtu = uci:get("openmptcprouter",interface,"mtu") or ""
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1425,22 +1239,17 @@ function interfaces_status()
|
||||||
--link = net:adminlink() or "",
|
--link = net:adminlink() or "",
|
||||||
ifname = ifname,
|
ifname = ifname,
|
||||||
ipaddr = ipaddr,
|
ipaddr = ipaddr,
|
||||||
ip6addr = ip6addr,
|
|
||||||
gateway = gateway,
|
gateway = gateway,
|
||||||
gateway6 = gateway6,
|
|
||||||
multipath = section["multipath"],
|
multipath = section["multipath"],
|
||||||
status = connectivity,
|
status = connectivity,
|
||||||
wanip = publicIP,
|
wanip = publicIP,
|
||||||
wanip6 = publicIP6,
|
|
||||||
latency = latency,
|
latency = latency,
|
||||||
mtu = mtu,
|
mtu = mtu,
|
||||||
whois = whois or "unknown",
|
whois = whois or "unknown",
|
||||||
whois6 = whois6 or "unknown",
|
|
||||||
qos = section["trafficcontrol"],
|
qos = section["trafficcontrol"],
|
||||||
download = section["download"],
|
download = section["download"],
|
||||||
upload = section["upload"],
|
upload = section["upload"],
|
||||||
gw_ping = gw_ping,
|
gw_ping = gw_ping,
|
||||||
gw_ping6 = gw_ping6,
|
|
||||||
server_ping = server_ping,
|
server_ping = server_ping,
|
||||||
ipv6_discover = ipv6_discover,
|
ipv6_discover = ipv6_discover,
|
||||||
multipath_available = multipath_available,
|
multipath_available = multipath_available,
|
||||||
|
@ -1451,7 +1260,6 @@ function interfaces_status()
|
||||||
phonenumber = phonenumber,
|
phonenumber = phonenumber,
|
||||||
donglestate = donglestate,
|
donglestate = donglestate,
|
||||||
networktype = networktype,
|
networktype = networktype,
|
||||||
proto = proto,
|
|
||||||
rx = rx,
|
rx = rx,
|
||||||
tx = tx,
|
tx = tx,
|
||||||
}
|
}
|
||||||
|
@ -1532,11 +1340,6 @@ function _ipv6_discover(interface)
|
||||||
end
|
end
|
||||||
|
|
||||||
local methods = {
|
local methods = {
|
||||||
getrootfs = {
|
|
||||||
call = function()
|
|
||||||
return get_rootfs()
|
|
||||||
end
|
|
||||||
},
|
|
||||||
status = {
|
status = {
|
||||||
call = function()
|
call = function()
|
||||||
return interfaces_status()
|
return interfaces_status()
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
# See /LICENSE for more information.
|
|
||||||
# This is free software, licensed under the GNU General Public License v2.
|
|
||||||
|
|
||||||
include $(TOPDIR)/rules.mk
|
|
||||||
|
|
||||||
LUCI_TITLE:=LuCI support for sysupgrades
|
|
||||||
LUCI_DEPENDS:=+luci-base +uhttpd-mod-ubus +rpcd +rpcd-mod-rpcsys +cgi-io
|
|
||||||
|
|
||||||
include $(TOPDIR)/feeds/luci/luci.mk
|
|
||||||
|
|
||||||
# call BuildPackage - OpenWrt buildroot signature
|
|
|
@ -1,123 +0,0 @@
|
||||||
<%
|
|
||||||
-- all lua code provided by https://github.com/jow-/
|
|
||||||
-- thank you very much!
|
|
||||||
|
|
||||||
function apply_acls(filename, session)
|
|
||||||
local json = require "luci.jsonc"
|
|
||||||
local util = require "luci.util"
|
|
||||||
local fs = require "nixio.fs"
|
|
||||||
|
|
||||||
local grants = { }
|
|
||||||
|
|
||||||
local acl = json.parse(fs.readfile(filename))
|
|
||||||
if type(acl) ~= "table" then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local group, perms
|
|
||||||
for group, perms in pairs(acl) do
|
|
||||||
local perm, scopes
|
|
||||||
for perm, scopes in pairs(perms) do
|
|
||||||
if type(scopes) == "table" then
|
|
||||||
local scope, objects
|
|
||||||
for scope, objects in pairs(scopes) do
|
|
||||||
if type(objects) == "table" then
|
|
||||||
if not grants[scope] then
|
|
||||||
grants[scope] = { }
|
|
||||||
end
|
|
||||||
|
|
||||||
if next(objects) == 1 then
|
|
||||||
local _, object
|
|
||||||
for _, object in ipairs(objects) do
|
|
||||||
if not grants[scope][object] then
|
|
||||||
grants[scope][object] = { }
|
|
||||||
end
|
|
||||||
table.insert(grants[scope][object], perm)
|
|
||||||
end
|
|
||||||
else
|
|
||||||
local object, funcs
|
|
||||||
for object, funcs in pairs(objects) do
|
|
||||||
if type(funcs) == "table" then
|
|
||||||
local _, func
|
|
||||||
for _, func in ipairs(funcs) do
|
|
||||||
if not grants[scope][object] then
|
|
||||||
grants[scope][object] = { }
|
|
||||||
end
|
|
||||||
table.insert(grants[scope][object], func)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local _, scope, object, func
|
|
||||||
for scope, _ in pairs(grants) do
|
|
||||||
local objects = { }
|
|
||||||
for object, _ in pairs(_) do
|
|
||||||
for _, func in ipairs(_) do
|
|
||||||
table.insert(objects, { object, func })
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
util.ubus("session", "grant", {
|
|
||||||
ubus_rpc_session = session,
|
|
||||||
scope = scope, objects = objects
|
|
||||||
})
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
apply_acls("/usr/share/rpcd/acl.d/sysupgrade.json", luci.dispatcher.context.authsession)
|
|
||||||
%>
|
|
||||||
<%+header%>
|
|
||||||
<h2 name="content"><%:Sysupgrade%></h2>
|
|
||||||
<div class="cbi-map-descr">
|
|
||||||
<%:Easily search and install new releases and package upgrades.%>
|
|
||||||
</div>
|
|
||||||
<div style="display: none" id="status_box" class="alert-message info"></div>
|
|
||||||
<div style="display: none" id="packages" class="alert-message success"></div>
|
|
||||||
<p>
|
|
||||||
<textarea style="display: none; width: 100%;" id="edit_packages" rows="15"></textarea>
|
|
||||||
</p>
|
|
||||||
<fieldset class="cbi-section">
|
|
||||||
<form method="post" action="">
|
|
||||||
<div class="cbi-selection-node">
|
|
||||||
<div class="cbi-value" id="keep_container" style="display: none">
|
|
||||||
<div class="cbi-section-descr">
|
|
||||||
<%:Check "Keep settings" to retain the current configuration.%>
|
|
||||||
</div>
|
|
||||||
<label class="cbi-value-title" for="keep"><%:Keep settings:%></label>
|
|
||||||
<div class="cbi-value-field">
|
|
||||||
<input name="keep" id="keep" checked="checked" type="checkbox">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="cbi-value" id="edit_button" style="display: none">
|
|
||||||
<div class="cbi-value-field">
|
|
||||||
<input class="cbi-button" value="<%:Edit installed packages%>" onclick="edit_packages()" type="button">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="cbi-value cbi-value" id="server_div" style="display:none">
|
|
||||||
<label class="cbi-value-title" for="server"><%:Server:%></label>
|
|
||||||
<div class="cbi-value-field">
|
|
||||||
<input onclick="edit_server()" class="cbi-button cbi-button-edit" value="" type="button" id="server" name="server">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="cbi-value cbi-value-last">
|
|
||||||
<div class="cbi-value-field">
|
|
||||||
<input class="cbi-button cbi-button-apply" value="<%:Search for upgrades%>" style="display: none" onclick="upgrade_check()" type="button" id="upgrade_button">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</fieldset>
|
|
||||||
<script type="text/javascript">
|
|
||||||
data = {};
|
|
||||||
data["ubus_rpc_session"] = "<%=luci.dispatcher.context.authsession%>"
|
|
||||||
origin = document.location.href.replace(location.pathname, "")
|
|
||||||
ubus_url = origin + "/ubus/"
|
|
||||||
</script>
|
|
||||||
<script type="text/javascript" src="<%=resource%>/sysupgrade.js"></script>
|
|
||||||
<%+footer%>
|
|
|
@ -1,81 +0,0 @@
|
||||||
msgid ""
|
|
||||||
msgstr "Content-Type: text/plain; charset=UTF-8"
|
|
||||||
|
|
||||||
#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:90
|
|
||||||
msgid "Check \"Keep settings\" to retain the current configuration."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:344
|
|
||||||
msgid "Downloading firmware to web browser memory"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:78
|
|
||||||
msgid "Easily search and install new releases and package upgrades."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:99
|
|
||||||
msgid "Edit installed packages"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:269
|
|
||||||
msgid "Flashing firmware. Don't unpower device"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:192
|
|
||||||
msgid "Installed version:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:92
|
|
||||||
msgid "Keep settings:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:215
|
|
||||||
msgid "No upgrades available"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:285
|
|
||||||
msgid "Rebooting device - please wait!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:209
|
|
||||||
msgid "Request firmware"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:110
|
|
||||||
msgid "Search for upgrades"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:165
|
|
||||||
msgid "Searching for upgrades"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:103
|
|
||||||
msgid "Server:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:289
|
|
||||||
msgid "Success! Please reload web interface"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:76
|
|
||||||
#: luci-app-sysupgrade/root/usr/share/luci/menu.d/luci-app-sysupgrade.json:3
|
|
||||||
msgid "Sysupgrade"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:320
|
|
||||||
msgid "Upload of firmware failed, please retry by reloading web interface"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:305
|
|
||||||
msgid "Uploading firmware to device"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:299
|
|
||||||
msgid ""
|
|
||||||
"Web interface could not reconnect to your device. Please reload web "
|
|
||||||
"interface or check device manually"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: luci-app-sysupgrade/root/usr/share/rpcd/acl.d/sysupgrade.json:3
|
|
||||||
msgid "sysupgrade via rpcd and luci"
|
|
||||||
msgstr ""
|
|
|
@ -1,20 +0,0 @@
|
||||||
#!/bin/sh /etc/rc.common
|
|
||||||
# Copyright (C) 2020 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
|
|
||||||
# Released under GPL 3. See LICENSE for the full terms.
|
|
||||||
|
|
||||||
{
|
|
||||||
START=90
|
|
||||||
STOP=10
|
|
||||||
USE_PROCD=1
|
|
||||||
}
|
|
||||||
|
|
||||||
start_service()
|
|
||||||
{
|
|
||||||
if [ -f /etc/backup/installed_packages.txt ]; then
|
|
||||||
if [ "$(opkg -V0 update)" = "" ]; then
|
|
||||||
grep "\toverlay" /etc/backup/installed_packages.txt | cut -f1 | xargs -r opkg -V0 install
|
|
||||||
rm /etc/backup/installed_packages.txt
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
/etc/init.d/uhttpd restart
|
|
||||||
/etc/init.d/rpcd reload
|
|
||||||
|
|
||||||
[ -e /etc/config/sysupgrade ] && return 0
|
|
||||||
|
|
||||||
touch /etc/config/sysupgrade
|
|
||||||
|
|
||||||
uci -q batch <<EOF
|
|
||||||
set sysupgrade.server=server
|
|
||||||
set sysupgrade.server.url='https://download.openmptcprouter.com'
|
|
||||||
set sysupgrade.client=client
|
|
||||||
set sysupgrade.client.upgrade_packages='0'
|
|
||||||
set sysupgrade.client.auto_search='0'
|
|
||||||
set sysupgrade.client.advanced_mode='0'
|
|
||||||
commit sysupgrade
|
|
||||||
EOF
|
|
||||||
|
|
||||||
return 0
|
|
|
@ -1,13 +0,0 @@
|
||||||
{
|
|
||||||
"admin/system/sysupgrade": {
|
|
||||||
"title": "Sysupgrade",
|
|
||||||
"order": 1,
|
|
||||||
"action": {
|
|
||||||
"type": "template",
|
|
||||||
"path": "sysupgrade"
|
|
||||||
},
|
|
||||||
"depends": {
|
|
||||||
"acl": [ "sysupgrade" ]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,34 +0,0 @@
|
||||||
{
|
|
||||||
"sysupgrade": {
|
|
||||||
"description": "sysupgrade via rpcd and luci",
|
|
||||||
"read": {
|
|
||||||
"ubus": {
|
|
||||||
"rpc-sys": [
|
|
||||||
"upgrade_start",
|
|
||||||
"packagelist"
|
|
||||||
],
|
|
||||||
"system": [
|
|
||||||
"board",
|
|
||||||
"info"
|
|
||||||
],
|
|
||||||
"openmptcprouter": [
|
|
||||||
"rootfs"
|
|
||||||
],
|
|
||||||
"uci": [
|
|
||||||
"get", "set", "commit"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"uci": [
|
|
||||||
"sysupgrade"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"write": {
|
|
||||||
"cgi-io": [
|
|
||||||
"upload"
|
|
||||||
],
|
|
||||||
"uci": [
|
|
||||||
"sysupgrade"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,387 +0,0 @@
|
||||||
'require ui';
|
|
||||||
function $(s) {
|
|
||||||
return document.getElementById(s.substring(1));
|
|
||||||
}
|
|
||||||
|
|
||||||
function show(s) {
|
|
||||||
$(s).style.display = 'block';
|
|
||||||
}
|
|
||||||
|
|
||||||
function hide(s) {
|
|
||||||
$(s).style.display = 'none';
|
|
||||||
}
|
|
||||||
|
|
||||||
function set_server() {
|
|
||||||
hide("#status_box");
|
|
||||||
data.url = $("#server").value;
|
|
||||||
ubus_call("uci", "set", {
|
|
||||||
"config": "sysupgrade",
|
|
||||||
"section": "server",
|
|
||||||
values: {
|
|
||||||
"url": data.url
|
|
||||||
}
|
|
||||||
})
|
|
||||||
ubus_call("uci", "commit", {
|
|
||||||
"config": "sysupgrade"
|
|
||||||
})
|
|
||||||
var server_button = $("#server")
|
|
||||||
server_button.type = 'button';
|
|
||||||
server_button.className = 'cbi-button cbi-button-edit';
|
|
||||||
server_button.parentElement.removeChild($("#button_set"));
|
|
||||||
server_button.onclick = edit_server;
|
|
||||||
}
|
|
||||||
|
|
||||||
function edit_server() {
|
|
||||||
$("#server").type = 'text';
|
|
||||||
$("#server").onkeydown = function(event) {
|
|
||||||
if (event.key === 'Enter') {
|
|
||||||
set_server();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$("#server").className = '';
|
|
||||||
$("#server").onclick = null;
|
|
||||||
|
|
||||||
var button_set = document.createElement("input");
|
|
||||||
button_set.type = "button";
|
|
||||||
button_set.value = "Save";
|
|
||||||
button_set.name = "button_set";
|
|
||||||
button_set.id = "button_set";
|
|
||||||
button_set.className = 'cbi-button cbi-button-save';
|
|
||||||
button_set.onclick = set_server
|
|
||||||
$("#server").parentElement.appendChild(button_set);
|
|
||||||
}
|
|
||||||
|
|
||||||
function edit_packages() {
|
|
||||||
data.edit_packages = true
|
|
||||||
hide("#edit_button");
|
|
||||||
$("#edit_packages").value = data.packages.join("\n");
|
|
||||||
show("#edit_packages");
|
|
||||||
}
|
|
||||||
|
|
||||||
// initial setup, get system information
|
|
||||||
function setup() {
|
|
||||||
ubus_call("rpc-sys", "packagelist", {}, "packages");
|
|
||||||
ubus_call("system", "board", {}, "release");
|
|
||||||
ubus_call("system", "board", {}, "board_name");
|
|
||||||
ubus_call("system", "info", {}, "memory");
|
|
||||||
ubus_call("openmptcprouter", "rootfs", {}, "format");
|
|
||||||
uci_get({
|
|
||||||
"config": "sysupgrade",
|
|
||||||
"section": "server",
|
|
||||||
"option": "url"
|
|
||||||
})
|
|
||||||
uci_get({
|
|
||||||
"config": "sysupgrade",
|
|
||||||
"section": "client",
|
|
||||||
"option": "upgrade_packages"
|
|
||||||
})
|
|
||||||
uci_get({
|
|
||||||
"config": "sysupgrade",
|
|
||||||
"section": "client",
|
|
||||||
"option": "advanced_mode"
|
|
||||||
})
|
|
||||||
uci_get({
|
|
||||||
"config": "sysupgrade",
|
|
||||||
"section": "client",
|
|
||||||
"option": "auto_search"
|
|
||||||
})
|
|
||||||
setup_ready();
|
|
||||||
}
|
|
||||||
|
|
||||||
function setup_ready() {
|
|
||||||
// checks if a async ubus calls have finished
|
|
||||||
if (ubus_counter != ubus_closed) {
|
|
||||||
setTimeout(setup_ready, 300)
|
|
||||||
} else {
|
|
||||||
if (data.auto_search == 1) {
|
|
||||||
upgrade_check();
|
|
||||||
} else {
|
|
||||||
show("#upgrade_button");
|
|
||||||
show("#server_div");
|
|
||||||
$("#server").value = data.url;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function uci_get(option) {
|
|
||||||
// simple wrapper to get a uci value store in data.<option>
|
|
||||||
ubus_call("uci", "get", option, option["option"])
|
|
||||||
}
|
|
||||||
|
|
||||||
ubus_counter = 0;
|
|
||||||
ubus_closed = 0;
|
|
||||||
|
|
||||||
function ubus_call(command, argument, params, variable) {
|
|
||||||
var request_data = {};
|
|
||||||
request_data.jsonrpc = "2.0";
|
|
||||||
request_data.id = ubus_counter;
|
|
||||||
request_data.method = "call";
|
|
||||||
request_data.params = [data.ubus_rpc_session, command, argument, params]
|
|
||||||
var request_json = JSON.stringify(request_data)
|
|
||||||
ubus_counter++;
|
|
||||||
var request = new XMLHttpRequest();
|
|
||||||
request.open("POST", ubus_url, true);
|
|
||||||
request.setRequestHeader("Content-type", "application/json");
|
|
||||||
request.onload = function(event) {
|
|
||||||
if (request.status === 200) {
|
|
||||||
var response = JSON.parse(request.responseText)
|
|
||||||
if (!("error" in response) && "result" in response) {
|
|
||||||
if (response.result.length === 2) {
|
|
||||||
if (command === "uci") {
|
|
||||||
data[variable] = response.result[1].value
|
|
||||||
} else {
|
|
||||||
data[variable] = response.result[1][variable]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
set_status("danger", "<b>Ubus call failed:</b><br />Request: " + request_json + "<br />Response: " + JSON.stringify(response))
|
|
||||||
}
|
|
||||||
ubus_closed++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
request.send(request_json);
|
|
||||||
}
|
|
||||||
|
|
||||||
function set_status(type, message, loading, show_log) {
|
|
||||||
$("#status_box").className = "alert-message " + type;
|
|
||||||
var loading_image = '';
|
|
||||||
if (loading) {
|
|
||||||
loading_image = '<img src="/luci-static/resources/icons/loading.gif" alt="Loading" style="vertical-align:middle"> ';
|
|
||||||
}
|
|
||||||
if (data.buildlog_url && show_log) {
|
|
||||||
message += ' <p><a target="_blank" href="' + data.buildlog_url + '">Build log</a></p>'
|
|
||||||
}
|
|
||||||
$("#status_box").innerHTML = loading_image + message;
|
|
||||||
show("#status_box")
|
|
||||||
}
|
|
||||||
|
|
||||||
function upgrade_check() {
|
|
||||||
var current_version = data.release.version.toLowerCase();
|
|
||||||
var current_branch = current_version.split('.').slice(0, 2).join('.')
|
|
||||||
var candidates = []
|
|
||||||
hide("#status_box");
|
|
||||||
hide("#server_div");
|
|
||||||
set_status("info", _("Searching for upgrades"), true);
|
|
||||||
fetch(data.url + "/api/versions")
|
|
||||||
.then(response => response.json())
|
|
||||||
.then(response => {
|
|
||||||
var branches = response["branches"]
|
|
||||||
for (i in branches) {
|
|
||||||
// handle snapshots in a special way - as always
|
|
||||||
if (current_version == "snapshot" && branches[i]["latest"] == "snapshot") {
|
|
||||||
candidates.unshift(branches[i])
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
if (current_version == branches[i]["latest"]) {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
if (current_branch != branches[i]["name"]) {
|
|
||||||
branches[i]["warn_branch_jump"] = true
|
|
||||||
}
|
|
||||||
candidates.unshift(branches[i])
|
|
||||||
if (current_branch == branches[i]["name"]) {
|
|
||||||
// don't offer branches older than the current
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (candidates.length > 0) {
|
|
||||||
var info_output = "<h3>New release <b>" + candidates[0].latest + "</b> available</h3>"
|
|
||||||
info_output += _('Installed version:') + " " + data.release.version
|
|
||||||
|
|
||||||
// tell server the currently installed version
|
|
||||||
request_dict.current_version = request_dict.version;
|
|
||||||
// tell server what version to install
|
|
||||||
request_dict.version = candidates[0].latest;
|
|
||||||
// tell server to diff the requested packages with the default packages
|
|
||||||
// this allows to not automatically re-install default packages which
|
|
||||||
// where dropped in later releases
|
|
||||||
request_dict.diff_packages = true;
|
|
||||||
|
|
||||||
set_status("success", info_output)
|
|
||||||
|
|
||||||
if (data.advanced_mode == 1) {
|
|
||||||
show("#edit_button");
|
|
||||||
}
|
|
||||||
var upgrade_button = $("#upgrade_button")
|
|
||||||
upgrade_button.value = _("Request firmware");
|
|
||||||
upgrade_button.style.display = "block";
|
|
||||||
upgrade_button.disabled = false;
|
|
||||||
upgrade_button.onclick = upgrade_request;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
set_status("success", _("No upgrades available"))
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function upgrade_request() {
|
|
||||||
// Request firmware using the following parameters
|
|
||||||
// distro, version, target, board_name, packages
|
|
||||||
$("#upgrade_button").disabled = true;
|
|
||||||
hide("#edit_packages");
|
|
||||||
hide("#edit_button");
|
|
||||||
hide("#keep_container");
|
|
||||||
|
|
||||||
// add board info to let server determine profile
|
|
||||||
request_dict.target = data.release.target
|
|
||||||
request_dict.profile = data.board_name
|
|
||||||
request_dict.rootfs = data.format
|
|
||||||
|
|
||||||
if (data.edit_packages == true) {
|
|
||||||
request_dict.packages = $("#edit_packages").value.split("\n")
|
|
||||||
} else {
|
|
||||||
request_dict.packages = Object.keys(data.packages);
|
|
||||||
}
|
|
||||||
server_request()
|
|
||||||
}
|
|
||||||
|
|
||||||
function upgrade_request_callback(response) {
|
|
||||||
var sysupgrade_file = "";
|
|
||||||
console.log(response)
|
|
||||||
for (i in response.images) {
|
|
||||||
if (response.images[i].type == "sysupgrade") {
|
|
||||||
sysupgrade_file = response.images[i].name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (sysupgrade_file != "") {
|
|
||||||
data.sysupgrade_url = data.url + '/release/' + response.bin_dir + '/' + sysupgrade_file
|
|
||||||
var info_output = '<h3>Firmware created</h3><p>Created file: <a href="' + data.sysupgrade_url + '">' + sysupgrade_file + '</p></a>'
|
|
||||||
set_status("success", info_output, false, true);
|
|
||||||
|
|
||||||
show("#keep_container");
|
|
||||||
var upgrade_button = $("#upgrade_button")
|
|
||||||
upgrade_button.disabled = false;
|
|
||||||
upgrade_button.style.display = "block";
|
|
||||||
upgrade_button.value = "Flash firmware";
|
|
||||||
upgrade_button.onclick = download_image;
|
|
||||||
} else {
|
|
||||||
set_status("danger", "Firmware build successfull but device not sysupgrade compatible!")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function flash_image() {
|
|
||||||
// Flash image via rpc-sys upgrade_start
|
|
||||||
set_status("warning", _("Flashing firmware. Don't unpower device"), true)
|
|
||||||
ubus_call("rpc-sys", "upgrade_start", {
|
|
||||||
"keep": $("#keep").checked
|
|
||||||
}, 'message');
|
|
||||||
ping_max = 3600; // in seconds
|
|
||||||
setTimeout(ping_ubus, 10000)
|
|
||||||
}
|
|
||||||
|
|
||||||
function ping_ubus() {
|
|
||||||
// Tries to connect to ubus. If the connection fails the device is likely still rebooting.
|
|
||||||
// If more time than ping_max passes update may failed
|
|
||||||
if (ping_max > 0) {
|
|
||||||
ping_max--;
|
|
||||||
var request = new XMLHttpRequest();
|
|
||||||
request.open("GET", ubus_url, true);
|
|
||||||
request.addEventListener('error', function(event) {
|
|
||||||
set_status("warning", _("Rebooting device - please wait!"), true);
|
|
||||||
setTimeout(ping_ubus, 5000)
|
|
||||||
});
|
|
||||||
request.addEventListener('load', function(event) {
|
|
||||||
set_status("success", _("Success! Please reload web interface"));
|
|
||||||
$("#upgrade_button").value = "Reload page";
|
|
||||||
show("#upgrade_button");
|
|
||||||
$("#upgrade_button").disabled = false;
|
|
||||||
$("#upgrade_button").onclick = function() {
|
|
||||||
location.reload();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
request.send();
|
|
||||||
} else {
|
|
||||||
set_status("danger", _("Web interface could not reconnect to your device. Please reload web interface or check device manually"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function upload_image(blob) {
|
|
||||||
// Uploads received blob data to the server using cgi-io
|
|
||||||
set_status("info", _("Uploading firmware to device"), true);
|
|
||||||
var request = new XMLHttpRequest();
|
|
||||||
var form_data = new FormData();
|
|
||||||
|
|
||||||
form_data.append("sessionid", data.ubus_rpc_session)
|
|
||||||
form_data.append("filename", "/tmp/firmware.bin")
|
|
||||||
form_data.append("filemode", 755) // insecure?
|
|
||||||
form_data.append("filedata", blob)
|
|
||||||
|
|
||||||
request.addEventListener('load', function(event) {
|
|
||||||
request_json = JSON.parse(request.responseText)
|
|
||||||
flash_image();
|
|
||||||
});
|
|
||||||
|
|
||||||
request.addEventListener('error', function(event) {
|
|
||||||
set_status("danger", _("Upload of firmware failed, please retry by reloading web interface"))
|
|
||||||
});
|
|
||||||
|
|
||||||
request.open('POST', origin + '/cgi-bin/cgi-upload');
|
|
||||||
request.send(form_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function download_image() {
|
|
||||||
// Download image from server once the url was received by upgrade_request
|
|
||||||
hide("#keep_container");
|
|
||||||
hide("#upgrade_button");
|
|
||||||
var download_request = new XMLHttpRequest();
|
|
||||||
download_request.open("GET", data.sysupgrade_url);
|
|
||||||
download_request.responseType = "arraybuffer";
|
|
||||||
|
|
||||||
download_request.onload = function() {
|
|
||||||
if (this.status === 200) {
|
|
||||||
var blob = new Blob([download_request.response], {
|
|
||||||
type: "application/octet-stream"
|
|
||||||
});
|
|
||||||
upload_image(blob)
|
|
||||||
}
|
|
||||||
};
|
|
||||||
set_status("info", _("Downloading firmware to web browser memory"), true);
|
|
||||||
download_request.send();
|
|
||||||
}
|
|
||||||
|
|
||||||
function server_request() {
|
|
||||||
fetch(data.url + "/api/build", {
|
|
||||||
method: 'POST',
|
|
||||||
headers: {
|
|
||||||
'Content-Type': 'application/json'
|
|
||||||
},
|
|
||||||
body: JSON.stringify(request_dict)
|
|
||||||
})
|
|
||||||
.then(response => {
|
|
||||||
switch (response.status) {
|
|
||||||
case 200:
|
|
||||||
response.json()
|
|
||||||
.then(response => {
|
|
||||||
upgrade_request_callback(response)
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case 202:
|
|
||||||
set_status("info", "Processing request", true);
|
|
||||||
setTimeout(function() {
|
|
||||||
server_request()
|
|
||||||
}, 5000)
|
|
||||||
break;
|
|
||||||
case 400: // bad request
|
|
||||||
case 422: // bad package
|
|
||||||
case 500: // build failed
|
|
||||||
console.log('error (' + response.status + ')');
|
|
||||||
response.json()
|
|
||||||
.then(response => {
|
|
||||||
if (response.buildlog) {
|
|
||||||
data.buildlog_url = data.url + '/' + response.bin_dir + '/buildlog.txt';
|
|
||||||
}
|
|
||||||
set_status("danger", response.message);
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
request_dict = {}
|
|
||||||
document.onload = setup()
|
|
|
@ -368,7 +368,7 @@ return baseclass.extend({
|
||||||
|
|
||||||
release: {
|
release: {
|
||||||
title: _('Firmware Version'),
|
title: _('Firmware Version'),
|
||||||
value: boardinfo.release.description ? boardinfo.release.description : null
|
value: boardinfo.release.description
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -491,7 +491,7 @@ return view.extend({
|
||||||
so.datatype = 'or(ip4addr,"ignore")';
|
so.datatype = 'or(ip4addr,"ignore")';
|
||||||
so.rmempty = true;
|
so.rmempty = true;
|
||||||
|
|
||||||
so = ss.option(form.Value, 'leasetime', _('Lease time'), _('The lease time is in minutes (mini 2m), hours (eg 1h) or "infinite"'));
|
so = ss.option(form.Value, 'leasetime', _('Lease time'), _('The lease time is minutes (mini 2m), hours (eg 1h) or "infinite"'));
|
||||||
so.placeholder = '12h';
|
so.placeholder = '12h';
|
||||||
so.rmempty = true;
|
so.rmempty = true;
|
||||||
|
|
||||||
|
|
|
@ -65,8 +65,8 @@ TYPE="$2"
|
||||||
#FLAG_PATH=`find /sys/devices/ -path "*/net/$DEVICE/flags"`
|
#FLAG_PATH=`find /sys/devices/ -path "*/net/$DEVICE/flags"`
|
||||||
|
|
||||||
[ -d "/sys/class/net/$DEVICE/" ] || {
|
[ -d "/sys/class/net/$DEVICE/" ] || {
|
||||||
#echo "Device '$DEVICE' can't found!"
|
echo "Device '$DEVICE' can't found!"
|
||||||
#echo "Use the hardware name like in ifconfig"
|
echo "Use the hardware name like in ifconfig"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
SETROUTE=false
|
|
||||||
|
|
||||||
|
SETROUTE=false
|
||||||
set_route() {
|
set_route() {
|
||||||
local multipath_config_route interface_gw interface_if
|
local multipath_config_route interface_gw interface_if
|
||||||
INTERFACE=$1
|
INTERFACE=$1
|
||||||
|
@ -33,111 +33,36 @@ set_route() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
set_route6() {
|
|
||||||
local multipath_config_route interface_gw interface_if
|
|
||||||
INTERFACE=$1
|
|
||||||
PREVINTERFACE=$2
|
|
||||||
SETDEFAULT=$3
|
|
||||||
[ -z "$SETDEFAULT" ] && SETDEFAULT="yes"
|
|
||||||
multipath_config_route=$(uci -q get openmptcprouter.$INTERFACE.multipath)
|
|
||||||
[ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$INTERFACE.multipath || echo "off")
|
|
||||||
[ "$(uci -q get openmptcprouter.$INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${INTERFACE}.multipath || echo "off")"
|
|
||||||
interface_if=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
|
|
||||||
interface_up=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
|
|
||||||
[ -z "$interface_if" ] && interface_if=$(ifstatus "${INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
|
|
||||||
[ -z "$interface_if" ] && interface_if=$(uci -q get network.$INTERFACE.ifname)
|
|
||||||
interface_current_config=$(uci -q get openmptcprouter.$INTERFACE.state || echo "up")
|
|
||||||
if [ "$multipath_config_route" != "off" ] && [ "$SETROUTE" != true ] && [ "$INTERFACE" != "$PREVINTERFACE" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then
|
|
||||||
interface_gw="$(uci -q get network.$INTERFACE.gateway)"
|
|
||||||
if [ -z "$interface_gw" ]; then
|
|
||||||
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n")
|
|
||||||
fi
|
|
||||||
if [ -z "$interface_gw" ]; then
|
|
||||||
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.route[@.target="::"].nexthop' | tr -d "\n")
|
|
||||||
fi
|
|
||||||
if [ -z "$interface_gw" ]; then
|
|
||||||
interface_gw=$(ubus call network.interface.${INTERFACE}_6 status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n")
|
|
||||||
fi
|
|
||||||
if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ -n "$(echo $interface_gw | grep ':')" ]; then
|
|
||||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "$PREVINTERFACE down. Replace default route by $interface_gw dev $interface_if"
|
|
||||||
[ "$SETDEFAULT" = "yes" ] && ip -6 route replace default scope global nexthop via $interface_gw dev $interface_if
|
|
||||||
ip -6 route replace default via $interface_gw dev $interface_if table 991337 && SETROUTE=true
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
set_server_default_route() {
|
set_server_default_route() {
|
||||||
local server=$1
|
local server=$1
|
||||||
server_route() {
|
local serverip multipath_config_route
|
||||||
local serverip multipath_config_route
|
config_get serverip $server ip
|
||||||
serverip=$1
|
[ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')"
|
||||||
[ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')"
|
config_get disabled $server disabled
|
||||||
config_get disabled $server disabled
|
[ "$disabled" = "1" ] && return
|
||||||
[ "$disabled" = "1" ] && return
|
multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath)
|
||||||
multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath)
|
[ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off")
|
||||||
[ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off")
|
[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")"
|
||||||
[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")"
|
if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric 1 | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ]; then
|
||||||
if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric 1 | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ]; then
|
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route via $OMR_TRACKER_DEVICE_GATEWAY"
|
||||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route via $OMR_TRACKER_DEVICE_GATEWAY"
|
if [ "$(ip r show $serverip | grep nexthop)" != "" ]; then
|
||||||
if [ "$(ip r show $serverip | grep nexthop)" != "" ]; then
|
ip r delete $serverip >/dev/null 2>&1
|
||||||
ip r delete $serverip >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
ip route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric 1
|
|
||||||
fi
|
fi
|
||||||
}
|
ip route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric 1
|
||||||
config_list_foreach $server ip server_route
|
fi
|
||||||
}
|
|
||||||
|
|
||||||
set_server_default_route6() {
|
|
||||||
local server=$1
|
|
||||||
server_route() {
|
|
||||||
local serverip multipath_config_route
|
|
||||||
serverip=$1
|
|
||||||
[ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')"
|
|
||||||
config_get disabled $server disabled
|
|
||||||
[ "$disabled" = "1" ] && return
|
|
||||||
multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath)
|
|
||||||
[ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off")
|
|
||||||
[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")"
|
|
||||||
if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(ip -6 route show dev $OMR_TRACKER_DEVICE metric 1 | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY6)" = "" ] && [ "$multipath_config_route" != "off" ]; then
|
|
||||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route via $OMR_TRACKER_DEVICE_GATEWAY6"
|
|
||||||
if [ "$(ip -6 r show $serverip | grep nexthop)" != "" ]; then
|
|
||||||
ip -6 r delete $serverip >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
ip -6 route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE metric 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
config_list_foreach $server ip server_route
|
|
||||||
}
|
}
|
||||||
|
|
||||||
delete_server_default_route() {
|
delete_server_default_route() {
|
||||||
local server=$1
|
local server=$1
|
||||||
delete_route() {
|
local serverip
|
||||||
local serverip=$1
|
config_get serverip $server ip
|
||||||
[ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')"
|
[ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')"
|
||||||
config_get disabled $server disabled
|
config_get disabled $server disabled
|
||||||
[ "$disabled" = "1" ] && return
|
[ "$disabled" = "1" ] && return
|
||||||
if [ "$serverip" != "" ] && [ "$(ip route show $serverip metric 1)" != "" ]; then
|
if [ "$serverip" != "" ] && [ "$(ip route show $serverip metric 1)" != "" ]; then
|
||||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Delete server ($serverip) default route"
|
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Delete server ($serverip) default route"
|
||||||
ip route del $serverip metric 1 >/dev/null 2>&1
|
ip route del $serverip metric 1 >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
}
|
|
||||||
config_list_foreach $server ip delete_route
|
|
||||||
}
|
|
||||||
|
|
||||||
delete_server_default_route6() {
|
|
||||||
local server=$1
|
|
||||||
delete_route() {
|
|
||||||
local serverip=$1
|
|
||||||
[ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')"
|
|
||||||
config_get disabled $server disabled
|
|
||||||
[ "$disabled" = "1" ] && return
|
|
||||||
if [ "$serverip" != "" ] && [ "$(ip -6 route show $serverip metric 1)" != "" ]; then
|
|
||||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Delete server ($serverip) default route"
|
|
||||||
ip -6 route del $serverip metric 1 >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
config_list_foreach $server ip delete_route
|
|
||||||
}
|
}
|
||||||
|
|
||||||
set_routes_intf() {
|
set_routes_intf() {
|
||||||
|
@ -164,7 +89,7 @@ set_routes_intf() {
|
||||||
interface_gw=$(ubus call network.interface.${INTERFACE}_4 status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="0.0.0.0"].nexthop' | tr -d "\n")
|
interface_gw=$(ubus call network.interface.${INTERFACE}_4 status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="0.0.0.0"].nexthop' | tr -d "\n")
|
||||||
fi
|
fi
|
||||||
#if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ "$(ip route show $serverip | grep $interface_if)" = "" ]; then
|
#if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ "$(ip route show $serverip | grep $interface_if)" = "" ]; then
|
||||||
if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ -z "$(echo $interface_gw | grep :)" ]; then
|
if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ]; then
|
||||||
if [ "$multipath_config_route" = "master" ]; then
|
if [ "$multipath_config_route" = "master" ]; then
|
||||||
weight=10
|
weight=10
|
||||||
else
|
else
|
||||||
|
@ -189,55 +114,6 @@ set_routes_intf() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
set_routes_intf6() {
|
|
||||||
local multipath_config_route
|
|
||||||
local INTERFACE=$1
|
|
||||||
multipath_config_route=$(uci -q get openmptcprouter.$INTERFACE.multipath)
|
|
||||||
[ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$INTERFACE.multipath || echo "off")
|
|
||||||
[ "$(uci -q get openmptcprouter.$INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${INTERFACE}.multipath || echo 'off')"
|
|
||||||
interface_if=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
|
|
||||||
[ -z "$interface_if" ] && interface_if=$(ifstatus "${INTERFACE}_6" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
|
|
||||||
[ -z "$interface_if" ] && interface_if=$(uci -q get network.$INTERFACE.ifname)
|
|
||||||
interface_up=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
|
|
||||||
#multipath_current_config=$(multipath $interface_if | grep 'deactivated')
|
|
||||||
interface_current_config=$(uci -q get openmptcprouter.$INTERFACE.state || echo "up")
|
|
||||||
if [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_if" != "" ] && [ "$interface_up" = "true" ]; then
|
|
||||||
interface_gw="$(uci -q get network.$INTERFACE.gateway)"
|
|
||||||
if [ -z "$interface_gw" ]; then
|
|
||||||
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n")
|
|
||||||
fi
|
|
||||||
if [ -z "$interface_gw" ]; then
|
|
||||||
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.route[@.target="::"].nexthop' | tr -d "\n")
|
|
||||||
fi
|
|
||||||
if [ -z "$interface_gw" ]; then
|
|
||||||
interface_gw=$(ubus call network.interface.${INTERFACE}_6 status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n")
|
|
||||||
fi
|
|
||||||
#if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ "$(ip -6 route show $serverip | grep $interface_if)" = "" ]; then
|
|
||||||
if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ -n "$(echo $interface_gw | grep :)" ]; then
|
|
||||||
if [ "$multipath_config_route" = "master" ]; then
|
|
||||||
weight=10
|
|
||||||
else
|
|
||||||
weight=1
|
|
||||||
fi
|
|
||||||
if [ "$multipath_config_route" = "backup" ]; then
|
|
||||||
nbintfb6=$((nbintfb6+1))
|
|
||||||
if [ -z "$routesintfbackup6" ]; then
|
|
||||||
routesintfbackup6="nexthop via $interface_gw dev $interface_if weight $weight"
|
|
||||||
else
|
|
||||||
routesintfbackup6="$routesintfbackup6 nexthop via $interface_gw dev $interface_if weight $weight"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
nbintf6=$((nbintf6+1))
|
|
||||||
if [ -z "$routesintf6" ]; then
|
|
||||||
routesintf6="nexthop via $interface_gw dev $interface_if weight $weight"
|
|
||||||
else
|
|
||||||
routesintf6="$routesintf6 nexthop via $interface_gw dev $interface_if weight $weight"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
set_route_balancing() {
|
set_route_balancing() {
|
||||||
local multipath_config_route interface_gw interface_if
|
local multipath_config_route interface_gw interface_if
|
||||||
INTERFACE=$1
|
INTERFACE=$1
|
||||||
|
@ -281,207 +157,84 @@ set_route_balancing() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
set_route_balancing6() {
|
|
||||||
local multipath_config_route interface_gw interface_if
|
|
||||||
INTERFACE=$1
|
|
||||||
multipath_config_route=$(uci -q get openmptcprouter.$INTERFACE.multipath)
|
|
||||||
[ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$INTERFACE.multipath || echo "off")
|
|
||||||
[ "$(uci -q get openmptcprouter.$INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${INTERFACE}.multipath || echo 'off')"
|
|
||||||
interface_if=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
|
|
||||||
[ -z "$interface_if" ] && interface_if=$(ifstatus "${INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
|
|
||||||
[ -z "$interface_if" ] && interface_if=$(uci -q get network.$INTERFACE.ifname)
|
|
||||||
interface_up=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
|
|
||||||
interface_current_config=$(uci -q get openmptcprouter.$INTERFACE.state || echo "up")
|
|
||||||
if [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then
|
|
||||||
interface_gw="$(uci -q get network.$INTERFACE.gateway)"
|
|
||||||
if [ -z "$interface_gw" ]; then
|
|
||||||
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n")
|
|
||||||
fi
|
|
||||||
if [ -z "$interface_gw" ]; then
|
|
||||||
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.route[@.target="::"].nexthop' | tr -d "\n")
|
|
||||||
fi
|
|
||||||
if [ -z "$interface_gw" ]; then
|
|
||||||
interface_gw=$(ubus call network.interface.${INTERFACE}_6 status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n")
|
|
||||||
fi
|
|
||||||
if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ -n "$(echo $interface_gw | grep :)" ]; then
|
|
||||||
if [ "$(uci -q get network.$INTERFACE.weight)" != "" ]; then
|
|
||||||
weight=$(uci -q get network.$INTERFACE.weight)
|
|
||||||
elif [ "$(uci -q get openmtpcprouter.$INTERFACE.weight)" != "" ]; then
|
|
||||||
weight=$(uci -q get openmtpcprouter.$INTERFACE.weight)
|
|
||||||
elif [ "$multipath_config_route" = "master" ]; then
|
|
||||||
weight=2
|
|
||||||
else
|
|
||||||
weight=1
|
|
||||||
fi
|
|
||||||
if [ "$multipath_config_route" = "backup" ]; then
|
|
||||||
nbintfb6=$((nbintfb6+1))
|
|
||||||
routesbalancingbackup6="$routesbalancingbackup6 nexthop via $interface_gw dev $interface_if weight $weight"
|
|
||||||
else
|
|
||||||
nbintf6=$((nbintf6+1))
|
|
||||||
routesbalancing6="$routesbalancing6 nexthop via $interface_gw dev $interface_if weight $weight"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
set_server_all_routes() {
|
set_server_all_routes() {
|
||||||
local server=$1
|
local server=$1
|
||||||
server_route() {
|
local serverip multipath_config_route
|
||||||
local serverip multipath_config_route
|
config_get serverip $server ip
|
||||||
serverip=$1
|
[ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')"
|
||||||
[ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')"
|
config_get disabled $server disabled
|
||||||
config_get disabled $server disabled
|
[ "$disabled" = "1" ] && return
|
||||||
[ "$disabled" = "1" ] && return
|
interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname)
|
||||||
interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname)
|
[ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
|
||||||
[ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
|
[ -z "$interface_if" ] && interface_if=$(ifstatus "${OMR_TRACKER_INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
|
||||||
[ -z "$interface_if" ] && interface_if=$(ifstatus "${OMR_TRACKER_INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
|
interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
|
||||||
interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
|
multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath || echo "off")
|
||||||
multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath || echo "off")
|
[ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo 'off')
|
||||||
[ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo 'off')
|
[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")"
|
||||||
[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")"
|
if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_up" = "true" ]; then
|
||||||
if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_up" = "true" ]; then
|
routesintf=""
|
||||||
routesintf=""
|
routesintfbackup=""
|
||||||
routesintfbackup=""
|
nbintf=0
|
||||||
nbintf=0
|
nbintfb=0
|
||||||
nbintfb=0
|
config_load network
|
||||||
config_load network
|
config_foreach set_routes_intf interface
|
||||||
config_foreach set_routes_intf interface
|
uintf="$(echo $routesintf | awk '{print $5}')"
|
||||||
uintf="$(echo $routesintf | awk '{print $5}')"
|
uintfb="$(echo $routesintfbackup | awk '{print $5}')"
|
||||||
uintfb="$(echo $routesintfbackup | awk '{print $5}')"
|
if [ -n "$routesintf" ] && ([ "$nbintf" -gt "1" ] && [ "$(ip r show $serverip metric 0 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintf " ]) || ([ "$nbintf" = "1" ] && [ "$(ip r show $serverip metric 0 | grep $uintf)" = "" ]); then
|
||||||
if [ -n "$routesintf" ] && ([ "$nbintf" -gt "1" ] && [ "$(ip r show $serverip metric 0 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintf " ]) || ([ "$nbintf" = "1" ] && [ "$(ip r show $serverip metric 0 | grep $uintf)" = "" ]); then
|
while [ "$(ip r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "$serverip" ] && [ "$(ip r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "" ]; do
|
||||||
while [ "$(ip r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "$serverip" ] && [ "$(ip r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "" ]; do
|
ip r del $serverip
|
||||||
ip r del $serverip
|
done
|
||||||
done
|
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route $serverip $routesintf"
|
||||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route $serverip $routesintf"
|
ip route replace $serverip scope global $routesintf
|
||||||
ip route replace $serverip scope global $routesintf
|
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "New server route is $(ip r show $serverip metric 0 | tr -d '\t' | tr -d '\n')"
|
||||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "New server route is $(ip r show $serverip metric 0 | tr -d '\t' | tr -d '\n')"
|
|
||||||
fi
|
|
||||||
if [ -n "$routesintfbackup" ] && ([ "$nbintfb" -gt "1" ] && [ "$(ip r show $serverip metric 999 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintfbackup " ]) || ([ "$nbintfb" = "1" ] && [ "$(ip r show $serverip metric 999 | grep $uintfb)" = "" ]); then
|
|
||||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) backup default route $serverip $routesintfbackup nbintfb $nbintfb $OMR_TRACKER_DEVICE"
|
|
||||||
ip route replace $serverip scope global metric 999 $routesintfbackup
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
}
|
if [ -n "$routesintfbackup" ] && ([ "$nbintfb" -gt "1" ] && [ "$(ip r show $serverip metric 999 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintfbackup " ]) || ([ "$nbintfb" = "1" ] && [ "$(ip r show $serverip metric 999 | grep $uintfb)" = "" ]); then
|
||||||
config_list_foreach $server ip server_route
|
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) backup default route $serverip $routesintfbackup nbintfb $nbintfb $OMR_TRACKER_DEVICE"
|
||||||
}
|
ip route replace $serverip scope global metric 999 $routesintfbackup
|
||||||
|
|
||||||
set_server_all_routes6() {
|
|
||||||
local server=$1
|
|
||||||
server_route() {
|
|
||||||
local serverip multipath_config_route
|
|
||||||
serverip=$1
|
|
||||||
[ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')"
|
|
||||||
config_get disabled $server disabled
|
|
||||||
[ "$disabled" = "1" ] && return
|
|
||||||
interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname)
|
|
||||||
[ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
|
|
||||||
[ -z "$interface_if" ] && interface_if=$(ifstatus "${OMR_TRACKER_INTERFACE}_6" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
|
|
||||||
interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
|
|
||||||
multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath || echo "off")
|
|
||||||
[ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo 'off')
|
|
||||||
[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")"
|
|
||||||
if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_up" = "true" ]; then
|
|
||||||
routesintf=""
|
|
||||||
routesintfbackup=""
|
|
||||||
nbintf6=0
|
|
||||||
nbintfb6=0
|
|
||||||
config_load network
|
|
||||||
config_foreach set_routes_intf interface
|
|
||||||
uintf="$(echo $routesintf | awk '{print $5}')"
|
|
||||||
uintfb="$(echo $routesintfbackup | awk '{print $5}')"
|
|
||||||
if [ -n "$routesintf" ] && ([ "$nbintf6" -gt "1" ] && [ "$(ip -6 r show $serverip metric 0 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintf " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show $serverip metric 0 | grep $uintf)" = "" ]); then
|
|
||||||
while [ "$(ip -6 r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "$serverip" ] && [ "$(ip -6 r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "" ]; do
|
|
||||||
ip -6 r del $serverip
|
|
||||||
done
|
|
||||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route $serverip $routesintf"
|
|
||||||
ip -6 route replace $serverip scope global $routesintf
|
|
||||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "New server route is $(ip -6 r show $serverip metric 0 | tr -d '\t' | tr -d '\n')"
|
|
||||||
fi
|
|
||||||
if [ -n "$routesintfbackup" ] && ([ "$nbintfb6" -gt "1" ] && [ "$(ip -6 r show $serverip metric 999 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintfbackup " ]) || ([ "$nbintfb6" = "1" ] && [ "$(ip -6 r show $serverip metric 999 | grep $uintfb)" = "" ]); then
|
|
||||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) backup default route $serverip $routesintfbackup nbintfb $nbintfb6 $OMR_TRACKER_DEVICE"
|
|
||||||
ip -6 route replace $serverip scope global metric 999 $routesintfbackup
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
}
|
fi
|
||||||
config_list_foreach $server ip server_route
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
set_server_route() {
|
set_server_route() {
|
||||||
local server=$1
|
local server=$1
|
||||||
server_route() {
|
local serverip multipath_config_route
|
||||||
local serverip multipath_config_route
|
config_get serverip $server ip
|
||||||
serverip=$1
|
[ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')"
|
||||||
[ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')"
|
config_get disabled $server disabled
|
||||||
config_get disabled $server disabled
|
[ "$disabled" = "1" ] && return
|
||||||
[ "$disabled" = "1" ] && return
|
local metric=$2
|
||||||
local metric=$2
|
[ -z "$metric" ] && metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric)
|
||||||
[ -z "$metric" ] && metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric)
|
multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath)
|
||||||
multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath)
|
[ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off")
|
||||||
[ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off")
|
[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")"
|
||||||
[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")"
|
interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname)
|
||||||
interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname)
|
[ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
|
||||||
[ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
|
[ -z "$interface_if" ] && interface_if=$(ifstatus "${OMR_TRACKER_INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
|
||||||
[ -z "$interface_if" ] && interface_if=$(ifstatus "${OMR_TRACKER_INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
|
interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
|
||||||
interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
|
#multipath_current_config=$(multipath $interface_if | grep "deactivated")
|
||||||
#multipath_current_config=$(multipath $interface_if | grep "deactivated")
|
interface_current_config=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.state || echo "up")
|
||||||
interface_current_config=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.state || echo "up")
|
#if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$multipath_current_config" = "" ]; then
|
||||||
#if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$multipath_current_config" = "" ]; then
|
if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then
|
||||||
if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then
|
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) route via $OMR_TRACKER_DEVICE_GATEWAY metric $metric"
|
||||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) route via $OMR_TRACKER_DEVICE_GATEWAY metric $metric"
|
ip route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric $metric
|
||||||
ip route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric $metric
|
fi
|
||||||
fi
|
|
||||||
}
|
|
||||||
config_list_foreach $server ip server_route
|
|
||||||
if [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric $metric | grep default | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then
|
if [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric $metric | grep default | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then
|
||||||
ip route replace default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric $metric
|
ip route replace default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric $metric
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
set_server_route6() {
|
|
||||||
local server=$1
|
|
||||||
server_route() {
|
|
||||||
local serverip multipath_config_route
|
|
||||||
serverip=$1
|
|
||||||
[ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')"
|
|
||||||
config_get disabled $server disabled
|
|
||||||
[ "$disabled" = "1" ] && return
|
|
||||||
local metric=$2
|
|
||||||
[ -z "$metric" ] && metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric)
|
|
||||||
multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath)
|
|
||||||
[ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off")
|
|
||||||
[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")"
|
|
||||||
interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname)
|
|
||||||
[ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
|
|
||||||
[ -z "$interface_if" ] && interface_if=$(ifstatus "${OMR_TRACKER_INTERFACE}_6" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
|
|
||||||
interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
|
|
||||||
#multipath_current_config=$(multipath $interface_if | grep "deactivated")
|
|
||||||
interface_current_config=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.state || echo "up")
|
|
||||||
#if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(ip -6 route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$multipath_current_config" = "" ]; then
|
|
||||||
if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(ip -6 route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY6)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then
|
|
||||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) route via $OMR_TRACKER_DEVICE_GATEWAY metric $metric"
|
|
||||||
ip -6 route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE metric $metric
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
config_list_foreach $server ip server_route
|
|
||||||
if [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(ip -6 route show dev $OMR_TRACKER_DEVICE metric $metric | grep default | grep $OMR_TRACKER_DEVICE_GATEWAY6)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then
|
|
||||||
ip -6 route replace default via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE metric $metric
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
del_server_route() {
|
del_server_route() {
|
||||||
local server=$1
|
local server=$1
|
||||||
remove_route() {
|
local serverip
|
||||||
local serverip="$1"
|
config_get serverip $server ip
|
||||||
[ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')"
|
[ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')"
|
||||||
[ -n "$serverip" ] && _log "Delete default route via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE"
|
[ -n "$serverip" ] && _log "Delete default route via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE"
|
||||||
local metric
|
local metric
|
||||||
metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric)
|
metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric)
|
||||||
ip route del $serverip dev $OMR_TRACKER_DEVICE metric $metric >/dev/null 2>&1
|
ip route del $serverip dev $OMR_TRACKER_DEVICE metric $metric >/dev/null 2>&1
|
||||||
ip route del $serverip dev $OMR_TRACKER_DEVICE >/dev/null 2>&1
|
ip route del $serverip dev $OMR_TRACKER_DEVICE >/dev/null 2>&1
|
||||||
}
|
|
||||||
config_list_foreach $server ip remove_route
|
|
||||||
if [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ]; then
|
if [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ]; then
|
||||||
ip route del default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE >/dev/null 2>&1
|
ip route del default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE >/dev/null 2>&1
|
||||||
else
|
else
|
||||||
|
@ -489,25 +242,6 @@ del_server_route() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
del_server_route6() {
|
|
||||||
local server=$1
|
|
||||||
remove_route() {
|
|
||||||
local serverip="$1"
|
|
||||||
[ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')"
|
|
||||||
[ -n "$serverip" ] && _log "Delete default route via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE"
|
|
||||||
local metric
|
|
||||||
metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric)
|
|
||||||
ip -6 route del $serverip dev $OMR_TRACKER_DEVICE metric $metric >/dev/null 2>&1
|
|
||||||
ip -6 route del $serverip dev $OMR_TRACKER_DEVICE >/dev/null 2>&1
|
|
||||||
}
|
|
||||||
config_list_foreach $server ip remove_route
|
|
||||||
if [ -n "$OMR_TRACKER_DEVICE_GATEWAY6" ]; then
|
|
||||||
ip -6 route del default via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE >/dev/null 2>&1
|
|
||||||
else
|
|
||||||
ip -6 route del default dev $OMR_TRACKER_DEVICE >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
disable_pihole() {
|
disable_pihole() {
|
||||||
local server=$1
|
local server=$1
|
||||||
if [ -n "$(uci -q get dhcp.@dnsmasq[0].server | grep '#53' | grep '10.2')" ]; then
|
if [ -n "$(uci -q get dhcp.@dnsmasq[0].server | grep '#53' | grep '10.2')" ]; then
|
||||||
|
@ -554,7 +288,6 @@ if [ -d "/sys/class/net/$OMR_TRACKER_DEVICE" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
default_gw=$(ip route show default | grep -v "metric" | awk '/default/ {print $3}')
|
default_gw=$(ip route show default | grep -v "metric" | awk '/default/ {print $3}')
|
||||||
default_gw6=$(ip -6 route show default | grep -v "metric" | awk '/default/ {print $3}')
|
|
||||||
#current_interface_gw=$(uci -q get "network.$OMR_TRACKER_INTERFACE.gateway")
|
#current_interface_gw=$(uci -q get "network.$OMR_TRACKER_INTERFACE.gateway")
|
||||||
|
|
||||||
interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
|
interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
|
||||||
|
@ -587,9 +320,6 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ "$interface_up" != "true" ]; then
|
||||||
if [ -n "$OMR_TRACKER_DEVICE_IP" ]; then
|
if [ -n "$OMR_TRACKER_DEVICE_IP" ]; then
|
||||||
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set down > /dev/null 2>&1
|
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set down > /dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
if [ -n "$OMR_TRACKER_DEVICE_IP6" ]; then
|
|
||||||
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 dev tun0 set down > /dev/null 2>&1
|
|
||||||
fi
|
|
||||||
if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" = "1" ]; then
|
if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" = "1" ]; then
|
||||||
VPN_BASE_INTF="$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.baseintf)"
|
VPN_BASE_INTF="$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.baseintf)"
|
||||||
VPN_BASE_INTF_IP=$(ubus call network.interface.$VPN_BASE_INTF status | jsonfilter -e '@["ipv4-address"][0].address' | tr -d "\n")
|
VPN_BASE_INTF_IP=$(ubus call network.interface.$VPN_BASE_INTF status | jsonfilter -e '@["ipv4-address"][0].address' | tr -d "\n")
|
||||||
|
@ -601,22 +331,18 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ "$interface_up" != "true" ]; then
|
||||||
fi
|
fi
|
||||||
config_load openmptcprouter
|
config_load openmptcprouter
|
||||||
config_foreach del_server_route server
|
config_foreach del_server_route server
|
||||||
config_foreach del_server_route6 server
|
|
||||||
#if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && [ "$(uci -q get openmptcprouter.settings.vpn)" != "mlvpn" ]; then
|
#if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && [ "$(uci -q get openmptcprouter.settings.vpn)" != "mlvpn" ]; then
|
||||||
if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ]; then
|
if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ]; then
|
||||||
config_foreach set_server_all_routes server
|
config_foreach set_server_all_routes server
|
||||||
config_foreach set_server_all_routes6 server
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ([ "$default_gw" = "$OMR_TRACKER_DEVICE_GATEWAY" ] || [ "$default_gw" = "" ] || [ "$default_gw6" != "$OMR_TRACKER_DEVICE_GATEWAY6" ]) && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then
|
if ([ "$default_gw" = "$OMR_TRACKER_DEVICE_GATEWAY" ] || [ "$default_gw" = "" ]) && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then
|
||||||
config_load network
|
config_load network
|
||||||
config_foreach set_route interface $OMR_TRACKER_INTERFACE
|
config_foreach set_route interface $OMR_TRACKER_INTERFACE
|
||||||
config_foreach set_route6 interface $OMR_TRACKER_INTERFACE
|
|
||||||
elif [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath)" = "master" ]; then
|
elif [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath)" = "master" ]; then
|
||||||
config_load network
|
config_load network
|
||||||
config_foreach set_route interface $OMR_TRACKER_INTERFACE "no"
|
config_foreach set_route interface $OMR_TRACKER_INTERFACE "no"
|
||||||
config_foreach set_route6 interface $OMR_TRACKER_INTERFACE "no"
|
|
||||||
fi
|
fi
|
||||||
mail_alert="$(uci -q get omr-tracker.$OMR_TRACKER_INTERFACE.mail_alert)"
|
mail_alert="$(uci -q get omr-tracker.$OMR_TRACKER_INTERFACE.mail_alert)"
|
||||||
[ -z "$mail_alert" ] && mail_alert="$(uci -q get omr-tracker.defaults.mail_alert)"
|
[ -z "$mail_alert" ] && mail_alert="$(uci -q get omr-tracker.defaults.mail_alert)"
|
||||||
|
@ -624,9 +350,9 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ "$interface_up" != "true" ]; then
|
||||||
OMR_SYSNAME="$(uci -q get system.@system[0].hostname)"
|
OMR_SYSNAME="$(uci -q get system.@system[0].hostname)"
|
||||||
if [ "$(uci -q get omr-tracker.defaults.mail_down_subject)" != "" ] && [ "$(uci -q get omr-tracker.defaults.mail_down_message)" != "" ]; then
|
if [ "$(uci -q get omr-tracker.defaults.mail_down_subject)" != "" ] && [ "$(uci -q get omr-tracker.defaults.mail_down_message)" != "" ]; then
|
||||||
mail_subject="$(uci -q get omr-tracker.defaults.mail_down_subject)"
|
mail_subject="$(uci -q get omr-tracker.defaults.mail_down_subject)"
|
||||||
mail_subject=`echo $mail_subject | sed -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"`
|
mail_subject=`echo $mail_subject | sed -i -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"`
|
||||||
mail_message="$(uci -q get omr-tracker.defaults.mail_down_message)"
|
mail_message="$(uci -q get omr-tracker.defaults.mail_down_message)"
|
||||||
mail_message=`echo $mail_message | sed -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"`
|
mail_message=`echo $mail_message | sed -i -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"`
|
||||||
echo -e "Subject: ${mail_subject}\n\n${mail_message}" | sendmail $(uci -q get mail.default.to)
|
echo -e "Subject: ${mail_subject}\n\n${mail_message}" | sendmail $(uci -q get mail.default.to)
|
||||||
else
|
else
|
||||||
echo -e "Subject: $OMR_SYSNAME: $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) is down\n\nConnection failure of $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) detected. The reason is \"$OMR_TRACKER_STATUS_MSG\"." | sendmail $(uci -q get mail.default.to)
|
echo -e "Subject: $OMR_SYSNAME: $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) is down\n\nConnection failure of $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) detected. The reason is \"$OMR_TRACKER_STATUS_MSG\"." | sendmail $(uci -q get mail.default.to)
|
||||||
|
@ -644,7 +370,6 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ "$interface_up" != "true" ]; then
|
||||||
if [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then
|
if [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then
|
||||||
config_load network
|
config_load network
|
||||||
config_foreach set_route interface $OMR_TRACKER_INTERFACE
|
config_foreach set_route interface $OMR_TRACKER_INTERFACE
|
||||||
config_foreach set_route6 interface $OMR_TRACKER_INTERFACE
|
|
||||||
fi
|
fi
|
||||||
if [ "$(uci -q get openmptcprouter.settings.shadowsocksudp)" = "1" ] && [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get openmptcprouter.omr.shadowsocks)" = "up" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.redir_udp)" = "" ] && [ "$(uci -q get shadowsocks-libev.hi2.mode)" = "tcp_and_udp" ] && [ "$(uci -q get shadowsocks-libev.sss0.obfs)" != "1" ]; then
|
if [ "$(uci -q get openmptcprouter.settings.shadowsocksudp)" = "1" ] && [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get openmptcprouter.omr.shadowsocks)" = "up" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.redir_udp)" = "" ] && [ "$(uci -q get shadowsocks-libev.hi2.mode)" = "tcp_and_udp" ] && [ "$(uci -q get shadowsocks-libev.sss0.obfs)" != "1" ]; then
|
||||||
_log "Tunnel down use ShadowSocks for UDP"
|
_log "Tunnel down use ShadowSocks for UDP"
|
||||||
|
@ -675,7 +400,6 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ "$interface_up" != "true" ]; then
|
||||||
#if [ "$(uci -q get openmptcprouter.settings.master)" != "balancing" ] || [ "$(uci -q get openmptcprouter.settings.vpn)" = "mlvpn" ]; then
|
#if [ "$(uci -q get openmptcprouter.settings.master)" != "balancing" ] || [ "$(uci -q get openmptcprouter.settings.vpn)" = "mlvpn" ]; then
|
||||||
if [ "$(uci -q get openmptcprouter.settings.master)" != "balancing" ]; then
|
if [ "$(uci -q get openmptcprouter.settings.master)" != "balancing" ]; then
|
||||||
config_foreach set_server_default_route server
|
config_foreach set_server_default_route server
|
||||||
config_foreach set_server_default_route6 server
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
dns_flush
|
dns_flush
|
||||||
|
@ -723,7 +447,7 @@ if [ "$OMR_TRACKER_INTERFACE" = "glorytun" ] || [ "$OMR_TRACKER_INTERFACE" = "om
|
||||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu
|
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu
|
||||||
ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1
|
ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1
|
||||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s")
|
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s")
|
||||||
elif [ -z "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.mtu)" ] && [ -n "$OMR_TRACKER_DEVICE_IP" ]; then
|
elif [ -z "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.mtu)" ]; then
|
||||||
if [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ]; then
|
if [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ]; then
|
||||||
local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP $serverip)
|
local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP $serverip)
|
||||||
#local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP 8.8.8.8)
|
#local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP 8.8.8.8)
|
||||||
|
@ -766,9 +490,9 @@ if [ "$OMR_TRACKER_PREV_STATUS" != "" ] && [ "$OMR_TRACKER_PREV_STATUS" != "$OMR
|
||||||
OMR_SYSNAME="$(uci -q get system.@system[0].hostname)"
|
OMR_SYSNAME="$(uci -q get system.@system[0].hostname)"
|
||||||
if [ "$(uci -q get omr-tracker.defaults.mail_up_subject)" != "" ] && [ "$(uci -q get omr-tracker.defaults.mail_up_message)" != "" ]; then
|
if [ "$(uci -q get omr-tracker.defaults.mail_up_subject)" != "" ] && [ "$(uci -q get omr-tracker.defaults.mail_up_message)" != "" ]; then
|
||||||
mail_subject="$(uci -q get omr-tracker.defaults.mail_up_subject)"
|
mail_subject="$(uci -q get omr-tracker.defaults.mail_up_subject)"
|
||||||
mail_subject=`echo $mail_subject | sed -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"`
|
mail_subject=`echo $mail_subject | sed -i -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"`
|
||||||
mail_message="$(uci -q get omr-tracker.defaults.mail_up_message)"
|
mail_message="$(uci -q get omr-tracker.defaults.mail_up_message)"
|
||||||
mail_message=`echo $mail_message | sed -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"`
|
mail_message=`echo $mail_message | sed -i -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"`
|
||||||
echo -e "Subject: ${mail_subject}\n\n${mail_message}" | sendmail $(uci -q get mail.default.to)
|
echo -e "Subject: ${mail_subject}\n\n${mail_message}" | sendmail $(uci -q get mail.default.to)
|
||||||
else
|
else
|
||||||
echo -e "Subject: $OMR_SYSNAME: $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) is up\n\nDetected that connection $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) is up again." | sendmail $(uci -q get mail.default.to)
|
echo -e "Subject: $OMR_SYSNAME: $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) is up\n\nDetected that connection $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) is up again." | sendmail $(uci -q get mail.default.to)
|
||||||
|
@ -801,20 +525,6 @@ if [ "$multipath_config" = "master" ]; then
|
||||||
config_foreach set_server_default_route server
|
config_foreach set_server_default_route server
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if ([ "$default_gw6" != "$OMR_TRACKER_DEVICE_GATEWAY6" ] || [ "$default_gw6" = "" ]) && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(uci -q get openmptcprouter.settings.master)" != "balancing" ]; then
|
|
||||||
omrvpn_intf=$(uci -q get "network.omrvpn.ifname" || echo "tun")
|
|
||||||
if [ -n "$omrvpn_intf" ] && [ "$(ip route show default | awk '/default/ {print $5}' | grep $omrvpn_intf)" = "" ] && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then
|
|
||||||
_log "Master up : Replace default route by $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE"
|
|
||||||
ip -6 route replace default scope global nexthop via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE
|
|
||||||
fi
|
|
||||||
config_load openmptcprouter
|
|
||||||
#if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ]; then
|
|
||||||
# config_foreach set_server_all_routes server
|
|
||||||
if [ "$(uci -q get openmptcprouter.settings.master)" != "failover" ]; then
|
|
||||||
config_foreach set_server_default_route server
|
|
||||||
config_foreach set_server_default_route6 server
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
#if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && [ "$(ip route show default | grep weight)" = "" ] && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ] && [ "$(uci -q get openmptcprouter.settings.vpn)" != "mlvpn" ]; then
|
#if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && [ "$(ip route show default | grep weight)" = "" ] && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ] && [ "$(uci -q get openmptcprouter.settings.vpn)" != "mlvpn" ]; then
|
||||||
if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && [ "$(ip route show default | grep weight)" = "" ] && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then
|
if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && [ "$(ip route show default | grep weight)" = "" ] && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then
|
||||||
omrvpn_intf=$(uci -q get "network.omrvpn.ifname" || echo "tun")
|
omrvpn_intf=$(uci -q get "network.omrvpn.ifname" || echo "tun")
|
||||||
|
@ -822,42 +532,25 @@ if [ "$multipath_config" = "master" ]; then
|
||||||
routesbalancing=""
|
routesbalancing=""
|
||||||
routesbalancingbackup=""
|
routesbalancingbackup=""
|
||||||
nbintf=0
|
nbintf=0
|
||||||
nbintf6=0
|
|
||||||
config_load network
|
config_load network
|
||||||
config_foreach set_route_balancing interface
|
config_foreach set_route_balancing interface
|
||||||
config_foreach set_route_balancing6 interface
|
|
||||||
[ -n "$routesbalancing" ] && {
|
[ -n "$routesbalancing" ] && {
|
||||||
([ "$nbintf" -gt "1" ] && [ "$(ip r show default metric 0 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancing " ]) || ([ "$nbintf" = "1" ] && ([ "$(ip r show default metric 0 | grep $OMR_TRACKER_DEVICE)" = "" ] || [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" = "1" ]) && [ -n "$OMR_TRACKER_DEVICE_IP" ]) && {
|
([ "$nbintf" -gt "1" ] && [ "$(ip r show default metric 0 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancing " ]) || ([ "$nbintf" = "1" ] && [ "$(ip r show default metric 0 | grep $OMR_TRACKER_DEVICE)" = "" ]) && {
|
||||||
_log "Set ip route replace default scope global $routesbalancing"
|
_log "Set ip route replace default scope global $routesbalancing"
|
||||||
ip route replace default scope global metric 0 $routesbalancing
|
ip route replace default scope global $routesbalancing
|
||||||
}
|
|
||||||
}
|
|
||||||
[ -n "$routesbalancing6" ] && {
|
|
||||||
([ "$nbintf6" -gt "1" ] && [ "$(ip -6 r show default metric 1 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancing6 " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show default metric 1 | grep $OMR_TRACKER_DEVICE)" = "" ] && [ -n "$OMR_TRACKER_DEVICE_IP6" ]) && {
|
|
||||||
_log "Set ip -6 route replace default scope global metric 1 $routesbalancing6"
|
|
||||||
ip -6 route replace default scope global metric 1 $routesbalancing6
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
[ -n "$routesbalancingbackup" ] && {
|
[ -n "$routesbalancingbackup" ] && {
|
||||||
([ "$nbintf" -gt "1" ] && [ "$(ip r show default metric 999 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancingbackup " ]) || ([ "$nbintf" = "1" ] && ([ "$(ip r show default metric 999 | grep $OMR_TRACKER_DEVICE)" = "" ] || [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" = "1" ]) && [ -n "$OMR_TRACKER_DEVICE_IP" ]) && {
|
([ "$nbintf" -gt "1" ] && [ "$(ip r show default metric 999 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancingbackup " ]) || ([ "$nbintf" = "1" ] && [ "$(ip r show default metric 999 | grep $OMR_TRACKER_DEVICE)" = "" ]) && {
|
||||||
_log "Set backup ip route replace default scope global $routesbalancingbackup"
|
_log "Set backup ip route replace default scope global $routesbalancingbackup"
|
||||||
ip route replace default scope global metric 999 $routesbalancingbackup
|
ip route replace default scope global metric 999 $routesbalancingbackup
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
[ -n "$routesbalancingbackup6" ] && {
|
|
||||||
([ "$nbintf6" -gt "1" ] && [ "$(ip -6 r show default metric 999 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancingbackup6 " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show default metric 999 | grep $OMR_TRACKER_DEVICE)" = "" ] && [ -n "$OMR_TRACKER_DEVICE_IP6" ]) && {
|
|
||||||
_log "Set backup ip -6 route replace default scope global $routesbalancingbackup6"
|
|
||||||
ip -6 route replace default scope global metric 999 $routesbalancingbackup6
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$(ip r show table 991337)" != "default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE " ]; then
|
if [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$(ip r show table 991337)" != "default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE " ]; then
|
||||||
ip route replace default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE table 991337
|
ip route replace default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE table 991337
|
||||||
fi
|
fi
|
||||||
if [ -n "$OMR_TRACKER_DEVICE_GATEWAY6" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$(ip -6 r show table 991337)" != "default via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE " ]; then
|
|
||||||
ip -6 route replace default via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE table 991337
|
|
||||||
fi
|
|
||||||
if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($(date +"%s") + $((10 + RANDOM % 31)) - $(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc))) -gt 3600 ] || [ "$(uci -q show openmptcprouter | grep get_config=\'1\')" != "" ] || [ "$(uci -q show openmptcprouter | grep admin_error=\'1\')" != "" ]; then
|
if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($(date +"%s") + $((10 + RANDOM % 31)) - $(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc))) -gt 3600 ] || [ "$(uci -q show openmptcprouter | grep get_config=\'1\')" != "" ] || [ "$(uci -q show openmptcprouter | grep admin_error=\'1\')" != "" ]; then
|
||||||
/etc/init.d/openmptcprouter-vps restart >/dev/null 2>&1
|
/etc/init.d/openmptcprouter-vps restart >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
|
@ -872,21 +565,6 @@ if [ -n "$OMR_TRACKER_DEVICE_IP" ] && [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ]; then
|
||||||
elif [ "$(uci -q get openmptcprouter.settings.master)" != "failover" ]; then
|
elif [ "$(uci -q get openmptcprouter.settings.master)" != "failover" ]; then
|
||||||
config_foreach set_server_route server
|
config_foreach set_server_route server
|
||||||
fi
|
fi
|
||||||
if [ "$(ip r show dev $OMR_TRACKER_DEVICE | grep default)" = "" ] && [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.metric)" != "" ]; then
|
|
||||||
ip r replace default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric $(uci -q get network.$OMR_TRACKER_INTERFACE.metric) >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [ -n "$OMR_TRACKER_DEVICE_IP6" ] && [ -n "$OMR_TRACKER_DEVICE_GATEWAY6" ]; then
|
|
||||||
config_load openmptcprouter
|
|
||||||
#if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && [ "$(uci -q get openmptcprouter.settings.vpn)" != "mlvpn" ]; then
|
|
||||||
if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ]; then
|
|
||||||
config_foreach set_server_all_routes6 server
|
|
||||||
elif [ "$(uci -q get openmptcprouter.settings.master)" != "failover" ]; then
|
|
||||||
config_foreach set_server_route6 server
|
|
||||||
fi
|
|
||||||
if [ "$(ip -6 r show dev $OMR_TRACKER_DEVICE | grep default)" = "" ] && [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.metric)" != "" ]; then
|
|
||||||
ip -6 r replace default via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE metric $(uci -q get network.$OMR_TRACKER_INTERFACE.metric) >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$multipath_config" = "on" ] || [ "$multipath_config" = "backup" ]; then
|
if [ "$multipath_config" = "on" ] || [ "$multipath_config" = "backup" ]; then
|
||||||
|
@ -897,55 +575,27 @@ if [ "$multipath_config" = "on" ] || [ "$multipath_config" = "backup" ]; then
|
||||||
if [ "$(uci -q show | grep mptcpr)" = "" ]; then
|
if [ "$(uci -q show | grep mptcpr)" = "" ]; then
|
||||||
touch /etc/config/openmptcprouter
|
touch /etc/config/openmptcprouter
|
||||||
fi
|
fi
|
||||||
glorytunudppath() {
|
gtudpst="up"
|
||||||
gtudp_port="$(uci -q get glorytun-udp.vpn.port)"
|
[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" != "1" ] && [ "$multipath_config" = "backup" ] && [ "$(pgrep glorytun-udp)" != "" ] && gtudpst="backup"
|
||||||
gtudp_dev="$(uci -q get glorytun-udp.vpn.dev)"
|
if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp path | grep $OMR_TRACKER_DEVICE_IP)" = "" ]; then
|
||||||
addpath() {
|
if [ "$download" != "0" ] && [ "$download" != "" ] && [ "$upload" != "0" ] && [ "$upload" != "" ]; then
|
||||||
serverip=$1
|
if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then
|
||||||
#gtudpst="up"
|
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up rate pref 1 auto tx $((upload*1000/8)) rx $((download*1000/8)) > /dev/null 2>&1
|
||||||
#[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" != "1" ] && [ "$multipath_config" = "backup" ] && [ "$(pgrep glorytun-udp)" != "" ] && gtudpst="backup"
|
else
|
||||||
if [ "$OMR_TRACKER_DEVICE_IP" != "" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp path | grep $OMR_TRACKER_DEVICE_IP)" = "" ] && [ -n "$(resolveip -4 $serverip)" ]; then
|
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up rate pref 1 fixed tx $((upload*1000/8)) rx $((download*1000/8)) > /dev/null 2>&1
|
||||||
if [ "$download" != "0" ] && [ "$download" != "" ] && [ "$upload" != "0" ] && [ "$upload" != "" ]; then
|
|
||||||
if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then
|
|
||||||
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP to addr $serverip dev ${gtudp_dev} port ${gtudp_port} set up rate auto tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1
|
|
||||||
else
|
|
||||||
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP to addr $serverip dev ${gtudp_dev} port ${gtudp_port} set up rate fixed tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then
|
|
||||||
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP to addr $serverip dev ${gtudp_dev} port ${gtudp_port} set up rate auto tx 12500000 rx 12500000 pref 1 > /dev/null 2>&1
|
|
||||||
else
|
|
||||||
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP to addr $serverip dev ${gtudp_dev} port ${gtudp_port} set up rate fixed tx 12500000 rx 12500000 pref 1 > /dev/null 2>&1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
if [ "$OMR_TRACKER_DEVICE_IP6" != "" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp path | grep $OMR_TRACKER_DEVICE_IP6)" = "" ] && [ -n "$(resolveip -6 $serverip)" ]; then
|
else
|
||||||
if [ "$download" != "0" ] && [ "$download" != "" ] && [ "$upload" != "0" ] && [ "$upload" != "" ]; then
|
if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then
|
||||||
if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then
|
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up pref 1 rate auto tx 12500000 rx 12500000 > /dev/null 2>&1
|
||||||
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 to addr $serverip dev ${gtudp_dev} port ${gtudp_port} set up rate auto tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1
|
else
|
||||||
else
|
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set up pref 1 rate fixed tx 12500000 rx 12500000 > /dev/null 2>&1
|
||||||
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 to addr $serverip dev ${gtudp_dev} port ${gtudp_port} set up rate fixed tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then
|
|
||||||
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 to addr $serverip dev ${gtudp_dev} port ${gtudp_port} set up rate auto tx 12500000 rx 12500000 pref 1 > /dev/null 2>&1
|
|
||||||
else
|
|
||||||
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 to addr $serverip dev ${gtudp_dev} port ${gtudp_port} set up rate fixed tx 12500000 rx 12500000 pref 1 > /dev/null 2>&1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
# if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp set | grep 'kxtimeout 7d')" = "" ]; then
|
fi
|
||||||
# glorytun-udp set dev tun0 kxtimeout 7d > /dev/null 2>&1
|
fi
|
||||||
# fi
|
# if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep glorytun-udp)" != "" ] && [ "$(glorytun-udp set | grep 'kxtimeout 7d')" = "" ]; then
|
||||||
[ "$multipath_config" = "backup" ] && [ "$(pgrep glorytun-udp)" != "" ] && {
|
# glorytun-udp set dev tun0 kxtimeout 7d > /dev/null 2>&1
|
||||||
[ -n "$OMR_TRACKER_DEVICE_IP" ] && [ -n "$(resolveip -4 $serverip)" ] && glorytun-udp path addr $OMR_TRACKER_DEVICE_IP to addr $serverip port ${gtudp_port} dev ${gtudp_dev} set pref 125 > /dev/null 2>&1
|
# fi
|
||||||
[ -n "$OMR_TRACKER_DEVICE_IP6" ] && [ -n "$(resolveip -6 $serverip)" ] && glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 to addr $serverip port ${gtudp_port} dev ${gtudp_dev} set pref 125 > /dev/null 2>&1
|
[ "$multipath_config" = "backup" ] && [ "$(pgrep glorytun-udp)" != "" ] && glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set pref 125 > /dev/null 2>&1
|
||||||
}
|
|
||||||
}
|
|
||||||
config_list_foreach $1 ip addpath
|
|
||||||
}
|
|
||||||
config_load openmptcprouter
|
|
||||||
config_foreach glorytunudppath server
|
|
||||||
fi
|
fi
|
||||||
[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" != "1" ] && {
|
[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" != "1" ] && {
|
||||||
[ "$multipath_status" = "$multipath_config" ] || {
|
[ "$multipath_status" = "$multipath_config" ] || {
|
||||||
|
@ -962,7 +612,6 @@ if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($(
|
||||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Get status and settings for $OMR_TRACKER_INTERFACE..."
|
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Get status and settings for $OMR_TRACKER_INTERFACE..."
|
||||||
if [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ]; then
|
if [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ]; then
|
||||||
local ipaddr="$(omr-ip-intf $OMR_TRACKER_DEVICE)"
|
local ipaddr="$(omr-ip-intf $OMR_TRACKER_DEVICE)"
|
||||||
local ip6addr="$(omr-ip6-intf $OMR_TRACKER_DEVICE)"
|
|
||||||
else
|
else
|
||||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s")
|
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s")
|
||||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state="up"
|
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state="up"
|
||||||
|
@ -992,10 +641,10 @@ if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($(
|
||||||
# fi
|
# fi
|
||||||
#fi
|
#fi
|
||||||
if [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ]; then
|
if [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ]; then
|
||||||
#local asn="$(wget -4 -qO- -T 4 http://api.iptoasn.com/v1/as/ip/$ipaddr | jsonfilter -q -e '@.as_description')"
|
local asn="$(wget -4 -qO- -T 4 http://api.iptoasn.com/v1/as/ip/$ipaddr | jsonfilter -q -e '@.as_description')"
|
||||||
#[ -z "$asn" ] && {
|
[ -z "$asn" ] && {
|
||||||
local asn="$(whois $ipaddr 2>/dev/null | grep -m 1 -i 'netname' | awk '{print $2}')"
|
asn="$(whois $ipaddr 2>/dev/null | grep -m 1 -i 'netname' | awk '{print $2}')"
|
||||||
#}
|
}
|
||||||
fi
|
fi
|
||||||
[ -z "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE)" ] && {
|
[ -z "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE)" ] && {
|
||||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE=interface
|
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE=interface
|
||||||
|
@ -1009,107 +658,39 @@ if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($(
|
||||||
uci -q set openmptcprouter.latest_versions.lc=$(date +"%s")
|
uci -q set openmptcprouter.latest_versions.lc=$(date +"%s")
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
|
local serverip=$(uci -q get shadowsocks-libev.sss0.server)
|
||||||
|
[ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && [ "$(pgrep tracebox)" = "" ] && [ "$(uci -q get openmptcprouter.settings.tracebox)" != "0" ] && {
|
||||||
|
omrtracebox="$(omr-tracebox-mptcp $serverip $OMR_TRACKER_DEVICE)"
|
||||||
|
[ -n "$omrtracebox" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mptcp_status="$omrtracebox"
|
||||||
|
}
|
||||||
[ -n "$ipaddr" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.publicip="$ipaddr"
|
[ -n "$ipaddr" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.publicip="$ipaddr"
|
||||||
[ -n "$OMR_TRACKER_LATENCY" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.latency="$OMR_TRACKER_LATENCY"
|
[ -n "$OMR_TRACKER_LATENCY" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.latency="$OMR_TRACKER_LATENCY"
|
||||||
[ -n "$asn" ] && {
|
[ -n "$asn" ] && {
|
||||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.asn="$asn"
|
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.asn="$asn"
|
||||||
}
|
}
|
||||||
local omrtracebox
|
if [ "$OMR_TRACKER_INTERFACE" != "omrvpn" ] && [ "$(uci -q get glorytun.vpn.enable)" != "1" ] && [ "$(uci -q get glorytun-udp.vpn.enable)" != "1" ]; then
|
||||||
traceboxmtutest() {
|
if [ -n "$(uci -q get network.$OMR_TRACKER_INTERFACE.mtu)" ]; then
|
||||||
omr_tracebox_mtu() {
|
mtu=$(uci -q get network.$OMR_TRACKER_INTERFACE.mtu)
|
||||||
local serverip=$1
|
[ -n "$mtu" ] && {
|
||||||
[ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && [ "$(pgrep tracebox)" = "" ] && [ "$(uci -q get openmptcprouter.settings.tracebox)" != "0" ] && {
|
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu
|
||||||
omrtracebox="$(omr-tracebox-mptcp $serverip $OMR_TRACKER_DEVICE)"
|
ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1
|
||||||
[ -n "$omrtracebox" ] && [ -z "$(echo $omrtracebox | grep error)" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mptcp_status="$omrtracebox"
|
|
||||||
}
|
}
|
||||||
if [ "$OMR_TRACKER_INTERFACE" != "omrvpn" ] && [ "$(uci -q get glorytun.vpn.enable)" != "1" ] && [ "$(uci -q get glorytun-udp.vpn.enable)" != "1" ]; then
|
else
|
||||||
if [ -n "$(uci -q get network.$OMR_TRACKER_INTERFACE.mtu)" ]; then
|
[ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && {
|
||||||
mtu=$(uci -q get network.$OMR_TRACKER_INTERFACE.mtu)
|
local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP $serverip)
|
||||||
[ -n "$mtu" ] && {
|
[ -n "$mtu" ] && {
|
||||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu
|
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu
|
||||||
ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1
|
ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1
|
||||||
}
|
}
|
||||||
elif [ -n "$OMR_TRACKER_DEVICE_IP" ]; then
|
} || {
|
||||||
[ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && {
|
local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP 1.1.1.1)
|
||||||
local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP $serverip)
|
[ -n "$mtu" ] && {
|
||||||
[ -n "$mtu" ] && {
|
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu
|
||||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu
|
ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1
|
||||||
ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1
|
}
|
||||||
}
|
|
||||||
} || {
|
|
||||||
local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP 1.1.1.1)
|
|
||||||
[ -n "$mtu" ] && {
|
|
||||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu
|
|
||||||
ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
config_list_foreach $1 ip omr_tracebox_mtu
|
|
||||||
}
|
|
||||||
config_load openmptcprouter
|
|
||||||
config_foreach traceboxmtutest server
|
|
||||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state='up'
|
|
||||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s")
|
|
||||||
}
|
|
||||||
[ -n "$ip6addr" ] && {
|
|
||||||
if [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ]; then
|
|
||||||
local asn="$(whois $ip6addr 2>/dev/null | grep -m 1 -i 'netname' | awk '{print $2}')"
|
|
||||||
fi
|
|
||||||
[ -z "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE)" ] && {
|
|
||||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE=interface
|
|
||||||
}
|
|
||||||
if [ "$(uci -q get openmptcprouter.latest_versions.lc)" = "" ] || [ $(($(date +"%s") - $(uci -q get openmptcprouter.latest_versions.lc))) -gt 3600 ]; then
|
|
||||||
local latestversions="$(curl -6 -s -m 3 https://www.openmptcprouter.com/version/version.json)"
|
|
||||||
[ -n "$latestversions" ] && {
|
|
||||||
uci -q set openmptcprouter.latest_versions=latest_versions
|
|
||||||
uci -q set openmptcprouter.latest_versions.omr=$(echo $latestversions | jsonfilter -q -e '@.omr')
|
|
||||||
uci -q set openmptcprouter.latest_versions.vps=$(echo $latestversions | jsonfilter -q -e '@.vps')
|
|
||||||
uci -q set openmptcprouter.latest_versions.lc=$(date +"%s")
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
[ -n "$ipaddr" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.publicip6="$ip6addr"
|
|
||||||
[ -n "$OMR_TRACKER_LATENCY" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.latency="$OMR_TRACKER_LATENCY"
|
|
||||||
[ -n "$asn" ] && {
|
|
||||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.asn="$asn"
|
|
||||||
}
|
|
||||||
local omrtracebox
|
|
||||||
traceboxmtutest() {
|
|
||||||
omr_tracebox_mtu() {
|
|
||||||
local serverip=$1
|
|
||||||
[ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && [ "$(pgrep tracebox)" = "" ] && [ "$(uci -q get openmptcprouter.settings.tracebox)" != "0" ] && {
|
|
||||||
omrtracebox="$(omr-tracebox-mptcp $serverip $OMR_TRACKER_DEVICE)"
|
|
||||||
[ -n "$omrtracebox" ] && [ -z "$(echo $omrtracebox | grep error)" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mptcp_status="$omrtracebox"
|
|
||||||
}
|
}
|
||||||
if [ "$OMR_TRACKER_INTERFACE" != "omrvpn" ] && [ "$(uci -q get glorytun.vpn.enable)" != "1" ] && [ "$(uci -q get glorytun-udp.vpn.enable)" != "1" ]; then
|
fi
|
||||||
if [ -n "$(uci -q get network.$OMR_TRACKER_INTERFACE.mtu)" ]; then
|
fi
|
||||||
mtu=$(uci -q get network.$OMR_TRACKER_INTERFACE.mtu)
|
|
||||||
[ -n "$mtu" ] && {
|
|
||||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu
|
|
||||||
ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1
|
|
||||||
}
|
|
||||||
elif [ -n "$OMR_TRACKER_DEVICE_IP" ]; then
|
|
||||||
[ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && {
|
|
||||||
local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP $serverip)
|
|
||||||
[ -n "$mtu" ] && {
|
|
||||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu
|
|
||||||
ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1
|
|
||||||
}
|
|
||||||
} || {
|
|
||||||
local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP 1.1.1.1)
|
|
||||||
[ -n "$mtu" ] && {
|
|
||||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu
|
|
||||||
ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
config_list_foreach $1 ip omr_tracebox_mtu
|
|
||||||
}
|
|
||||||
config_load openmptcprouter
|
|
||||||
config_foreach traceboxmtutest server
|
|
||||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state='up'
|
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state='up'
|
||||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s")
|
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s")
|
||||||
}
|
}
|
||||||
|
@ -1246,7 +827,7 @@ if [ "$(pgrep rpcd)" = "" ] && [ -f /etc/init.d/rpcd ]; then
|
||||||
sleep 5
|
sleep 5
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$(uci -q get v2ray.main.enabled)" = "1" ] && [ -f /etc/init.d/v2ray ] && [ "$(pgrep -f omr-tracker-v2ray)" = "" ] && [ "$(pgrep -f '/etc/init.d/omr-tracker')" = "" ]; then
|
if [ "$(uci -q get v2ray.main.enabled)" = "1" ] && [ -f /etc/init.d/v2ray ] && [ "$(pgrep -f omr-tracker-v2ray)" = "" ]; then
|
||||||
_log "Can't find omr-tracker-v2ray, restart omr-tracker..."
|
_log "Can't find omr-tracker-v2ray, restart omr-tracker..."
|
||||||
/etc/init.d/omr-tracker restart
|
/etc/init.d/omr-tracker restart
|
||||||
fi
|
fi
|
||||||
|
@ -1262,7 +843,7 @@ if [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get
|
||||||
uci -q commit openmptcprouter
|
uci -q commit openmptcprouter
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get shadowsocks-libev.sss0.key)" != "" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "192.18.1.3" ] && [ "$(pgrep -f omr-tracker-ss)" = "" ] && [ "$(pgrep -f '/etc/init.d/omr-tracker')" = "" ]; then
|
if [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get shadowsocks-libev.sss0.key)" != "" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "192.18.1.3" ] && [ "$(pgrep -f omr-tracker-ss)" = "" ]; then
|
||||||
_log "Can't find omr-tracker-ss, restart omr-tracker..."
|
_log "Can't find omr-tracker-ss, restart omr-tracker..."
|
||||||
/etc/init.d/omr-tracker restart
|
/etc/init.d/omr-tracker restart
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -8,10 +8,10 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=mptcpd
|
PKG_NAME:=mptcpd
|
||||||
PKG_VERSION:=0.5.1
|
PKG_VERSION:=0.4
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=https://github.com/intel/mptcpd/releases/download/v$(PKG_VERSION)
|
PKG_SOURCE_URL:=https://github.com/intel/mptcpd/releases/download/v$(PKG_VERSION)
|
||||||
PKG_HASH:=0ee4418880f20a1a2eff5c54c26185a75092cb44cbabe0fa3f25a2c5886459e7
|
PKG_HASH:=459c45ba86ea574f1ad7a062a9914474ca650229b97375017bd46d0732f985ba
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
PKG_MAINTAINER:=Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
|
PKG_MAINTAINER:=Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
|
||||||
|
|
||||||
|
|
|
@ -10,8 +10,8 @@ include $(TOPDIR)/rules.mk
|
||||||
include $(INCLUDE_DIR)/kernel.mk
|
include $(INCLUDE_DIR)/kernel.mk
|
||||||
|
|
||||||
PKG_NAME:=ndpi-netfilter2
|
PKG_NAME:=ndpi-netfilter2
|
||||||
PKG_RELEASE:=3
|
PKG_RELEASE:=2
|
||||||
PKG_REV:=25a5c2e1d619aa2d819b18bed8276b3bd7eb4c5b
|
PKG_REV:=0a03249da911f4033fd2a0d38a97cdba72eee2b6
|
||||||
PKG_VERSION:=3.2-$(PKG_REV)
|
PKG_VERSION:=3.2-$(PKG_REV)
|
||||||
|
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
[ -n "$1" ] || exit
|
[ -n "$1" ] || exit
|
||||||
|
|
||||||
. /lib/functions.sh
|
. /lib/functions.sh
|
||||||
. /usr/lib/unbound/iptools.sh
|
|
||||||
|
|
||||||
# retrieve args
|
# retrieve args
|
||||||
OMR_TRACKER_INTERFACE="$1"
|
OMR_TRACKER_INTERFACE="$1"
|
||||||
|
@ -14,20 +13,16 @@ shift
|
||||||
# export vars
|
# export vars
|
||||||
export OMR_TRACKER_INTERFACE
|
export OMR_TRACKER_INTERFACE
|
||||||
export OMR_TRACKER_HOST
|
export OMR_TRACKER_HOST
|
||||||
export OMR_TRACKER_HOST6
|
|
||||||
export OMR_TRACKER_TIMEOUT
|
export OMR_TRACKER_TIMEOUT
|
||||||
export OMR_TRACKER_STATUS
|
export OMR_TRACKER_STATUS
|
||||||
export OMR_TRACKER_STATUS_MSG
|
export OMR_TRACKER_STATUS_MSG
|
||||||
export OMR_TRACKER_PREV_STATUS
|
export OMR_TRACKER_PREV_STATUS
|
||||||
export OMR_TRACKER_DEVICE
|
export OMR_TRACKER_DEVICE
|
||||||
export OMR_TRACKER_DEVICE_IP
|
export OMR_TRACKER_DEVICE_IP
|
||||||
export OMR_TRACKER_DEVICE_IP6
|
|
||||||
export OMR_TRACKER_DEVICE_GATEWAY
|
export OMR_TRACKER_DEVICE_GATEWAY
|
||||||
export OMR_TRACKER_DEVICE_GATEWAY6
|
|
||||||
|
|
||||||
dscp=56 # set DSCP CS7 (56) in outgoing packets
|
dscp=56 # set DSCP CS7 (56) in outgoing packets
|
||||||
initial_hosts="$OMR_TRACKER_HOSTS"
|
initial_hosts="$OMR_TRACKER_HOSTS"
|
||||||
initial_hosts6="$OMR_TRACKER_HOSTS6"
|
|
||||||
initial_timeout="$OMR_TRACKER_TIMEOUT"
|
initial_timeout="$OMR_TRACKER_TIMEOUT"
|
||||||
wait_test=${OMR_TRACKER_WAIT_TEST:-0}
|
wait_test=${OMR_TRACKER_WAIT_TEST:-0}
|
||||||
|
|
||||||
|
@ -64,15 +59,10 @@ _update_rto() {
|
||||||
|
|
||||||
_restart() {
|
_restart() {
|
||||||
OMR_TRACKER_HOST="${OMR_TRACKER_HOSTS%% *}"
|
OMR_TRACKER_HOST="${OMR_TRACKER_HOSTS%% *}"
|
||||||
OMR_TRACKER_HOST6="${OMR_TRACKER_HOSTS6%% *}"
|
|
||||||
[ "$OMR_TRACKER_HOST" = "$OMR_TRACKER_HOSTS" ] || {
|
[ "$OMR_TRACKER_HOST" = "$OMR_TRACKER_HOSTS" ] || {
|
||||||
OMR_TRACKER_HOSTS="${OMR_TRACKER_HOSTS#* } $OMR_TRACKER_HOST"
|
OMR_TRACKER_HOSTS="${OMR_TRACKER_HOSTS#* } $OMR_TRACKER_HOST"
|
||||||
_init_rto
|
_init_rto
|
||||||
}
|
}
|
||||||
[ "$OMR_TRACKER_HOST6" = "$OMR_TRACKER_HOSTS6" ] || {
|
|
||||||
OMR_TRACKER_HOSTS6="${OMR_TRACKER_HOSTS6#* } $OMR_TRACKER_HOST6"
|
|
||||||
_init_rto
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_post_tracking() {
|
_post_tracking() {
|
||||||
|
@ -180,14 +170,12 @@ OMR_TRACKER_PREV_STATUS=""
|
||||||
while true; do
|
while true; do
|
||||||
# setup tracker variables
|
# setup tracker variables
|
||||||
OMR_TRACKER_DEVICE_IP=
|
OMR_TRACKER_DEVICE_IP=
|
||||||
OMR_TRACKER_DEVICE_IP6=
|
|
||||||
OMR_TRACKER_STATUS="ERROR"
|
OMR_TRACKER_STATUS="ERROR"
|
||||||
OMR_TRACKER_STATUS_MSG=""
|
OMR_TRACKER_STATUS_MSG=""
|
||||||
OMR_TRACKER_LATENCY=
|
OMR_TRACKER_LATENCY=
|
||||||
#OMR_TRACKER_TIMEOUT=$((rto / 1000 + (rto % 1000 ? 1 : 0)))
|
#OMR_TRACKER_TIMEOUT=$((rto / 1000 + (rto % 1000 ? 1 : 0)))
|
||||||
OMR_TRACKER_LIST_HOSTS=""
|
OMR_TRACKER_LIST_HOSTS=""
|
||||||
OMR_TRACKER_DEVICE_GATEWAY=
|
OMR_TRACKER_DEVICE_GATEWAY=
|
||||||
OMR_TRACKER_DEVICE_GATEWAY6=
|
|
||||||
serverip_ping=false
|
serverip_ping=false
|
||||||
|
|
||||||
if [ -d "/sys/class/net/$OMR_TRACKER_DEVICE" ]; then
|
if [ -d "/sys/class/net/$OMR_TRACKER_DEVICE" ]; then
|
||||||
|
@ -197,10 +185,6 @@ while true; do
|
||||||
if [ -z "$OMR_TRACKER_DEVICE_IP" ]; then
|
if [ -z "$OMR_TRACKER_DEVICE_IP" ]; then
|
||||||
OMR_TRACKER_DEVICE_IP=$(ip -4 addr show dev "$OMR_TRACKER_DEVICE" | grep -m 1 inet | awk '{print $2}' | cut -d'/' -s -f1)
|
OMR_TRACKER_DEVICE_IP=$(ip -4 addr show dev "$OMR_TRACKER_DEVICE" | grep -m 1 inet | awk '{print $2}' | cut -d'/' -s -f1)
|
||||||
fi
|
fi
|
||||||
#OMR_TRACKER_DEVICE_IP6=$(ip -6 -br addr ls dev "$OMR_TRACKER_DEVICE" | awk -F'[ /]+' '{print $3}')
|
|
||||||
#if [ -z "$OMR_TRACKER_DEVICE_IP6" ]; then
|
|
||||||
OMR_TRACKER_DEVICE_IP6=$(ip -6 addr show dev "$OMR_TRACKER_DEVICE" | grep -v 'inet6 f' | grep -m 1 inet | awk '{print $2}' | cut -d'/' -s -f1)
|
|
||||||
#fi
|
|
||||||
#OMR_TRACKER_DEVICE_IP=$(ubus call network.interface.$OMR_TRACKER_INTERFACE status | jsonfilter -e '@["ipv4-address"][0].address' | tr -d "\n")
|
#OMR_TRACKER_DEVICE_IP=$(ubus call network.interface.$OMR_TRACKER_INTERFACE status | jsonfilter -e '@["ipv4-address"][0].address' | tr -d "\n")
|
||||||
#if [ -z "$OMR_TRACKER_DEVICE_GATEWAY" ]; then
|
#if [ -z "$OMR_TRACKER_DEVICE_GATEWAY" ]; then
|
||||||
# OMR_TRACKER_DEVICE_GATEWAY=$(ip -4 r list dev "$OMR_TRACKER_DEVICE" | grep -v default | awk '/proto static/ {print $1}' | tr -d "\n")
|
# OMR_TRACKER_DEVICE_GATEWAY=$(ip -4 r list dev "$OMR_TRACKER_DEVICE" | grep -v default | awk '/proto static/ {print $1}' | tr -d "\n")
|
||||||
|
@ -235,15 +219,6 @@ while true; do
|
||||||
if [ -z "$OMR_TRACKER_DEVICE_GATEWAY" ]; then
|
if [ -z "$OMR_TRACKER_DEVICE_GATEWAY" ]; then
|
||||||
OMR_TRACKER_DEVICE_GATEWAY=$(ip -4 r list dev "$OMR_TRACKER_DEVICE" | grep kernel | awk '/proto kernel/ {print $1}' | tr -d "\n")
|
OMR_TRACKER_DEVICE_GATEWAY=$(ip -4 r list dev "$OMR_TRACKER_DEVICE" | grep kernel | awk '/proto kernel/ {print $1}' | tr -d "\n")
|
||||||
fi
|
fi
|
||||||
if [ -z "$OMR_TRACKER_DEVICE_GATEWAY6" ]; then
|
|
||||||
OMR_TRACKER_DEVICE_GATEWAY6=$(uci -q get "network.$OMR_TRACKER_INTERFACE.ip6gw")
|
|
||||||
fi
|
|
||||||
if [ -z "$OMR_TRACKER_DEVICE_GATEWAY6" ] || [ "$OMR_TRACKER_DEVICE_GATEWAY6" = "::" ]; then
|
|
||||||
OMR_TRACKER_DEVICE_GATEWAY6=$(ubus call network.interface.${OMR_TRACKER_INTERFACE} status 2>/dev/null | jsonfilter -q -l 1 -e "@.inactive.route[@.source=\"${OMR_TRACKER_DEVICE_IP6}\"].nexthop" | tr -d "\n")
|
|
||||||
fi
|
|
||||||
if [ -z "$OMR_TRACKER_DEVICE_GATEWAY6" ] || [ "$OMR_TRACKER_DEVICE_GATEWAY6" = "::" ]; then
|
|
||||||
OMR_TRACKER_DEVICE_GATEWAY6=$(ubus call network.interface.$OMR_TRACKER_INTERFACE status | jsonfilter -q -l 1 -e '@.route[@.target="::"].nexthop' | tr -d "\n")
|
|
||||||
fi
|
|
||||||
|
|
||||||
# execute specific tracker
|
# execute specific tracker
|
||||||
if [ -n "$OMR_TRACKER_DEVICE_IP" ] && [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ]; then
|
if [ -n "$OMR_TRACKER_DEVICE_IP" ] && [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ]; then
|
||||||
|
@ -329,89 +304,6 @@ while true; do
|
||||||
sleep "$OMR_TRACKER_INTERVAL_TRIES"
|
sleep "$OMR_TRACKER_INTERVAL_TRIES"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
if [ -n "$OMR_TRACKER_DEVICE_IP6" ] && [ -n "$OMR_TRACKER_DEVICE_GATEWAY6" ]; then
|
|
||||||
# setup loop variable
|
|
||||||
tries="$OMR_TRACKER_TRIES"
|
|
||||||
# loop until tries attempts have been reached
|
|
||||||
while [ "$tries" -gt 0 ]; do
|
|
||||||
#if [ -n "$OMR_TRACKER_DEVICE_ROUTE" ]; then
|
|
||||||
# _ping "$OMR_TRACKER_DEVICE_ROUTE" "$OMR_TRACKER_DEVICE" "no"
|
|
||||||
# status=$?
|
|
||||||
#else
|
|
||||||
_ping "$OMR_TRACKER_DEVICE_GATEWAY6" "$OMR_TRACKER_DEVICE" "no"
|
|
||||||
status=$?
|
|
||||||
#fi
|
|
||||||
if $(exit $status) && [ "$OMR_TRACKER_TYPE" = "none" ]; then
|
|
||||||
OMR_TRACKER_STATUS_MSG=""
|
|
||||||
OMR_TRACKER_STATUS="OK"
|
|
||||||
break
|
|
||||||
elif [ "$OMR_TRACKER_TYPE" != "none" ]; then
|
|
||||||
if ! $(exit $status); then
|
|
||||||
OMR_TRACKER_STATUS_MSG="gateway6 down"
|
|
||||||
fi
|
|
||||||
serverip_ping=false
|
|
||||||
if [ "$OMR_TRACKER_TYPE" = "ping" ]; then
|
|
||||||
config_load openmptcprouter
|
|
||||||
config_foreach _ping_server server $OMR_TRACKER_DEVICE
|
|
||||||
fi
|
|
||||||
if [ "$serverip_ping" = false ] && [ -n "$OMR_TRACKER_HOST6" ]; then
|
|
||||||
OMR_TRACKER_HOST6=$(resolveip -6 -t 5 $OMR_TRACKER_HOST6 | head -n 1 | tr -d "\n")
|
|
||||||
if [ -n "$OMR_TRACKER_HOST6" ]; 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 -6 route add $OMR_TRACKER_HOST6 via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE src $OMR_TRACKER_DEVICE_IP6 > /dev/null 2>&1
|
|
||||||
do
|
|
||||||
logger -t "omr-tracker" "Can't create route to $OMR_TRACKER_HOST6 via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE src $OMR_TRACKER_DEVICE_IP6. waiting..."
|
|
||||||
sleep 2
|
|
||||||
ip -6 route del "$OMR_TRACKER_HOST6" via "$OMR_TRACKER_DEVICE_GATEWAY6" dev "$OMR_TRACKER_DEVICE" src "$OMR_TRACKER_DEVICE_IP6" > /dev/null 2>&1
|
|
||||||
_restart
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
if [ "$OMR_TRACKER_TYPE" = "ping" ]; then
|
|
||||||
_ping "$OMR_TRACKER_HOST6" "$OMR_TRACKER_DEVICE" "yes"
|
|
||||||
statusb=$?
|
|
||||||
elif [ "$OMR_TRACKER_TYPE" = "httping" ]; then
|
|
||||||
_httping "$OMR_TRACKER_HOST6" "$OMR_TRACKER_DEVICE_IP" "yes"
|
|
||||||
statusb=$?
|
|
||||||
elif [ "$OMR_TRACKER_TYPE" = "dns" ]; then
|
|
||||||
_dns "$OMR_TRACKER_HOST6" "$OMR_TRACKER_DEVICE_IP" "yes"
|
|
||||||
statusb=$?
|
|
||||||
fi
|
|
||||||
ip -6 route del "$OMR_TRACKER_HOST6" via "$OMR_TRACKER_DEVICE_GATEWAY6" dev "$OMR_TRACKER_DEVICE" src "$OMR_TRACKER_DEVICE_IP6" > /dev/null 2>&1
|
|
||||||
if $(exit $statusb); then
|
|
||||||
OMR_TRACKER_STATUS_MSG=""
|
|
||||||
OMR_TRACKER_STATUS="OK"
|
|
||||||
break
|
|
||||||
else
|
|
||||||
if [ "$OMR_TRACKER_LIST_HOSTS6" = "" ]; then
|
|
||||||
OMR_TRACKER_LIST_HOSTS="$OMR_TRACKER_HOST6"
|
|
||||||
else
|
|
||||||
OMR_TRACKER_LIST_HOSTS6="$OMR_TRACKER_LIST_HOSTS6,$OMR_TRACKER_HOST6"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
OMR_TRACKER_STATUS_MSG=""
|
|
||||||
OMR_TRACKER_STATUS="OK"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
OMR_TRACKER_STATUS_MSG=""
|
|
||||||
OMR_TRACKER_STATUS="OK"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
elif ! $(exit $status); then
|
|
||||||
OMR_TRACKER_STATUS_MSG="gateway down"
|
|
||||||
fi
|
|
||||||
tries=$((tries - 1))
|
|
||||||
#_restart
|
|
||||||
OMR_TRACKER_HOST6="${OMR_TRACKER_HOSTS6%% *}"
|
|
||||||
[ "$OMR_TRACKER_HOST6" = "$OMR_TRACKER_HOSTS6" ] || {
|
|
||||||
OMR_TRACKER_HOSTS6="${OMR_TRACKER_HOSTS6#* } $OMR_TRACKER_HOST6"
|
|
||||||
}
|
|
||||||
#OMR_TRACKER_TIMEOUT=$((OMR_TRACKER_TIMEOUT * 2))
|
|
||||||
sleep "$OMR_TRACKER_INTERVAL_TRIES"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
OMR_TRACKER_STATUS_MSG="link down"
|
OMR_TRACKER_STATUS_MSG="link down"
|
||||||
fi
|
fi
|
||||||
|
@ -424,13 +316,6 @@ while true; do
|
||||||
OMR_TRACKER_STATUS_MSG="$OMR_TRACKER_STATUS_MSG and $OMR_TRACKER_TYPE from $OMR_TRACKER_DEVICE_IP error ($OMR_TRACKER_LIST_HOSTS)"
|
OMR_TRACKER_STATUS_MSG="$OMR_TRACKER_STATUS_MSG and $OMR_TRACKER_TYPE from $OMR_TRACKER_DEVICE_IP error ($OMR_TRACKER_LIST_HOSTS)"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [ "$OMR_TRACKER_LIST_HOSTS6" != "" ]; then
|
|
||||||
if [ "$OMR_TRACKER_STATUS_MSG" = "" ]; then
|
|
||||||
OMR_TRACKER_STATUS_MSG="$OMR_TRACKER_TYPE from $OMR_TRACKER_DEVICE_IP error ($OMR_TRACKER_LIST_HOSTS6)"
|
|
||||||
else
|
|
||||||
OMR_TRACKER_STATUS_MSG="$OMR_TRACKER_STATUS_MSG and $OMR_TRACKER_TYPE from $OMR_TRACKER_DEVICE_IP error ($OMR_TRACKER_LIST_HOSTS6)"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
#[ "$OMR_TRACKER_HOSTS" = "$initial_hosts" ] || [ "$OMR_TRACKER_STATUS" = "OK" ] && _post_tracking
|
#[ "$OMR_TRACKER_HOSTS" = "$initial_hosts" ] || [ "$OMR_TRACKER_STATUS" = "OK" ] && _post_tracking
|
||||||
#[ "$OMR_TRACKER_STATUS" = "ERROR" ] && _restart
|
#[ "$OMR_TRACKER_STATUS" = "ERROR" ] && _restart
|
||||||
|
|
|
@ -14,7 +14,7 @@ _ping_server() {
|
||||||
-w "$OMR_TRACKER_TIMEOUT" \
|
-w "$OMR_TRACKER_TIMEOUT" \
|
||||||
-c 1 \
|
-c 1 \
|
||||||
-q \
|
-q \
|
||||||
"${host}" 2>/dev/null
|
"${host}"
|
||||||
) && echo "$ret" | grep -sq " 0% packet loss" && {
|
) && echo "$ret" | grep -sq " 0% packet loss" && {
|
||||||
server_ping=true
|
server_ping=true
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,140 +37,86 @@ _check_server() {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
_disable_redir() {
|
|
||||||
local redir=$1
|
|
||||||
config_get server $redir server
|
|
||||||
if [ "$server" = "sss${count}" ]; then
|
|
||||||
config_set $redir disabled "1"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
_enable_redir() {
|
|
||||||
local redir=$1
|
|
||||||
config_get server $redir server
|
|
||||||
if [ "$server" = "sss${count}" ]; then
|
|
||||||
config_set $redir disabled "0"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
_check_master() {
|
_check_master() {
|
||||||
local name=$1
|
local name=$1
|
||||||
local count=0
|
|
||||||
local countips=0
|
|
||||||
config_get master $1 master
|
config_get master $1 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
|
||||||
[ "$master" = "1" ] && [ -n "$ip" ] && [ "$disabled" != "1" ] && {
|
[ "$master" = "1" ] && [ -n "$ip" ] && [ "$disabled" != "1" ] && {
|
||||||
set_ip() {
|
#_ping_server $ip
|
||||||
local ip=$1
|
_check_server $ip $port
|
||||||
#_ping_server $ip
|
[ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss0.server | tr -d '\n')" != "$ip" ] && {
|
||||||
_check_server $ip $port
|
logger -t "OMR-Tracker-Server" "Master server up, set it back"
|
||||||
if [ "$server_ping" = true ]; then
|
logger -t "OMR-Tracker-Server" "$(uci -q get shadowsocks-libev.sss0.server | tr -d '\n') - $ip"
|
||||||
if [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" != "$ip" ]; then
|
uci -q batch <<-EOF >/dev/null
|
||||||
logger -t "OMR-Tracker-Server" "Master server ${name} up ($ip), set it back"
|
set shadowsocks-libev.sss0.server=$ip
|
||||||
#logger -t "OMR-Tracker-Server" "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n') - $ip"
|
commit shadowsocks-libev
|
||||||
uci -q batch <<-EOF >/dev/null
|
set v2ray.omrout.s_vmess_address=$ip
|
||||||
set shadowsocks-libev.sss${count}.server=$ip
|
set v2ray.omrout.s_vless_address=$ip
|
||||||
commit shadowsocks-libev
|
commit v2ray
|
||||||
EOF
|
set glorytun.vpn.host=$ip
|
||||||
if [ "$count" -eq "0" ]; then
|
commit glorytun
|
||||||
uci -q batch <<-EOF >/dev/null
|
set dsvpn.vpn.host=$ip
|
||||||
set v2ray.omrout.s_vmess_address=$ip
|
commit dsvpn
|
||||||
set v2ray.omrout.s_vless_address=$ip
|
set mlvpn.general.host=$ip
|
||||||
commit v2ray
|
commit mlvpn
|
||||||
set glorytun.vpn.host=$ip
|
del openvpn.omr.remote
|
||||||
commit glorytun
|
add_list openvpn.omr.remote=$ip
|
||||||
set dsvpn.vpn.host=$ip
|
commit openvpn
|
||||||
commit dsvpn
|
EOF
|
||||||
set mlvpn.general.host=$ip
|
/etc/init.d/openmptcprouter-vps get_openvpn_key $name >/dev/null 2>/dev/null
|
||||||
commit mlvpn
|
/etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null
|
||||||
del openvpn.omr.remote
|
/etc/init.d/v2ray restart >/dev/null 2>/dev/null
|
||||||
add_list openvpn.omr.remote=$ip
|
/etc/init.d/glorytun restart >/dev/null 2>/dev/null
|
||||||
commit openvpn
|
/etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null
|
||||||
EOF
|
/etc/init.d/mlvpn restart >/dev/null 2>/dev/null
|
||||||
/etc/init.d/openmptcprouter-vps get_openvpn_key $name >/dev/null 2>/dev/null
|
/etc/init.d/openvpn restart >/dev/null 2>/dev/null
|
||||||
/etc/init.d/v2ray restart >/dev/null 2>/dev/null
|
/etc/init.d/dsvpn restart >/dev/null 2>/dev/null
|
||||||
/etc/init.d/glorytun restart >/dev/null 2>/dev/null
|
|
||||||
/etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null
|
|
||||||
/etc/init.d/mlvpn restart >/dev/null 2>/dev/null
|
|
||||||
/etc/init.d/openvpn restart >/dev/null 2>/dev/null
|
|
||||||
/etc/init.d/dsvpn restart >/dev/null 2>/dev/null
|
|
||||||
fi
|
|
||||||
/etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null
|
|
||||||
fi
|
|
||||||
config_load shadowsocks-libev
|
|
||||||
config_foreach _enable_redir ss_redir
|
|
||||||
count=$((count+1))
|
|
||||||
else
|
|
||||||
config_load shadowsocks-libev
|
|
||||||
config_foreach _disable_redir ss_redir
|
|
||||||
fi
|
|
||||||
countips=$((countips+1))
|
|
||||||
}
|
}
|
||||||
config_list_foreach $1 ip set_ip
|
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_check_backup() {
|
_check_backup() {
|
||||||
local name=$1
|
local name=$1
|
||||||
local count=0
|
|
||||||
local countips=0
|
|
||||||
config_get backup $1 backup
|
config_get backup $1 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
|
||||||
[ "$backup" = "1" ] && [ -n "$ip" ] && [ "$disabled" != "1" ] && {
|
[ "$backup" = "1" ] && [ -n "$ip" ] && [ "$disabled" != "1" ] && {
|
||||||
set_ip() {
|
#_ping_server $ip
|
||||||
#_ping_server $ip
|
_check_server $ip $port
|
||||||
_check_server $ip $port
|
[ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss0.server | tr -d '\n')" = "$ip" ] && break
|
||||||
#[ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" = "$ip" ] && break
|
[ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss0.server | tr -d '\n')" != "$ip" ] && {
|
||||||
if [ "$server_ping" = true ]; then
|
logger -t "OMR-Tracker-Server" "Use backup server $1 ($ip)"
|
||||||
if [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" != "$ip" ]; then
|
uci -q batch <<-EOF >/dev/null
|
||||||
logger -t "OMR-Tracker-Server" "Use backup server $1 ($ip)"
|
set shadowsocks-libev.sss0.server=$ip
|
||||||
uci -q batch <<-EOF >/dev/null
|
commit shadowsocks-libev
|
||||||
set shadowsocks-libev.sss${count}.server=$ip
|
set v2ray.omrout.s_vmess_address=$ip
|
||||||
commit shadowsocks-libev
|
set v2ray.omrout.s_vless_address=$ip
|
||||||
EOF
|
commit v2ray
|
||||||
if [ "$count" -eq "0" ]; then
|
set glorytun.vpn.host=$ip
|
||||||
uci -q batch <<-EOF >/dev/null
|
commit glorytun
|
||||||
set v2ray.omrout.s_vmess_address=$ip
|
set dsvpn.vpn.host=$ip
|
||||||
set v2ray.omrout.s_vless_address=$ip
|
commit dsvpn
|
||||||
commit v2ray
|
set mlvpn.general.host=$ip
|
||||||
set glorytun.vpn.host=$ip
|
commit mlvpn
|
||||||
commit glorytun
|
del openvpn.omr.remote
|
||||||
set dsvpn.vpn.host=$ip
|
add_list openvpn.omr.remote=$ip
|
||||||
commit dsvpn
|
commit openvpn
|
||||||
set mlvpn.general.host=$ip
|
EOF
|
||||||
commit mlvpn
|
/etc/init.d/openmptcprouter-vps get_openvpn_key $name >/dev/null 2>/dev/null
|
||||||
del openvpn.omr.remote
|
/etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null
|
||||||
add_list openvpn.omr.remote=$ip
|
/etc/init.d/v2ray restart >/dev/null 2>/dev/null
|
||||||
commit openvpn
|
/etc/init.d/glorytun restart >/dev/null 2>/dev/null
|
||||||
EOF
|
/etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null
|
||||||
/etc/init.d/openmptcprouter-vps get_openvpn_key $name >/dev/null 2>/dev/null
|
/etc/init.d/mlvpn restart >/dev/null 2>/dev/null
|
||||||
/etc/init.d/v2ray restart >/dev/null 2>/dev/null
|
/etc/init.d/openvpn restart >/dev/null 2>/dev/null
|
||||||
/etc/init.d/glorytun restart >/dev/null 2>/dev/null
|
/etc/init.d/dsvpn restart >/dev/null 2>/dev/null
|
||||||
/etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null
|
sleep $waittest
|
||||||
/etc/init.d/mlvpn restart >/dev/null 2>/dev/null
|
break
|
||||||
/etc/init.d/openvpn restart >/dev/null 2>/dev/null
|
|
||||||
/etc/init.d/dsvpn restart >/dev/null 2>/dev/null
|
|
||||||
fi
|
|
||||||
/etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null
|
|
||||||
sleep $waittest
|
|
||||||
fi
|
|
||||||
config_load shadowsocks-libev
|
|
||||||
config_foreach _enable_redir ss_redir
|
|
||||||
count=$((count+1))
|
|
||||||
else
|
|
||||||
config_load shadowsocks-libev
|
|
||||||
config_foreach _disable_redir ss_redir
|
|
||||||
fi
|
|
||||||
countips=$((countips+1))
|
|
||||||
}
|
}
|
||||||
config_list_foreach $1 ip set_ip
|
|
||||||
uci -q commit shadowsocks-libev
|
|
||||||
[ "$server_ping" = true ] && break
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,12 +27,7 @@ _get_ip() {
|
||||||
[ -z "$check_ipv4_website" ] && check_ipv4_website="http://ip.openmptcprouter.com"
|
[ -z "$check_ipv4_website" ] && check_ipv4_website="http://ip.openmptcprouter.com"
|
||||||
check_ipv6_website="$(uci -q get openmptcprouter.settings.check_ipv6_website)"
|
check_ipv6_website="$(uci -q get openmptcprouter.settings.check_ipv6_website)"
|
||||||
[ -z "$check_ipv6_website" ] && check_ipv6_website="http://ipv6.openmptcprouter.com"
|
[ -z "$check_ipv6_website" ] && check_ipv6_website="http://ipv6.openmptcprouter.com"
|
||||||
public_ipv4="$(curl -s -4 -m 3 $check_ipv4_website)"
|
uci -q set openmptcprouter.omr.detected_public_ipv4="$(curl -s -4 -m 3 $check_ipv4_website)"
|
||||||
uci -q set openmptcprouter.omr.detected_public_ipv4="${public_ipv4}"
|
|
||||||
[ -n "$public_ipv4" ] && {
|
|
||||||
uci -q set upnpd.config.external_ip="${public_ipv4}"
|
|
||||||
uci -q commit upnpd
|
|
||||||
}
|
|
||||||
if [ "$(uci -q get openmptcprouter.omr.shadowsocks)" != "down" ]; then
|
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)"
|
uci -q set openmptcprouter.omr.detected_ss_ipv4="$(curl -s -4 --socks5 "${proxy}" --max-time 3 $check_ipv4_website)"
|
||||||
else
|
else
|
||||||
|
@ -54,7 +49,6 @@ retry=${OMR_TRACKER_TRIES:-4}
|
||||||
proxy=${OMR_TRACKER_PROXY:-127.0.0.1:1111}
|
proxy=${OMR_TRACKER_PROXY:-127.0.0.1:1111}
|
||||||
hosts=${OMR_TRACKER_HOSTS:-1.1.1.1 1.0.0.1}
|
hosts=${OMR_TRACKER_HOSTS:-1.1.1.1 1.0.0.1}
|
||||||
wait_test=${OMR_TRACKER_WAIT_TEST:-0}
|
wait_test=${OMR_TRACKER_WAIT_TEST:-0}
|
||||||
server=${OMR_TRACKER_SERVER:-sss0}
|
|
||||||
|
|
||||||
nodns=0
|
nodns=0
|
||||||
|
|
||||||
|
@ -71,12 +65,12 @@ while true; do
|
||||||
}
|
}
|
||||||
if [ "$(curl -s -I -w %{http_code} --socks5 ${proxy} --max-time ${timeout} $host -o /dev/null)" != "000" ]; then
|
if [ "$(curl -s -I -w %{http_code} --socks5 ${proxy} --max-time ${timeout} $host -o /dev/null)" != "000" ]; then
|
||||||
nocontact=""
|
nocontact=""
|
||||||
[ "${last}" -ge "${retry}" ] || [ "$(uci -q get openmptcprouter.omr.ss_${server})" = "" ] && {
|
[ "${last}" -ge "${retry}" ] || [ "$(uci -q get openmptcprouter.omr.shadowsocks)" = "" ] && {
|
||||||
_log "Shadowsocks ${server} is up (can contact via http ${host})"
|
_log "Shadowsocks is up (can contact via http ${host})"
|
||||||
uci -q set openmptcprouter.omr.ss_${server}="up"
|
uci -q set openmptcprouter.omr.shadowsocks="up"
|
||||||
uci -q commit openmptcprouter.omr
|
uci -q commit openmptcprouter.omr
|
||||||
}
|
}
|
||||||
if [ -z "$(iptables-save | grep :ssr)" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.disabled)" != "1" ]; then
|
if [ -z "$(iptables -t nat -L -n | grep ss_rules)" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.disabled)" != "1" ]; then
|
||||||
_log "Reload Shadowsocks rules"
|
_log "Reload Shadowsocks rules"
|
||||||
/etc/init.d/shadowsocks-libev rules_up 2> /dev/null
|
/etc/init.d/shadowsocks-libev rules_up 2> /dev/null
|
||||||
_get_ip
|
_get_ip
|
||||||
|
@ -87,17 +81,17 @@ 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 -w -t nat -L -n | grep ssr)" ]; then
|
if [ -n "$(iptables -t nat -L -n | grep ssr)" ]; then
|
||||||
_log "Shadowsocks ${server} is down (can't contact via http ${nocontact})"
|
_log "Shadowsocks is down (can't contact via http ${nocontact})"
|
||||||
uci -q set openmptcprouter.omr.ss_${server}="down"
|
uci -q set openmptcprouter.omr.shadowsocks="down"
|
||||||
uci -q commit openmptcprouter.omr
|
uci -q commit openmptcprouter.omr
|
||||||
[ "$(uci show openmptcprouter.omr | grep ss | grep up)" = "" ] && /etc/init.d/shadowsocks-libev rules_down 2> /dev/null
|
/etc/init.d/shadowsocks-libev rules_down 2> /dev/null
|
||||||
_get_ip
|
_get_ip
|
||||||
server_ping=false
|
server_ping=false
|
||||||
serverip="$(uci -q get shadowsocks-libev.${server}.server)"
|
server="$(uci -q get shadowsocks-libev.sss0.server)"
|
||||||
_ping_server $serverip
|
_ping_server $server
|
||||||
if [ "$server_ping" = false ]; then
|
if [ "$server_ping" = false ]; then
|
||||||
_log "Server $server ($serverip) seems down, no answer to ping"
|
_log "Server ($server) seems down, no answer to ping"
|
||||||
fi
|
fi
|
||||||
sleep $wait_test
|
sleep $wait_test
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -27,12 +27,7 @@ _get_ip() {
|
||||||
[ -z "$check_ipv4_website" ] && check_ipv4_website="http://ip.openmptcprouter.com"
|
[ -z "$check_ipv4_website" ] && check_ipv4_website="http://ip.openmptcprouter.com"
|
||||||
check_ipv6_website="$(uci -q get openmptcprouter.settings.check_ipv6_website)"
|
check_ipv6_website="$(uci -q get openmptcprouter.settings.check_ipv6_website)"
|
||||||
[ -z "$check_ipv6_website" ] && check_ipv6_website="http://ipv6.openmptcprouter.com"
|
[ -z "$check_ipv6_website" ] && check_ipv6_website="http://ipv6.openmptcprouter.com"
|
||||||
public_ipv4="$(curl -s -4 -m 3 $check_ipv4_website)"
|
uci -q set openmptcprouter.omr.detected_public_ipv4="$(curl -s -4 -m 3 $check_ipv4_website)"
|
||||||
uci -q set openmptcprouter.omr.detected_public_ipv4="${public_ipv4}"
|
|
||||||
[ -n "${public_ipv4}" ] && {
|
|
||||||
uci -q set upnpd.config.external_ip="${public_ipv4}"
|
|
||||||
uci -q commit upnpd
|
|
||||||
}
|
|
||||||
if [ "$(uci -q get openmptcprouter.omr.v2ray)" != "down" ]; then
|
if [ "$(uci -q get openmptcprouter.omr.v2ray)" != "down" ]; then
|
||||||
uci -q set openmptcprouter.omr.detected_ss_ipv4="$(curl -s -4 --socks5 "${proxy}" --max-time 3 $check_ipv4_website)"
|
uci -q set openmptcprouter.omr.detected_ss_ipv4="$(curl -s -4 --socks5 "${proxy}" --max-time 3 $check_ipv4_website)"
|
||||||
else
|
else
|
||||||
|
|
|
@ -11,15 +11,12 @@
|
||||||
USE_PROCD=1
|
USE_PROCD=1
|
||||||
}
|
}
|
||||||
|
|
||||||
. /usr/lib/unbound/iptools.sh
|
|
||||||
|
|
||||||
_validate_section() {
|
_validate_section() {
|
||||||
local tmp_hosts=$hosts tmp_hosts6=$hosts6 tmp_timeout=$timeout tmp_tries=$tries
|
local tmp_hosts=$hosts tmp_timeout=$timeout tmp_tries=$tries
|
||||||
local tmp_interval=$interval tmp_interval_tries=$interval_tries tmp_options=$options tmp_type=$type tmp_enabled=$enabled tmp_wait_test=$wait_test
|
local tmp_interval=$interval tmp_interval_tries=$interval_tries tmp_options=$options tmp_type=$type tmp_enabled=$enabled tmp_wait_test=$wait_test
|
||||||
|
|
||||||
uci_validate_section omr-tracker "$1" "$2" \
|
uci_validate_section omr-tracker "$1" "$2" \
|
||||||
'hosts:list(host)' \
|
'hosts:list(host)' \
|
||||||
'hosts6:list(host6)' \
|
|
||||||
'timeout:uinteger' \
|
'timeout:uinteger' \
|
||||||
'tries:uinteger' \
|
'tries:uinteger' \
|
||||||
'interval:uinteger' \
|
'interval:uinteger' \
|
||||||
|
@ -30,7 +27,6 @@ _validate_section() {
|
||||||
'options:string'
|
'options:string'
|
||||||
|
|
||||||
[ -z "$hosts" ] && hosts=$tmp_hosts
|
[ -z "$hosts" ] && hosts=$tmp_hosts
|
||||||
[ -z "$hosts6" ] && hosts6=$tmp_hosts6
|
|
||||||
[ -z "$timeout" ] && timeout=$tmp_timeout
|
[ -z "$timeout" ] && timeout=$tmp_timeout
|
||||||
[ -z "$tries" ] && tries=$tmp_tries
|
[ -z "$tries" ] && tries=$tmp_tries
|
||||||
[ -z "$interval" ] && interval=$tmp_interval
|
[ -z "$interval" ] && interval=$tmp_interval
|
||||||
|
@ -46,7 +42,7 @@ _launch_tracker() {
|
||||||
loopback|lan*|if0*) return;;
|
loopback|lan*|if0*) return;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
local hosts hosts6 timeout tries interval interval_tries options type enabled wait_test
|
local hosts timeout tries interval interval_tries options type enabled wait_test
|
||||||
_validate_section "defaults" "defaults"
|
_validate_section "defaults" "defaults"
|
||||||
_validate_section "interface" "$1"
|
_validate_section "interface" "$1"
|
||||||
|
|
||||||
|
@ -69,7 +65,6 @@ _launch_tracker() {
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
procd_set_param command /bin/omr-tracker "$1" $options
|
procd_set_param command /bin/omr-tracker "$1" $options
|
||||||
procd_append_param env "OMR_TRACKER_HOSTS=$hosts"
|
procd_append_param env "OMR_TRACKER_HOSTS=$hosts"
|
||||||
procd_append_param env "OMR_TRACKER_HOSTS6=$hosts6"
|
|
||||||
procd_append_param env "OMR_TRACKER_TIMEOUT=$timeout"
|
procd_append_param env "OMR_TRACKER_TIMEOUT=$timeout"
|
||||||
procd_append_param env "OMR_TRACKER_TRIES=$tries"
|
procd_append_param env "OMR_TRACKER_TRIES=$tries"
|
||||||
procd_append_param env "OMR_TRACKER_INTERVAL=$interval"
|
procd_append_param env "OMR_TRACKER_INTERVAL=$interval"
|
||||||
|
@ -132,46 +127,48 @@ _launch_gre_tracker() {
|
||||||
|
|
||||||
_initialize_shadowsocks_tracker() {
|
_initialize_shadowsocks_tracker() {
|
||||||
local redir_tcp server tracker_server
|
local redir_tcp server tracker_server
|
||||||
server=$1
|
config_get redir_tcp ss_rules redir_tcp
|
||||||
|
config_get tracker_server "tracker" server
|
||||||
[ -n "$(echo $server | grep sss)" ] || return
|
if [ "$redir_tcp" != "all" ]; then
|
||||||
|
config_get server $redir_tcp server
|
||||||
#redir_tcp=$(uci -q get shadowsocks-libev.ss_rules.redir_tcp)
|
elif [ "$tracker_server" != "" ]; then
|
||||||
#config_get tracker_server ss_rules server
|
server=$tracker_server
|
||||||
|
else
|
||||||
|
server="sss0"
|
||||||
|
fi
|
||||||
config_get ss_disabled $server disabled 0
|
config_get ss_disabled $server disabled 0
|
||||||
[ "$ss_disabled" = "0" ] && ss_enable="1"
|
[ -z "$tracker_server" ] && {
|
||||||
[ -z "$(uci -q get shadowsocks-libev.tracker_${server})" ] && [ "$ss_disabled" != "1" ] && {
|
|
||||||
logger -t "omr-tracker" "Create ShadowSock tracker ss_local..."
|
logger -t "omr-tracker" "Create ShadowSock tracker ss_local..."
|
||||||
uci -q batch <<-EOF >/dev/null
|
uci -q batch <<-EOF >/dev/null
|
||||||
set shadowsocks-libev.tracker_${server}=ss_local
|
set shadowsocks-libev.tracker=ss_local
|
||||||
set shadowsocks-libev.tracker_${server}.server=$server
|
set shadowsocks-libev.tracker.server=$server
|
||||||
set shadowsocks-libev.tracker_${server}.local_address="127.0.0.1"
|
set shadowsocks-libev.tracker.local_address="127.0.0.1"
|
||||||
set shadowsocks-libev.tracker_${server}.local_port=1111
|
set shadowsocks-libev.tracker.local_port=1111
|
||||||
set shadowsocks-libev.tracker_${server}.mode=tcp_and_udp
|
set shadowsocks-libev.tracker.mode=tcp_and_udp
|
||||||
set shadowsocks-libev.tracker_${server}.timeout=600
|
set shadowsocks-libev.tracker.timeout=600
|
||||||
set shadowsocks-libev.tracker_${server}.fast_open=1
|
set shadowsocks-libev.tracker.fast_open=1
|
||||||
set shadowsocks-libev.tracker_${server}.syslog=0
|
set shadowsocks-libev.tracker.syslog=0
|
||||||
set shadowsocks-libev.tracker_${server}.reuse_port=1
|
set shadowsocks-libev.tracker.reuse_port=1
|
||||||
set shadowsocks-libev.tracker_${server}.mptcp=1
|
set shadowsocks-libev.tracker.mptcp=1
|
||||||
set shadowsocks-libev.tracker_${server}.verbose=0
|
set shadowsocks-libev.tracker.verbose=0
|
||||||
|
commit shadowsocks-libev
|
||||||
|
EOF
|
||||||
|
/etc/init.d/shadowsocks-libev restart
|
||||||
|
}
|
||||||
|
[ -n "$tracker_server" ] && [ "$server" = "$tracker_server" ] || {
|
||||||
|
logger -t "omr-tracker" "Set ShadowSock tracker to current server ($tracker_server -> $server)..."
|
||||||
|
uci -q batch <<-EOF >/dev/null
|
||||||
|
set shadowsocks-libev.tracker.server=$server
|
||||||
commit shadowsocks-libev
|
commit shadowsocks-libev
|
||||||
EOF
|
EOF
|
||||||
/etc/init.d/shadowsocks-libev restart
|
/etc/init.d/shadowsocks-libev restart
|
||||||
}
|
}
|
||||||
# [ -n "$tracker_server" ] && [ "$server" = "$tracker_server" ] || {
|
|
||||||
# logger -t "omr-tracker" "Set ShadowSock tracker to current server ($tracker_server -> $server)..."
|
|
||||||
# uci -q batch <<-EOF >/dev/null
|
|
||||||
# set shadowsocks-libev.tracker.server=$server
|
|
||||||
# commit shadowsocks-libev
|
|
||||||
# EOF
|
|
||||||
# /etc/init.d/shadowsocks-libev restart
|
|
||||||
# }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_launch_shadowsocks_tracker() {
|
_launch_shadowsocks_tracker() {
|
||||||
local hosts timeout tries interval local_port enabled server wait_test
|
local hosts timeout tries interval local_port enabled server wait_test
|
||||||
|
|
||||||
[ "$(echo $1 | grep tracker)" != "" ] || return
|
[ "$1" = "tracker" ] || return
|
||||||
|
|
||||||
_validate_section "proxy" "proxy"
|
_validate_section "proxy" "proxy"
|
||||||
|
|
||||||
|
@ -192,7 +189,6 @@ _launch_shadowsocks_tracker() {
|
||||||
procd_append_param env "OMR_TRACKER_INTERVAL=$interval"
|
procd_append_param env "OMR_TRACKER_INTERVAL=$interval"
|
||||||
procd_append_param env "OMR_TRACKER_PROXY=127.0.0.1:$local_port"
|
procd_append_param env "OMR_TRACKER_PROXY=127.0.0.1:$local_port"
|
||||||
procd_append_param env "OMR_TRACKER_WAIT_TEST=$wait_test"
|
procd_append_param env "OMR_TRACKER_WAIT_TEST=$wait_test"
|
||||||
procd_append_param env "OMR_TRACKER_SERVER=$server"
|
|
||||||
procd_set_param limits nofile="51200 51200"
|
procd_set_param limits nofile="51200 51200"
|
||||||
procd_set_param respawn 0 10 0
|
procd_set_param respawn 0 10 0
|
||||||
procd_set_param stderr 1
|
procd_set_param stderr 1
|
||||||
|
@ -231,15 +227,15 @@ _gre_tunnel() {
|
||||||
}
|
}
|
||||||
|
|
||||||
start_service() {
|
start_service() {
|
||||||
local ss_enable=0
|
local ss_disabled
|
||||||
logger -t "omr-tracker" "Launching..."
|
logger -t "omr-tracker" "Launching..."
|
||||||
config_load shadowsocks-libev
|
config_load shadowsocks-libev
|
||||||
config_foreach _initialize_shadowsocks_tracker server
|
_initialize_shadowsocks_tracker
|
||||||
|
|
||||||
config_load network
|
config_load network
|
||||||
config_foreach _launch_tracker interface
|
config_foreach _launch_tracker interface
|
||||||
|
|
||||||
if [ "$ss_enable" = "1" ]; then
|
if [ "$ss_disabled" != "1" ]; then
|
||||||
config_load shadowsocks-libev
|
config_load shadowsocks-libev
|
||||||
config_foreach _launch_shadowsocks_tracker ss_local
|
config_foreach _launch_shadowsocks_tracker ss_local
|
||||||
#elif [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ]; then
|
#elif [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ]; then
|
||||||
|
|
|
@ -50,7 +50,6 @@ MY_DEPENDS := \
|
||||||
speedtestc \
|
speedtestc \
|
||||||
iftop \
|
iftop \
|
||||||
htop \
|
htop \
|
||||||
nano \
|
|
||||||
tcpdump \
|
tcpdump \
|
||||||
ethtool \
|
ethtool \
|
||||||
iputils-ping \
|
iputils-ping \
|
||||||
|
@ -81,7 +80,7 @@ MY_DEPENDS := \
|
||||||
!TARGET_mvebu:luci-proto-qmi wpad-basic kmod-mt7601u kmod-rtl8187 \
|
!TARGET_mvebu:luci-proto-qmi wpad-basic kmod-mt7601u kmod-rtl8187 \
|
||||||
luci-app-mlvpn mlvpn 464xlat !TARGET_mvebu:kmod-usb-net-smsc75xx kmod-zram kmod-swconfig swconfig kmod-ipt-nat kmod-ipt-nat6 luci-app-https-dns-proxy kmod-tcp-nanqinlang (TARGET_x86_64||aarch64):kmod-tcp-bbr2 iptables-mod-ipopt igmpproxy ss iptraf-ng \
|
luci-app-mlvpn mlvpn 464xlat !TARGET_mvebu:kmod-usb-net-smsc75xx kmod-zram kmod-swconfig swconfig kmod-ipt-nat kmod-ipt-nat6 luci-app-https-dns-proxy kmod-tcp-nanqinlang (TARGET_x86_64||aarch64):kmod-tcp-bbr2 iptables-mod-ipopt igmpproxy ss iptraf-ng \
|
||||||
luci-app-acl block-mount blockd fstools luci-app-shutdown libwebp luci-proto-gre tcptraceroute luci-proto-mbim kmod-rtl8xxxu kmod-ath9k-htc luci-app-ttyd luci-mod-dashboard (TARGET_x86||TARGET_x86_64):rtl8192eu-firmware kmod-usb2 libustream-wolfssl (TARGET_x86||TARGET_x86_64):kmod-ixgbevf \
|
luci-app-acl block-mount blockd fstools luci-app-shutdown libwebp luci-proto-gre tcptraceroute luci-proto-mbim kmod-rtl8xxxu kmod-ath9k-htc luci-app-ttyd luci-mod-dashboard (TARGET_x86||TARGET_x86_64):rtl8192eu-firmware kmod-usb2 libustream-wolfssl (TARGET_x86||TARGET_x86_64):kmod-ixgbevf \
|
||||||
hwinfo (TARGET_x86||TARGET_x86_64):dmidecode luci-app-packet-capture kmod-bonding luci-proto-bonding luci-app-sysupgrade
|
hwinfo (TARGET_x86||TARGET_x86_64):dmidecode luci-app-packet-capture kmod-bonding luci-proto-bonding
|
||||||
# luci-theme-bootstrap luci-theme-openwrt-2020 luci-theme-openwrt luci-app-status
|
# luci-theme-bootstrap luci-theme-openwrt-2020 luci-theme-openwrt luci-app-status
|
||||||
# luci-proto-bonding luci-app-statistics luci-proto-gre
|
# luci-proto-bonding luci-app-statistics luci-proto-gre
|
||||||
# softethervpn5-client softethervpn5-server luci-app-nginx-ha
|
# softethervpn5-client softethervpn5-server luci-app-nginx-ha
|
||||||
|
|
|
@ -27,16 +27,8 @@ if [ -z "$INTERFACE" ]; then
|
||||||
curl -4 $HOST >/dev/null || echo
|
curl -4 $HOST >/dev/null || echo
|
||||||
else
|
else
|
||||||
domain=$(echo $HOST | awk -F/ '{print $3}')
|
domain=$(echo $HOST | awk -F/ '{print $3}')
|
||||||
hostip=$(dig +nocmd +noall +answer A $domain | grep -v CNAME | awk '{print $5}' | tr '\n' ' ')
|
hostip=$(dig +nocmd +noall +answer A $domain | grep -v CNAME | awk '{print $5}' | tr -d "\n")
|
||||||
if [ -n "$(ipset list 2>/dev/null | grep ss_rules)" ]; then
|
ipset add ss_rules_dst_bypass_all $hostip
|
||||||
for ip in $hostip; do
|
|
||||||
ipset add ss_rules_dst_bypass_all $ip
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
curl -4 --interface $INTERFACE $HOST >/dev/null || echo
|
curl -4 --interface $INTERFACE $HOST >/dev/null || echo
|
||||||
if [ -n "$(ipset list 2>/dev/null | grep ss_rules)" ]; then
|
ipset del ss_rules_dst_bypass_all $hostip
|
||||||
for ip in $hostip; do
|
|
||||||
ipset del ss_rules_dst_bypass_all $ip
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -1,42 +1,15 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# vim: set noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 :
|
# vim: set noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 :
|
||||||
|
|
||||||
INTERFACE="$1"
|
INTERFACE="$1"
|
||||||
|
HOST="proof.ovh.net"
|
||||||
|
|
||||||
echo "Select best test server..."
|
|
||||||
HOSTLST="http://speedtest.frankfurt.linode.com/garbage.php?ckSize=10000 http://speedtest.tokyo2.linode.com/garbage.php?ckSize=10000 http://speedtest.singapore.linode.com/garbage.php?ckSize=10000 http://speedtest.newark.linode.com/garbage.php?ckSize=10000 http://speedtest.atlanta.linode.com/garbage.php?ckSize=10000 http://speedtest.dallas.linode.com/garbage.php?ckSize=10000 http://speedtest.fremont.linode.com/garbage.php?ckSize=10000 http://speedtest.tele2.net/1000GB.zip http://www.ovh.net/files/10Gb.dat https://speed.hetzner.de/10GB.bin http://ipv6.bouygues.testdebit.info/10G.iso http://par.download.datapacket.com/10000mb.bin http://nyc.download.datapacket.com/10000mb.bin http://ams.download.datapacket.com/10000mb.bin http://fra.download.datapacket.com/10000mb.bin http://lon.download.datapacket.com/10000mb.bin http://mad.download.datapacket.com/10000mb.bin http://prg.download.datapacket.com/10000mb.bin http://sto.download.datapacket.com/10000mb.bin http://vie.download.datapacket.com/10000mb.bin http://war.download.datapacket.com/10000mb.bin http://atl.download.datapacket.com/10000mb.bin http://chi.download.datapacket.com/10000mb.bin http://lax.download.datapacket.com/10000mb.bin http://mia.download.datapacket.com/10000mb.bin http://nyc.download.datapacket.com/10000mb.bin"
|
|
||||||
bestping="999"
|
|
||||||
for pinghost in $HOSTLST; do
|
|
||||||
domain=$(echo $pinghost | awk -F/ '{print $3}')
|
|
||||||
if [ -z "$INTERFACE" ]; then
|
|
||||||
ping=$(ping -6 -c1 -w2 $domain | cut -d "/" -s -f5 | cut -d "." -f1)
|
|
||||||
else
|
|
||||||
ping=$(ping -6 -c1 -w2 -I $INTERFACE -B $domain | cut -d "/" -s -f5 | cut -d "." -f1)
|
|
||||||
fi
|
|
||||||
echo "host: $domain - ping: $ping"
|
|
||||||
if [ -n "$ping" ] && [ "$ping" -lt "$bestping" ]; then
|
|
||||||
bestping=$ping
|
|
||||||
HOST=$pinghost
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
[ -z "$HOST" ] && HOST="http://proof.ovh.net/files/10Gio.dat"
|
|
||||||
|
|
||||||
echo "Best server is $HOST, running test:"
|
|
||||||
trap : HUP INT TERM
|
trap : HUP INT TERM
|
||||||
if [ -z "$INTERFACE" ]; then
|
if [ -z "$INTERFACE" ]; then
|
||||||
curl -6 $HOST >/dev/null || echo
|
curl -6 http://$HOST/files/10Gio.dat >/dev/null || echo
|
||||||
else
|
else
|
||||||
domain=$(echo $HOST | awk -F/ '{print $3}')
|
hostip=$(dig +short AAAA $HOST | tr -d "\n")
|
||||||
hostip=$(dig +nocmd +noall +answer AAAA $domain | grep -v CNAME | awk '{print $5}' | tr '\n' ' ')
|
ipset add ss_rules6_dst_bypass_all $hostip
|
||||||
if [ -n "$(ipset list 2>/dev/null | grep ss_rules6)" ]; then
|
curl -6 --interface $INTERFACE http://$HOST/files/10Gio.dat >/dev/null || echo
|
||||||
for ip in $hostip; do
|
ipset del ss_rules6_dst_bypass_all $hostip
|
||||||
ipset add ss_rules6_dst_bypass_all $ip
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
curl -6 --interface $INTERFACE $HOST >/dev/null || echo
|
|
||||||
if [ -n "$(ipset list 2>/dev/null | grep ss_rules6)" ]; then
|
|
||||||
for ip in $hostip; do
|
|
||||||
ipset del ss_rules6_dst_bypass_all $ip
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -2,12 +2,9 @@
|
||||||
INTERFACE="$1"
|
INTERFACE="$1"
|
||||||
multipathip=$(dig +short A multipath-tcp.org | tr -d "\n")
|
multipathip=$(dig +short A multipath-tcp.org | tr -d "\n")
|
||||||
ipset add ss_rules_dst_bypass_all $multipathip > /dev/null 2>&1
|
ipset add ss_rules_dst_bypass_all $multipathip > /dev/null 2>&1
|
||||||
multipathip6=$(dig +short AAAA multipath-tcp.org | tr -d "\n")
|
|
||||||
ipset add ss_rules6_dst_bypass_all $multipathip6 > /dev/null 2>&1
|
|
||||||
if [ -z "$INTERFACE" ]; then
|
if [ -z "$INTERFACE" ]; then
|
||||||
tracebox -v -n -p IP/TCP/MSS/MPCAPABLE/WSCALE multipath-tcp.org
|
tracebox -v -n -p IP/TCP/MSS/MPCAPABLE/WSCALE multipath-tcp.org
|
||||||
else
|
else
|
||||||
tracebox -v -i $INTERFACE -n -p IP/TCP/MSS/MPCAPABLE/WSCALE multipath-tcp.org
|
tracebox -v -i $INTERFACE -n -p IP/TCP/MSS/MPCAPABLE/WSCALE multipath-tcp.org
|
||||||
fi
|
fi
|
||||||
ipset del ss_rules_dst_bypass_all $multipathip > /dev/null 2>&1
|
ipset del ss_rules_dst_bypass_all $multipathip > /dev/null 2>&1
|
||||||
ipset del ss_rules6_dst_bypass_all $multipathip6 > /dev/null 2>&1
|
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
_getremoteip() {
|
_getremoteip() {
|
||||||
[ "$(uci -q get openmptcprouter.$1.master)" = "1" ] && remoteip=$(uci -q get openmptcprouter.$1.ip | awk '{print $1}')
|
[ "$(uci -q get openmptcprouter.$1.master)" = "1" ] && remoteip=$(uci -q get openmptcprouter.$1.ip)
|
||||||
}
|
}
|
||||||
|
|
||||||
mptcp_over_vpn() {
|
mptcp_over_vpn() {
|
||||||
|
@ -139,8 +139,8 @@ start_service()
|
||||||
elif [ "$(uci -q get glorytun.vpn.host)" = "10.255.250.1" ] && [ "$nbintf" != "$nbintfvpn" ]; then
|
elif [ "$(uci -q get glorytun.vpn.host)" = "10.255.250.1" ] && [ "$nbintf" != "$nbintfvpn" ]; then
|
||||||
uci -q batch <<-EOF >/dev/null
|
uci -q batch <<-EOF >/dev/null
|
||||||
delete shadowsocks-libev.sss0.disabled
|
delete shadowsocks-libev.sss0.disabled
|
||||||
set glorytun.vpn.host="$(uci -q get openmptcprouter.vps.ip | awk '{print $1}')"
|
set glorytun.vpn.host="$(uci -q get openmptcprouter.vps.ip)"
|
||||||
set glorytun-udp.vpn.host="$(uci -q get openmptcprouter.vps.ip | awk '{print $1}')"
|
set glorytun-udp.vpn.host="$(uci -q get openmptcprouter.vps.ip)"
|
||||||
commit glorytun
|
commit glorytun
|
||||||
commit glorytun-udp
|
commit glorytun-udp
|
||||||
EOF
|
EOF
|
||||||
|
|
|
@ -8,8 +8,6 @@ USE_PROCD=1
|
||||||
|
|
||||||
EXTRA_COMMANDS="set_pihole backup_send backup_get backup_list set_vps_firewall get_openvpn_key"
|
EXTRA_COMMANDS="set_pihole backup_send backup_get backup_list set_vps_firewall get_openvpn_key"
|
||||||
|
|
||||||
. /usr/lib/unbound/iptools.sh
|
|
||||||
|
|
||||||
_parse_result() {
|
_parse_result() {
|
||||||
result=$("echo $1 | jsonfilter -q -e '@.result'")
|
result=$("echo $1 | jsonfilter -q -e '@.result'")
|
||||||
echo $result
|
echo $result
|
||||||
|
@ -17,35 +15,23 @@ _parse_result() {
|
||||||
|
|
||||||
_login() {
|
_login() {
|
||||||
local username password auth
|
local username password auth
|
||||||
#server="$(uci -q get openmptcprouter.${servername}.ip)"
|
server="$(uci -q get openmptcprouter.${servername}.ip)"
|
||||||
#[ -z "$server" ] && server="$(uci -q get shadowsocks-libev.sss0.server)"
|
[ -z "$server" ] && server="$(uci -q get shadowsocks-libev.sss0.server)"
|
||||||
username="$(uci -q get openmptcprouter.${servername}.username)"
|
username="$(uci -q get openmptcprouter.${servername}.username)"
|
||||||
password="$(uci -q get openmptcprouter.${servername}.password)"
|
password="$(uci -q get openmptcprouter.${servername}.password)"
|
||||||
serverport="$(uci -q get openmptcprouter.${servername}.port)"
|
serverport="$(uci -q get openmptcprouter.${servername}.port)"
|
||||||
#[ -z "$server" ] && server="$(uci -q get openmptcprouter.${servername}.ip)"
|
|
||||||
if [ -z "$token" ]; then
|
if [ -z "$token" ]; then
|
||||||
login_on_server() {
|
#auth=`curl --max-time 10 -s -k -H "Content-Type: application/json" -X POST -d '{"username":"'$username'","password":"'$password'"}' https://$server:$serverport/login`
|
||||||
server=$1
|
auth=`curl --max-time 10 -s -k -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -X POST -d 'username='$username'&password='$password https://$server:$serverport/token`
|
||||||
#auth=`curl --max-time 10 -s -k -H "Content-Type: application/json" -X POST -d '{"username":"'$username'","password":"'$password'"}' https://$server:$serverport/login`
|
[ -z "$auth" ] && return
|
||||||
resolve="$(resolveip $server)"
|
token="$(echo "$auth" | jsonfilter -q -e '@.access_token')"
|
||||||
valid_ip6=$(valid_subnet6 $server)
|
uci -q set openmptcprouter.${servername}.token="$token"
|
||||||
if [ "$resolve" != "$server" ] || [ "$valid_ip6" != "ok" ]; then
|
|
||||||
auth=`curl --max-time 10 -s -k -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -X POST -d 'username='$username'&password='$password https://$server:$serverport/token`
|
|
||||||
else
|
|
||||||
auth=`curl --max-time 10 -s -k -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -X POST -d 'username='$username'&password='$password https://[$server]:$serverport/token`
|
|
||||||
fi
|
|
||||||
[ -z "$auth" ] && return
|
|
||||||
token="$(echo "$auth" | jsonfilter -q -e '@.access_token')"
|
|
||||||
uci -q set openmptcprouter.${servername}.token="$token"
|
|
||||||
[ -n "$token" ] && break
|
|
||||||
}
|
|
||||||
config_load openmptcprouter
|
|
||||||
config_list_foreach ${servername} ip login_on_server
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
_ping_server() {
|
_ping_server() {
|
||||||
server="$1"
|
server="$(uci -q get openmptcprouter.${servername}.ip)"
|
||||||
|
[ -z "$server" ] && server="$(uci -q get shadowsocks-libev.sss0.server)"
|
||||||
ret=$(ping -c 3 -w 3 -Q 184 $server 2>&1) && echo "$ret" | grep -sq "bytes from" && return
|
ret=$(ping -c 3 -w 3 -Q 184 $server 2>&1) && echo "$ret" | grep -sq "bytes from" && return
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
@ -55,13 +41,7 @@ _get_json() {
|
||||||
route=$1
|
route=$1
|
||||||
[ -z "$token" ] && _login
|
[ -z "$token" ] && _login
|
||||||
[ -n "$token" ] && {
|
[ -n "$token" ] && {
|
||||||
resolve="$(resolveip $server)"
|
result=`curl --max-time 10 -s -k -H "accept: application/json" -H "Authorization: Bearer $token" https://$server:$serverport/$route`
|
||||||
valid_ip6=$(valid_subnet6 $server)
|
|
||||||
if [ "$resolve" != "$server" ] || [ "$valid_ip6" != "ok" ]; then
|
|
||||||
result=`curl --max-time 10 -s -k -H "accept: application/json" -H "Authorization: Bearer $token" https://$server:$serverport/$route`
|
|
||||||
else
|
|
||||||
result=`curl --max-time 10 -s -k -H "accept: application/json" -H "Authorization: Bearer $token" https://[$server]:$serverport/$route`
|
|
||||||
fi
|
|
||||||
echo $result
|
echo $result
|
||||||
} || {
|
} || {
|
||||||
echo ''
|
echo ''
|
||||||
|
@ -74,13 +54,7 @@ _set_json() {
|
||||||
settings="$2"
|
settings="$2"
|
||||||
[ -z "$token" ] && _login
|
[ -z "$token" ] && _login
|
||||||
[ -n "$token" ] && {
|
[ -n "$token" ] && {
|
||||||
resolve="$(resolveip $server)"
|
result=`curl --max-time 10 -s -k -H "Authorization: Bearer $token" -H "Content-Type: application/json" -X POST -d "$settings" https://$server:$serverport/$route`
|
||||||
valid_ip6=$(valid_subnet6 $server)
|
|
||||||
if [ "$resolve" != "$server" ] || [ "$valid_ip6" != "ok" ]; then
|
|
||||||
result=`curl --max-time 10 -s -k -H "Authorization: Bearer $token" -H "Content-Type: application/json" -X POST -d "$settings" https://$server:$serverport/$route`
|
|
||||||
else
|
|
||||||
result=`curl --max-time 10 -s -k -H "Authorization: Bearer $token" -H "Content-Type: application/json" -X POST -d "$settings" https://[$server]:$serverport/$route`
|
|
||||||
fi
|
|
||||||
echo $result
|
echo $result
|
||||||
} || {
|
} || {
|
||||||
echo ''
|
echo ''
|
||||||
|
@ -363,11 +337,10 @@ _get_vps_config() {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
vpsip="$(uci -q get openmptcprouter.${servername}.ip | awk '{print $1}')"
|
vpsip="$(uci -q get openmptcprouter.${servername}.ip)"
|
||||||
if [ "$(uci -q get shadowsocks-libev.sss0.server)" != "127.0.0.1" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "$vpsip" ] && [ "$(uci -q get openmptcprouter.settings.ha)" != "1" ]; then
|
if [ "$(uci -q get shadowsocks-libev.sss0.server)" != "127.0.0.1" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "$vpsip" ] && [ "$(uci -q get openmptcprouter.settings.ha)" != "1" ]; then
|
||||||
config_foreach _set_ss_server server "server" $vpsip
|
config_foreach _set_ss_server server "server" $vpsip
|
||||||
uci -q batch <<-EOF >/dev/null
|
uci -q batch <<-EOF >/dev/null
|
||||||
set shadowsocks-libev.sss0.server="$vpsip"
|
|
||||||
commit shadowsocks-libev
|
commit shadowsocks-libev
|
||||||
EOF
|
EOF
|
||||||
if [ "$(uci -q get shadowsocks-libev.sss0.disabled)" = "0" ]; then
|
if [ "$(uci -q get shadowsocks-libev.sss0.disabled)" = "0" ]; then
|
||||||
|
@ -476,7 +449,6 @@ _get_gre_tunnel() {
|
||||||
set network.omrip${i}gre.defaultroute='0'
|
set network.omrip${i}gre.defaultroute='0'
|
||||||
set network.omrip${i}gre.multipath='off'
|
set network.omrip${i}gre.multipath='off'
|
||||||
set network.omrip${i}gre.peerdns='0'
|
set network.omrip${i}gre.peerdns='0'
|
||||||
set network.omrip${i}gre.ttl='255'
|
|
||||||
set network.omrip${i}gre.ip4table='vpn'
|
set network.omrip${i}gre.ip4table='vpn'
|
||||||
set network.omrip${i}gre.peeraddr="$publicaddr"
|
set network.omrip${i}gre.peeraddr="$publicaddr"
|
||||||
set network.omrip${i}gre.ipaddr="$vpnip_local"
|
set network.omrip${i}gre.ipaddr="$vpnip_local"
|
||||||
|
@ -804,9 +776,6 @@ _vps_firewall_redirect_port() {
|
||||||
config_get src_ip $1 src_ip
|
config_get src_ip $1 src_ip
|
||||||
config_get v2ray $1 v2ray "0"
|
config_get v2ray $1 v2ray "0"
|
||||||
config_get dmz $1 dmz "0"
|
config_get dmz $1 dmz "0"
|
||||||
if [ -z "$src_dport" ] && [ -n "$dest_port" ]; then
|
|
||||||
src_dport=$dest_port
|
|
||||||
fi
|
|
||||||
if [ "$dmz" = "1" ] && [ "$src_dport" != "2-64999" ]; then
|
if [ "$dmz" = "1" ] && [ "$src_dport" != "2-64999" ]; then
|
||||||
uci -q batch <<-EOF >/dev/null
|
uci -q batch <<-EOF >/dev/null
|
||||||
set firewall.${section}.src_dport='2-64999'
|
set firewall.${section}.src_dport='2-64999'
|
||||||
|
@ -974,15 +943,6 @@ _vps_firewall_close_port() {
|
||||||
}
|
}
|
||||||
|
|
||||||
_set_vps_firewall() {
|
_set_vps_firewall() {
|
||||||
fw3 -q print | grep 'vpn.* -d' |
|
|
||||||
while IFS=$"\n" read -r c; do
|
|
||||||
eval $(echo $c | sed 's/iptables/iptables -w/' | sed 's/-A/-D/') 2>&1 >/dev/null
|
|
||||||
newrule=$(echo $c | sed 's/iptables/iptables -w/' | sed -E -e 's/ -d ([^ ])*//' -e 's/ -s ([^ ])*//')
|
|
||||||
eval $(echo $newrule | sed 's/-A/-D/') || true
|
|
||||||
eval $newrule
|
|
||||||
done
|
|
||||||
#'
|
|
||||||
|
|
||||||
fwservername=$1
|
fwservername=$1
|
||||||
[ -z "$servername" ] && servername=$fwservername
|
[ -z "$servername" ] && servername=$fwservername
|
||||||
[ -z "$fwservername" ] && fwservername=$servername
|
[ -z "$fwservername" ] && fwservername=$servername
|
||||||
|
@ -1017,6 +977,13 @@ _set_vps_firewall() {
|
||||||
}
|
}
|
||||||
|
|
||||||
set_vps_firewall() {
|
set_vps_firewall() {
|
||||||
|
fw3 -q print | grep 'vpn.* -d' |
|
||||||
|
while IFS=$"\n" read -r c; do
|
||||||
|
eval $(echo $c | sed 's/-A/-D/') 2>&1 >/dev/null
|
||||||
|
newrule=$(echo $c | sed -E -e 's/ -d ([^ ])*//' -e 's/ -s ([^ ])*//')
|
||||||
|
eval $(echo $newrule | sed 's/-A/-C/') || eval $newrule
|
||||||
|
done
|
||||||
|
#'
|
||||||
config_load openmptcprouter
|
config_load openmptcprouter
|
||||||
config_foreach _set_vps_firewall server
|
config_foreach _set_vps_firewall server
|
||||||
}
|
}
|
||||||
|
@ -1040,9 +1007,7 @@ _set_ss_server() {
|
||||||
elif [ "$value" = "false" ]; then
|
elif [ "$value" = "false" ]; then
|
||||||
value=0
|
value=0
|
||||||
fi
|
fi
|
||||||
if [ "$(echo $1 | grep omr)" != "" ] || [ "$(echo $1 | grep sss)" ]; then
|
[ "$(echo $1 | grep omr)" != "" ] && uci -q set shadowsocks-libev.$1.$option=$value
|
||||||
uci -q set shadowsocks-libev.$1.$option=$value
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_set_config_from_vps() {
|
_set_config_from_vps() {
|
||||||
|
@ -1053,7 +1018,7 @@ _set_config_from_vps() {
|
||||||
logger -t "OMR-VPS" "Get config from server ${servername}..."
|
logger -t "OMR-VPS" "Get config from server ${servername}..."
|
||||||
noerror=1
|
noerror=1
|
||||||
# get VPS ip
|
# get VPS ip
|
||||||
vpsip="$(uci -q get openmptcprouter.${servername}.ip | awk '{print $1}')"
|
vpsip="$(uci -q get openmptcprouter.${servername}.ip)"
|
||||||
vps_lastchange="$(echo "$vps_config" | jsonfilter -q -e '@.vps.lastchange')"
|
vps_lastchange="$(echo "$vps_config" | jsonfilter -q -e '@.vps.lastchange')"
|
||||||
lastchange="$(uci -q get openmptcprouter.${servername}.lastchange)"
|
lastchange="$(uci -q get openmptcprouter.${servername}.lastchange)"
|
||||||
[ -z "$lastchange" ] && lastchange=0
|
[ -z "$lastchange" ] && lastchange=0
|
||||||
|
@ -1103,7 +1068,7 @@ _set_config_from_vps() {
|
||||||
set shadowsocks-libev.sss0.disabled=0
|
set shadowsocks-libev.sss0.disabled=0
|
||||||
commit shadowsocks-libev
|
commit shadowsocks-libev
|
||||||
set v2ray.main.enabled=0
|
set v2ray.main.enabled=0
|
||||||
commit v2ray
|
commit shadowsocks-libev
|
||||||
set openmptcprouter.settings.shadowsocks_disable=0
|
set openmptcprouter.settings.shadowsocks_disable=0
|
||||||
commit openmptcprouter
|
commit openmptcprouter
|
||||||
EOF
|
EOF
|
||||||
|
@ -1112,7 +1077,7 @@ _set_config_from_vps() {
|
||||||
set shadowsocks-libev.sss0.disabled=1
|
set shadowsocks-libev.sss0.disabled=1
|
||||||
commit shadowsocks-libev
|
commit shadowsocks-libev
|
||||||
set v2ray.main.enabled=1
|
set v2ray.main.enabled=1
|
||||||
commit v2ray
|
commit shadowsocks-libev
|
||||||
set openmptcprouter.settings.shadowsocks_disable=1
|
set openmptcprouter.settings.shadowsocks_disable=1
|
||||||
commit openmptcprouter
|
commit openmptcprouter
|
||||||
EOF
|
EOF
|
||||||
|
@ -1121,7 +1086,7 @@ _set_config_from_vps() {
|
||||||
set shadowsocks-libev.sss0.disabled=1
|
set shadowsocks-libev.sss0.disabled=1
|
||||||
commit shadowsocks-libev
|
commit shadowsocks-libev
|
||||||
set v2ray.main.enabled=0
|
set v2ray.main.enabled=0
|
||||||
commit v2ray
|
commit shadowsocks-libev
|
||||||
set openmptcprouter.settings.shadowsocks_disable=1
|
set openmptcprouter.settings.shadowsocks_disable=1
|
||||||
commit openmptcprouter
|
commit openmptcprouter
|
||||||
EOF
|
EOF
|
||||||
|
@ -1488,7 +1453,7 @@ _backup_send() {
|
||||||
EOF
|
EOF
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
sysupgrade -k -b /tmp/backup.tar.gz
|
sysupgrade -b /tmp/backup.tar.gz
|
||||||
backup_data="$(cat /tmp/backup.tar.gz | base64 | tr -d '\n')"
|
backup_data="$(cat /tmp/backup.tar.gz | base64 | tr -d '\n')"
|
||||||
backup_sha256sum="$(sha256sum /tmp/backup.tar.gz | awk '{print $1}')"
|
backup_sha256sum="$(sha256sum /tmp/backup.tar.gz | awk '{print $1}')"
|
||||||
[ -n "$backup_data" ] && {
|
[ -n "$backup_data" ] && {
|
||||||
|
@ -1600,36 +1565,20 @@ _config_service() {
|
||||||
_login
|
_login
|
||||||
[ -z "$token" ] && {
|
[ -z "$token" ] && {
|
||||||
reason=""
|
reason=""
|
||||||
test_ping() {
|
_ping_server
|
||||||
_ping_server $1
|
status=$?
|
||||||
status=$?
|
if $(exit $status); then
|
||||||
if $(exit $status); then
|
reason="can ping server ${servername}"
|
||||||
reason="can ping server ${servername} on $1"
|
else
|
||||||
else
|
reason="can't ping server ${servername}"
|
||||||
reason="can't ping server ${servername} on $1"
|
fi
|
||||||
fi
|
|
||||||
}
|
|
||||||
config_list_foreach "${servername}" ip test_ping
|
|
||||||
port="$(uci -q get openmptcprouter.${servername}.port)"
|
port="$(uci -q get openmptcprouter.${servername}.port)"
|
||||||
api_test() {
|
server="$(uci -q get openmptcprouter.${servername}.ip)"
|
||||||
server="$1"
|
if [ "$(curl -k -m 3 https://${server}:${port}/)" = "" ]; then
|
||||||
resolve="$(resolveip $server)"
|
reason="$reason, no server API answer"
|
||||||
valid_ip6=$(valid_subnet6 $server)
|
else
|
||||||
if [ "$resolve" != "$server" ] || [ "$valid_ip6" != "ok" ]; then
|
reason="$reason, server API answer"
|
||||||
if [ "$(curl -k -m 3 https://${server}:${port}/)" = "" ]; then
|
fi
|
||||||
reason="$reason, no server API answer on $1"
|
|
||||||
else
|
|
||||||
reason="$reason, server API answer on $1"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if [ "$(curl -k -m 3 https://[${server}]:${port}/)" = "" ]; then
|
|
||||||
reason="$reason, no server API answer on $1"
|
|
||||||
else
|
|
||||||
reason="$reason, server API answer on $1"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
config_list_foreach "${servername}" ip api_test
|
|
||||||
if [ "$(uci -q get openmptcprouter.${servername}.username)" != "openmptcprouter" ]; then
|
if [ "$(uci -q get openmptcprouter.${servername}.username)" != "openmptcprouter" ]; then
|
||||||
reason="$reason, custom username"
|
reason="$reason, custom username"
|
||||||
fi
|
fi
|
||||||
|
@ -1757,9 +1706,6 @@ start_service() {
|
||||||
uci -q batch <<-EOF >/dev/null
|
uci -q batch <<-EOF >/dev/null
|
||||||
commit openmptcprouter
|
commit openmptcprouter
|
||||||
EOF
|
EOF
|
||||||
if [ "$(ps w | grep sysupgrade)" = "" ]; then
|
|
||||||
/etc/init.d/sysupgrade restart
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
service_triggers() {
|
service_triggers() {
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
_getremoteip() {
|
_getremoteip() {
|
||||||
[ "$(uci -q get openmptcprouter.$1.master)" = "1" ] && remoteip=$(uci -q get openmptcprouter.$1.ip | awk '{print $1}')
|
[ "$(uci -q get openmptcprouter.$1.master)" = "1" ] && remoteip=$(uci -q get openmptcprouter.$1.ip)
|
||||||
}
|
}
|
||||||
|
|
||||||
_openvpnbonding() {
|
_openvpnbonding() {
|
||||||
|
|
|
@ -1,13 +1,6 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# Copyright (C) 2020 Ycarus (Yannick Chabanois) <ycarus@zugaina.org> for OpenMPTCProuter project
|
# Copyright (C) 2020 Ycarus (Yannick Chabanois) <ycarus@zugaina.org> for OpenMPTCProuter project
|
||||||
|
|
||||||
if [ "$(uci -q get shadowsocks-libev.hi)" != ""; then
|
|
||||||
uci -q batch <<-EOF >/dev/null
|
|
||||||
rename shadowsocks-libev.hi=hi1
|
|
||||||
commit shadowsocks-libev
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$(uci -q get openmptcprouter.latest_versions)" = "" ]; then
|
if [ "$(uci -q get openmptcprouter.latest_versions)" = "" ]; then
|
||||||
NBCPU=$(grep -c '^processor' /proc/cpuinfo | tr -d "\n")
|
NBCPU=$(grep -c '^processor' /proc/cpuinfo | tr -d "\n")
|
||||||
if [ "$NBCPU" -gt 2 ]; then
|
if [ "$NBCPU" -gt 2 ]; then
|
||||||
|
@ -33,16 +26,24 @@ if [ "$(uci -q get openmptcprouter.latest_versions)" = "" ]; then
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$(uci -q get shadowsocks-libev.hi1.timeout)" != "1000" ]; then
|
if [ "$(uci -q get shadowsocks-libev.hi.timeout)" != "1000" ]; then
|
||||||
for c in $(seq 1 $NBCPU); do
|
uci -q batch <<-EOF > /dev/null
|
||||||
|
set shadowsocks-libev.hi.timeout=1000
|
||||||
|
commit shadowsocks-libev
|
||||||
|
EOF
|
||||||
|
for c in $(seq 2 $NBCPU); do
|
||||||
uci -q batch <<-EOF > /dev/null
|
uci -q batch <<-EOF > /dev/null
|
||||||
set shadowsocks-libev.hi$c.timeout=1000
|
set shadowsocks-libev.hi$c.timeout=1000
|
||||||
commit shadowsocks-libev
|
commit shadowsocks-libev
|
||||||
EOF
|
EOF
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
if [ "$(uci -q get shadowsocks-libev.hi1.mode)" != "tcp" ]; then
|
if [ "$(uci -q get shadowsocks-libev.hi.mode)" != "tcp" ]; then
|
||||||
for c in $(seq 1 $NBCPU); do
|
uci -q batch <<-EOF > /dev/null
|
||||||
|
set shadowsocks-libev.hi.mode=tcp_and_udp
|
||||||
|
commit shadowsocks-libev
|
||||||
|
EOF
|
||||||
|
for c in $(seq 2 $NBCPU); do
|
||||||
uci -q batch <<-EOF > /dev/null
|
uci -q batch <<-EOF > /dev/null
|
||||||
set shadowsocks-libev.hi$c.mode=tcp_and_udp
|
set shadowsocks-libev.hi$c.mode=tcp_and_udp
|
||||||
commit shadowsocks-libev
|
commit shadowsocks-libev
|
||||||
|
@ -50,16 +51,12 @@ if [ "$(uci -q get openmptcprouter.latest_versions)" = "" ]; then
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$(uci -q get shadowsocks-libev.hi3)" != "" ]; then
|
if [ "$(uci -q get shadowsocks-libev.hi3)" != "" ]; then
|
||||||
port=1100
|
port=1101
|
||||||
for c in $(seq 1 2 $NBCPU); do
|
for c in $(seq 3 2 $NBCPU); do
|
||||||
uci -q batch <<-EOF >/dev/null
|
uci -q batch <<-EOF >/dev/null
|
||||||
set shadowsocks-libev.hi$c.local_port=$port
|
set shadowsocks-libev.hi$c.local_port=$port
|
||||||
set shadowsocks-libev.hi$c.server=sss0
|
|
||||||
set shadowsocks-libev.hi$((c+1)).local_port=$port
|
set shadowsocks-libev.hi$((c+1)).local_port=$port
|
||||||
set shadowsocks-libev.hi$((c+1)).local_address="::"
|
|
||||||
set shadowsocks-libev.hi$((c+1)).server=sss1
|
|
||||||
commit shadowsocks-libev
|
commit shadowsocks-libev
|
||||||
EOF
|
EOF
|
||||||
port=$((port+1))
|
port=$((port+1))
|
||||||
|
@ -70,12 +67,12 @@ if [ "$(uci -q get shadowsocks-libev.hi3)" != "" ]; then
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$(uci -q get shadowsocks-libev.hi1.obfs)" = "1" ]; then
|
if [ "$(uci -q get shadowsocks-libev.hi.obfs)" = "1" ]; then
|
||||||
uci -q batch <<-EOF > /dev/null
|
uci -q batch <<-EOF > /dev/null
|
||||||
set shadowsocks-libev.sss0.obfs=1
|
set shadowsocks-libev.sss0.obfs=1
|
||||||
set shadowsocks-libev.sss0.obfs_plugin="$(uci -q get shadowsocks-libev.hi1.obfs_plugin)"
|
set shadowsocks-libev.sss0.obfs_plugin="$(uci -q get shadowsocks-libev.hi.obfs_plugin)"
|
||||||
set shadowsocks-libev.sss0.obfs_host="$(uci -q get shadowsocks-libev.hi1.obfs_host)"
|
set shadowsocks-libev.sss0.obfs_host="$(uci -q get shadowsocks-libev.hi.obfs_host)"
|
||||||
set shadowsocks-libev.sss0.obfs_type="$(uci -q get shadowsocks-libev.hi1.obfs_type)"
|
set shadowsocks-libev.sss0.obfs_type="$(uci -q get shadowsocks-libev.hi.obfs_type)"
|
||||||
commit shadowsocks-libev
|
commit shadowsocks-libev
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
|
@ -88,23 +85,12 @@ if [ "$(uci -q get shadowsocks-libev.ss_rules.server)" = "" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
if [ "$(uci -q get ucitrack.@shadowsocks-libev[-1].affects | grep openmptcprouter-vps)" = "" ]; then
|
if [ "$(uci -q get ucitrack.@shadowsocks-libev[*1].affects | grep openmptcprouter-vps)" = "" ]; then
|
||||||
uci -q batch <<-EOF >/dev/null
|
uci -q batch <<-EOF >/dev/null
|
||||||
add_list ucitrack.@shadowsocks-libev[-1].affects="openmptcprouter-vps"
|
add_list ucitrack.@shadowsocks-libev[-1].affects="openmptcprouter-vps"
|
||||||
commit ucitrack
|
commit ucitrack
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$(uci -q get shadowsocks-libev.sss1)" = "" ]; then
|
|
||||||
uci -q batch <<-EOF > /dev/null
|
|
||||||
set shadowsocks-libev.sss1=server
|
|
||||||
set shadowsocks-libev.sss1.server_port='65101'
|
|
||||||
set shadowsocks-libev.sss1.method='chacha20-ietf-poly1305'
|
|
||||||
set shadowsocks-libev.sss1.obfs='0'
|
|
||||||
set shadowsocks-libev.sss1.disabled='1'
|
|
||||||
commit shadowsocks-libev
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -f /tmp/luci-indexcache
|
rm -f /tmp/luci-indexcache
|
||||||
exit 0
|
exit 0
|
||||||
|
|
|
@ -40,7 +40,7 @@ if [ "$(uci -q get dhcp.lan.dhcp_options)" = "" ]; then
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$(uci -q get openmptcprouter.latest_versions)" = "" ]; then
|
if [ "$(uci -q get https-dns-proxy.@https-dns-proxy[0].listen_port)" = "5053" ]; then
|
||||||
# uci -q batch <<-EOF >/dev/null
|
# uci -q batch <<-EOF >/dev/null
|
||||||
# delete https-dns-proxy.@https-dns-proxy[-1]
|
# delete https-dns-proxy.@https-dns-proxy[-1]
|
||||||
# delete https-dns-proxy.@https-dns-proxy[-1]
|
# delete https-dns-proxy.@https-dns-proxy[-1]
|
||||||
|
@ -66,144 +66,6 @@ fi
|
||||||
# commit unbound
|
# commit unbound
|
||||||
#EOF
|
#EOF
|
||||||
|
|
||||||
if [ -z "$(uci -q unbound.auth_icann)" ]; then
|
|
||||||
uci -q batch <<-EOF >/dev/null
|
|
||||||
set unbound.auth_icann=zone
|
|
||||||
set unbound.auth_icann.fallback='1'
|
|
||||||
set unbound.auth_icann.url_dir='https://www.internic.net/domain/'
|
|
||||||
set unbound.auth_icann.zone_type='auth_zone'
|
|
||||||
add_list unbound.auth_icann.server='lax.xfr.dns.icann.org'
|
|
||||||
add_list unbound.auth_icann.server='iad.xfr.dns.icann.org'
|
|
||||||
add_list unbound.auth_icann.zone_name='.'
|
|
||||||
add_list unbound.auth_icann.zone_name='arpa.'
|
|
||||||
add_list unbound.auth_icann.zone_name='in-addr.arpa.'
|
|
||||||
add_list unbound.auth_icann.zone_name='ip6.arpa.'
|
|
||||||
set unbound.auth_icann.enabled='1'
|
|
||||||
set unbound.fwd_isp=zone
|
|
||||||
set unbound.fwd_isp.enabled='0'
|
|
||||||
set unbound.fwd_isp.fallback='1'
|
|
||||||
set unbound.fwd_isp.resolv_conf='1'
|
|
||||||
set unbound.fwd_isp.zone_type='forward_zone'
|
|
||||||
add_list unbound.fwd_isp.zone_name='isp-bill.example.com.'
|
|
||||||
add_list unbound.fwd_isp.zone_name='isp-mail.example.net.'
|
|
||||||
set unbound.fwd_google=zone
|
|
||||||
set unbound.fwd_google.enabled='0'
|
|
||||||
set unbound.fwd_google.fallback='1'
|
|
||||||
set unbound.fwd_google.tls_index='dns.google'
|
|
||||||
set unbound.fwd_google.tls_upstream='1'
|
|
||||||
set unbound.fwd_google.zone_type='forward_zone'
|
|
||||||
add_list unbound.fwd_google.server='8.8.4.4'
|
|
||||||
add_list unbound.fwd_google.server='8.8.8.8'
|
|
||||||
add_list unbound.fwd_google.server='2001:4860:4860::8844'
|
|
||||||
add_list unbound.fwd_google.server='2001:4860:4860::8888'
|
|
||||||
set unbound.fwd_google.zone_name='.'
|
|
||||||
set unbound.fwd_cloudflare=zone
|
|
||||||
set unbound.fwd_cloudflare.enabled='0'
|
|
||||||
set unbound.fwd_cloudflare.fallback='1'
|
|
||||||
set unbound.fwd_cloudflare.tls_index='cloudflare-dns.com'
|
|
||||||
set unbound.fwd_cloudflare.tls_upstream='1'
|
|
||||||
set unbound.fwd_cloudflare.zone_type='forward_zone'
|
|
||||||
add_list unbound.fwd_cloudflare.server='1.1.1.1'
|
|
||||||
add_list unbound.fwd_cloudflare.server='1.0.0.1'
|
|
||||||
add_list unbound.fwd_cloudflare.server='2606:4700:4700::1111'
|
|
||||||
add_list unbound.fwd_cloudflare.server='2606:4700:4700::1001'
|
|
||||||
set unbound.fwd_cloudflare.zone_name='.'
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$(uci -q get unbound.fwd_adguard_family)" ]; then
|
|
||||||
uci -q batch <<-EOF >/dev/null
|
|
||||||
set unbound.fwd_adguard_family=zone
|
|
||||||
set unbound.fwd_adguard_family.enabled='0'
|
|
||||||
set unbound.fwd_adguard_family.fallback='1'
|
|
||||||
set unbound.fwd_adguard_family.tls_index='dns-family.adguard.com'
|
|
||||||
set unbound.fwd_adguard_family.tls_upstream='1'
|
|
||||||
set unbound.fwd_adguard_family.zone_type='forward_zone'
|
|
||||||
add_list unbound.fwd_adguard_family.server='176.103.130.132'
|
|
||||||
add_list unbound.fwd_adguard_family.server='176.103.130.134'
|
|
||||||
set unbound.fwd_adguard_family.zone_name='.'
|
|
||||||
set unbound.fwd_adguard_standard=zone
|
|
||||||
set unbound.fwd_adguard_standard.enabled='0'
|
|
||||||
set unbound.fwd_adguard_standard.fallback='1'
|
|
||||||
set unbound.fwd_adguard_standard.tls_index='dns.adguard.com'
|
|
||||||
set unbound.fwd_adguard_standard.tls_upstream='1'
|
|
||||||
set unbound.fwd_adguard_standard.zone_type='forward_zone'
|
|
||||||
add_list unbound.fwd_adguard_standard.server='176.103.130.130'
|
|
||||||
add_list unbound.fwd_adguard_standard.server='176.103.130.131'
|
|
||||||
set unbound.fwd_adguard_standard.zone_name='.'
|
|
||||||
set unbound.fwd_cloudflare_family=zone
|
|
||||||
set unbound.fwd_cloudflare_family.enabled='0'
|
|
||||||
set unbound.fwd_cloudflare_family.fallback='1'
|
|
||||||
set unbound.fwd_cloudflare_family.tls_index='family.cloudflare-dns.com'
|
|
||||||
set unbound.fwd_cloudflare_family.tls_upstream='1'
|
|
||||||
set unbound.fwd_cloudflare_family.zone_type='forward_zone'
|
|
||||||
add_list unbound.fwd_cloudflare_family.server='1.1.1.3'
|
|
||||||
add_list unbound.fwd_cloudflare_family.server='1.0.0.3'
|
|
||||||
set unbound.fwd_cloudflare_family.zone_name='.'
|
|
||||||
set unbound.fwd_cloudflare_malware=zone
|
|
||||||
set unbound.fwd_cloudflare_malware.enabled='0'
|
|
||||||
set unbound.fwd_cloudflare_malware.fallback='1'
|
|
||||||
set unbound.fwd_cloudflare_malware.tls_index='security.cloudflare-dns.com'
|
|
||||||
set unbound.fwd_cloudflare_malware.tls_upstream='1'
|
|
||||||
set unbound.fwd_cloudflare_malware.zone_type='forward_zone'
|
|
||||||
add_list unbound.fwd_cloudflare_malware.server='1.1.1.2'
|
|
||||||
add_list unbound.fwd_cloudflare_malware.server='1.0.0.2'
|
|
||||||
set unbound.fwd_cloudflare_malware.zone_name='.'
|
|
||||||
set unbound.fwd_odvr=zone
|
|
||||||
set unbound.fwd_odvr.enabled='0'
|
|
||||||
set unbound.fwd_odvr.fallback='1'
|
|
||||||
set unbound.fwd_odvr.tls_index='odvr.nic.cz'
|
|
||||||
set unbound.fwd_odvr.tls_upstream='1'
|
|
||||||
set unbound.fwd_odvr.zone_type='forward_zone'
|
|
||||||
add_list unbound.fwd_odvr.server='193.17.47.1'
|
|
||||||
add_list unbound.fwd_odvr.server='185.43.135.1'
|
|
||||||
set unbound.fwd_odvr.zone_name='.'
|
|
||||||
set unbound.fwd_libredns=zone
|
|
||||||
set unbound.fwd_libredns.enabled='0'
|
|
||||||
set unbound.fwd_libredns.fallback='1'
|
|
||||||
set unbound.fwd_libredns.tls_index='doh.libredns.gr'
|
|
||||||
set unbound.fwd_libredns.tls_upstream='1'
|
|
||||||
set unbound.fwd_libredns.zone_type='forward_zone'
|
|
||||||
add_list unbound.fwd_libredns.server='116.202.176.26'
|
|
||||||
set unbound.fwd_libredns.zone_name='.'
|
|
||||||
set unbound.fwd_quad9_recommended=zone
|
|
||||||
set unbound.fwd_quad9_recommended.enabled='0'
|
|
||||||
set unbound.fwd_quad9_recommended.fallback='1'
|
|
||||||
set unbound.fwd_quad9_recommended.tls_index='dns.quad9.net'
|
|
||||||
set unbound.fwd_quad9_recommended.tls_upstream='1'
|
|
||||||
set unbound.fwd_quad9_recommended.zone_type='forward_zone'
|
|
||||||
add_list unbound.fwd_quad9_recommended.server='9.9.9.9'
|
|
||||||
add_list unbound.fwd_quad9_recommended.server='149.112.112.112'
|
|
||||||
set unbound.fwd_quad9_recommended.zone_name='.'
|
|
||||||
set unbound.fwd_quad9_unsecured=zone
|
|
||||||
set unbound.fwd_quad9_unsecured.enabled='0'
|
|
||||||
set unbound.fwd_quad9_unsecured.fallback='1'
|
|
||||||
set unbound.fwd_quad9_unsecured.tls_index='dns10.quad9.net'
|
|
||||||
set unbound.fwd_quad9_unsecured.tls_upstream='1'
|
|
||||||
set unbound.fwd_quad9_unsecured.zone_type='forward_zone'
|
|
||||||
add_list unbound.fwd_quad9_unsecured.server='9.9.9.10'
|
|
||||||
add_list unbound.fwd_quad9_unsecured.server='149.112.112.10'
|
|
||||||
set unbound.fwd_quad9_unsecured.zone_name='.'
|
|
||||||
set unbound.fwd_quad9_ecs=zone
|
|
||||||
set unbound.fwd_quad9_ecs.enabled='0'
|
|
||||||
set unbound.fwd_quad9_ecs.fallback='1'
|
|
||||||
set unbound.fwd_quad9_ecs.tls_index='dns11.quad9.net'
|
|
||||||
set unbound.fwd_quad9_ecs.tls_upstream='1'
|
|
||||||
set unbound.fwd_quad9_ecs.zone_type='forward_zone'
|
|
||||||
add_list unbound.fwd_quad9_ecs.server='9.9.9.11'
|
|
||||||
add_list unbound.fwd_quad9_ecs.server='149.112.112.11'
|
|
||||||
set unbound.fwd_quad9_ecs.zone_name='.'
|
|
||||||
set unbound.fwd_quad9_secured=zone
|
|
||||||
set unbound.fwd_quad9_secured.enabled='0'
|
|
||||||
set unbound.fwd_quad9_secured.fallback='1'
|
|
||||||
set unbound.fwd_quad9_secured.tls_index='dns9.quad9.net'
|
|
||||||
set unbound.fwd_quad9_secured.tls_upstream='1'
|
|
||||||
set unbound.fwd_quad9_secured.zone_type='forward_zone'
|
|
||||||
add_list unbound.fwd_quad9_secured.server='9.9.9.9'
|
|
||||||
add_list unbound.fwd_quad9_secured.server='149.112.112.9'
|
|
||||||
set unbound.fwd_quad9_secured.zone_name='.'
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -f /tmp/luci-indexcache
|
rm -f /tmp/luci-indexcache
|
||||||
|
|
||||||
|
|
|
@ -151,41 +151,6 @@ if [ "$(uci -q get firewall.blockquicproxy)" = "" ]; then
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$(uci -q get firewall.allowicmpipv6)" = "" ]; then
|
|
||||||
uci -q batch <<-EOF >/dev/null
|
|
||||||
set firewall.allowicmpipv6=rule
|
|
||||||
set firewall.allowicmpipv6.proto='icmp'
|
|
||||||
set firewall.allowicmpipv6.target='ACCEPT'
|
|
||||||
set firewall.allowicmpipv6.src='wan'
|
|
||||||
set firewall.allowicmpipv6.name='Allow IPv6 ICMP'
|
|
||||||
set firewall.allowicmpipv6.family='ipv6'
|
|
||||||
set firewall.allowicmpipv6.icmp_type='neighbour-advertisement neighbour-solicitation router-advertisement router-solicitation'
|
|
||||||
commit firewall
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$(uci -q get firewall.allowdhcpv6546)" = "" ]; then
|
|
||||||
uci -q batch <<-EOF >/dev/null
|
|
||||||
set firewall.allowdhcpv6546=rule
|
|
||||||
set firewall.allowdhcpv6546.target='ACCEPT'
|
|
||||||
set firewall.allowdhcpv6546.src='wan'
|
|
||||||
set firewall.allowdhcpv6546.proto='udp'
|
|
||||||
set firewall.allowdhcpv6546.dest_port='547'
|
|
||||||
set firewall.allowdhcpv6546.name='Allow DHCPv6 (546-to-547)'
|
|
||||||
set firewall.allowdhcpv6546.family='ipv6'
|
|
||||||
set firewall.allowdhcpv6546.src_port='546'
|
|
||||||
set firewall.allowdhcpv6547=rule
|
|
||||||
set firewall.allowdhcpv6547.target='ACCEPT'
|
|
||||||
set firewall.allowdhcpv6547.src='wan'
|
|
||||||
set firewall.allowdhcpv6547.proto='udp'
|
|
||||||
set firewall.allowdhcpv6547.dest_port='546'
|
|
||||||
set firewall.allowdhcpv6547.name='Allow DHCPv6 (547-to-546)'
|
|
||||||
set firewall.allowdhcpv6547.family='ipv6'
|
|
||||||
set firewall.allowdhcpv6547.src_port='547'
|
|
||||||
commit firewall
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Fix firewall config from some old config
|
# Fix firewall config from some old config
|
||||||
allintf=$(uci -q get firewall.@zone[1].network)
|
allintf=$(uci -q get firewall.@zone[1].network)
|
||||||
uci -q del firewall.@zone[1].network
|
uci -q del firewall.@zone[1].network
|
||||||
|
|
|
@ -8,6 +8,8 @@ uci -q batch <<-EOF >/dev/null
|
||||||
commit rpcd
|
commit rpcd
|
||||||
set luci.apply.timeout='20'
|
set luci.apply.timeout='20'
|
||||||
commit luci
|
commit luci
|
||||||
|
set fstab.@global[0].check_fs='1'
|
||||||
|
commit fstab
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if [ "$(uci -q get rpcd.@rpcd[0].socket)" != "/var/run/ubus/ubus.sock" ]; then
|
if [ "$(uci -q get rpcd.@rpcd[0].socket)" != "/var/run/ubus/ubus.sock" ]; then
|
||||||
|
@ -18,10 +20,6 @@ if [ "$(uci -q get rpcd.@rpcd[0].socket)" != "/var/run/ubus/ubus.sock" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
/sbin/block detect > /etc/config/fstab
|
/sbin/block detect > /etc/config/fstab
|
||||||
uci -q batch <<-EOF >/dev/null
|
|
||||||
set fstab.@global[0].check_fs='1'
|
|
||||||
commit fstab
|
|
||||||
EOF
|
|
||||||
|
|
||||||
[ -n "$(ubus call system board | jsonfilter -e '@.board_name' | grep raspberry)" ] && [ "$(uci -q get openmptcprouter.settings.scaling_governor)" != "performance" ] && {
|
[ -n "$(ubus call system board | jsonfilter -e '@.board_name' | grep raspberry)" ] && [ "$(uci -q get openmptcprouter.settings.scaling_governor)" != "performance" ] && {
|
||||||
# force CPU speed for RPI
|
# force CPU speed for RPI
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
if [ "$(uci -q get upnpd.config.external_ifac)" != "omrvpn" ]; then
|
|
||||||
uci -q batch <<-EOF >/dev/null
|
|
||||||
set upnpd.config.external_iface=omrvpn
|
|
||||||
commit upnpd
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0
|
|
|
@ -1,4 +1,4 @@
|
||||||
config ss_redir hi1
|
config ss_redir hi
|
||||||
option server 'sss0'
|
option server 'sss0'
|
||||||
option local_address '::'
|
option local_address '::'
|
||||||
option local_port '1100'
|
option local_port '1100'
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
#!/bin/sh /etc/rc.common
|
#!/bin/sh /etc/rc.common
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017-2019 Yousong Zhou <yszhou4tech@gmail.com>
|
# Copyright (C) 2017-2019 Yousong Zhou <yszhou4tech@gmail.com>
|
||||||
# Copyright (C) 2019-2021 Ycarus (Yannick Chabanois) <ycarus@zugaina.org> for OpenMPTCProuter
|
|
||||||
#
|
#
|
||||||
# This is free software, licensed under the GNU General Public License v3.
|
# This is free software, licensed under the GNU General Public License v3.
|
||||||
# See /LICENSE for more information.
|
# See /LICENSE for more information.
|
||||||
|
@ -147,8 +146,7 @@ ss_rules_cb() {
|
||||||
ss_redir_ports() {
|
ss_redir_ports() {
|
||||||
port=$(uci -q get shadowsocks-libev.$1.local_port)
|
port=$(uci -q get shadowsocks-libev.$1.local_port)
|
||||||
server=$(uci -q get shadowsocks-libev.$1.server)
|
server=$(uci -q get shadowsocks-libev.$1.server)
|
||||||
disabled=$(uci -q get shadowsocks-libev.$1.disabled)
|
if [ "$server" = "$2" ] || [ "$2" = "" ]; then
|
||||||
if [ "$disabled" != "1" ] && ([ "$server" = "$2" ] || [ "$2" = "" ]); then
|
|
||||||
if [ "$port" -lt "$min_ss_redir_ports" ]; then
|
if [ "$port" -lt "$min_ss_redir_ports" ]; then
|
||||||
min_ss_redir_ports=$port
|
min_ss_redir_ports=$port
|
||||||
fi
|
fi
|
||||||
|
@ -227,26 +225,6 @@ ss_rules() {
|
||||||
src_ips_bypass6="$(echo "$src_ips_bypass" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)"
|
src_ips_bypass6="$(echo "$src_ips_bypass" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)"
|
||||||
src_ips_forward6="$(echo "$src_ips_forward" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)"
|
src_ips_forward6="$(echo "$src_ips_forward" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)"
|
||||||
src_ips_checkdst6="$(echo "$src_ips_checkdst" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)"
|
src_ips_checkdst6="$(echo "$src_ips_checkdst" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)"
|
||||||
[ -z "$dst_ips_bypass4" ] && [ -z "$dst_ips_bypass6" ] && {
|
|
||||||
dst_ips_bypass4="$dst_ips_bypass"
|
|
||||||
dst_ips_bypass6="$dst_ips_bypass"
|
|
||||||
}
|
|
||||||
[ -z "$dst_ips_forward4" ] && [ -z "$dst_ips_forward6" ] && {
|
|
||||||
dst_ips_forward4="$dst_ips_forward"
|
|
||||||
dst_ips_forward6="$dst_ips_forward"
|
|
||||||
}
|
|
||||||
[ -z "$src_ips_bypass4" ] && [ -z "$src_ips_bypass6" ] && {
|
|
||||||
src_ips_bypass4="$src_ips_bypass"
|
|
||||||
src_ips_bypass6="$src_ips_bypass"
|
|
||||||
}
|
|
||||||
[ -z "$src_ips_forward4" ] && [ -z "$src_ips_forward6" ] && {
|
|
||||||
src_ips_forward4="$src_ips_forward"
|
|
||||||
src_ips_forward6="$src_ips_forward"
|
|
||||||
}
|
|
||||||
[ -z "$src_ips_checkdst4" ] && [ -z "$src_ips_checkdst6" ] && {
|
|
||||||
src_ips_checkdst4="$src_ips_checkdst"
|
|
||||||
src_ips_checkdst6="$src_ips_checkdst"
|
|
||||||
}
|
|
||||||
[ "$dst_forward_recentrst" = 0 ] || args="$args --dst-forward-recentrst"
|
[ "$dst_forward_recentrst" = 0 ] || args="$args --dst-forward-recentrst"
|
||||||
|
|
||||||
ss_rules_call
|
ss_rules_call
|
||||||
|
@ -308,7 +286,6 @@ start_service() {
|
||||||
# Add rule to match traffic marked by firewall for bypass
|
# Add rule to match traffic marked by firewall for bypass
|
||||||
ip rule add prio 1 fwmark 0x539 lookup 991337 > /dev/null 2>&1
|
ip rule add prio 1 fwmark 0x539 lookup 991337 > /dev/null 2>&1
|
||||||
rules_up
|
rules_up
|
||||||
[ -f /etc/firewall.gre-tunnel ] && sh /etc/firewall.gre-tunnel > /dev/null 2>&1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
stop_service() {
|
stop_service() {
|
||||||
|
@ -316,12 +293,8 @@ stop_service() {
|
||||||
rm -rf "$ss_confdir"
|
rm -rf "$ss_confdir"
|
||||||
}
|
}
|
||||||
|
|
||||||
reload_service() {
|
|
||||||
restart "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
rules_exist() {
|
rules_exist() {
|
||||||
[ -n "$(iptables-save | grep 'A ssr')" ] && return 0
|
[ -n "$(iptables -t nat -L -n | grep ssr)" ] && return 0
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -348,7 +321,6 @@ rules_up() {
|
||||||
config_foreach ss_rules_restart "$cfgtype" "$cfgtype"
|
config_foreach ss_rules_restart "$cfgtype" "$cfgtype"
|
||||||
done
|
done
|
||||||
config_foreach ss_rules ss_rules
|
config_foreach ss_rules ss_rules
|
||||||
[ -z "$(iptables-save | grep :ssr)" ] && logger -t "Shadowsocks" "Rules not applied"
|
|
||||||
[ -f /etc/init.d/omr-bypass ] && {
|
[ -f /etc/init.d/omr-bypass ] && {
|
||||||
logger -t "Shadowsocks" "Reload omr-bypass rules"
|
logger -t "Shadowsocks" "Reload omr-bypass rules"
|
||||||
/etc/init.d/omr-bypass reload_rules
|
/etc/init.d/omr-bypass reload_rules
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/sh -e
|
#!/bin/sh -e
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017 Yousong Zhou <yszhou4tech@gmail.com>
|
# Copyright (C) 2017 Yousong Zhou <yszhou4tech@gmail.com>
|
||||||
# Copyright (C) 2018-2021 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
|
# Copyright (C) 2018 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
|
||||||
#
|
#
|
||||||
# The design idea was derived from ss-rules by Jian Chang <aa65535@live.com>
|
# The design idea was derived from ss-rules by Jian Chang <aa65535@live.com>
|
||||||
#
|
#
|
||||||
|
@ -125,28 +125,28 @@ ss_rules_flush() {
|
||||||
iptables-save --counters | grep -v ssr_ | iptables-restore -w --counters
|
iptables-save --counters | grep -v ssr_ | iptables-restore -w --counters
|
||||||
while ip rule del fwmark 1 lookup 100 2>/dev/null; do true; done
|
while ip rule del fwmark 1 lookup 100 2>/dev/null; do true; done
|
||||||
ip route flush table 100 || true
|
ip route flush table 100 || true
|
||||||
for setname in $(ipset -n list | grep "ssr_${rule}"); do
|
for setname in $(ipset -n list | grep "ss_rules_"); do
|
||||||
ipset destroy "$setname" 2>/dev/null || true
|
ipset destroy "$setname" 2>/dev/null || true
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
ss_rules_ipset_init() {
|
ss_rules_ipset_init() {
|
||||||
ipset --exist restore <<-EOF
|
ipset --exist restore <<-EOF
|
||||||
create ssr_${rule}_src_bypass hash:net hashsize 64
|
create ss_rules_src_bypass hash:net hashsize 64
|
||||||
create ssr_${rule}_src_forward hash:net hashsize 64
|
create ss_rules_src_forward hash:net hashsize 64
|
||||||
create ssr_${rule}_src_checkdst hash:net hashsize 64
|
create ss_rules_src_checkdst hash:net hashsize 64
|
||||||
create ss_rules_dst_bypass_all hash:net hashsize 64
|
create ss_rules_dst_bypass_all hash:net hashsize 64
|
||||||
create ssr_${rule}_dst_bypass hash:net hashsize 64
|
create ss_rules_dst_bypass hash:net hashsize 64
|
||||||
create ssr_${rule}_dst_bypass_ hash:net hashsize 64
|
create ss_rules_dst_bypass_ hash:net hashsize 64
|
||||||
create ssr_${rule}_dst_forward hash:net hashsize 64
|
create ss_rules_dst_forward hash:net hashsize 64
|
||||||
create ss_rules_dst_forward_recentrst_ hash:ip hashsize 64 timeout 3600
|
create ss_rules_dst_forward_recentrst_ hash:ip hashsize 64 timeout 3600
|
||||||
$(ss_rules_ipset_mkadd ssr_${rule}_dst_bypass_ "$o_dst_bypass_ $o_remote_servers")
|
$(ss_rules_ipset_mkadd ss_rules_dst_bypass_ "$o_dst_bypass_ $o_remote_servers")
|
||||||
$(ss_rules_ipset_mkadd ss_rules_dst_bypass_all "$o_dst_bypass_all")
|
$(ss_rules_ipset_mkadd ss_rules_dst_bypass_all "$o_dst_bypass_all")
|
||||||
$(ss_rules_ipset_mkadd ssr_${rule}_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')")
|
$(ss_rules_ipset_mkadd ss_rules_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')")
|
||||||
$(ss_rules_ipset_mkadd ssr_${rule}_src_bypass "$o_src_bypass")
|
$(ss_rules_ipset_mkadd ss_rules_src_bypass "$o_src_bypass")
|
||||||
$(ss_rules_ipset_mkadd ssr_${rule}_src_forward "$o_src_forward")
|
$(ss_rules_ipset_mkadd ss_rules_src_forward "$o_src_forward")
|
||||||
$(ss_rules_ipset_mkadd ssr_${rule}_src_checkdst "$o_src_checkdst")
|
$(ss_rules_ipset_mkadd ss_rules_src_checkdst "$o_src_checkdst")
|
||||||
$(ss_rules_ipset_mkadd ssr_${rule}_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')")
|
$(ss_rules_ipset_mkadd ss_rules_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')")
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -187,19 +187,18 @@ ss_rules_iptchains_init_tcp() {
|
||||||
forward) local_target=ssr_${rule}_forward ;;
|
forward) local_target=ssr_${rule}_forward ;;
|
||||||
bypass|*) return 0;;
|
bypass|*) return 0;;
|
||||||
esac
|
esac
|
||||||
if [ "$(iptables-save | grep ssr_${rule}_local_out | grep ssr_${rule}_dst_bypass)" = "" ]; then
|
|
||||||
iptables-restore -w --noflush <<-EOF
|
iptables-restore -w --noflush <<-EOF
|
||||||
*nat
|
*nat
|
||||||
:ssr_${rule}_local_out -
|
:ssr_${rule}_local_out -
|
||||||
-I OUTPUT 1 -p tcp -j ssr_${rule}_local_out
|
-I OUTPUT 1 -p tcp -j ssr_${rule}_local_out
|
||||||
-A ssr_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN
|
-A ssr_${rule}_local_out -m set --match-set ss_rules_dst_bypass dst -j RETURN
|
||||||
-A ssr_${rule}_local_out -m set --match-set ss_rules_dst_bypass_all dst -j RETURN
|
-A ssr_${rule}_local_out -m set --match-set ss_rules_dst_bypass_all dst -j RETURN
|
||||||
-A ssr_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass_ dst -j RETURN
|
-A ssr_${rule}_local_out -m set --match-set ss_rules_dst_bypass_ dst -j RETURN
|
||||||
-A ssr_${rule}_local_out -m mark --mark 0x539 -j RETURN
|
-A ssr_${rule}_local_out -m mark --mark 0x539 -j RETURN
|
||||||
-A ssr_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default"
|
-A ssr_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default"
|
||||||
COMMIT
|
COMMIT
|
||||||
EOF
|
EOF
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ss_rules_iptchains_init_udp() {
|
ss_rules_iptchains_init_udp() {
|
||||||
|
@ -251,19 +250,19 @@ ss_rules_iptchains_init_() {
|
||||||
:ssr_${rule}_dst -
|
:ssr_${rule}_dst -
|
||||||
:ssr_${rule}_forward -
|
:ssr_${rule}_forward -
|
||||||
$(ss_rules_iptchains_mkprerules "$proto")
|
$(ss_rules_iptchains_mkprerules "$proto")
|
||||||
-A ssr_${rule}_pre_src -m set --match-set ssr_${rule}_dst_bypass_ dst -j RETURN
|
-A ssr_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_ dst -j RETURN
|
||||||
-A ssr_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_all dst -j MARK --set-mark 0x539
|
-A ssr_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_all dst -j MARK --set-mark 0x539
|
||||||
-A ssr_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_all dst -j RETURN
|
-A ssr_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_all dst -j RETURN
|
||||||
-A ssr_${rule}_pre_src -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN
|
-A ssr_${rule}_pre_src -m set --match-set ss_rules_dst_bypass dst -j RETURN
|
||||||
-A ssr_${rule}_pre_src -m mark --mark 0x539 -j RETURN
|
-A ssr_${rule}_pre_src -m mark --mark 0x539 -j RETURN
|
||||||
-A ssr_${rule}_dst -m set --match-set ss_rules_dst_bypass_all dst -j RETURN
|
-A ssr_${rule}_dst -m set --match-set ss_rules_dst_bypass_all dst -j RETURN
|
||||||
-A ssr_${rule}_dst -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN
|
-A ssr_${rule}_dst -m set --match-set ss_rules_dst_bypass dst -j RETURN
|
||||||
-A ssr_${rule}_pre_src -p $proto $o_ipt_extra -j ssr_${rule}_src
|
-A ssr_${rule}_pre_src -p $proto $o_ipt_extra -j ssr_${rule}_src
|
||||||
-A ssr_${rule}_src -m set --match-set ssr_${rule}_src_bypass src -j RETURN
|
-A ssr_${rule}_src -m set --match-set ss_rules_src_bypass src -j RETURN
|
||||||
-A ssr_${rule}_src -m set --match-set ssr_${rule}_src_forward src -j ssr_${rule}_forward
|
-A ssr_${rule}_src -m set --match-set ss_rules_src_forward src -j ssr_${rule}_forward
|
||||||
-A ssr_${rule}_src -m set --match-set ssr_${rule}_src_checkdst src -j ssr_${rule}_dst
|
-A ssr_${rule}_src -m set --match-set ss_rules_src_checkdst src -j ssr_${rule}_dst
|
||||||
-A ssr_${rule}_src -j $src_default_target -m comment --comment "src_default: $o_src_default"
|
-A ssr_${rule}_src -j $src_default_target -m comment --comment "src_default: $o_src_default"
|
||||||
-A ssr_${rule}_dst -m set --match-set ssr_${rule}_dst_forward dst -j ssr_${rule}_forward
|
-A ssr_${rule}_dst -m set --match-set ss_rules_dst_forward dst -j ssr_${rule}_forward
|
||||||
$recentrst_addset_rules
|
$recentrst_addset_rules
|
||||||
-A ssr_${rule}_dst -j $dst_default_target -m comment --comment "dst_default: $o_dst_default"
|
-A ssr_${rule}_dst -j $dst_default_target -m comment --comment "dst_default: $o_dst_default"
|
||||||
$forward_rules
|
$forward_rules
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/sh -e
|
#!/bin/sh -e
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017 Yousong Zhou <yszhou4tech@gmail.com>
|
# Copyright (C) 2017 Yousong Zhou <yszhou4tech@gmail.com>
|
||||||
# Copyright (C) 2018-2021 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
|
# Copyright (C) 2018 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
|
||||||
#
|
#
|
||||||
# The design idea was derived from ss-rules by Jian Chang <aa65535@live.com>
|
# The design idea was derived from ss-rules by Jian Chang <aa65535@live.com>
|
||||||
#
|
#
|
||||||
|
@ -108,28 +108,28 @@ ss_rules6_flush() {
|
||||||
ip6tables-save --counters | grep -v ssr6_ | ip6tables-restore -w --counters
|
ip6tables-save --counters | grep -v ssr6_ | ip6tables-restore -w --counters
|
||||||
while ip -f inet6 rule del fwmark 1 lookup 100 2>/dev/null; do true; done
|
while ip -f inet6 rule del fwmark 1 lookup 100 2>/dev/null; do true; done
|
||||||
ip -f inet6 route flush table 100 || true
|
ip -f inet6 route flush table 100 || true
|
||||||
for setname in $(ipset -n list | grep "ssr6_${rule}"); do
|
for setname in $(ipset -n list | grep "ss_rules6_"); do
|
||||||
ipset destroy "$setname" 2>/dev/null || true
|
ipset destroy "$setname" 2>/dev/null || true
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
ss_rules6_ipset_init() {
|
ss_rules6_ipset_init() {
|
||||||
ipset --exist restore <<-EOF
|
ipset --exist restore <<-EOF
|
||||||
create ssr6_${rule}_src_bypass hash:net family inet6 hashsize 64
|
create ss_rules6_src_bypass hash:net family inet6 hashsize 64
|
||||||
create ssr6_${rule}_src_forward hash:net family inet6 hashsize 64
|
create ss_rules6_src_forward hash:net family inet6 hashsize 64
|
||||||
create ssr6_${rule}_src_checkdst hash:net family inet6 hashsize 64
|
create ss_rules6_src_checkdst hash:net family inet6 hashsize 64
|
||||||
create ssr6_${rule}_dst_bypass hash:net family inet6 hashsize 64
|
create ss_rules6_dst_bypass hash:net family inet6 hashsize 64
|
||||||
create ss_rules6_dst_bypass_all hash:net family inet6 hashsize 64
|
create ss_rules6_dst_bypass_all hash:net family inet6 hashsize 64
|
||||||
create ssr6_${rule}_dst_bypass_ hash:net family inet6 hashsize 64
|
create ss_rules6_dst_bypass_ hash:net family inet6 hashsize 64
|
||||||
create ssr6_${rule}_dst_forward hash:net family inet6 hashsize 64
|
create ss_rules6_dst_forward hash:net family inet6 hashsize 64
|
||||||
create ssr6_${rule}_dst_forward_recrst_ hash:ip family inet6 hashsize 64 timeout 3600
|
create ss_rules6_dst_forward_recrst_ hash:ip family inet6 hashsize 64 timeout 3600
|
||||||
$(ss_rules6_ipset_mkadd ssr6_${rule}_dst_bypass_ "$o_dst_bypass_ $o_remote_servers")
|
$(ss_rules6_ipset_mkadd ss_rules6_dst_bypass_ "$o_dst_bypass_ $o_remote_servers")
|
||||||
$(ss_rules6_ipset_mkadd ss_rules6_dst_bypass_all "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')")
|
$(ss_rules6_ipset_mkadd ss_rules6_dst_bypass_all "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')")
|
||||||
$(ss_rules6_ipset_mkadd ssr6_${rule}_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')")
|
$(ss_rules6_ipset_mkadd ss_rules6_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')")
|
||||||
$(ss_rules6_ipset_mkadd ssr6_${rule}_src_bypass "$o_src_bypass")
|
$(ss_rules6_ipset_mkadd ss_rules6_src_bypass "$o_src_bypass")
|
||||||
$(ss_rules6_ipset_mkadd ssr6_${rule}_src_forward "$o_src_forward")
|
$(ss_rules6_ipset_mkadd ss_rules6_src_forward "$o_src_forward")
|
||||||
$(ss_rules6_ipset_mkadd ssr6_${rule}_src_checkdst "$o_src_checkdst")
|
$(ss_rules6_ipset_mkadd ss_rules6_src_checkdst "$o_src_checkdst")
|
||||||
$(ss_rules6_ipset_mkadd ssr6_${rule}_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')")
|
$(ss_rules6_ipset_mkadd ss_rules6_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')")
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -174,9 +174,9 @@ ss_rules6_iptchains_init_tcp() {
|
||||||
*nat
|
*nat
|
||||||
:ssr6_${rule}_local_out -
|
:ssr6_${rule}_local_out -
|
||||||
-I OUTPUT 1 -p tcp -j ssr6_${rule}_local_out
|
-I OUTPUT 1 -p tcp -j ssr6_${rule}_local_out
|
||||||
-A ssr6_${rule}_local_out -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN
|
-A ssr6_${rule}_local_out -m set --match-set ss_rules6_dst_bypass dst -j RETURN
|
||||||
-A ssr6_${rule}_local_out -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN
|
-A ssr6_${rule}_local_out -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN
|
||||||
-A ssr6_${rule}_local_out -m set --match-set ssr6_${rule}_dst_bypass_ dst -j RETURN
|
-A ssr6_${rule}_local_out -m set --match-set ss_rules6_dst_bypass_ dst -j RETURN
|
||||||
-A ssr6_${rule}_local_out -m mark --mark 0x6539 -j RETURN
|
-A ssr6_${rule}_local_out -m mark --mark 0x6539 -j RETURN
|
||||||
-A ssr6_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default"
|
-A ssr6_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default"
|
||||||
COMMIT
|
COMMIT
|
||||||
|
@ -232,19 +232,19 @@ ss_rules6_iptchains_init_() {
|
||||||
:ssr6_${rule}_dst -
|
:ssr6_${rule}_dst -
|
||||||
:ssr6_${rule}_forward -
|
:ssr6_${rule}_forward -
|
||||||
$(ss_rules6_iptchains_mkprerules "$proto")
|
$(ss_rules6_iptchains_mkprerules "$proto")
|
||||||
-A ssr6_${rule}_pre_src -m set --match-set ssr6_${rule}_dst_bypass_ dst -j RETURN
|
-A ssr6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_ dst -j RETURN
|
||||||
-A ssr6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_all dst -j MARK --set-mark 0x6539
|
-A ssr6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_all dst -j MARK --set-mark 0x6539
|
||||||
-A ssr6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN
|
-A ssr6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN
|
||||||
-A ssr6_${rule}_pre_src -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN
|
-A ssr6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass dst -j RETURN
|
||||||
-A ssr6_${rule}_pre_src -m mark --mark 0x6539 -j RETURN
|
-A ssr6_${rule}_pre_src -m mark --mark 0x6539 -j RETURN
|
||||||
-A ssr6_${rule}_dst -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN
|
-A ssr6_${rule}_dst -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN
|
||||||
-A ssr6_${rule}_dst -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN
|
-A ssr6_${rule}_dst -m set --match-set ss_rules6_dst_bypass dst -j RETURN
|
||||||
-A ssr6_${rule}_pre_src -p $proto $o_ipt_extra -j ssr6_${rule}_src
|
-A ssr6_${rule}_pre_src -p $proto $o_ipt_extra -j ssr6_${rule}_src
|
||||||
-A ssr6_${rule}_src -m set --match-set ssr6_${rule}_src_bypass src -j RETURN
|
-A ssr6_${rule}_src -m set --match-set ss_rules6_src_bypass src -j RETURN
|
||||||
-A ssr6_${rule}_src -m set --match-set ssr6_${rule}_src_forward src -j ssr6_${rule}_forward
|
-A ssr6_${rule}_src -m set --match-set ss_rules6_src_forward src -j ssr6_${rule}_forward
|
||||||
-A ssr6_${rule}_src -m set --match-set ssr6_${rule}_src_checkdst src -j ssr6_${rule}_dst
|
-A ssr6_${rule}_src -m set --match-set ss_rules6_src_checkdst src -j ssr6_${rule}_dst
|
||||||
-A ssr6_${rule}_src -j $src_default_target -m comment --comment "src_default: $o_src_default"
|
-A ssr6_${rule}_src -j $src_default_target -m comment --comment "src_default: $o_src_default"
|
||||||
-A ssr6_${rule}_dst -m set --match-set ssr6_${rule}_dst_forward dst -j ssr6_${rule}_forward
|
-A ssr6_${rule}_dst -m set --match-set ss_rules6_dst_forward dst -j ssr6_${rule}_forward
|
||||||
$recentrst_addset_rules
|
$recentrst_addset_rules
|
||||||
-A ssr6_${rule}_dst -j $dst_default_target -m comment --comment "dst_default: $o_dst_default"
|
-A ssr6_${rule}_dst -j $dst_default_target -m comment --comment "dst_default: $o_dst_default"
|
||||||
$forward_rules
|
$forward_rules
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/sh /etc/rc.common
|
#!/bin/sh /etc/rc.common
|
||||||
#
|
#
|
||||||
# Copyright 2019-2020 Xingwang Liao <kuoruan@gmail.com>
|
# Copyright 2019-2020 Xingwang Liao <kuoruan@gmail.com>
|
||||||
# Copyright 2020-2021 Ycarus (Yannick Chabanois) <ycarus@zugaina.org> for OpenMPTCProuter
|
# Copyright 2020 Ycarus (Yannick Chabanois) <ycarus@zugaina.org> for OpenMPTCProuter
|
||||||
# Licensed to the public under the MIT License.
|
# Licensed to the public under the MIT License.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/sh -e
|
#!/bin/sh -e
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017 Yousong Zhou <yszhou4tech@gmail.com>
|
# Copyright (C) 2017 Yousong Zhou <yszhou4tech@gmail.com>
|
||||||
# Copyright (C) 2018-2021 Ycarus (Yannick Chabanois) <ycarus@zugaina.org> for OpenMPTCProuter
|
# Copyright (C) 2018-2020 Ycarus (Yannick Chabanois) <ycarus@zugaina.org> for OpenMPTCProuter
|
||||||
#
|
#
|
||||||
# The design idea was derived from ss-rules by Jian Chang <aa65535@live.com>
|
# The design idea was derived from ss-rules by Jian Chang <aa65535@live.com>
|
||||||
#
|
#
|
||||||
|
@ -125,28 +125,28 @@ v2r_rules_flush() {
|
||||||
iptables-save --counters | grep -v v2r_ | iptables-restore -w --counters
|
iptables-save --counters | grep -v v2r_ | iptables-restore -w --counters
|
||||||
while ip rule del fwmark 1 lookup 100 2>/dev/null; do true; done
|
while ip rule del fwmark 1 lookup 100 2>/dev/null; do true; done
|
||||||
ip route flush table 100 || true
|
ip route flush table 100 || true
|
||||||
for setname in $(ipset -n list | grep "ssr_${rule}"); do
|
for setname in $(ipset -n list | grep "ss_rules_"); do
|
||||||
ipset destroy "$setname" 2>/dev/null || true
|
ipset destroy "$setname" 2>/dev/null || true
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
v2r_rules_ipset_init() {
|
v2r_rules_ipset_init() {
|
||||||
ipset --exist restore <<-EOF
|
ipset --exist restore <<-EOF
|
||||||
create ssr_${rule}_src_bypass hash:net hashsize 64
|
create ss_rules_src_bypass hash:net hashsize 64
|
||||||
create ssr_${rule}_src_forward hash:net hashsize 64
|
create ss_rules_src_forward hash:net hashsize 64
|
||||||
create ssr_${rule}_src_checkdst hash:net hashsize 64
|
create ss_rules_src_checkdst hash:net hashsize 64
|
||||||
create ss_rules_dst_bypass_all hash:net hashsize 64
|
create ss_rules_dst_bypass_all hash:net hashsize 64
|
||||||
create ssr_${rule}_dst_bypass hash:net hashsize 64
|
create ss_rules_dst_bypass hash:net hashsize 64
|
||||||
create ssr_${rule}_dst_bypass_ hash:net hashsize 64
|
create ss_rules_dst_bypass_ hash:net hashsize 64
|
||||||
create ssr_${rule}_dst_forward hash:net hashsize 64
|
create ss_rules_dst_forward hash:net hashsize 64
|
||||||
create ss_rules_dst_forward_recentrst_ hash:ip hashsize 64 timeout 3600
|
create ss_rules_dst_forward_recentrst_ hash:ip hashsize 64 timeout 3600
|
||||||
$(v2r_rules_ipset_mkadd ssr_${rule}_dst_bypass_ "$o_dst_bypass_ $o_remote_servers")
|
$(v2r_rules_ipset_mkadd ss_rules_dst_bypass_ "$o_dst_bypass_ $o_remote_servers")
|
||||||
$(v2r_rules_ipset_mkadd ss_rules_dst_bypass_all "$o_dst_bypass_all")
|
$(v2r_rules_ipset_mkadd ss_rules_dst_bypass_all "$o_dst_bypass_all")
|
||||||
$(v2r_rules_ipset_mkadd ssr_${rule}_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')")
|
$(v2r_rules_ipset_mkadd ss_rules_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')")
|
||||||
$(v2r_rules_ipset_mkadd ssr_${rule}_src_bypass "$o_src_bypass")
|
$(v2r_rules_ipset_mkadd ss_rules_src_bypass "$o_src_bypass")
|
||||||
$(v2r_rules_ipset_mkadd ssr_${rule}_src_forward "$o_src_forward")
|
$(v2r_rules_ipset_mkadd ss_rules_src_forward "$o_src_forward")
|
||||||
$(v2r_rules_ipset_mkadd ssr_${rule}_src_checkdst "$o_src_checkdst")
|
$(v2r_rules_ipset_mkadd ss_rules_src_checkdst "$o_src_checkdst")
|
||||||
$(v2r_rules_ipset_mkadd ssr_${rule}_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')")
|
$(v2r_rules_ipset_mkadd ss_rules_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')")
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -192,9 +192,9 @@ v2r_rules_iptchains_init_tcp() {
|
||||||
*nat
|
*nat
|
||||||
:v2r_${rule}_local_out -
|
:v2r_${rule}_local_out -
|
||||||
-I OUTPUT 1 -p tcp -j v2r_${rule}_local_out
|
-I OUTPUT 1 -p tcp -j v2r_${rule}_local_out
|
||||||
-A v2r_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN
|
-A v2r_${rule}_local_out -m set --match-set ss_rules_dst_bypass dst -j RETURN
|
||||||
-A v2r_${rule}_local_out -m set --match-set ss_rules_dst_bypass_all dst -j RETURN
|
-A v2r_${rule}_local_out -m set --match-set ss_rules_dst_bypass_all dst -j RETURN
|
||||||
-A v2r_${rule}_local_out -m set --match-set ssr_${rule}_dst_bypass_ dst -j RETURN
|
-A v2r_${rule}_local_out -m set --match-set ss_rules_dst_bypass_ dst -j RETURN
|
||||||
-A v2r_${rule}_local_out -m mark --mark 0x539 -j RETURN
|
-A v2r_${rule}_local_out -m mark --mark 0x539 -j RETURN
|
||||||
-A v2r_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default"
|
-A v2r_${rule}_local_out -p tcp $o_ipt_extra -j $local_target -m comment --comment "local_default: $o_local_default"
|
||||||
COMMIT
|
COMMIT
|
||||||
|
@ -250,19 +250,19 @@ v2r_rules_iptchains_init_() {
|
||||||
:v2r_${rule}_dst -
|
:v2r_${rule}_dst -
|
||||||
:v2r_${rule}_forward -
|
:v2r_${rule}_forward -
|
||||||
$(v2r_rules_iptchains_mkprerules "$proto")
|
$(v2r_rules_iptchains_mkprerules "$proto")
|
||||||
-A v2r_${rule}_pre_src -m set --match-set ssr_${rule}_dst_bypass_ dst -j RETURN
|
-A v2r_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_ dst -j RETURN
|
||||||
-A v2r_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_all dst -j MARK --set-mark 0x539
|
-A v2r_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_all dst -j MARK --set-mark 0x539
|
||||||
-A v2r_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_all dst -j RETURN
|
-A v2r_${rule}_pre_src -m set --match-set ss_rules_dst_bypass_all dst -j RETURN
|
||||||
-A v2r_${rule}_pre_src -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN
|
-A v2r_${rule}_pre_src -m set --match-set ss_rules_dst_bypass dst -j RETURN
|
||||||
-A v2r_${rule}_pre_src -m mark --mark 0x539 -j RETURN
|
-A v2r_${rule}_pre_src -m mark --mark 0x539 -j RETURN
|
||||||
-A v2r_${rule}_dst -m set --match-set ss_rules_dst_bypass_all dst -j RETURN
|
-A v2r_${rule}_dst -m set --match-set ss_rules_dst_bypass_all dst -j RETURN
|
||||||
-A v2r_${rule}_dst -m set --match-set ssr_${rule}_dst_bypass dst -j RETURN
|
-A v2r_${rule}_dst -m set --match-set ss_rules_dst_bypass dst -j RETURN
|
||||||
-A v2r_${rule}_pre_src -p $proto $o_ipt_extra -j v2r_${rule}_src
|
-A v2r_${rule}_pre_src -p $proto $o_ipt_extra -j v2r_${rule}_src
|
||||||
-A v2r_${rule}_src -m set --match-set ssr_${rule}_src_bypass src -j RETURN
|
-A v2r_${rule}_src -m set --match-set ss_rules_src_bypass src -j RETURN
|
||||||
-A v2r_${rule}_src -m set --match-set ssr_${rule}_src_forward src -j v2r_${rule}_forward
|
-A v2r_${rule}_src -m set --match-set ss_rules_src_forward src -j v2r_${rule}_forward
|
||||||
-A v2r_${rule}_src -m set --match-set ssr_${rule}_src_checkdst src -j v2r_${rule}_dst
|
-A v2r_${rule}_src -m set --match-set ss_rules_src_checkdst src -j v2r_${rule}_dst
|
||||||
-A v2r_${rule}_src -j $src_default_target -m comment --comment "src_default: $o_src_default"
|
-A v2r_${rule}_src -j $src_default_target -m comment --comment "src_default: $o_src_default"
|
||||||
-A v2r_${rule}_dst -m set --match-set ssr_${rule}_dst_forward dst -j v2r_${rule}_forward
|
-A v2r_${rule}_dst -m set --match-set ss_rules_dst_forward dst -j v2r_${rule}_forward
|
||||||
$recentrst_addset_rules
|
$recentrst_addset_rules
|
||||||
-A v2r_${rule}_dst -j $dst_default_target -m comment --comment "dst_default: $o_dst_default"
|
-A v2r_${rule}_dst -j $dst_default_target -m comment --comment "dst_default: $o_dst_default"
|
||||||
$forward_rules
|
$forward_rules
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/sh -e
|
#!/bin/sh -e
|
||||||
#
|
#
|
||||||
# Copyright (C) 2017 Yousong Zhou <yszhou4tech@gmail.com>
|
# Copyright (C) 2017 Yousong Zhou <yszhou4tech@gmail.com>
|
||||||
# Copyright (C) 2018-2021 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
|
# Copyright (C) 2018-2020 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
|
||||||
#
|
#
|
||||||
# The design idea was derived from ss-rules by Jian Chang <aa65535@live.com>
|
# The design idea was derived from ss-rules by Jian Chang <aa65535@live.com>
|
||||||
#
|
#
|
||||||
|
@ -108,28 +108,28 @@ v2ray_rules6_flush() {
|
||||||
ip6tables-save --counters | grep -v v2r6_ | ip6tables-restore -w --counters
|
ip6tables-save --counters | grep -v v2r6_ | ip6tables-restore -w --counters
|
||||||
while ip -f inet6 rule del fwmark 1 lookup 100 2>/dev/null; do true; done
|
while ip -f inet6 rule del fwmark 1 lookup 100 2>/dev/null; do true; done
|
||||||
ip -f inet6 route flush table 100 || true
|
ip -f inet6 route flush table 100 || true
|
||||||
for setname in $(ipset -n list | grep "ssr6_${rule}"); do
|
for setname in $(ipset -n list | grep "ss_rules6_"); do
|
||||||
ipset destroy "$setname" 2>/dev/null || true
|
ipset destroy "$setname" 2>/dev/null || true
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
v2ray_rules6_ipset_init() {
|
v2ray_rules6_ipset_init() {
|
||||||
ipset --exist restore <<-EOF
|
ipset --exist restore <<-EOF
|
||||||
create ssr6_${rule}_src_bypass hash:net family inet6 hashsize 64
|
create ss_rules6_src_bypass hash:net family inet6 hashsize 64
|
||||||
create ssr6_${rule}_src_forward hash:net family inet6 hashsize 64
|
create ss_rules6_src_forward hash:net family inet6 hashsize 64
|
||||||
create ssr6_${rule}_src_checkdst hash:net family inet6 hashsize 64
|
create ss_rules6_src_checkdst hash:net family inet6 hashsize 64
|
||||||
create ssr6_${rule}_dst_bypass hash:net family inet6 hashsize 64
|
create ss_rules6_dst_bypass hash:net family inet6 hashsize 64
|
||||||
create ss_rules6_dst_bypass_all hash:net family inet6 hashsize 64
|
create ss_rules6_dst_bypass_all hash:net family inet6 hashsize 64
|
||||||
create ssr6_${rule}_dst_bypass_ hash:net family inet6 hashsize 64
|
create ss_rules6_dst_bypass_ hash:net family inet6 hashsize 64
|
||||||
create ssr6_${rule}_dst_forward hash:net family inet6 hashsize 64
|
create ss_rules6_dst_forward hash:net family inet6 hashsize 64
|
||||||
create ss_rules6_dst_forward_recrst_ hash:ip family inet6 hashsize 64 timeout 3600
|
create ss_rules6_dst_forward_recrst_ hash:ip family inet6 hashsize 64 timeout 3600
|
||||||
$(v2ray_rules6_ipset_mkadd ssr6_${rule}_dst_bypass_ "$o_dst_bypass_ $o_remote_servers")
|
$(v2ray_rules6_ipset_mkadd ss_rules6_dst_bypass_ "$o_dst_bypass_ $o_remote_servers")
|
||||||
$(v2ray_rules6_ipset_mkadd ss_rules6_dst_bypass_all "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')")
|
$(v2ray_rules6_ipset_mkadd ss_rules6_dst_bypass_all "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')")
|
||||||
$(v2ray_rules6_ipset_mkadd ssr6_${rule}_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')")
|
$(v2ray_rules6_ipset_mkadd ss_rules6_dst_bypass "$o_dst_bypass $(cat "$o_dst_bypass_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')")
|
||||||
$(v2ray_rules6_ipset_mkadd ssr6_${rule}_src_bypass "$o_src_bypass")
|
$(v2ray_rules6_ipset_mkadd ss_rules6_src_bypass "$o_src_bypass")
|
||||||
$(v2ray_rules6_ipset_mkadd ssr6_${rule}_src_forward "$o_src_forward")
|
$(v2ray_rules6_ipset_mkadd ss_rules6_src_forward "$o_src_forward")
|
||||||
$(v2ray_rules6_ipset_mkadd ssr6_${rule}_src_checkdst "$o_src_checkdst")
|
$(v2ray_rules6_ipset_mkadd ss_rules6_src_checkdst "$o_src_checkdst")
|
||||||
$(v2ray_rules6_ipset_mkadd ssr6_${rule}_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')")
|
$(v2ray_rules6_ipset_mkadd ss_rules6_dst_forward "$o_dst_forward $(cat "$o_dst_forward_file" 2>/dev/null | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}')")
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -240,20 +240,20 @@ v2ray_rules6_iptchains_init_() {
|
||||||
:v2r6_${rule}_forward -
|
:v2r6_${rule}_forward -
|
||||||
$(v2ray_rules6_iptchains_mkprerules "udp")
|
$(v2ray_rules6_iptchains_mkprerules "udp")
|
||||||
$(v2ray_rules6_iptchains_mkprerules "tcp")
|
$(v2ray_rules6_iptchains_mkprerules "tcp")
|
||||||
-A v2r6_${rule}_pre_src -m set --match-set ssr6_${rule}_dst_bypass_ dst -j RETURN
|
-A v2r6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_ dst -j RETURN
|
||||||
-A v2r6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_all dst -j MARK --set-mark 0x6539
|
-A v2r6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_all dst -j MARK --set-mark 0x6539
|
||||||
-A v2r6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN
|
-A v2r6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN
|
||||||
-A v2r6_${rule}_pre_src -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN
|
-A v2r6_${rule}_pre_src -m set --match-set ss_rules6_dst_bypass dst -j RETURN
|
||||||
-A v2r6_${rule}_pre_src -m mark --mark 0x6539 -j RETURN
|
-A v2r6_${rule}_pre_src -m mark --mark 0x6539 -j RETURN
|
||||||
-A v2r6_${rule}_dst -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN
|
-A v2r6_${rule}_dst -m set --match-set ss_rules6_dst_bypass_all dst -j RETURN
|
||||||
-A v2r6_${rule}_dst -m set --match-set ssr6_${rule}_dst_bypass dst -j RETURN
|
-A v2r6_${rule}_dst -m set --match-set ss_rules6_dst_bypass dst -j RETURN
|
||||||
-A v2r6_${rule}_pre_src -p tcp $o_ipt_extra -j v2r6_${rule}_src
|
-A v2r6_${rule}_pre_src -p tcp $o_ipt_extra -j v2r6_${rule}_src
|
||||||
-A v2r6_${rule}_pre_src -p udp $o_ipt_extra -j v2r6_${rule}_src
|
-A v2r6_${rule}_pre_src -p udp $o_ipt_extra -j v2r6_${rule}_src
|
||||||
-A v2r6_${rule}_src -m set --match-set ssr6_${rule}_src_bypass src -j RETURN
|
-A v2r6_${rule}_src -m set --match-set ss_rules6_src_bypass src -j RETURN
|
||||||
-A v2r6_${rule}_src -m set --match-set ssr6_${rule}_src_forward src -j v2r6_${rule}_forward
|
-A v2r6_${rule}_src -m set --match-set ss_rules6_src_forward src -j v2r6_${rule}_forward
|
||||||
-A v2r6_${rule}_src -m set --match-set ssr6_${rule}_src_checkdst src -j v2r6_${rule}_dst
|
-A v2r6_${rule}_src -m set --match-set ss_rules6_src_checkdst src -j v2r6_${rule}_dst
|
||||||
-A v2r6_${rule}_src -j $src_default_target -m comment --comment "src_default: $o_src_default"
|
-A v2r6_${rule}_src -j $src_default_target -m comment --comment "src_default: $o_src_default"
|
||||||
-A v2r6_${rule}_dst -m set --match-set ssr6_${rule}_dst_forward dst -j v2r6_${rule}_forward
|
-A v2r6_${rule}_dst -m set --match-set ss_rules6_dst_forward dst -j v2r6_${rule}_forward
|
||||||
$recentrst_addset_rules
|
$recentrst_addset_rules
|
||||||
-A v2r6_${rule}_dst -j $dst_default_target -m comment --comment "dst_default: $o_dst_default"
|
-A v2r6_${rule}_dst -j $dst_default_target -m comment --comment "dst_default: $o_dst_default"
|
||||||
$forward_rules
|
$forward_rules
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue