2023.08.13 Update

This commit is contained in:
WindyMadman 2023-08-13 10:18:14 +08:00
parent 1e22f344f8
commit fd612b0673
65 changed files with 6332 additions and 5218 deletions

View File

@ -7,9 +7,9 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=alist
PKG_VERSION:=3.24.0
PKG_WEB_VERSION:=3.24.0
PKG_RELEASE:=70
PKG_VERSION:=3.25.1
PKG_WEB_VERSION:=3.25.1
PKG_RELEASE:=72
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/alist-org/alist/tar.gz/v$(PKG_VERSION)?
@ -23,7 +23,7 @@ define Download/$(PKG_NAME)-web
FILE:=$(PKG_NAME)-web-$(PKG_WEB_VERSION).tar.gz
URL_FILE:=dist.tar.gz
URL:=https://github.com/alist-org/alist-web/releases/download/$(PKG_WEB_VERSION)/
HASH:=cdb0a1445a2d7f96d33bb5c23cab27759d43d6361cb424be921bf40c470d3351
HASH:=0074991fbb14e73435f91dce71be646312391930fcb48931bb953ff50c1bd6e9
endef
PKG_BUILD_DEPENDS:=golang/host
@ -46,7 +46,7 @@ define Package/$(PKG_NAME)
SUBMENU:=Web Servers/Proxies
TITLE:=A file list program that supports multiple storage
URL:=https://alist-doc.nn.ci/
DEPENDS:=$(GO_ARCH_DEPENDS)
DEPENDS:=$(GO_ARCH_DEPENDS) +ca-bundle
endef
define Package/$(PKG_NAME)/description

View File

@ -1,12 +1,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=chinadns-ng
PKG_VERSION:=2023.06.01
PKG_RELEASE:=40
PKG_VERSION:=2023.06.05
PKG_RELEASE:=41
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/zfl9/chinadns-ng.git
PKG_SOURCE_VERSION:=2389c57c79c3fe97ad9fb125f05efb29b11299e8
PKG_SOURCE_VERSION:=33e75ed57a8dd152ab67451216384ca1b23b9d66
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)/$(PKG_SOURCE_SUBDIR)

View File

@ -5,17 +5,18 @@ config chinadns-ng
option bind_port '5353'
option china_dns '223.5.5.5,119.29.29.29'
option trust_dns '8.8.8.8,8.8.4.4'
option chnlist_file '/etc/chinadns-ng/chinalist.txt'
option gfwlist_file '/etc/chinadns-ng/gfwlist.txt'
option chnlist_first '0'
option default_tag 'none'
option add_tagchn_ip '0'
option add_taggfw_ip '0'
option ipset_name4 'chnroute'
option ipset_name6 'chnroute6'
option gfwlist_file '/etc/chinadns-ng/gfwlist.txt'
#option chnlist_file '/etc/chinadns-ng/chinalist.txt'
option default_tag 'none'
option no_ipv6 '0'
option timeout_sec '3'
option repeat_times '2'
option no_ipv6 '0'
option chnlist_first '0'
option add_tagchn_ip '0'
option reuse_port '1'
option noip_as_chnip '0'
option reuse_port '1'
option verbose '0'

View File

@ -58,7 +58,7 @@ append_param_with_val() {
if [ "$_loctmp" = 1 ]; then
procd_append_param command "$switch"
else
procd_append_param command "${switch}=${_loctmp}"
procd_append_param command "$switch" "$_loctmp"
fi
}
@ -153,18 +153,19 @@ start_chinadns_ng() {
append_param "$1" bind_port "-l"
append_param "$1" china_dns "-c"
append_param "$1" trust_dns "-t"
append_param "$1" chnlist_file "-m"
append_param "$1" gfwlist_file "-g"
append_bool "$1" chnlist_first "-M"
append_param_if_neq "$1" default_tag "-d" "none"
append_param_with_val "$1" add_tagchn_ip "-a"
append_param_with_val "$1" add_taggfw_ip "-A"
append_param_if_neq "$1" ipset_name4 "-4" "chnroute"
append_param_if_neq "$1" ipset_name6 "-6" "chnroute6"
append_param "$1" gfwlist_file "-g"
append_param "$1" chnlist_file "-m"
append_param_if_neq "$1" default_tag "-d" "none"
append_param_with_val "$1" no_ipv6 "-N"
append_param_if_neq "$1" timeout_sec "-o" "5"
append_param_if_neq "$1" repeat_times "-p" "1"
append_param_with_val "$1" no_ipv6 "-N"
append_bool "$1" chnlist_first "-M"
append_bool "$1" add_tagchn_ip "-a"
append_bool "$1" reuse_port "-r"
append_bool "$1" noip_as_chnip "-n"
append_bool "$1" reuse_port "-r"
append_bool "$1" verbose "-v"
procd_close_instance
done

File diff suppressed because it is too large Load Diff

View File

@ -996,9 +996,8 @@
61.29.128.0/18
61.29.192.0/19
61.29.224.0/20
61.29.240.0/21
61.29.240.0/22
61.29.248.0/22
61.29.254.0/23
61.45.128.0/18
61.45.224.0/20
61.47.128.0/18
@ -1119,6 +1118,7 @@
103.2.108.0/22
103.2.156.0/22
103.2.164.0/22
103.2.188.0/23
103.2.200.0/21
103.2.208.0/21
103.3.84.0/22
@ -1169,7 +1169,7 @@
103.11.168.0/22
103.11.180.0/22
103.12.32.0/22
103.12.68.0/22
103.12.68.0/23
103.12.92.0/22
103.12.98.0/23
103.12.136.0/22
@ -1818,7 +1818,6 @@
103.88.96.0/22
103.88.164.0/22
103.88.176.0/22
103.88.188.0/22
103.88.212.0/22
103.89.28.0/22
103.89.96.0/20
@ -1870,7 +1869,6 @@
103.92.240.0/20
103.93.0.0/21
103.93.28.0/22
103.93.76.0/22
103.93.84.0/22
103.93.142.0/23
103.93.152.0/22
@ -1984,7 +1982,6 @@
103.103.12.0/22
103.103.16.0/22
103.103.36.0/22
103.103.68.0/22
103.103.72.0/22
103.103.176.0/22
103.103.188.0/22
@ -1999,7 +1996,7 @@
103.104.64.0/22
103.104.104.0/22
103.104.152.0/22
103.104.168.0/21
103.104.168.0/22
103.104.188.0/22
103.104.198.0/23
103.104.252.0/22
@ -2101,7 +2098,6 @@
103.115.148.0/22
103.115.204.0/23
103.115.248.0/22
103.116.20.0/22
103.116.40.0/22
103.116.64.0/22
103.116.72.0/21
@ -2192,11 +2188,13 @@
103.130.228.0/22
103.131.20.0/22
103.131.36.0/22
103.131.138.0/23
103.131.152.0/22
103.131.168.0/22
103.131.176.0/22
103.131.224.0/21
103.131.240.0/22
103.132.22.0/23
103.132.60.0/22
103.132.64.0/20
103.132.80.0/22
@ -2215,6 +2213,7 @@
103.133.232.0/22
103.134.12.0/24
103.134.196.0/22
103.134.232.0/23
103.135.80.0/22
103.135.124.0/22
103.135.148.0/22
@ -2340,6 +2339,7 @@
103.149.242.0/23
103.149.244.0/22
103.149.248.0/23
103.150.10.0/23
103.150.24.0/23
103.150.66.0/23
103.150.72.0/23
@ -2431,6 +2431,7 @@
103.158.0.0/23
103.158.8.0/23
103.158.16.0/23
103.158.74.0/23
103.158.190.0/23
103.158.200.0/23
103.158.224.0/23
@ -2477,6 +2478,7 @@
103.166.246.0/23
103.167.0.0/23
103.167.36.0/23
103.167.100.0/23
103.168.98.0/23
103.168.170.0/23
103.169.50.0/23
@ -2582,6 +2584,7 @@
103.196.185.0/24
103.196.186.0/23
103.196.204.0/22
103.197.0.0/22
103.197.180.0/22
103.197.228.0/22
103.197.253.0/24
@ -2726,6 +2729,9 @@
103.213.136.0/21
103.213.144.0/20
103.213.160.0/19
103.213.196.0/22
103.213.226.0/23
103.213.232.0/23
103.213.252.0/22
103.214.48.0/22
103.214.84.0/22
@ -2818,6 +2824,7 @@
103.224.220.0/22
103.224.224.0/21
103.224.232.0/22
103.225.18.0/24
103.225.84.0/22
103.226.16.0/22
103.226.40.0/22
@ -2862,6 +2869,8 @@
103.230.28.0/22
103.230.40.0/21
103.230.96.0/22
103.230.110.0/23
103.230.128.0/23
103.230.196.0/22
103.230.200.0/21
103.230.212.0/22
@ -2875,6 +2884,7 @@
103.232.4.0/22
103.232.17.168/29
103.232.144.0/22
103.232.166.0/23
103.232.188.0/22
103.232.212.0/22
103.233.4.0/22
@ -2884,6 +2894,7 @@
103.233.128.0/22
103.233.136.0/22
103.233.162.0/23
103.233.178.0/23
103.233.228.0/22
103.234.0.0/22
103.234.20.0/22
@ -2916,6 +2927,7 @@
103.237.24.0/21
103.237.68.0/22
103.237.88.0/22
103.237.92.0/23
103.237.152.0/22
103.237.176.0/20
103.237.192.0/18
@ -2929,6 +2941,7 @@
103.238.132.0/22
103.238.140.0/22
103.238.144.0/22
103.238.152.0/23
103.238.160.0/19
103.238.196.0/22
103.238.204.0/22
@ -2946,17 +2959,20 @@
103.239.244.0/22
103.240.16.0/22
103.240.36.0/22
103.240.42.0/23
103.240.72.0/22
103.240.84.0/22
103.240.124.0/22
103.240.172.0/22
103.240.188.0/22
103.240.200.0/22
103.240.244.0/22
103.241.12.0/22
103.241.72.0/22
103.241.92.0/22
103.241.96.0/22
103.241.160.0/22
103.241.172.0/23
103.241.184.0/21
103.241.220.0/22
103.242.12.0/22
@ -2972,6 +2988,7 @@
103.243.136.0/22
103.243.252.0/22
103.244.16.0/22
103.244.26.0/23
103.244.58.0/23
103.244.60.0/22
103.244.64.0/20
@ -2981,6 +2998,7 @@
103.244.232.0/22
103.244.252.0/22
103.245.23.0/24
103.245.24.0/23
103.245.52.0/22
103.245.60.0/22
103.245.80.0/22
@ -2992,6 +3010,7 @@
103.246.152.0/21
103.247.168.0/21
103.247.176.0/22
103.247.191.0/24
103.247.200.0/22
103.247.212.0/22
103.248.0.0/23
@ -3698,7 +3717,6 @@
123.242.192.0/21
123.244.0.0/14
123.249.0.0/16
123.253.108.0/22
123.253.240.0/22
123.254.96.0/21
124.6.64.0/18
@ -4151,7 +4169,7 @@
192.51.188.0/24
192.55.10.0/23
192.55.40.0/24
192.55.46.0/24
192.55.46.0/23
192.55.68.0/22
192.102.204.0/22
192.124.154.0/24

View File

@ -16,7 +16,6 @@
2001:df0:423::/48
2001:df0:9c0::/48
2001:df0:1bc0::/48
2001:df0:2180::/48
2001:df0:25c0::/48
2001:df0:26c0::/48
2001:df0:2d80::/48
@ -40,7 +39,6 @@
2001:df1:6180::/48
2001:df1:61c0::/48
2001:df1:6b80::/48
2001:df1:8b00::/48
2001:df1:a100::/48
2001:df1:bd80::/48
2001:df1:c900::/48
@ -53,7 +51,9 @@
2001:df2:80::/48
2001:df2:180::/48
2001:df2:5780::/48
2001:df2:8bc0::/48
2001:df2:a580::/48
2001:df2:c240::/48
2001:df3:1480::/48
2001:df3:2a80::/48
2001:df3:3a80::/48
@ -382,19 +382,26 @@
2400:ef40::/32
2400:f480::/32
2400:f5c0::/32
2400:f6e0::/32
2400:f720::/32
2400:f7c0::/32
2400:f840::/32
2400:f860::/32
2400:f980::/32
2400:fac0::/32
2400:fb40::/32
2400:fb60::/32
2400:fbc0::/32
2400:fc40::/32
2400:fcc0::/32
2400:fe00::/32
2401:20::/32
2401:60::/32
2401:80::/32
2401:140::/32
2401:1c0::/32
2401:540::/32
2401:620::/32
2401:7c0::/32
2401:800::/32
2401:9c0::/32
@ -402,23 +409,33 @@
2401:a40::/32
2401:ac0::/32
2401:b40::/32
2401:ba0::/32
2401:bc0::/32
2401:c40::/32
2401:cc0::/32
2401:d40::/32
2401:e00::/32
2401:1000::/32
2401:1160::/32
2401:11a0::/32
2401:11c0::/32
2401:1200::/32
2401:12c0::/32
2401:1320::/32
2401:13a0::/32
2401:15c0::/32
2401:18c0::/32
2401:18e0::/28
2401:1940::/32
2401:19c0::/32
2401:1a40::/32
2401:1ac0::/32
2401:1c60::/32
2401:1ce0::/32
2401:1d40::/32
2401:1da0::/32
2401:1dc0::/32
2401:1de0::/32
2401:1e00::/32
2401:1ec0::/32
2401:1f40::/32
@ -612,7 +629,6 @@
2402:2e80::/32
2402:2f40::/32
2402:3040::/32
2402:3080::/32
2402:3140::/32
2402:3180::/32
2402:31c0::/32
@ -643,10 +659,8 @@
2402:4e00::/32
2402:4ec0::/32
2402:4f80::/32
2402:50c0::/32
2402:5140::/32
2402:5180::/32
2402:51c0::/32
2402:52c0::/32
2402:5340::/32
2402:5880::/32
@ -1163,7 +1177,7 @@
2404:37c0::/32
2404:3840::/32
2404:3940::/32
2404:3b00::/32
2404:3b00::/34
2404:3bc0::/32
2404:3c40::/32
2404:3f40::/32
@ -1778,7 +1792,6 @@
2407:2280::/32
2407:2380::/32
2407:23c0::/32
2407:2440::/32
2407:2780::/32
2407:2840::/32
2407:2ac0::/32

View File

@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=cloudreve
PKG_VERSION:=3.8.1
PKG_RELEASE:=35
PKG_VERSION:=3.8.2
PKG_RELEASE:=36
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/cloudreve/Cloudreve.git
PKG_SOURCE_VERSION:=5642dd3b66ed394c54e2463e8ab8a4ec27ec235d
PKG_SOURCE_VERSION:=ce832bf13d8372a84b993b8f65447bce6eced90a
PKG_MIRROR_HASH:=skip
PKG_LICENSE:=GPL-3.0-only

View File

@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=daed
PKG_VERSION:=0.3.1
PKG_RELEASE:=4
PKG_VERSION:=0.3.2
PKG_RELEASE:=15
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/daeuniverse/daed.git
PKG_SOURCE_VERSION:=cc88300159dfd499421e09ab37ce45ebe89ecde0
PKG_SOURCE_VERSION:=71a12e8db3510987d504f0f738b2f1cd3bac87b8
PKG_MIRROR_HASH:=skip
PKG_LICENSE:=AGPL-3.0-only MIT
@ -80,7 +80,7 @@ define Download/daed-web
URL:=https://github.com/daeuniverse/daed/releases/download/v$(PKG_VERSION)
URL_FILE:=web.zip
FILE:=$(WEB_FILE)
HASH:=0db28fbf1803484b989b7545e8ad560cc969cc842346cbae4a2f9efe25cceb57
HASH:=6b9bc4f6217572c2945ed76b7e50cf2669838b173bf077463f591f1624cf6892
endef
define Build/Prepare

View File

@ -8,14 +8,14 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=ddns-go
PKG_VERSION:=5.5.2
PKG_RELEASE:=15
PKG_VERSION:=5.6.0
PKG_RELEASE:=16
PKG_SOURCE_PROTO:=git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/jeessy2/ddns-go.git
PKG_MIRROR_HASH:=skip
PKG_SOURCE_VERSION:=57b3aa6fe0a31356d69931d22a78685590b956fe
PKG_SOURCE_VERSION:=352e6b87622d93643a5735d873a4b499ebcb4ec2
PKG_LICENSE:=AGPL-3.0-only
PKG_LICENSE_FILES:=LICENSE

View File

@ -5,8 +5,8 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=filebrowser
PKG_VERSION:=2.24.1
PKG_RELEASE:=61
PKG_VERSION:=2.24.2
PKG_RELEASE:=62
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/filebrowser/filebrowser/tar.gz/v$(PKG_VERSION)?

View File

@ -42,8 +42,9 @@ function clear_log()
end
function admin_info()
local username = luci.sys.exec("/usr/bin/alist --data $(uci -q get alist.@alist[0].data_dir) password 2>&1 | tail -2 | awk 'NR==1 {print $2}'")
local password = luci.sys.exec("/usr/bin/alist --data $(uci -q get alist.@alist[0].data_dir) password 2>&1 | tail -2 | awk 'NR==2 {print $2}'")
local random = luci.sys.exec("/usr/bin/alist --data $(uci -q get alist.@alist[0].data_dir) admin random 2>&1")
local username = string.match(random, "username: (%S+)")
local password = string.match(random, "password: (%S+)")
luci.http.prepare_content("application/json")
luci.http.write_json({username = username, password = password})

View File

@ -86,7 +86,7 @@ o.datatype = "string"
o.default = "/tmp/alist"
o.rmempty = false
o = s:option(Button, "admin_info", translate("View Password"))
o = s:option(Button, "admin_info", translate("Reset Password"))
o.rawhtml = true
o.template = "alist/admin_info"

View File

@ -3,7 +3,7 @@
function admin_info(btn)
{
btn.disabled = true;
btn.value = '<%:Reading...%>';
btn.value = '<%:Collecting data...%>';
XHR.get('<%=luci.dispatcher.build_url("admin", "nas", "alist", "admin_info")%>',
null,
function(x,rv)
@ -15,12 +15,12 @@
tb.innerHTML += "<%:Password:%>" + "<font color='green'>" + rv.password + "</font>";
}
btn.disabled = false;
btn.value = '<%:Read%>';
btn.value = '<%:Reset%>';
}
);
return false;
}
//]]></script>
<input type="button" class="btn cbi-button cbi-button-apply" value="<%:Read%>" onclick="return admin_info(this)" />
<input type="button" class="btn cbi-button cbi-button-apply" value="<%:Reset%>" onclick="return admin_info(this)" />
<span id="<%=self.option%>-status"><em><%=self.value%></em></span>
<%+cbi/valuefooter%>

View File

@ -64,8 +64,11 @@ msgstr "启用日志"
msgid "Clear logs"
msgstr "清空日志"
msgid "View Password"
msgstr "查看密码"
msgid "Reset Password"
msgstr "重置密码"
msgid "Reset"
msgstr "重置"
msgid "Username:"
msgstr "用户名:"
@ -73,12 +76,6 @@ msgstr "用户名:"
msgid "Password:"
msgstr "密码:"
msgid "Reading..."
msgstr "读取中..."
msgid "Read"
msgstr "读取"
msgid "Login Validity Period (hours)"
msgstr "登录有效期(小时)"

View File

@ -17,14 +17,19 @@
<%:Provide services such as install to EMMC, Update Firmware and Kernel, Backup and Recovery Config, Snapshot management, etc.%>
</td></tr>
<tr><td width="20%" align="right"><%:Supported Boxes:%></td><td width="80%" align="left" id="_clash">
<%:Amlogic s922x --- [ Belink, Belink-Pro, Ugoos-AM6-Plus, ODROID-N2, Khadas VIM3(a311d) ]%><br>
<%:Amlogic s922x --- [ Beelink, Beelink-Pro, Ugoos-AM6-Plus, ODROID-N2, Khadas VIM3(a311d) ]%><br>
<%:Amlogic s905x3 -- [ X96-Max+, HK1-Box, H96-Max-X3, Ugoos-X3, TX3, X96-Air, A95XF3-Air ]%><br>
<%:Amlogic s905x2 -- [ X96Max-4G, X96Max-2G ]%><br>
<%:Amlogic s905x --- [ HG680P, B860H, TBee, MECOOL-KI-Pro ]%><br>
<%:Amlogic s905w --- [ X96-Mini, TX3-Mini ]%><br>
<%:Amlogic s905x2 -- [ X96Max-4G, X96Max-2G, MECOOL-KM3-4G, Tanix-Tx5-Max, A95X-F2 ]%><br>
<%:Amlogic s912 ---- [ H96-Pro-Plus, Octopus-Planet, A1, A2, Z6-Plus, TX92, X92, TX8-MAX, TX9-Pro ]%><br>
<%:Amlogic s905d --- [ Phicomm-N1 ]%><br>
<%:Amlogic Other --- [ Optional DTB ]%><br>
<%:Amlogic s905x --- [ HG680P, B860H, TBee, T95, TX9, XiaoMI-3S, X96 ]%><br>
<%:Amlogic s905w --- [ X96-Mini, TX3-Mini, W95, X96W/FunTV, MXQ-Pro-4K ]%><br>
<%:Amlogic s905d --- [ Phicomm-N1, MECOOL-KI-Pro, SML-5442TW ]%><br>
<%:Amlogic s905l --- [ UNT402A, M201-S ]%><br>
<%:Amlogic s905l2 -- [ MGV2000, MGV3000, Wojia-TV-IPBS9505, M301A, E900v21E ]%><br>
<%:Amlogic s905l3 -- [ CM211-1, CM311-1, HG680-LC, M401A, UNT400G1, UNT402A, ZXV10-BV310 ]%><br>
<%:Amlogic s905l3a - [ E900V22C/D, CM311-1a-YST, M401A, M411A, UNT403A, UNT413A, IP112H ]%><br>
<%:Amlogic s905l3b - [ CM211-1, CM311-1, E900V22D, E900V21E, E900V22E, M302A/M304A ]%><br>
<%:Amlogic s905 ---- [ Beelink-Mini-MX-2G, Sunvell-T95M, MXQ-Pro+4K, SumaVision-Q5 ]%><br>
<%:Allwinner H6 ---- [ V-Plus Cloud ]%><br>
<%:Rockchip -------- [ BeikeYun, L1-Pro, FastRhino R66S/R68S, Radxa 5B/E25, HinLink H66K/H68K/H88k ]%><br>
<%:Used in KVM ----- [ Can be used in KVM virtual machine of Armbian system. ]%>

View File

@ -173,29 +173,44 @@ msgstr "支持将 OpenWrt 系统写入 EMMC、升级固件与内核备份与
msgid "Supported Boxes:"
msgstr "支持的盒子:"
msgid "Amlogic s922x --- [ Belink, Belink-Pro, Ugoos-AM6-Plus, ODROID-N2, Khadas VIM3(a311d) ]"
msgstr "晶晨 s922x --- [ Belink, Belink-Pro, Ugoos-AM6-Plus, ODROID-N2, Khadas VIM3(a311d) ]"
msgid "Amlogic s922x --- [ Beelink, Beelink-Pro, Ugoos-AM6-Plus, ODROID-N2, Khadas VIM3(a311d) ]"
msgstr "晶晨 s922x --- [ Beelink, Beelink-Pro, Ugoos-AM6-Plus, ODROID-N2, Khadas VIM3(a311d) ]"
msgid "Amlogic s905x3 -- [ X96-Max+, HK1-Box, H96-Max-X3, Ugoos-X3, TX3, X96-Air, A95XF3-Air ]"
msgstr "晶晨 s905x3 -- [ X96-Max+, HK1-Box, H96-Max-X3, Ugoos-X3, TX3, X96-Air, A95XF3-Air ]"
msgid "Amlogic s905x2 -- [ X96Max-4G, X96Max-2G ]"
msgstr "晶晨 s905x2 -- [ X96Max-4G, X96Max-2G ]"
msgid "Amlogic s905x --- [ HG680P, B860H, TBee, MECOOL-KI-Pro ]"
msgstr "晶晨 s905x --- [ 烽火HG680, 中兴B860H, TBee, MECOOL-KI-Pro ]"
msgid "Amlogic s905w --- [ X96-Mini, TX3-Mini ]"
msgstr "晶晨 s905w --- [ X96-Mini, TX3-Mini ]"
msgid "Amlogic s905x2 -- [ X96Max-4G, X96Max-2G, MECOOL-KM3-4G, Tanix-Tx5-Max, A95X-F2 ]"
msgstr "晶晨 s905x2 -- [ X96Max-4G, X96Max-2G, MECOOL-KM3-4G, Tanix-Tx5-Max, A95X-F2 ]"
msgid "Amlogic s912 ---- [ H96-Pro-Plus, Octopus-Planet, A1, A2, Z6-Plus, TX92, X92, TX8-MAX, TX9-Pro ]"
msgstr "晶晨 s912 ---- [ H96-Pro-Plus, 章鱼星球, A1, A2, Z6-Plus, TX92, X92, TX8-MAX, TX9-Pro ]"
msgid "Amlogic s905d --- [ Phicomm-N1 ]"
msgstr "晶晨 s905d --- [ 斐讯-N1 ]"
msgid "Amlogic s905x --- [ HG680P, B860H, TBee, T95, TX9, XiaoMI-3S, X96 ]"
msgstr "晶晨 s905x --- [ 烽火HG680, 中兴B860H, TBee, T95, TX9, XiaoMI-3S, X96 ]"
msgid "Amlogic Other --- [ Optional DTB ]"
msgstr "晶晨其他 ----- [ 自定义 DTB 文件 ]"
msgid "Amlogic s905w --- [ X96-Mini, TX3-Mini, W95, X96W/FunTV, MXQ-Pro-4K ]"
msgstr "晶晨 s905w --- [ X96-Mini, TX3-Mini, W95, X96W/FunTV, MXQ-Pro-4K ]"
msgid "Amlogic s905d --- [ Phicomm-N1, MECOOL-KI-Pro, SML-5442TW ]"
msgstr "晶晨 s905d --- [ 斐讯-N1, MECOOL-KI-Pro, SML-5442TW ]"
msgid "Amlogic s905l --- [ UNT402A, M201-S ]"
msgstr "晶晨 s905l --- [ UNT402A, M201-S ]"
msgid "Amlogic s905l2 -- [ MGV2000, MGV3000, Wojia-TV-IPBS9505, M301A, E900v21E ]"
msgstr "晶晨 s905l2 -- [ MGV2000, MGV3000, Wojia-TV-IPBS9505, M301A, E900v21E ]"
msgid "Amlogic s905l3 -- [ CM211-1, CM311-1, HG680-LC, M401A, UNT400G1, UNT402A, ZXV10-BV310 ]"
msgstr "晶晨 s905l3 -- [ CM211-1, CM311-1, HG680-LC, M401A, UNT400G1, UNT402A, ZXV10-BV310 ]"
msgid "Amlogic s905l3a - [ E900V22C/D, CM311-1a-YST, M401A, M411A, UNT403A, UNT413A, IP112H ]"
msgstr "晶晨 s905l3a - [ E900V22C/D, CM311-1a-YST, M401A, M411A, UNT403A, UNT413A, IP112H ]"
msgid "Amlogic s905l3b - [ CM211-1, CM311-1, E900V22D, E900V21E, E900V22E, M302A/M304A ]"
msgstr "晶晨 s905l3b - [ CM211-1, CM311-1, E900V22D, E900V21E, E900V22E, M302A/M304A ]"
msgid "Amlogic s905 ---- [ Beelink-Mini-MX-2G, Sunvell-T95M, MXQ-Pro+4K, SumaVision-Q5 ]"
msgstr "晶晨 s905 ---- [ Beelink-Mini-MX-2G, Sunvell-T95M, MXQ-Pro+4K, SumaVision-Q5 ]"
msgid "Allwinner H6 ---- [ V-Plus Cloud ]"
msgstr "全志 H6 ------ [ 微加云 ]"

View File

@ -183,7 +183,7 @@ download_kernel() {
wget "${kernel_down_from}" -q -P "${KERNEL_DOWNLOAD_PATH}"
[[ "${?}" -ne "0" ]] && tolog "03.03 The kernel download failed." "1"
tar -xzf ${KERNEL_DOWNLOAD_PATH}/${download_version}.tar.gz -C ${KERNEL_DOWNLOAD_PATH}
tar -xf ${KERNEL_DOWNLOAD_PATH}/${download_version}.tar.gz -C ${KERNEL_DOWNLOAD_PATH}
[[ "${?}" -ne "0" ]] && tolog "03.04 Kernel decompression failed." "1"
mv -f ${KERNEL_DOWNLOAD_PATH}/${download_version}/* ${KERNEL_DOWNLOAD_PATH}/

View File

@ -5,7 +5,7 @@ LUCI_DEPENDS:=+atinout +luci-compat
PKG_LICENSE:=GPLv3
define Package/luci-app-atinout/postrm
rm -f /tmp/luci-indexcache
rm -rf /etc/config/atinout
endef
include $(TOPDIR)/feeds/luci/luci.mk

View File

@ -0,0 +1,11 @@
#!/bin/sh
if [ "$PKG_UPGRADE" != 1 ]; then
touch /etc/config/atinout
uci set atinout.general=atinout
fi
if [ ! -f /etc/atcommands.user ]; then
echo "Demo command \"ATI\";ATI" > /etc/atcommands.user
fi

View File

@ -4,8 +4,8 @@ LUCI_TITLE:=GNSS Information dashboard for 3G/LTE dongle
LUCI_DEPENDS:=+lua +luci-compat +curl +lua-rs232 +luasocket +iwinfo +libiwinfo-lua +lua-bit32 +usbutils +gpsd
PKG_LICENSE:=GPLv3
define Package/luci-app-gpoint/conffiles
/etc/config/gpoint
define Package/luci-app-gpoint/postrm
rm -f /etc/config/gpoint
endef
include $(TOPDIR)/feeds/luci/luci.mk

View File

@ -0,0 +1,9 @@
#!/bin/sh
if [ "$PKG_UPGRADE" != "1" ]; then
touch /etc/config/gpoint
uci set gpoint.modem_settings=modem_settings
uci set gpoint.server_settings=server_settings
uci set gpoint.service_settings=service_settings
fi

View File

@ -8,6 +8,7 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI support for linkease
LUCI_DEPENDS:=+linkease
LUCI_PKGARCH:=all
# PKG_RELEASE MUST be empty for luci.mk
LUCI_MINIFY_CSS:=0
LUCI_MINIFY_JS:=0

View File

@ -158,7 +158,7 @@ function linkease_backend()
if key == "Transfer-Encoding" and val == "chunked" then
chunked = 1
end
if key ~= "Connection" and key ~= "Transfer-Encoding" then
if key ~= "Connection" and key ~= "Transfer-Encoding" and key ~= "Content-Length" then
http.header(key, val)
end
end

View File

@ -4,12 +4,8 @@ LUCI_TITLE:=Configrure modem bands via mmcli utility
LUCI_DEPENDS:=+modemmanager +luci-compat
PKG_LICENSE:=GPLv3
define Package/luci-app-mmconfig/conffiles
/etc/config/modemconfig
endef
define Package/luci-app-mmconfig/postrm
rm -f /tmp/luci-indexcache
rm -f /etc/config/modemconfig
endef
include $(TOPDIR)/feeds/luci/luci.mk

View File

@ -0,0 +1,7 @@
#!/bin/sh -x
if [ "$PKG_UPGRADE" != "1" ]; then
touch /etc/config/modemconfig
uci set modemconfig.@modem[0]=modem
fi

View File

@ -174,7 +174,7 @@ XHR.poll(4, '<%=url("admin/modem/data")%>', null,
var frdl = 0;
var frul = 0;
var rfcn = 0;
var band = "--";
var band = (rfcn);
}
var bwdld = (data.bwdl);
if (bwdld == 0) {
@ -224,7 +224,7 @@ XHR.poll(4, '<%=url("admin/modem/data")%>', null,
} else {
var ulfreq = 0;
var dlfreq = 0;
var band = "--";
var band = (rfcn);
}
}
var carrier = "";

View File

@ -81,7 +81,7 @@ XHR.poll(4, '<%=url("admin/modem/data")%>', null,
} else if (rfcn >= 38650 && rfcn <= 39649) {
var band = "40";
} else {
var band = "--";
var band = (rfcn);
}
var bwdld = (data.bwdl);
if (bwdld == 0) {
@ -111,7 +111,7 @@ XHR.poll(4, '<%=url("admin/modem/data")%>', null,
} else if (rfcn >= 1 && rfcn <= 124) {
var band = "GSM900";
} else {
var band = "--";
var band = (rfcn);
}
}
var carrier = "";

View File

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: LuCI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-10 03:40+0200\n"
"PO-Revision-Date: 2023-07-26 13:01+0000\n"
"PO-Revision-Date: 2023-08-10 16:54+0000\n"
"Last-Translator: random r <epsilin@yopmail.com>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsopkg/it/>\n"
@ -20,15 +20,15 @@ msgstr "Azioni"
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:791
msgid "Allow overwriting conflicting package files"
msgstr "Consenti la sovrascrittura file dei pacchetti in conflitto"
msgstr "Consenti la sovrascrittura dei pacchetti in conflitto"
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:952
msgid "Automatically remove unused dependencies"
msgstr "Rimuovi automaticamente le dipendenze non utilizzate"
msgstr "Rimuovi automaticamente le dipendenze inutilizzate"
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1209
msgid "Available"
msgstr "Disponibile"
msgstr "Disponibili"
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:877
msgid ""
@ -39,9 +39,9 @@ msgid ""
msgstr ""
"Di seguito è riportato un elenco dei vari file di configurazione utilizzati "
"da <em>opkg</em>. Usa <em>opkg.conf</em> per le impostazioni globali e "
"<em>customfeeds.conf</em> per le voci delle repository personalizzate. La "
"configurazione negli altri file può essere cambiata ma solitamente non viene "
"conservata da <em>sysupgrade</em>."
"<em>customfeeds.conf</em> per le voci di repository personalizzati. La "
"configurazione negli altri file può essere cambiata, ma solitamente non "
"viene conservata da <em>sysupgrade</em>."
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:799
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:845
@ -90,8 +90,8 @@ msgid ""
"Display base translation packages and translation packages for already "
"installed languages only"
msgstr ""
"Visualizza i pacchetti di traduzione di base e i pacchetti di traduzione "
"solo per le lingue già installate"
"Mostra i pacchetti di traduzione di base e i pacchetti di traduzione solo "
"per le lingue già installate"
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:353
msgid "Displaying %d-%d of %d"
@ -99,7 +99,7 @@ msgstr "Mostrando %d-%d di %d"
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1146
msgid "Download and install package"
msgstr "Scarica e installa pacchetto"
msgstr "Scarica e installa il pacchetto"
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1007
msgid "Errors"
@ -115,11 +115,11 @@ msgstr "Filtro"
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1133
msgid "Free space"
msgstr "Spazio di archiviazione libero"
msgstr "Spazio libero"
#: applications/luci-app-opkg/root/usr/share/rpcd/acl.d/luci-app-opkg.json:3
msgid "Grant access to opkg management"
msgstr "Concedere l'accesso alla gestione di opkg"
msgstr "Concedi l'accesso alla gestione di opkg"
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1193
msgid "Hide all translation packages"
@ -252,7 +252,7 @@ msgstr "Richiede la versione %h %h, installata %h"
msgid ""
"Required dependency package <em>%h</em> is not available in any repository."
msgstr ""
"Il pacchetto di dipendenza <em>%h</em> non è disponibile in nessuna "
"Il pacchetto di dipendenza <em>%h</em> non è disponibile in nessun "
"repository."
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:507
@ -300,7 +300,7 @@ msgstr "Le traduzioni suggerite richiedono ca. %1024 mB di spazio aggiuntivo."
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1012
msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
msgstr "Il comando <em>opkg %h</em> ha fallito con il codice <code>%d</code>."
msgstr "Il comando <em>opkg %h</em> è fallito con il codice <code>%d</code>."
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:512
msgid ""
@ -313,14 +313,14 @@ msgstr ""
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:832
msgid "The package <em>%h</em> is not available in any configured repository."
msgstr ""
"Il pacchetto <em>%h</em> non è disponibile in nessuna repository configurata."
"Il pacchetto <em>%h</em> non è disponibile in nessun repository configurato."
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:529
msgid ""
"The repository version of package <em>%h</em> is not compatible, require %s "
"but only %s is available."
msgstr ""
"La versione della repository del pacchetto <em>%h</em> non è compatibile, "
"La versione del repository del pacchetto <em>%h</em> non è compatibile, "
"richiede %s ma è disponibile solo %s."
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1140
@ -354,7 +354,7 @@ msgstr "Aggiorna…"
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1157
msgid "Upload Package…"
msgstr "Carica Pacchetto…"
msgstr "Carica pacchetto…"
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:756
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:944
@ -374,7 +374,7 @@ msgstr "In attesa del completamento del comando <em>opkg %h</em>…"
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1189
msgctxt "Display translation packages"
msgid "all"
msgstr "Tutto"
msgstr "tutto"
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1176
msgctxt "Display translation packages"
@ -384,7 +384,7 @@ msgstr "filtrato"
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1202
msgctxt "Display translation packages"
msgid "none"
msgstr "none"
msgstr "nessuno"
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:672
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:933

View File

@ -1,14 +1,18 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"PO-Revision-Date: 2023-08-10 08:05+0000\n"
"Last-Translator: Džiugas J <dziugas1959@hotmail.com>\n"
"Language-Team: Lithuanian <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsopkg/lt/>\n"
"Language: lt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"(n%100<10 || n%100>=20) ? 1 : 2);\n"
"Plural-Forms: nplurals=3; plural=(n % 10 == 1 && (n % 100 < 11 || n % 100 > "
"19)) ? 0 : ((n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) ? "
"1 : 2);\n"
"X-Generator: Weblate 5.0-dev\n"
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1154
msgid "Actions"
@ -40,7 +44,7 @@ msgstr ""
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:958
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1055
msgid "Cancel"
msgstr ""
msgstr "Atšaukti"
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1141
msgid "Clear"
@ -92,7 +96,7 @@ msgstr ""
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1007
msgid "Errors"
msgstr ""
msgstr "Klaidos"
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:981
msgid "Executing package manager"
@ -250,7 +254,7 @@ msgstr ""
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1046
msgid "SHA256"
msgstr ""
msgstr "„SHA256“"
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:914
msgid "Save"
@ -340,7 +344,7 @@ msgstr ""
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:944
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1225
msgid "Version"
msgstr ""
msgstr "Versija"
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:518
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:536

View File

@ -131,6 +131,7 @@ if (has_v2ray or has_xray) and #nodes_table > 0 then
local normal_list = {}
local balancing_list = {}
local shunt_list = {}
local iface_list = {}
for k, v in pairs(nodes_table) do
if v.node_type == "normal" then
normal_list[#normal_list + 1] = v
@ -141,6 +142,9 @@ if (has_v2ray or has_xray) and #nodes_table > 0 then
if v.protocol and v.protocol == "_shunt" then
shunt_list[#shunt_list + 1] = v
end
if v.protocol and v.protocol == "_iface" then
iface_list[#iface_list + 1] = v
end
end
local function get_cfgvalue(shunt_node_id, option)
@ -179,6 +183,9 @@ if (has_v2ray or has_xray) and #nodes_table > 0 then
for k1, v1 in pairs(balancing_list) do
o:value(v1.id, v1.remark)
end
for k1, v1 in pairs(iface_list) do
o:value(v1.id, v1.remark)
end
for k1, v1 in pairs(normal_list) do
o:value(v1.id, v1.remark)
end
@ -216,6 +223,9 @@ if (has_v2ray or has_xray) and #nodes_table > 0 then
for k1, v1 in pairs(balancing_list) do
o:value(v1.id, v1.remark)
end
for k1, v1 in pairs(iface_list) do
o:value(v1.id, v1.remark)
end
for k1, v1 in pairs(normal_list) do
o:value(v1.id, v1.remark)
pt:depends({ [node_option] = v1.id, [vid .. "-preproxy_enabled"] = "1" })
@ -233,6 +243,9 @@ if (has_v2ray or has_xray) and #nodes_table > 0 then
for k1, v1 in pairs(balancing_list) do
o:value(v1.id, v1.remark)
end
for k1, v1 in pairs(iface_list) do
o:value(v1.id, v1.remark)
end
for k1, v1 in pairs(normal_list) do
o:value(v1.id, v1.remark)
end

View File

@ -137,6 +137,7 @@ iface:depends("protocol", "_iface")
local nodes_table = {}
local balancers_table = {}
local iface_table = {}
for k, e in ipairs(api.get_valid_nodes()) do
if e.node_type == "normal" then
nodes_table[#nodes_table + 1] = {
@ -150,6 +151,12 @@ for k, e in ipairs(api.get_valid_nodes()) do
remarks = e["remark"]
}
end
if e.protocol == "_iface" then
iface_table[#iface_table + 1] = {
id = e[".name"],
remarks = e["remark"]
}
end
end
-- 负载均衡列表
@ -184,6 +191,9 @@ if #nodes_table > 0 then
for k, v in pairs(balancers_table) do
o:value(v.id, v.remarks)
end
for k, v in pairs(iface_table) do
o:value(v.id, v.remarks)
end
for k, v in pairs(nodes_table) do
o:value(v.id, v.remarks)
end
@ -202,6 +212,9 @@ uci:foreach(appname, "shunt_rules", function(e)
for k, v in pairs(balancers_table) do
o:value(v.id, v.remarks)
end
for k, v in pairs(iface_table) do
o:value(v.id, v.remarks)
end
local pt = s:option(ListValue, e[".name"] .. "_proxy_tag", string.format('* <a style="color:red">%s</a>', e.remarks .. " " .. translate("Preproxy")))
pt:value("nil", translate("Close"))
pt:value("main", translate("Preproxy Node"))
@ -230,6 +243,9 @@ if #nodes_table > 0 then
for k, v in pairs(balancers_table) do
default_node:value(v.id, v.remarks)
end
for k, v in pairs(iface_table) do
default_node:value(v.id, v.remarks)
end
local dpt = s:option(ListValue, "default_proxy_tag", string.format('* <a style="color:red">%s</a>', translate("Default Preproxy")), translate("When using, localhost will connect this node first and then use this node to connect the default node."))
dpt:value("nil", translate("Close"))
dpt:value("main", translate("Preproxy Node"))

View File

@ -111,7 +111,6 @@ protocol:value("http", "HTTP")
protocol:value("socks", "Socks")
protocol:value("shadowsocks", "Shadowsocks")
protocol:value("trojan", "Trojan")
protocol:value("mtproto", "MTProto")
protocol:value("dokodemo-door", "dokodemo-door")
protocol:depends("type", "V2ray")
protocol:depends("type", "Xray")
@ -165,17 +164,6 @@ password:depends("type", "Brook")
password:depends({ type = "V2ray", protocol = "shadowsocks" })
password:depends({ type = "Xray", protocol = "shadowsocks" })
mtproto_password = s:option(Value, "mtproto_password", translate("Password"), translate("The MTProto protocol must be 32 characters and can only contain characters from 0 to 9 and a to f."))
mtproto_password:depends({ type = "V2ray", protocol = "mtproto" })
mtproto_password:depends({ type = "Xray", protocol = "mtproto" })
mtproto_password.default = arg[1]
function mtproto_password.cfgvalue(self, section)
return m:get(section, "password")
end
function mtproto_password.write(self, section, value)
m:set(section, "password", value)
end
d_protocol = s:option(ListValue, "d_protocol", translate("Destination protocol"))
d_protocol:value("tcp", "TCP")
d_protocol:value("udp", "UDP")

View File

@ -290,7 +290,7 @@ function get_valid_nodes()
e.id = e[".name"]
if e.type and e.remarks then
if e.protocol and (e.protocol == "_balancing" or e.protocol == "_shunt" or e.protocol == "_iface") then
e["remark"] = "%s[%s] " % {i18n.translatef(e.type .. e.protocol), e.remarks}
e["remark"] = "%s[%s] " % {e.type .. " " .. i18n.translatef(e.protocol), e.remarks}
e["node_type"] = "special"
nodes[#nodes + 1] = e
end
@ -327,7 +327,7 @@ function get_node_remarks(n)
local remarks = ""
if n then
if n.protocol and (n.protocol == "_balancing" or n.protocol == "_shunt" or n.protocol == "_iface") then
remarks = "%s[%s] " % {i18n.translatef(n.type .. n.protocol), n.remarks}
remarks = "%s[%s] " % {n.type .. " " .. i18n.translatef(n.protocol), n.remarks}
else
local type2 = n.type
if (n.type == "V2ray" or n.type == "Xray") and n.protocol then

View File

@ -321,14 +321,6 @@ function gen_config_server(node)
clients = clients
}
end
elseif node.protocol == "mtproto" then
settings = {
users = {
{
secret = (node.password == nil) and "" or node.password
}
}
}
elseif node.protocol == "dokodemo-door" then
settings = {
network = node.d_protocol,
@ -381,10 +373,12 @@ function gen_config_server(node)
tag = "outbound",
streamSettings = {
sockopt = {
mark = 255,
interface = node.outbound_node_iface
}
}
}
sys.call("mkdir -p /tmp/etc/passwall/iface && touch /tmp/etc/passwall/iface/" .. node.outbound_node_iface)
else
local outbound_node_t = uci:get_all("passwall", node.outbound_node)
if node.outbound_node == "_socks" or node.outbound_node == "_http" then
@ -544,7 +538,7 @@ function gen_config(var)
port = tonumber(local_socks_port),
protocol = "socks",
settings = {auth = "noauth", udp = true},
sniffing = {enabled = true, destOverride = {"http", "tls"}}
sniffing = {enabled = true, destOverride = {"http", "tls", "quic"}}
}
if local_socks_username and local_socks_password and local_socks_username ~= "" and local_socks_password ~= "" then
inbound.settings.auth = "password"
@ -580,7 +574,7 @@ function gen_config(var)
protocol = "dokodemo-door",
settings = {network = "tcp,udp", followRedirect = true},
streamSettings = {sockopt = {tproxy = "tproxy"}},
sniffing = {enabled = sniffing and true or false, destOverride = {"http", "tls", (remote_dns_fake) and "fakedns"}, metadataOnly = false, routeOnly = route_only and true or nil, domainsExcluded = (sniffing and not route_only) and get_domain_excluded() or nil}
sniffing = {enabled = sniffing and true or false, destOverride = {"http", "tls", "quic", (remote_dns_fake) and "fakedns"}, metadataOnly = false, routeOnly = route_only and true or nil, domainsExcluded = (sniffing and not route_only) and get_domain_excluded() or nil}
}
if tcp_redir_port then
@ -819,6 +813,22 @@ function gen_config(var)
rule_balancerTag = balancer.tag
end
end
elseif _node.protocol == "_iface" then
if _node.iface then
local _outbound = {
protocol = "freedom",
tag = rule_name,
streamSettings = {
sockopt = {
mark = 255,
interface = _node.iface
}
}
}
table.insert(outbounds, _outbound)
rule_outboundTag = rule_name
sys.call("touch /tmp/etc/passwall/iface/" .. _node.iface)
end
end
end
return rule_outboundTag, rule_balancerTag
@ -912,10 +922,12 @@ function gen_config(var)
tag = "outbound",
streamSettings = {
sockopt = {
mark = 255,
interface = node.iface
}
}
}
sys.call("touch /tmp/etc/passwall/iface/" .. node.iface)
end
else
outbound = gen_outbound(flag, node)

View File

@ -340,14 +340,17 @@ msgstr "添加方式"
msgid "Type"
msgstr "类型"
msgid "Balancing"
msgid "_balancing"
msgstr "负载均衡"
msgid "Xray_balancing"
msgstr "Xray 负载均衡"
msgid "_shunt"
msgstr "分流"
msgid "V2ray_balancing"
msgstr "V2ray 负载均衡"
msgid "_iface"
msgstr "接口"
msgid "Balancing"
msgstr "负载均衡"
msgid "Balancing Strategy"
msgstr "负载均衡策略"
@ -373,12 +376,6 @@ msgstr "发起探测的间隔。每经过这个时间,就会对一个服务器
msgid "Shunt"
msgstr "分流"
msgid "Xray_shunt"
msgstr "Xray 分流"
msgid "V2ray_shunt"
msgstr "V2ray 分流"
msgid "Preproxy"
msgstr "前置代理"
@ -1249,9 +1246,6 @@ msgstr "显示节点检测"
msgid "Show Show IP111"
msgstr "显示IP111"
msgid "The MTProto protocol must be 32 characters and can only contain characters from 0 to 9 and a to f."
msgstr "MTProto 协议必须为 32 个字符,仅可包含 0 到 9 和 a 到 f 之间的字符。"
msgid "Destination protocol"
msgstr "目标协议"

View File

@ -13,6 +13,7 @@ TMP_ID_PATH=$TMP_PATH/id
TMP_PORT_PATH=$TMP_PATH/port
TMP_ROUTE_PATH=$TMP_PATH/route
TMP_ACL_PATH=$TMP_PATH/acl
TMP_IFACE_PATH=$TMP_PATH/iface
TMP_PATH2=/tmp/etc/${CONFIG}_tmp
DNSMASQ_PATH=/etc/dnsmasq.d
TMP_DNSMASQ_PATH=/tmp/dnsmasq.d/passwall
@ -24,7 +25,6 @@ DNS_PORT=15353
TUN_DNS="127.0.0.1#${DNS_PORT}"
LOCAL_DNS=119.29.29.29,223.5.5.5
DEFAULT_DNS=
IFACES=
ENABLED_DEFAULT_ACL=0
PROXY_IPV6=0
PROXY_IPV6_UDP=0
@ -396,10 +396,6 @@ run_v2ray() {
_extra_param="${_extra_param} -loglevel $loglevel"
lua $UTIL_XRAY gen_config ${_extra_param} > $config_file
ln_run "$(first_type $(config_t_get global_app ${type}_file) ${type})" ${type} $log_file run -c "$config_file"
local protocol=$(config_n_get $node protocol)
[ "$protocol" == "_iface" ] && {
IFACES="$IFACES $(config_n_get $node iface)"
}
}
run_dns2socks() {
@ -1672,7 +1668,7 @@ DNS_QUERY_STRATEGY="UseIPv4"
export V2RAY_LOCATION_ASSET=$(config_t_get global_rules v2ray_location_asset "/usr/share/v2ray/")
export XRAY_LOCATION_ASSET=$V2RAY_LOCATION_ASSET
mkdir -p /tmp/etc $TMP_PATH $TMP_BIN_PATH $TMP_SCRIPT_FUNC_PATH $TMP_ID_PATH $TMP_PORT_PATH $TMP_ROUTE_PATH $TMP_ACL_PATH $TMP_PATH2
mkdir -p /tmp/etc $TMP_PATH $TMP_BIN_PATH $TMP_SCRIPT_FUNC_PATH $TMP_ID_PATH $TMP_PORT_PATH $TMP_ROUTE_PATH $TMP_ACL_PATH $TMP_IFACE_PATH $TMP_PATH2
arg1=$1
shift

View File

@ -1061,7 +1061,7 @@ add_firewall_rule() {
# 加载ACLS
load_acl
for iface in $IFACES; do
for iface in $(ls ${TMP_IFACE_PATH}); do
$ipt_n -I PSW_OUTPUT -o $iface -j RETURN
$ipt_m -I PSW_OUTPUT -o $iface -j RETURN
done

View File

@ -1082,7 +1082,7 @@ add_firewall_rule() {
# 加载ACLS
load_acl
for iface in $IFACES; do
for iface in $(ls ${TMP_IFACE_PATH}); do
nft "insert rule inet fw4 $nft_output_chain oif $iface counter return"
nft "insert rule inet fw4 PSW_OUTPUT_MANGLE_V6 oif $iface counter return"
done

File diff suppressed because it is too large Load Diff

View File

@ -219,7 +219,6 @@
103.104.104.0/22
103.104.152.0/22
103.104.168.0/22
103.104.172.0/22
103.104.188.0/22
103.104.198.0/23
103.104.252.0/22
@ -350,7 +349,6 @@
103.116.138.0/23
103.116.148.0/22
103.116.184.0/22
103.116.20.0/22
103.116.206.0/23
103.116.220.0/22
103.116.224.0/22
@ -402,7 +400,7 @@
103.12.184.0/22
103.12.232.0/22
103.12.32.0/22
103.12.68.0/22
103.12.68.0/23
103.12.92.0/22
103.12.98.0/23
103.120.100.0/22
@ -500,6 +498,7 @@
103.133.40.0/22
103.134.12.0/24
103.134.196.0/22
103.134.232.0/23
103.135.124.0/22
103.135.148.0/22
103.135.156.0/22
@ -514,7 +513,6 @@
103.136.128.0/22
103.136.232.0/22
103.137.136.0/23
103.137.149.0/24
103.137.180.0/22
103.137.236.0/22
103.137.58.0/23
@ -645,6 +643,7 @@
103.15.4.0/22
103.15.8.0/22
103.15.96.0/22
103.150.10.0/23
103.150.122.0/23
103.150.126.0/23
103.150.128.0/23
@ -743,6 +742,7 @@
103.158.190.0/23
103.158.200.0/23
103.158.224.0/23
103.158.74.0/23
103.158.8.0/23
103.159.122.0/23
103.159.124.0/23
@ -795,6 +795,7 @@
103.166.54.0/23
103.166.84.0/23
103.167.0.0/23
103.167.100.0/23
103.167.36.0/23
103.168.170.0/23
103.168.98.0/23
@ -946,6 +947,7 @@
103.196.88.0/22
103.196.92.0/22
103.196.96.0/22
103.197.0.0/22
103.197.180.0/22
103.197.228.0/22
103.198.124.0/22
@ -1261,6 +1263,10 @@
103.213.180.0/22
103.213.184.0/22
103.213.188.0/22
103.213.196.0/23
103.213.198.0/23
103.213.226.0/23
103.213.232.0/23
103.213.40.0/22
103.213.44.0/22
103.213.48.0/22
@ -1615,7 +1621,9 @@
103.224.44.0/22
103.224.60.0/22
103.224.80.0/22
103.225.18.0/24
103.225.84.0/22
103.226.116.0/23
103.226.132.0/22
103.226.156.0/22
103.226.16.0/22
@ -1664,6 +1672,8 @@
103.23.56.0/22
103.23.8.0/22
103.230.0.0/22
103.230.110.0/23
103.230.128.0/23
103.230.196.0/22
103.230.200.0/22
103.230.204.0/22
@ -1680,6 +1690,7 @@
103.231.64.0/22
103.231.68.0/22
103.232.144.0/22
103.232.166.0/23
103.232.188.0/22
103.232.212.0/22
103.232.4.0/22
@ -1687,6 +1698,7 @@
103.233.128.0/22
103.233.136.0/22
103.233.162.0/23
103.233.178.0/23
103.233.228.0/22
103.233.4.0/22
103.233.44.0/22
@ -1784,10 +1796,12 @@
103.237.68.0/22
103.237.8.0/22
103.237.88.0/22
103.237.92.0/23
103.238.0.0/22
103.238.132.0/22
103.238.140.0/22
103.238.144.0/22
103.238.152.0/23
103.238.16.0/22
103.238.160.0/22
103.238.164.0/22
@ -1840,12 +1854,16 @@
103.240.16.0/22
103.240.172.0/22
103.240.188.0/22
103.240.200.0/23
103.240.202.0/23
103.240.244.0/22
103.240.36.0/22
103.240.42.0/23
103.240.72.0/22
103.240.84.0/22
103.241.12.0/22
103.241.160.0/22
103.241.172.0/23
103.241.184.0/22
103.241.188.0/22
103.241.220.0/22
@ -1871,6 +1889,7 @@
103.244.164.0/22
103.244.232.0/22
103.244.252.0/22
103.244.26.0/23
103.244.58.0/23
103.244.60.0/22
103.244.64.0/22
@ -1882,6 +1901,7 @@
103.245.124.0/22
103.245.128.0/22
103.245.23.0/24
103.245.24.0/23
103.245.52.0/22
103.245.60.0/22
103.245.80.0/22
@ -3169,7 +3189,6 @@
103.88.16.0/22
103.88.164.0/22
103.88.176.0/22
103.88.188.0/22
103.88.20.0/22
103.88.212.0/22
103.88.32.0/22
@ -3276,7 +3295,6 @@
103.93.204.0/22
103.93.28.0/22
103.93.4.0/22
103.93.76.0/22
103.93.84.0/22
103.94.116.0/22
103.94.12.0/22
@ -3893,7 +3911,9 @@
119.2.0.0/19
119.2.128.0/17
119.20.0.0/14
119.232.0.0/15
119.232.0.0/16
119.233.0.0/17
119.233.128.0/17
119.235.128.0/18
119.248.0.0/14
119.252.240.0/20
@ -4131,7 +4151,6 @@
123.242.196.0/22
123.244.0.0/14
123.249.0.0/16
123.253.108.0/22
123.253.240.0/22
123.254.100.0/22
123.254.96.0/22
@ -4505,7 +4524,6 @@
163.53.168.0/22
163.53.172.0/22
163.53.188.0/22
163.53.220.0/22
163.53.240.0/22
163.53.36.0/22
163.53.4.0/22
@ -4679,7 +4697,7 @@
183.92.0.0/14
185.203.36.0/22
188.131.128.0/17
192.102.204.0/23
192.102.204.0/22
192.124.154.0/24
192.140.128.0/22
192.140.132.0/22
@ -4702,7 +4720,7 @@
192.144.128.0/17
192.197.113.0/24
192.51.188.0/24
192.55.46.0/24
192.55.46.0/23
192.55.68.0/22
193.112.0.0/16
198.175.100.0/22
@ -5300,7 +5318,8 @@
202.90.196.0/24
202.90.20.0/22
202.90.205.0/24
202.90.224.0/20
202.90.224.0/21
202.90.232.0/21
202.90.24.0/22
202.90.28.0/22
202.90.37.0/24
@ -6472,12 +6491,22 @@
210.74.32.0/19
210.74.64.0/19
210.74.96.0/19
210.75.0.0/16
210.75.0.0/17
210.75.128.0/19
210.75.160.0/19
210.75.192.0/19
210.75.224.0/19
210.76.0.0/19
210.76.128.0/17
210.76.128.0/18
210.76.192.0/19
210.76.224.0/19
210.76.32.0/19
210.76.64.0/18
210.77.0.0/16
210.77.0.0/19
210.77.128.0/17
210.77.32.0/19
210.77.64.0/19
210.77.96.0/19
210.78.0.0/19
210.78.128.0/19
210.78.160.0/19
@ -6504,7 +6533,11 @@
211.143.0.0/16
211.144.0.0/15
211.146.0.0/16
211.147.0.0/16
211.147.0.0/17
211.147.128.0/18
211.147.192.0/20
211.147.208.0/20
211.147.224.0/19
211.148.0.0/14
211.152.0.0/15
211.154.0.0/16
@ -6512,9 +6545,24 @@
211.155.128.0/17
211.155.64.0/19
211.155.96.0/19
211.156.0.0/14
211.156.0.0/18
211.156.128.0/19
211.156.160.0/20
211.156.176.0/20
211.156.192.0/18
211.156.64.0/20
211.156.80.0/20
211.156.96.0/19
211.157.0.0/16
211.158.0.0/15
211.160.0.0/14
211.164.0.0/14
211.164.0.0/15
211.166.0.0/16
211.167.0.0/17
211.167.128.0/19
211.167.160.0/20
211.167.176.0/20
211.167.192.0/18
211.64.0.0/14
211.68.0.0/15
211.70.0.0/15
@ -6576,7 +6624,11 @@
218.22.0.0/15
218.24.0.0/15
218.240.0.0/14
218.244.0.0/15
218.244.0.0/18
218.244.128.0/17
218.244.64.0/19
218.244.96.0/19
218.245.0.0/16
218.246.0.0/15
218.249.0.0/16
218.26.0.0/16
@ -8578,9 +8630,8 @@
61.29.128.0/18
61.29.192.0/19
61.29.224.0/20
61.29.240.0/21
61.29.240.0/22
61.29.248.0/22
61.29.254.0/23
61.4.176.0/20
61.4.80.0/22
61.4.84.0/22

View File

@ -23,7 +23,6 @@
2001:dd8:5::/48
2001:dd9::/48
2001:df0:1bc0::/48
2001:df0:2180::/48
2001:df0:25c0::/48
2001:df0:26c0::/48
2001:df0:27e::/48
@ -49,7 +48,6 @@
2001:df1:6180::/48
2001:df1:61c0::/48
2001:df1:6b80::/48
2001:df1:8b00::/48
2001:df1:a100::/48
2001:df1:bd80::/48
2001:df1:c80::/48
@ -63,7 +61,9 @@
2001:df2:180::/48
2001:df2:5780::/48
2001:df2:80::/48
2001:df2:8bc0::/48
2001:df2:a580::/48
2001:df2:c240::/48
2001:df3:1480::/48
2001:df3:2a80::/48
2001:df3:3a80::/48
@ -402,29 +402,40 @@
2400:f980::/32
2400:fac0::/32
2400:fb40::/32
2400:fb60::/32
2400:fbc0::/32
2400:fc40::/32
2400:fcc0::/32
2400:fe00::/32
2401:1000::/32
2401:1160::/32
2401:11a0::/32
2401:11c0::/32
2401:1200::/32
2401:12c0::/32
2401:1320::/32
2401:13a0::/32
2401:140::/32
2401:15c0::/32
2401:18c0::/32
2401:18e0::/28
2401:1940::/32
2401:19c0::/32
2401:1a40::/32
2401:1ac0::/32
2401:1c0::/32
2401:1c60::/32
2401:1ce0::/32
2401:1d40::/32
2401:1da0::/32
2401:1dc0::/32
2401:1de0::/32
2401:1e00::/32
2401:1ec0::/32
2401:1f40::/32
2401:2040::/32
2401:2080::/32
2401:20::/32
2401:23c0::/32
2401:2600::/32
2401:2780::/32
@ -468,6 +479,8 @@
2401:59c0::/32
2401:5b40::/32
2401:5c80::/32
2401:60::/32
2401:620::/32
2401:7180::/32
2401:71c0::/32
2401:7240::/32
@ -547,6 +560,7 @@
2401:b7c0::/32
2401:b940::/32
2401:ba00::/32
2401:ba0::/32
2401:ba40::/32
2401:bb80::/32
2401:bc0::/32
@ -621,7 +635,6 @@
2402:2e80::/32
2402:2f40::/32
2402:3040::/32
2402:3080::/32
2402:3140::/32
2402:3180::/32
2402:31c0::/32
@ -653,10 +666,8 @@
2402:4e00::/32
2402:4ec0::/32
2402:4f80::/32
2402:50c0::/32
2402:5140::/32
2402:5180::/32
2402:51c0::/32
2402:52c0::/32
2402:5340::/32
2402:5880::/32
@ -1168,7 +1179,7 @@
2404:37c0::/32
2404:3840::/32
2404:3940::/32
2404:3b00::/32
2404:3b00::/34
2404:3bc0::/32
2404:3c40::/32
2404:3f40::/32
@ -1792,7 +1803,6 @@
2407:2280::/32
2407:2380::/32
2407:23c0::/32
2407:2440::/32
2407:2780::/32
2407:2840::/32
2407:2ac0::/32

View File

@ -2376,6 +2376,7 @@ greenpeace.org
greenreadings.com
greenvpn.net
greenvpn.org
grindr.com
grotty-monday.com
groups.google.cn
grow.google
@ -2659,6 +2660,7 @@ huaxia-news.com
huaxiabao.org
huaxin.ph
huayuworld.org
hub.docker.com
hudatoriq.web.id
hudson.org
huffingtonpost.com
@ -2771,6 +2773,7 @@ imb.org
imdb.com
img.dlsite.jp
img.ly
imgasd.com
imgchili.net
imgmega.com
imgur.com
@ -3918,6 +3921,7 @@ packetix.net
pacopacomama.com
padmanet.com
page.bid.yahoo.com
page.link
page2rss.com
pages.dev
pagodabox.com
@ -4060,6 +4064,7 @@ pobieramy.top
podbean.com
podcast.co
podictionary.com
poe.com
pokerstars.com
pokerstars.net
politicalchina.org
@ -5887,6 +5892,7 @@ xiaod.in
xiaohexie.com
xiaolan.me
xiaoma.org
xiaomi.eu
xiaxiaoqiang.net
xiezhua.com
xihua.es

View File

@ -158,7 +158,10 @@ o:value("default", translate("Default"))
o:value("1:65535", translate("All"))
---- UDP No Redir Ports
o = s:option(Value, "udp_no_redir_ports", translate("UDP No Redir Ports"))
o = s:option(Value, "udp_no_redir_ports", translate("UDP No Redir Ports"),
"<font color='red'>" ..
translate("If you don't want to let the device in the list to go proxy, please choose all.") ..
"</font>")
o.default = "default"
o:value("disable", translate("No patterns are used"))
o:value("default", translate("Default"))
@ -189,10 +192,12 @@ end
o = s:option(ListValue, "direct_dns_protocol", translate("Direct DNS Protocol"))
o.default = "auto"
o:value("auto", translate("Auto"))
--[[
o:value("udp", "UDP")
o:value("tcp", "TCP")
o:value("doh", "DoH")
o:depends({ node = "default", ['!reverse'] = true })
]]--
---- DNS Forward
o = s:option(Value, "direct_dns", translate("Direct DNS"))
o.datatype = "or(ipaddr,ipaddrport)"

View File

@ -88,6 +88,7 @@ if (has_v2ray or has_xray) and #nodes_table > 0 then
local normal_list = {}
local balancing_list = {}
local shunt_list = {}
local iface_list = {}
for k, v in pairs(nodes_table) do
if v.node_type == "normal" then
normal_list[#normal_list + 1] = v
@ -98,6 +99,9 @@ if (has_v2ray or has_xray) and #nodes_table > 0 then
if v.protocol and v.protocol == "_shunt" then
shunt_list[#shunt_list + 1] = v
end
if v.protocol and v.protocol == "_iface" then
iface_list[#iface_list + 1] = v
end
end
local function get_cfgvalue(shunt_node_id, option)
@ -136,6 +140,9 @@ if (has_v2ray or has_xray) and #nodes_table > 0 then
for k1, v1 in pairs(balancing_list) do
o:value(v1.id, v1.remark)
end
for k1, v1 in pairs(iface_list) do
o:value(v1.id, v1.remark)
end
for k1, v1 in pairs(normal_list) do
o:value(v1.id, v1.remark)
end
@ -177,6 +184,9 @@ if (has_v2ray or has_xray) and #nodes_table > 0 then
for k1, v1 in pairs(balancing_list) do
o:value(v1.id, v1.remark)
end
for k1, v1 in pairs(iface_list) do
o:value(v1.id, v1.remark)
end
for k1, v1 in pairs(normal_list) do
o:value(v1.id, v1.remark)
pt:depends({ [node_option] = v1.id, [vid .. "-preproxy_enabled"] = "1" })
@ -195,6 +205,9 @@ if (has_v2ray or has_xray) and #nodes_table > 0 then
for k1, v1 in pairs(balancing_list) do
o:value(v1.id, v1.remark)
end
for k1, v1 in pairs(iface_list) do
o:value(v1.id, v1.remark)
end
for k1, v1 in pairs(normal_list) do
o:value(v1.id, v1.remark)
end
@ -251,9 +264,11 @@ s:tab("DNS", translate("DNS"))
o = s:taboption("DNS", ListValue, "direct_dns_protocol", translate("Direct DNS Protocol"))
o.default = "auto"
o:value("auto", translate("Auto"))
--[[
o:value("udp", "UDP")
o:value("tcp", "TCP")
o:value("doh", "DoH")
]]--
---- DNS Forward
o = s:taboption("DNS", Value, "direct_dns", translate("Direct DNS"))

View File

@ -123,6 +123,7 @@ iface:depends("protocol", "_iface")
local nodes_table = {}
local balancers_table = {}
local iface_table = {}
for k, e in ipairs(api.get_valid_nodes()) do
if e.node_type == "normal" then
nodes_table[#nodes_table + 1] = {
@ -136,6 +137,12 @@ for k, e in ipairs(api.get_valid_nodes()) do
remarks = e["remark"]
}
end
if e.protocol == "_iface" then
iface_table[#iface_table + 1] = {
id = e[".name"],
remarks = e["remark"]
}
end
end
-- 负载均衡列表
@ -170,6 +177,9 @@ if #nodes_table > 0 then
for k, v in pairs(balancers_table) do
o:value(v.id, v.remarks)
end
for k, v in pairs(iface_table) do
o:value(v.id, v.remarks)
end
for k, v in pairs(nodes_table) do
o:value(v.id, v.remarks)
end
@ -191,6 +201,9 @@ uci:foreach(appname, "shunt_rules", function(e)
for k, v in pairs(balancers_table) do
o:value(v.id, v.remarks)
end
for k, v in pairs(iface_table) do
o:value(v.id, v.remarks)
end
local pt = s:option(ListValue, e[".name"] .. "_proxy_tag", string.format('* <a style="color:red">%s</a>', e.remarks .. " " .. translate("Preproxy")))
pt:value("nil", translate("Close"))
pt:value("main", translate("Preproxy Node"))
@ -220,6 +233,9 @@ if #nodes_table > 0 then
for k, v in pairs(balancers_table) do
default_node:value(v.id, v.remarks)
end
for k, v in pairs(iface_table) do
default_node:value(v.id, v.remarks)
end
local dpt = s:option(ListValue, "default_proxy_tag", string.format('* <a style="color:red">%s</a>', translate("Default Preproxy")), translate("When using, localhost will connect this node first and then use this node to connect the default node."))
dpt:value("nil", translate("Close"))
dpt:value("main", translate("Preproxy Node"))

View File

@ -97,7 +97,6 @@ protocol:value("http", "HTTP")
protocol:value("socks", "Socks")
protocol:value("shadowsocks", "Shadowsocks")
protocol:value("trojan", "Trojan")
protocol:value("mtproto", "MTProto")
protocol:value("dokodemo-door", "dokodemo-door")
protocol:depends("type", "V2ray")
protocol:depends("type", "Xray")
@ -150,17 +149,6 @@ password:depends("type", "Brook")
password:depends({ type = "V2ray", protocol = "shadowsocks" })
password:depends({ type = "Xray", protocol = "shadowsocks" })
mtproto_password = s:option(Value, "mtproto_password", translate("Password"), translate("The MTProto protocol must be 32 characters and can only contain characters from 0 to 9 and a to f."))
mtproto_password:depends({ type = "V2ray", protocol = "mtproto" })
mtproto_password:depends({ type = "Xray", protocol = "mtproto" })
mtproto_password.default = arg[1]
function mtproto_password.cfgvalue(self, section)
return m:get(section, "password")
end
function mtproto_password.write(self, section, value)
m:set(section, "password", value)
end
d_protocol = s:option(ListValue, "d_protocol", translate("Destination protocol"))
d_protocol:value("tcp", "TCP")
d_protocol:value("udp", "UDP")

View File

@ -274,7 +274,7 @@ function get_valid_nodes()
e.id = e[".name"]
if e.type and e.remarks then
if e.protocol and (e.protocol == "_balancing" or e.protocol == "_shunt" or e.protocol == "_iface") then
e["remark"] = "%s[%s] " % {i18n.translatef(e.type .. e.protocol), e.remarks}
e["remark"] = "%s[%s] " % {e.type .. " " .. i18n.translatef(e.protocol), e.remarks}
e["node_type"] = "special"
nodes[#nodes + 1] = e
end
@ -311,7 +311,7 @@ function get_node_remarks(n)
local remarks = ""
if n then
if n.protocol and (n.protocol == "_balancing" or n.protocol == "_shunt" or n.protocol == "_iface") then
remarks = "%s[%s] " % {i18n.translatef(n.type .. n.protocol), n.remarks}
remarks = "%s[%s] " % {n.type .. " " .. i18n.translatef(n.protocol), n.remarks}
else
local type2 = n.type
if (n.type == "V2ray" or n.type == "Xray") and n.protocol then

View File

@ -317,14 +317,6 @@ function gen_config_server(node)
clients = clients
}
end
elseif node.protocol == "mtproto" then
settings = {
users = {
{
secret = (node.password == nil) and "" or node.password
}
}
}
elseif node.protocol == "dokodemo-door" then
settings = {
network = node.d_protocol,
@ -377,10 +369,12 @@ function gen_config_server(node)
tag = "outbound",
streamSettings = {
sockopt = {
mark = 255,
interface = node.outbound_node_iface
}
}
}
sys.call("mkdir -p /tmp/etc/passwall2/iface && touch /tmp/etc/passwall2/iface/" .. node.outbound_node_iface)
else
local outbound_node_t = uci:get_all("passwall2", node.outbound_node)
if node.outbound_node == "_socks" or node.outbound_node == "_http" then
@ -817,6 +811,22 @@ function gen_config(var)
rule_balancerTag = balancer.tag
end
end
elseif _node.protocol == "_iface" then
if _node.iface then
local _outbound = {
protocol = "freedom",
tag = rule_name,
streamSettings = {
sockopt = {
mark = 255,
interface = _node.iface
}
}
}
table.insert(outbounds, _outbound)
rule_outboundTag = rule_name
sys.call("touch /tmp/etc/passwall2/iface/" .. _node.iface)
end
end
end
return rule_outboundTag, rule_balancerTag
@ -938,10 +948,12 @@ function gen_config(var)
tag = "outbound",
streamSettings = {
sockopt = {
mark = 255,
interface = node.iface
}
}
}
sys.call("touch /tmp/etc/passwall2/iface/" .. node.iface)
end
else
outbound = gen_outbound(flag, node)

View File

@ -274,14 +274,14 @@ msgstr "添加方式"
msgid "Type"
msgstr "类型"
msgid "Balancing"
msgid "_balancing"
msgstr "负载均衡"
msgid "Xray_balancing"
msgstr "Xray 负载均衡"
msgid "_shunt"
msgstr "分流"
msgid "V2ray_balancing"
msgstr "V2ray 负载均衡"
msgid "Balancing"
msgstr "负载均衡"
msgid "Balancing Strategy"
msgstr "负载均衡策略"
@ -307,12 +307,6 @@ msgstr "发起探测的间隔。每经过这个时间,就会对一个服务器
msgid "Shunt"
msgstr "分流"
msgid "Xray_shunt"
msgstr "Xray 分流"
msgid "V2ray_shunt"
msgstr "V2ray 分流"
msgid "Preproxy"
msgstr "前置代理"
@ -523,6 +517,9 @@ msgstr "UDP不转发端口"
msgid "Fill in the ports you don't want to be forwarded by the agent, with the highest priority."
msgstr "填写你不希望被代理转发的端口,优先级最高。"
msgid "If you don't want to let the device in the list to go proxy, please choose all."
msgstr "如果您不想让列表中的设备走代理,请选择全部。"
msgid "TCP Proxy Drop Ports"
msgstr "TCP转发屏蔽端口"
@ -1156,9 +1153,6 @@ msgstr "显示节点检测"
msgid "Show Show IP111"
msgstr "显示IP111"
msgid "The MTProto protocol must be 32 characters and can only contain characters from 0 to 9 and a to f."
msgstr "MTProto 协议必须为 32 个字符,仅可包含 0 到 9 和 a 到 f 之间的字符。"
msgid "Destination protocol"
msgstr "目标协议"

View File

@ -12,6 +12,7 @@ TMP_ID_PATH=$TMP_PATH/id
TMP_PORT_PATH=$TMP_PATH/port
TMP_ROUTE_PATH=$TMP_PATH/route
TMP_ACL_PATH=$TMP_PATH/acl
TMP_IFACE_PATH=$TMP_PATH/iface
TMP_PATH2=/tmp/etc/${CONFIG}_tmp
DNSMASQ_PATH=/etc/dnsmasq.d
TMP_DNSMASQ_PATH=/tmp/dnsmasq.d/passwall2
@ -21,7 +22,6 @@ RULES_PATH=/usr/share/${CONFIG}/rules
TUN_DNS_PORT=15353
TUN_DNS="127.0.0.1#${TUN_DNS_PORT}"
DEFAULT_DNS=
IFACES=
ENABLED_DEFAULT_ACL=0
ENABLED_ACLS=0
PROXY_IPV6=0
@ -319,11 +319,6 @@ run_v2ray() {
local buffer_size=$(config_t_get global_forwarding buffer_size)
[ -n "${buffer_size}" ] && _extra_param="${_extra_param} -buffer_size ${buffer_size}"
local protocol=$(config_n_get $node protocol)
[ "$protocol" == "_iface" ] && {
IFACES="$IFACES $(config_n_get $node iface)"
}
[ -n "$dns_listen_port" ] && {
V2RAY_DNS_DIRECT_CONFIG="${TMP_PATH}/${flag}_dns_direct.json"
V2RAY_DNS_DIRECT_LOG="${TMP_PATH}/${flag}_dns_direct.log"
@ -369,12 +364,18 @@ run_v2ray() {
ln_run "$(first_type $(config_t_get global_app ${type}_file) ${type})" ${type} $V2RAY_DNS_DIRECT_LOG run -c "$V2RAY_DNS_DIRECT_CONFIG"
direct_dnsmasq_listen_port=$(get_new_port $(expr $dns_direct_listen_port + 1) udp)
local set_flag="${flag}"
local direct_ipset_conf=$TMP_PATH/dnsmasq_${flag}_direct.conf
[ -n "$(echo ${flag} | grep '^acl')" ] && {
direct_ipset_conf=${TMP_ACL_PATH}/${sid}/dnsmasq_${flag}_direct.conf
set_flag=$(echo ${flag} | awk -F '_' '{print $2}')
}
if [ "${nftflag}" = "1" ]; then
local direct_nftset="4#inet#fw4#passwall2_whitelist,6#inet#fw4#passwall2_whitelist6"
local direct_nftset="4#inet#fw4#passwall2_${set_flag}_whitelist,6#inet#fw4#passwall2_${set_flag}_whitelist6"
else
local direct_ipset="passwall2_whitelist,passwall2_whitelist6"
local direct_ipset="passwall2_${set_flag}_whitelist,passwall2_${set_flag}_whitelist6"
fi
run_ipset_dnsmasq listen_port=${direct_dnsmasq_listen_port} server_dns=127.0.0.1#${dns_direct_listen_port} ipset="${direct_ipset}" nftset="${direct_nftset}" config_file=$TMP_PATH/dnsmasq_${flag}_direct.conf
run_ipset_dnsmasq listen_port=${direct_dnsmasq_listen_port} server_dns=127.0.0.1#${dns_direct_listen_port} ipset="${direct_ipset}" nftset="${direct_nftset}" config_file=${direct_ipset_conf}
V2RAY_DNS_REMOTE_CONFIG="${TMP_PATH}/${flag}_dns_remote.json"
V2RAY_DNS_REMOTE_LOG="${TMP_PATH}/${flag}_dns_remote.log"
@ -876,7 +877,6 @@ acl_app() {
redir_port=11200
dns_port=11300
dnsmasq_port=11400
echolog "访问控制:"
for item in $items; do
index=$(expr $index + 1)
local enabled sid remarks sources node direct_dns_protocol direct_dns direct_dns_doh direct_dns_client_ip direct_dns_query_strategy remote_dns_protocol remote_dns remote_dns_doh remote_dns_client_ip remote_fakedns remote_dns_query_strategy
@ -908,7 +908,7 @@ acl_app() {
tcp_proxy_mode="global"
udp_proxy_mode="global"
node=${node:-default}
direct_dns_protocol=${direct_dns_protocol:-auto}
direct_dns_protocol="auto"
direct_dns=${direct_dns:-119.29.29.29}
[ "$direct_dns_protocol" = "doh" ] && direct_dns=${direct_dns_doh:-https://223.5.5.5/dns-query}
direct_dns_query_strategy=${direct_dns_query_strategy:-UseIP}
@ -1070,6 +1070,7 @@ TCP_PROXY_MODE="global"
UDP_PROXY_MODE="global"
LOCALHOST_PROXY=$(config_t_get global localhost_proxy '1')
DIRECT_DNS_PROTOCOL=$(config_t_get global direct_dns_protocol tcp)
DIRECT_DNS_PROTOCOL="auto"
DIRECT_DNS=$(config_t_get global direct_dns 119.29.29.29:53 | sed 's/#/:/g' | sed -E 's/\:([^:]+)$/#\1/g')
DIRECT_DNS_QUERY_STRATEGY=$(config_t_get global direct_dns_query_strategy UseIP)
REMOTE_DNS_PROTOCOL=$(config_t_get global remote_dns_protocol tcp)
@ -1092,7 +1093,7 @@ PROXY_IPV6=$(config_t_get global_forwarding ipv6_tproxy 0)
export V2RAY_LOCATION_ASSET=$(config_t_get global_rules v2ray_location_asset "/usr/share/v2ray/")
export XRAY_LOCATION_ASSET=$V2RAY_LOCATION_ASSET
mkdir -p /tmp/etc $TMP_PATH $TMP_BIN_PATH $TMP_SCRIPT_FUNC_PATH $TMP_ID_PATH $TMP_PORT_PATH $TMP_ROUTE_PATH $TMP_ACL_PATH $TMP_PATH2
mkdir -p /tmp/etc $TMP_PATH $TMP_BIN_PATH $TMP_SCRIPT_FUNC_PATH $TMP_ID_PATH $TMP_PORT_PATH $TMP_ROUTE_PATH $TMP_ACL_PATH $TMP_IFACE_PATH $TMP_PATH2
arg1=$1
shift

View File

@ -4,11 +4,9 @@ DIR="$(cd "$(dirname "$0")" && pwd)"
MY_PATH=$DIR/iptables.sh
IPSET_LANLIST="passwall2_lanlist"
IPSET_VPSLIST="passwall2_vpslist"
IPSET_WHITELIST="passwall2_whitelist"
IPSET_LANLIST6="passwall2_lanlist6"
IPSET_VPSLIST6="passwall2_vpslist6"
IPSET_WHITELIST6="passwall2_whitelist6"
FORCE_INDEX=2
@ -61,8 +59,17 @@ insert_rule_before() {
local chain="${1}"; shift
local keyword="${1}"; shift
local rule="${1}"; shift
local default_index="${1}"; shift
default_index=${default_index:-0}
local _index=$($ipt_tmp -n -L $chain --line-numbers 2>/dev/null | grep "$keyword" | head -n 1 | awk '{print $1}')
$ipt_tmp -I $chain $_index $rule
if [ -z "${_index}" ] && [ "${default_index}" = "0" ]; then
$ipt_tmp -A $chain $rule
else
if [ -z "${_index}" ]; then
_index=${default_index}
fi
$ipt_tmp -I $chain $_index $rule
fi
}
insert_rule_after() {
@ -73,10 +80,19 @@ insert_rule_after() {
local chain="${1}"; shift
local keyword="${1}"; shift
local rule="${1}"; shift
local default_index="${1}"; shift
default_index=${default_index:-0}
local _index=$($ipt_tmp -n -L $chain --line-numbers 2>/dev/null | grep "$keyword" | awk 'END {print}' | awk '{print $1}')
_index=${_index:-0}
_index=$((_index + 1))
$ipt_tmp -I $chain $_index $rule
if [ -z "${_index}" ] && [ "${default_index}" = "0" ]; then
$ipt_tmp -A $chain $rule
else
if [ -n "${_index}" ]; then
_index=$((_index + 1))
else
_index=${default_index}
fi
$ipt_tmp -I $chain $_index $rule
fi
}
RULE_LAST_INDEX() {
@ -213,6 +229,11 @@ load_acl() {
else
continue
fi
local ipset_whitelist="passwall2_${sid}_whitelist"
local ipset_whitelist6="passwall2_${sid}_whitelist6"
ipset -! create $ipset_whitelist nethash maxelem 1048576
ipset -! create $ipset_whitelist6 nethash family inet6 maxelem 1048576
ipt_tmp=$ipt_n
[ -n "${is_tproxy}" ] && ipt_tmp=$ipt_m
@ -227,7 +248,10 @@ load_acl() {
else
msg2="${msg2}(REDIRECT:${redir_port})代理"
fi
$ipt_n -A PSW2 $(comment "$remarks") -p tcp ${_ipt_source} $(dst $ipset_whitelist) ! -d $FAKE_IP -j RETURN
$ipt_m -A PSW2 $(comment "$remarks") -p tcp ${_ipt_source} $(dst $ipset_whitelist) ! -d $FAKE_IP -j RETURN
[ "$accept_icmp" = "1" ] && {
$ipt_n -A PSW2 $(comment "$remarks") -p icmp ${_ipt_source} -d $FAKE_IP $(REDIRECT)
$ipt_n -A PSW2 $(comment "$remarks") -p icmp ${_ipt_source} $(REDIRECT)
@ -254,6 +278,8 @@ load_acl() {
$ipt_m -A PSW2 $(comment "$remarks") -p tcp ${_ipt_source} $(REDIRECT $redir_port TPROXY)
fi
[ "$PROXY_IPV6" == "1" ] && {
$ip6t_n -A PSW2 $(comment "$remarks") -p tcp ${_ipt_source} $(dst $ipset_whitelist6) ! -d $FAKE_IP_6 -j RETURN
$ip6t_m -A PSW2 $(comment "$remarks") -p tcp ${_ipt_source} $(dst $ipset_whitelist6) ! -d $FAKE_IP_6 -j RETURN
$ip6t_m -A PSW2 $(comment "$remarks") -p tcp ${_ipt_source} -d $FAKE_IP_6 -j PSW2_RULE 2>/dev/null
$ip6t_m -A PSW2 $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_redir_ports "-m multiport --dport") -j PSW2_RULE 2>/dev/null
$ip6t_m -A PSW2 $(comment "$remarks") -p tcp ${_ipt_source} $(REDIRECT $redir_port TPROXY) 2>/dev/null
@ -277,12 +303,14 @@ load_acl() {
msg2="${msg2}[$?]除${udp_no_redir_ports}外的"
}
msg2="${msg2}所有端口"
$ipt_m -A PSW2 $(comment "$remarks") -p udp ${_ipt_source} $(dst $ipset_whitelist) ! -d $FAKE_IP -j RETURN
$ipt_m -A PSW2 $(comment "$remarks") -p udp ${_ipt_source} -d $FAKE_IP -j PSW2_RULE
$ipt_m -A PSW2 $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_redir_ports "-m multiport --dport") -j PSW2_RULE
$ipt_m -A PSW2 $(comment "$remarks") -p udp ${_ipt_source} $(REDIRECT $redir_port TPROXY)
[ "$PROXY_IPV6" == "1" ] && [ "$PROXY_IPV6_UDP" == "1" ] && {
$ip6t_m -A PSW2 $(comment "$remarks") -p udp ${_ipt_source} $(dst $ipset_whitelist6) ! -d $FAKE_IP_6 -j RETURN
$ip6t_m -A PSW2 $(comment "$remarks") -p udp ${_ipt_source} -d $FAKE_IP_6 -j PSW2_RULE 2>/dev/null
$ip6t_m -A PSW2 $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_redir_ports "-m multiport --dport") -j PSW2_RULE 2>/dev/null
$ip6t_m -A PSW2 $(comment "$remarks") -p udp ${_ipt_source} $(REDIRECT $redir_port TPROXY) 2>/dev/null
@ -322,6 +350,9 @@ load_acl() {
[ "$TCP_NO_REDIR_PORTS" != "disable" ] && msg="${msg}${TCP_NO_REDIR_PORTS}外的"
msg="${msg}所有端口"
$ipt_n -A PSW2 $(comment "默认") -p tcp $(dst $ipset_global_whitelist) ! -d $FAKE_IP -j RETURN
$ipt_m -A PSW2 $(comment "默认") -p tcp $(dst $ipset_global_whitelist) ! -d $FAKE_IP -j RETURN
[ "$accept_icmp" = "1" ] && {
$ipt_n -A PSW2 $(comment "默认") -p icmp -d $FAKE_IP $(REDIRECT)
$ipt_n -A PSW2 $(comment "默认") -p icmp $(REDIRECT)
@ -342,6 +373,8 @@ load_acl() {
fi
[ "$PROXY_IPV6" == "1" ] && {
$ip6t_n -A PSW2 $(comment "默认") -p tcp $(dst $ipset_global_whitelist6) ! -d $FAKE_IP_6 -j RETURN
$ip6t_m -A PSW2 $(comment "默认") -p tcp $(dst $ipset_global_whitelist6) ! -d $FAKE_IP_6 -j RETURN
$ip6t_m -A PSW2 $(comment "默认") -p tcp -d $FAKE_IP_6 -j PSW2_RULE
$ip6t_m -A PSW2 $(comment "默认") -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") -j PSW2_RULE
$ip6t_m -A PSW2 $(comment "默认") -p tcp $(REDIRECT $REDIR_PORT TPROXY)
@ -366,12 +399,14 @@ load_acl() {
[ "$UDP_NO_REDIR_PORTS" != "disable" ] && msg="${msg}${UDP_NO_REDIR_PORTS}外的"
msg="${msg}所有端口"
$ipt_m -A PSW2 $(comment "默认") -p udp $(dst $ipset_global_whitelist) ! -d $FAKE_IP -j RETURN
$ipt_m -A PSW2 $(comment "默认") -p udp -d $FAKE_IP -j PSW2_RULE
$ipt_m -A PSW2 $(comment "默认") -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") -j PSW2_RULE
$ipt_m -A PSW2 $(comment "默认") -p udp $(REDIRECT $REDIR_PORT TPROXY)
if [ "$PROXY_IPV6_UDP" == "1" ]; then
$ip6t_m -A PSW2 $(comment "默认") -p udp $(dst $ipset_global_whitelist6) ! -d $FAKE_IP_6 -j RETURN
$ip6t_m -A PSW2 $(comment "默认") -p udp -d $FAKE_IP_6 -j PSW2_RULE
$ip6t_m -A PSW2 $(comment "默认") -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") -j PSW2_RULE
$ip6t_m -A PSW2 $(comment "默认") -p udp $(REDIRECT $REDIR_PORT TPROXY)
@ -512,11 +547,9 @@ add_firewall_rule() {
echolog "开始加载防火墙规则..."
ipset -! create $IPSET_LANLIST nethash maxelem 1048576
ipset -! create $IPSET_VPSLIST nethash maxelem 1048576
ipset -! create $IPSET_WHITELIST nethash maxelem 1048576
ipset -! create $IPSET_LANLIST6 nethash family inet6 maxelem 1048576
ipset -! create $IPSET_VPSLIST6 nethash family inet6 maxelem 1048576
ipset -! create $IPSET_WHITELIST6 nethash family inet6 maxelem 1048576
ipset -! -R <<-EOF
$(gen_lanlist | sed -e "s/^/add $IPSET_LANLIST /")
@ -559,6 +592,11 @@ add_firewall_rule() {
#echolog " - 追加到白名单:${ispip6}"
done
}
local ipset_global_whitelist="passwall2_global_whitelist"
local ipset_global_whitelist6="passwall2_global_whitelist6"
ipset -! create $ipset_global_whitelist nethash maxelem 1048576
ipset -! create $ipset_global_whitelist6 nethash family inet6 maxelem 1048576
# 过滤所有节点IP
filter_vpsip > /dev/null 2>&1 &
@ -577,7 +615,6 @@ add_firewall_rule() {
$ipt_n -N PSW2
$ipt_n -A PSW2 $(dst $IPSET_LANLIST) -j RETURN
$ipt_n -A PSW2 $(dst $IPSET_VPSLIST) -j RETURN
$ipt_n -A PSW2 $(dst $IPSET_WHITELIST) ! -d $FAKE_IP -j RETURN
WAN_IP=$(get_wan_ip)
[ ! -z "${WAN_IP}" ] && $ipt_n -A PSW2 $(comment "WAN_IP_RETURN") -d "${WAN_IP}" -j RETURN
@ -588,7 +625,7 @@ add_firewall_rule() {
$ipt_n -N PSW2_OUTPUT
$ipt_n -A PSW2_OUTPUT $(dst $IPSET_LANLIST) -j RETURN
$ipt_n -A PSW2_OUTPUT $(dst $IPSET_VPSLIST) -j RETURN
$ipt_n -A PSW2_OUTPUT $(dst $IPSET_WHITELIST) ! -d $FAKE_IP -j RETURN
$ipt_n -A PSW2_OUTPUT $(dst $ipset_global_whitelist) ! -d $FAKE_IP -j RETURN
$ipt_n -A PSW2_OUTPUT -m mark --mark 0xff -j RETURN
$ipt_n -N PSW2_REDIRECT
@ -608,7 +645,6 @@ add_firewall_rule() {
$ipt_m -N PSW2
$ipt_m -A PSW2 $(dst $IPSET_LANLIST) -j RETURN
$ipt_m -A PSW2 $(dst $IPSET_VPSLIST) -j RETURN
$ipt_m -A PSW2 $(dst $IPSET_WHITELIST) ! -d $FAKE_IP -j RETURN
[ ! -z "${WAN_IP}" ] && $ipt_m -A PSW2 $(comment "WAN_IP_RETURN") -d "${WAN_IP}" -j RETURN
unset WAN_IP
@ -617,10 +653,10 @@ add_firewall_rule() {
insert_rule_before "$ipt_m" "PREROUTING" "PSW2" "-p tcp -m socket -j PSW2_DIVERT"
$ipt_m -N PSW2_OUTPUT
$ipt_m -A PSW2_OUTPUT -m mark --mark 0xff -j RETURN
$ipt_m -A PSW2_OUTPUT $(dst $IPSET_LANLIST) -j RETURN
$ipt_m -A PSW2_OUTPUT $(dst $IPSET_VPSLIST) -j RETURN
$ipt_m -A PSW2_OUTPUT $(dst $IPSET_WHITELIST) ! -d $FAKE_IP -j RETURN
$ipt_m -A PSW2_OUTPUT $(dst $ipset_global_whitelist) ! -d $FAKE_IP -j RETURN
$ipt_m -A PSW2_OUTPUT -m mark --mark 0xff -j RETURN
ip rule add fwmark 1 lookup 100
ip route add local 0.0.0.0/0 dev lo table 100
@ -629,13 +665,12 @@ add_firewall_rule() {
$ip6t_n -N PSW2
$ip6t_n -A PSW2 $(dst $IPSET_LANLIST6) -j RETURN
$ip6t_n -A PSW2 $(dst $IPSET_VPSLIST6) -j RETURN
$ip6t_n -A PSW2 $(dst $IPSET_WHITELIST6) ! -d $FAKE_IP_6 -j RETURN
$ip6t_n -A PREROUTING -p ipv6-icmp -j PSW2
$ip6t_n -N PSW2_OUTPUT
$ip6t_n -A PSW2_OUTPUT $(dst $IPSET_LANLIST6) -j RETURN
$ip6t_n -A PSW2_OUTPUT $(dst $IPSET_VPSLIST6) -j RETURN
$ip6t_n -A PSW2_OUTPUT $(dst $IPSET_WHITELIST6) ! -d $FAKE_IP_6 -j RETURN
$ip6t_n -A PSW2_OUTPUT $(dst $ipset_global_whitelist6) ! -d $FAKE_IP_6 -j RETURN
$ip6t_n -A PSW2_OUTPUT -m mark --mark 0xff -j RETURN
}
@ -653,7 +688,6 @@ add_firewall_rule() {
$ip6t_m -N PSW2
$ip6t_m -A PSW2 $(dst $IPSET_LANLIST6) -j RETURN
$ip6t_m -A PSW2 $(dst $IPSET_VPSLIST6) -j RETURN
$ip6t_m -A PSW2 $(dst $IPSET_WHITELIST6) ! -d $FAKE_IP_6 -j RETURN
WAN6_IP=$(get_wan6_ip)
[ ! -z "${WAN6_IP}" ] && $ip6t_m -A PSW2 $(comment "WAN6_IP_RETURN") -d ${WAN6_IP} -j RETURN
@ -666,7 +700,7 @@ add_firewall_rule() {
$ip6t_m -A PSW2_OUTPUT -m mark --mark 0xff -j RETURN
$ip6t_m -A PSW2_OUTPUT $(dst $IPSET_LANLIST6) -j RETURN
$ip6t_m -A PSW2_OUTPUT $(dst $IPSET_VPSLIST6) -j RETURN
$ip6t_m -A PSW2_OUTPUT $(dst $IPSET_WHITELIST6) ! -d $FAKE_IP_6 -j RETURN
$ip6t_m -A PSW2_OUTPUT $(dst $ipset_global_whitelist6) ! -d $FAKE_IP_6 -j RETURN
ip -6 rule add fwmark 1 table 100
ip -6 route add local ::/0 dev lo table 100
@ -730,7 +764,7 @@ add_firewall_rule() {
$ipt_m -A PSW2_OUTPUT -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") -j PSW2_RULE
$ipt_m -A PSW2 $(comment "本机") -p tcp -i lo $(REDIRECT $REDIR_PORT TPROXY)
$ipt_m -A PSW2 $(comment "本机") -p tcp -i lo -j RETURN
$ipt_m -A OUTPUT -p tcp -j PSW2_OUTPUT
insert_rule_before "$ipt_m" "OUTPUT" "mwan3" "$(comment mangle-OUTPUT-PSW2) -p tcp -j PSW2_OUTPUT"
fi
if [ "$PROXY_IPV6" == "1" ]; then
@ -738,10 +772,10 @@ add_firewall_rule() {
$ip6t_m -A PSW2_OUTPUT -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") -j PSW2_RULE
$ip6t_m -A PSW2 $(comment "本机") -p tcp -i lo $(REDIRECT $REDIR_PORT TPROXY)
$ip6t_m -A PSW2 $(comment "本机") -p tcp -i lo -j RETURN
$ip6t_m -A OUTPUT -p tcp -j PSW2_OUTPUT
insert_rule_before "$ip6t_m" "OUTPUT" "mwan3" "$(comment mangle-OUTPUT-PSW2) -p tcp -j PSW2_OUTPUT"
fi
for iface in $IFACES; do
for iface in $(ls ${TMP_IFACE_PATH}); do
$ipt_n -I PSW2_OUTPUT -o $iface -p tcp -j RETURN
$ipt_m -I PSW2_OUTPUT -o $iface -p tcp -j RETURN
done
@ -765,21 +799,27 @@ add_firewall_rule() {
$ipt_m -A PSW2_OUTPUT -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") -j PSW2_RULE
$ipt_m -A PSW2 $(comment "本机") -p udp -i lo $(REDIRECT $REDIR_PORT TPROXY)
$ipt_m -A PSW2 $(comment "本机") -p udp -i lo -j RETURN
$ipt_m -A OUTPUT -p udp -j PSW2_OUTPUT
insert_rule_before "$ipt_m" "OUTPUT" "mwan3" "$(comment mangle-OUTPUT-PSW2) -p udp -j PSW2_OUTPUT"
if [ "$PROXY_IPV6_UDP" == "1" ]; then
$ip6t_m -A PSW2_OUTPUT -p udp -d $FAKE_IP_6 -j PSW2_RULE
$ip6t_m -A PSW2_OUTPUT -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") -j PSW2_RULE
$ip6t_m -A PSW2 $(comment "本机") -p udp -i lo $(REDIRECT $REDIR_PORT TPROXY)
$ip6t_m -A PSW2 $(comment "本机") -p udp -i lo -j RETURN
$ip6t_m -A OUTPUT -p udp -j PSW2_OUTPUT
insert_rule_before "$ip6t_m" "OUTPUT" "mwan3" "$(comment mangle-OUTPUT-PSW2) -p udp -j PSW2_OUTPUT"
fi
for iface in $IFACES; do
for iface in $(ls ${TMP_IFACE_PATH}); do
$ipt_n -I PSW2_OUTPUT -o $iface -p udp -j RETURN
$ipt_m -I PSW2_OUTPUT -o $iface -p udp -j RETURN
done
fi
$ipt_m -I OUTPUT $(comment "mangle-OUTPUT-PSW2") -o lo -j RETURN
insert_rule_before "$ipt_m" "OUTPUT" "mwan3" "$(comment mangle-OUTPUT-PSW2) -m mark --mark 1 -j RETURN"
$ip6t_m -I OUTPUT $(comment "mangle-OUTPUT-PSW2") -o lo -j RETURN
insert_rule_before "$ip6t_m" "OUTPUT" "mwan3" "$(comment mangle-OUTPUT-PSW2) -m mark --mark 1 -j RETURN"
$ipt_m -A PSW2 -p udp --dport 53 -j RETURN
$ip6t_m -A PSW2 -p udp --dport 53 -j RETURN

View File

@ -4,11 +4,9 @@ DIR="$(cd "$(dirname "$0")" && pwd)"
MY_PATH=$DIR/nftables.sh
NFTSET_LANLIST="passwall2_lanlist"
NFTSET_VPSLIST="passwall2_vpslist"
NFTSET_WHITELIST="passwall2_whitelist"
NFTSET_LANLIST6="passwall2_lanlist6"
NFTSET_VPSLIST6="passwall2_vpslist6"
NFTSET_WHITELIST6="passwall2_whitelist6"
FORCE_INDEX=0
@ -244,6 +242,11 @@ load_acl() {
else
continue
fi
local nftset_whitelist="passwall2_${sid}_whitelist"
local nftset_whitelist6="passwall2_${sid}_whitelist6"
gen_nftset $nftset_whitelist ipv4_addr
gen_nftset $nftset_whitelist6 ipv6_addr
[ -n "$redir_port" ] && {
if [ "$tcp_proxy_mode" != "disable" ]; then
@ -254,7 +257,10 @@ load_acl() {
else
msg2="${msg2}(REDIRECT:${redir_port})代理"
fi
nft "add rule inet fw4 PSW2_NAT ip protocol tcp ${_ipt_source} ip daddr @$nftset_whitelist counter return comment \"$remarks\""
nft "add rule inet fw4 PSW2_MANGLE ip protocol tcp ${_ipt_source} ip daddr @$nftset_whitelist counter return comment \"$remarks\""
[ "$accept_icmp" = "1" ] && {
nft "add rule inet fw4 PSW2_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr $FAKE_IP $(REDIRECT) comment \"$remarks\""
nft "add rule inet fw4 PSW2_ICMP_REDIRECT ip protocol icmp ${_ipt_source} $(REDIRECT) comment \"$remarks\""
@ -267,14 +273,14 @@ load_acl() {
[ "$tcp_no_redir_ports" != "disable" ] && {
nft "add rule inet fw4 $nft_prerouting_chain ${_ipt_source} ip protocol tcp $(factor $tcp_no_redir_ports "tcp dport") counter return comment \"$remarks\""
nft "add rule inet fw4 PSW2_MANGLE_V6 comment ${_ipt_source} meta l4proto tcp tcp dport {$tcp_no_redir_ports} counter return comment \"$remarks\""
nft "add rule inet fw4 PSW2_MANGLE_V6 comment ${_ipt_source} meta l4proto tcp $(factor $tcp_no_redir_ports "tcp dport") counter return comment \"$remarks\""
msg2="${msg2}[$?]除${tcp_no_redir_ports}外的"
}
msg2="${msg2}所有端口"
if [ -z "${is_tproxy}" ]; then
nft "add rule inet fw4 PSW2_NAT ${_ipt_source} ip daddr $FAKE_IP $(REDIRECT $redir_port) comment \"$remarks\""
nft "add rule inet fw4 PSW2_NAT ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") $(REDIRECT $redir_port) comment \"$remarks\""
nft "add rule inet fw4 PSW2_NAT ip protocol tcp ${_ipt_source} ip daddr $FAKE_IP $(REDIRECT $redir_port) comment \"$remarks\""
nft "add rule inet fw4 PSW2_NAT ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") $(REDIRECT $redir_port) comment \"$remarks\""
else
nft "add rule inet fw4 PSW2_MANGLE ip protocol tcp ${_ipt_source} ip daddr $FAKE_IP counter jump PSW2_RULE comment \"$remarks\""
nft "add rule inet fw4 PSW2_MANGLE ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") counter jump PSW2_RULE comment \"$remarks\""
@ -282,6 +288,7 @@ load_acl() {
fi
[ "$PROXY_IPV6" == "1" ] && {
nft "add rule inet fw4 PSW2_MANGLE_V6 meta l4proto tcp ${_ipt_source} ip6 daddr @$nftset_whitelist6 counter return comment \"$remarks\""
nft "add rule inet fw4 PSW2_MANGLE_V6 meta l4proto tcp ${_ipt_source} ip6 daddr $FAKE_IP_6 counter jump PSW2_RULE comment \"$remarks\""
nft "add rule inet fw4 PSW2_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") jump PSW2_RULE comment \"$remarks\"" 2>/dev/null
nft "add rule inet fw4 PSW2_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(REDIRECT $redir_port TPROXY) comment \"$remarks\"" 2>/dev/null
@ -306,11 +313,13 @@ load_acl() {
}
msg2="${msg2}所有端口"
nft "add rule inet fw4 PSW2_MANGLE ip protocol udp ${_ipt_source} ip daddr @$nftset_whitelist counter return comment \"$remarks\""
nft "add rule inet fw4 PSW2_MANGLE ip protocol udp ${_ipt_source} ip daddr $FAKE_IP counter jump PSW2_RULE comment \"$remarks\""
nft "add rule inet fw4 PSW2_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") jump PSW2_RULE comment \"$remarks\""
nft "add rule inet fw4 PSW2_MANGLE ip protocol udp ${_ipt_source} $(REDIRECT $redir_port TPROXY4) comment \"$remarks\""
[ "$PROXY_IPV6" == "1" ] && [ "$PROXY_IPV6_UDP" == "1" ] && {
nft "add rule inet fw4 PSW2_MANGLE_V6 meta l4proto udp ${_ipt_source} ip6 daddr @$nftset_whitelist6 counter return comment \"$remarks\""
nft "add rule inet fw4 PSW2_MANGLE_V6 meta l4proto udp ${_ipt_source} ip6 daddr $FAKE_IP_6 counter jump PSW2_RULE comment \"$remarks\""
nft "add rule inet fw4 PSW2_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") counter jump PSW2_RULE comment \"$remarks\"" 2>/dev/null
nft "add rule inet fw4 PSW2_MANGLE_V6 meta l4proto udp ${_ipt_source} $(REDIRECT $redir_port TPROXY) comment \"$remarks\"" 2>/dev/null
@ -346,7 +355,10 @@ load_acl() {
[ "$TCP_NO_REDIR_PORTS" != "disable" ] && msg="${msg}${TCP_NO_REDIR_PORTS}外的"
msg="${msg}所有端口"
nft "add rule inet fw4 PSW2_NAT ip protocol tcp ip daddr @$nftset_global_whitelist counter return comment \"$remarks\""
nft "add rule inet fw4 PSW2_MANGLE ip protocol tcp ip daddr @$nftset_global_whitelist counter return comment \"$remarks\""
[ "$accept_icmp" = "1" ] && {
nft "add rule inet fw4 PSW2_ICMP_REDIRECT ip protocol icmp ip daddr $FAKE_IP $(REDIRECT) comment \"默认\""
nft "add rule inet fw4 PSW2_ICMP_REDIRECT ip protocol icmp $(REDIRECT) comment \"默认\""
@ -367,6 +379,7 @@ load_acl() {
fi
[ "$PROXY_IPV6" == "1" ] && {
nft "add rule inet fw4 PSW2_MANGLE_V6 meta l4proto tcp ip6 daddr @$nftset_global_whitelist6 counter return comment \"$remarks\""
nft "add rule inet fw4 PSW2_MANGLE_V6 meta l4proto tcp ip6 daddr $FAKE_IP_6 jump PSW2_RULE comment \"默认\""
nft "add rule inet fw4 PSW2_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") jump PSW2_RULE comment \"默认\""
nft "add rule inet fw4 PSW2_MANGLE_V6 meta l4proto tcp $(REDIRECT $REDIR_PORT TPROXY) comment \"默认\""
@ -389,11 +402,13 @@ load_acl() {
[ "$UDP_NO_REDIR_PORTS" != "disable" ] && msg="${msg}${UDP_NO_REDIR_PORTS}外的"
msg="${msg}所有端口"
nft "add rule inet fw4 PSW2_MANGLE ip protocol udp ip daddr @$nftset_global_whitelist counter return comment \"$remarks\""
nft "add rule inet fw4 PSW2_MANGLE ip protocol udp ip daddr $FAKE_IP counter jump PSW2_RULE comment \"默认\""
nft "add rule inet fw4 PSW2_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") jump PSW2_RULE comment \"默认\""
nft "add rule inet fw4 PSW2_MANGLE meta l4proto udp $(REDIRECT $REDIR_PORT TPROXY) comment \"默认\""
[ "$PROXY_IPV6" == "1" ] && [ "$PROXY_IPV6_UDP" == "1" ] && {
nft "add rule inet fw4 PSW2_MANGLE_V6 meta l4proto udp ip6 daddr @$nftset_global_whitelist6 counter return comment \"$remarks\""
nft "add rule inet fw4 PSW2_MANGLE_V6 meta l4proto udp ip6 daddr $FAKE_IP_6 jump PSW2_RULE comment \"默认\""
nft "add rule inet fw4 PSW2_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") jump PSW2_RULE comment \"默认\""
nft "add rule inet fw4 PSW2_MANGLE_V6 meta l4proto udp $(REDIRECT $REDIR_PORT TPROXY) comment \"默认\""
@ -540,11 +555,9 @@ add_firewall_rule() {
echolog "开始加载防火墙规则..."
gen_nftset $NFTSET_LANLIST ipv4_addr $(gen_lanlist)
gen_nftset $NFTSET_VPSLIST ipv4_addr
gen_nftset $NFTSET_WHITELIST ipv4_addr
gen_nftset $NFTSET_LANLIST6 ipv6_addr $(gen_lanlist_6)
gen_nftset $NFTSET_VPSLIST6 ipv6_addr
gen_nftset $NFTSET_WHITELIST6 ipv6_addr
# 忽略特殊IP段
local lan_ifname lan_ip
@ -562,7 +575,7 @@ add_firewall_rule() {
[ -n "$ISP_DNS" ] && {
#echolog "处理 ISP DNS 例外..."
for ispip in $ISP_DNS; do
insert_nftset $NFTSET_WHITELIST $ispip >/dev/null 2>&1 &
insert_nftset $NFTSET_LANLIST $ispip >/dev/null 2>&1 &
#echolog " - 追加到白名单:${ispip}"
done
}
@ -570,10 +583,15 @@ add_firewall_rule() {
[ -n "$ISP_DNS6" ] && {
#echolog "处理 ISP IPv6 DNS 例外..."
for ispip6 in $ISP_DNS6; do
insert_nftset $NFTSET_WHITELIST6 $ispip6 >/dev/null 2>&1 &
insert_nftset $NFTSET_LANLIST6 $ispip6 >/dev/null 2>&1 &
#echolog " - 追加到白名单:${ispip6}"
done
}
local nftset_global_whitelist="passwall2_global_whitelist"
local nftset_global_whitelist6="passwall2_global_whitelist6"
gen_nftset $nftset_global_whitelist ipv4_addr
gen_nftset $nftset_global_whitelist6 ipv6_addr
# 过滤所有节点IP
filter_vpsip > /dev/null 2>&1 &
@ -619,13 +637,12 @@ add_firewall_rule() {
nft "flush chain inet fw4 PSW2_MANGLE"
nft "add rule inet fw4 PSW2_MANGLE ip daddr @$NFTSET_LANLIST counter return"
nft "add rule inet fw4 PSW2_MANGLE ip daddr @$NFTSET_VPSLIST counter return"
nft "add rule inet fw4 PSW2_MANGLE ip daddr @$NFTSET_WHITELIST counter return"
nft "add chain inet fw4 PSW2_OUTPUT_MANGLE"
nft "flush chain inet fw4 PSW2_OUTPUT_MANGLE"
nft "add rule inet fw4 PSW2_OUTPUT_MANGLE ip daddr @$NFTSET_LANLIST counter return"
nft "add rule inet fw4 PSW2_OUTPUT_MANGLE ip daddr @$NFTSET_VPSLIST counter return"
nft "add rule inet fw4 PSW2_OUTPUT_MANGLE ip daddr @$NFTSET_WHITELIST counter return"
nft "add rule inet fw4 PSW2_OUTPUT_MANGLE ip daddr @$nftset_global_whitelist counter return"
nft "add rule inet fw4 PSW2_OUTPUT_MANGLE meta mark 0xff counter return"
# jump chains
@ -638,14 +655,13 @@ add_firewall_rule() {
nft "flush chain inet fw4 PSW2_NAT"
nft "add rule inet fw4 PSW2_NAT ip daddr @$NFTSET_LANLIST counter return"
nft "add rule inet fw4 PSW2_NAT ip daddr @$NFTSET_VPSLIST counter return"
nft "add rule inet fw4 PSW2_NAT ip daddr @$NFTSET_WHITELIST counter return"
nft "add rule inet fw4 dstnat ip protocol tcp counter jump PSW2_NAT"
nft "add chain inet fw4 PSW2_OUTPUT_NAT"
nft "flush chain inet fw4 PSW2_OUTPUT_NAT"
nft "add rule inet fw4 PSW2_OUTPUT_NAT ip daddr @$NFTSET_LANLIST counter return"
nft "add rule inet fw4 PSW2_OUTPUT_NAT ip daddr @$NFTSET_VPSLIST counter return"
nft "add rule inet fw4 PSW2_OUTPUT_NAT ip daddr @$NFTSET_WHITELIST counter return"
nft "add rule inet fw4 PSW2_OUTPUT_NAT ip daddr @$nftset_global_whitelist counter return"
nft "add rule inet fw4 PSW2_OUTPUT_NAT meta mark 0xff counter return"
}
@ -655,12 +671,10 @@ add_firewall_rule() {
nft "flush chain inet fw4 PSW2_ICMP_REDIRECT"
nft "add rule inet fw4 PSW2_ICMP_REDIRECT ip daddr @$NFTSET_LANLIST counter return"
nft "add rule inet fw4 PSW2_ICMP_REDIRECT ip daddr @$NFTSET_VPSLIST counter return"
nft "add rule inet fw4 PSW2_ICMP_REDIRECT ip daddr @$NFTSET_WHITELIST counter return"
[ "$accept_icmpv6" = "1" ] && {
nft "add rule inet fw4 PSW2_ICMP_REDIRECT ip6 daddr @$NFTSET_LANLIST6 counter return"
nft "add rule inet fw4 PSW2_ICMP_REDIRECT ip6 daddr @$NFTSET_VPSLIST6 counter return"
nft "add rule inet fw4 PSW2_ICMP_REDIRECT ip6 daddr @$NFTSET_WHITELIST6 counter return"
}
nft "add rule inet fw4 dstnat meta l4proto {icmp,icmpv6} counter jump PSW2_ICMP_REDIRECT"
@ -681,13 +695,13 @@ add_firewall_rule() {
nft "flush chain inet fw4 PSW2_MANGLE_V6"
nft "add rule inet fw4 PSW2_MANGLE_V6 ip6 daddr @$NFTSET_LANLIST6 counter return"
nft "add rule inet fw4 PSW2_MANGLE_V6 ip6 daddr @$NFTSET_VPSLIST6 counter return"
nft "add rule inet fw4 PSW2_MANGLE_V6 ip6 daddr @$NFTSET_WHITELIST6 counter return"
nft "add rule inet fw4 PSW2_MANGLE_V6 ip6 daddr @$nftset_global_whitelist6 counter return"
nft "add chain inet fw4 PSW2_OUTPUT_MANGLE_V6"
nft "flush chain inet fw4 PSW2_OUTPUT_MANGLE_V6"
nft "add rule inet fw4 PSW2_OUTPUT_MANGLE_V6 ip6 daddr @$NFTSET_LANLIST6 counter return"
nft "add rule inet fw4 PSW2_OUTPUT_MANGLE_V6 ip6 daddr @$NFTSET_VPSLIST6 counter return"
nft "add rule inet fw4 PSW2_OUTPUT_MANGLE_V6 ip6 daddr @$NFTSET_WHITELIST6 counter return"
nft "add rule inet fw4 PSW2_OUTPUT_MANGLE_V6 ip6 daddr @$nftset_global_whitelist6 counter return"
nft "add rule inet fw4 PSW2_OUTPUT_MANGLE_V6 meta mark 0xff counter return"
# jump chains
@ -767,8 +781,8 @@ add_firewall_rule() {
nft "add rule inet fw4 PSW2_MANGLE_V6 meta l4proto tcp iif lo $(REDIRECT $REDIR_PORT TPROXY) comment \"本机\""
nft "add rule inet fw4 PSW2_MANGLE_V6 meta l4proto tcp iif lo counter return comment \"本机\""
}
for iface in $IFACES; do
for iface in $(ls ${TMP_IFACE_PATH}); do
nft "insert rule inet fw4 $nft_output_chain ip protocol tcp oif $iface counter return"
nft "insert rule inet fw4 PSW2_OUTPUT_MANGLE_V6 ip protocol tcp oif $iface counter return"
done
@ -800,8 +814,8 @@ add_firewall_rule() {
nft "add rule inet fw4 PSW2_MANGLE_V6 meta l4proto udp iif lo $(REDIRECT $REDIR_PORT TPROXY) comment \"本机\""
nft "add rule inet fw4 PSW2_MANGLE_V6 meta l4proto udp iif lo counter return comment \"本机\""
fi
for iface in $IFACES; do
for iface in $(ls ${TMP_IFACE_PATH}); do
nft "insert rule inet fw4 $nft_output_chain ip protocol udp oif $iface counter return"
nft "insert rule inet fw4 PSW2_OUTPUT_MANGLE_V6 ip protocol udp oif $iface counter return"
done
@ -853,19 +867,20 @@ del_firewall_rule() {
destroy_nftset $NFTSET_LANLIST
destroy_nftset $NFTSET_VPSLIST
destroy_nftset $NFTSET_WHITELIST
destroy_nftset $NFTSET_LANLIST6
destroy_nftset $NFTSET_VPSLIST6
destroy_nftset $NFTSET_WHITELIST6
$DIR/app.sh echolog "删除相关防火墙规则完成。"
}
flush_nftset() {
del_firewall_rule
destroy_nftset $NFTSET_VPSLIST $NFTSET_WHITELIST $NFTSET_LANLIST
destroy_nftset $NFTSET_VPSLIST6 $NFTSET_WHITELIST6 $NFTSET_LANLIST6
destroy_nftset $NFTSET_VPSLIST $NFTSET_LANLIST
destroy_nftset $NFTSET_VPSLIST6 $NFTSET_LANLIST6
for _name in $(nft -a list sets | grep -E "passwall2" | awk -F 'set ' '{print $2}' | awk '{print $1}'); do
destroy_nftset ${_name}
done
/etc/init.d/passwall2 reload
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -254,15 +254,16 @@ return view.extend({
s.addremove = false;
s.tab('general', _('General Settings'));
s.tab('relay', _('Relay'));
s.tab('files', _('Resolv and Hosts Files'));
s.tab('pxe_tftp', _('PXE/TFTP Settings'));
s.tab('advanced', _('Advanced Settings'));
s.tab('leases', _('Static Leases'));
s.tab('files', _('Resolv and Hosts Files'));
s.tab('hosts', _('Hostnames'));
s.tab('ipsets', _('IP Sets'));
s.tab('relay', _('Relay'));
s.tab('srvhosts', _('SRV'));
s.tab('mxhosts', _('MX'));
s.tab('ipsets', _('IP Sets'));
s.tab('cnamehosts', _('CNAME'));
s.tab('pxe_tftp', _('PXE/TFTP Settings'));
s.tab('custom_domain', _('Custom Redirect Domain'));
o = s.taboption('custom_domain', form.SectionValue, 'domain', form.GridSection, 'domain', null,
@ -465,7 +466,7 @@ return view.extend({
_('Disable IPv6 DNS forwards'),
_('Filter IPv6(AAAA) DNS Query Name Resolve'));
o.optional = true;
o = s.taboption('advanced', form.Flag, 'quietdhcp',
_('Suppress logging'),
_('Suppress logging of the routine operation for the DHCP protocol.'));
@ -591,7 +592,7 @@ return view.extend({
o.optional = true;
o.datatype = 'range(0,86400)';
o.placeholder = 0;
o = s.taboption('pxe_tftp', form.Flag, 'enable_tftp',
_('Enable TFTP server'),
_('Enable the built-in single-instance TFTP server.'));
@ -729,6 +730,27 @@ return view.extend({
so.datatype = 'range(0,65535)';
so.placeholder = '0';
o = s.taboption('cnamehosts', form.SectionValue, '__cname__', form.TableSection, 'cname', null,
_('Set an alias for a hostname.'));
ss = o.subsection;
ss.addremove = true;
ss.anonymous = true;
ss.sortable = true;
ss.rowcolors = true;
ss.nodescriptions = true;
so = ss.option(form.Value, 'cname', _('Domain'));
so.rmempty = false;
so.datatype = 'hostname';
so.placeholder = 'www.example.com';
so = ss.option(form.Value, 'target', _('Target'));
so.rmempty = false;
so.datatype = 'hostname';
so.placeholder = 'example.com';
o = s.taboption('hosts', form.SectionValue, '__hosts__', form.GridSection, 'domain', null,
_('Hostnames are used to bind a domain name to an IP address. This setting is redundant for hostnames already configured with static leases, but it can be useful to rebind an FQDN.'));

View File

@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=microsocks
PKG_VERSION:=1.0.3
PKG_RELEASE:=32
PKG_RELEASE:=34
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/rofl0r/microsocks/tar.gz/v$(PKG_VERSION)?

View File

@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=modeminfo
PKG_VERSION:=0.3.3
PKG_RELEASE:=26
PKG_RELEASE:=27
PKG_MAINTAINER:=Konstantine Shevlakov <shevlakov@132lan.ru>
include $(INCLUDE_DIR)/package.mk

View File

@ -61,6 +61,10 @@
40102;KCell
40107;Altel
40108;Kazakhtelecom
43404;Beeline
43405;Ucell
43407;MobiUz
43408;Uzmobile
43701;Beeline
43703;Fonex
43705;MegaCom

View File

@ -30,6 +30,7 @@ function modem_data(){
ENBx=$(echo $CID | sed -e 's/..$//')
ENBID=$(printf %d 0x$ENBx)
CELL=$(printf %d 0x${CID: -2})
CSQ_RSSI=$(echo "$DATA" | awk -F [:,] '/\+ZRSSI/{print $4}')
RSRQ=$(echo "$DATA" | awk -F [:,] '/\+ZRSSI/{print $3}')
RSRP=$(echo "$DATA" | awk -F [:,] '/\+ZRSSI/{print $2}')
SINR=$(echo "$DATA" | awk -F [:,] '/\+ZRSSI/{printf "%.0f\n", $5}')
@ -41,6 +42,7 @@ function modem_data(){
SINR=$(echo "$DATA" | awk -F [:,] '/\+ZRSSI/{printf "%.0f\n", $3}')
;;
0|1|3)
CSQ_RSSI=$(echo "$DATA" | awk -F [:,] '/\+ZRSSI/{print $2}')
LAC=$(echo "$DATA" | awk -F [:,] '/\+CGREG/{gsub("\"","");print $4}')
CID=$(echo "$DATA" | awk -F [:,] '/\+CGREG/{gsub("\"","");print $5}')
EARFCN=$(echo "$DATA" | awk -F [:,] '/\+ZCELLINFO/{print $4}')

View File

@ -10,7 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=my-default-settings
PKG_VERSION:=1
PKG_RELEASE:=206
PKG_RELEASE:=208
include $(INCLUDE_DIR)/package.mk

View File

@ -125,7 +125,7 @@ if [[ ! "$version" || "$version" -lt 1 ]]; then
fi
}
if [ -f /etc/config/wireless ]; then
if [[ -f /etc/config/wireless ]]; then
SSID=${hostname}
SSID_PASSWD=""
[ "$(uci -q get wireless.radio1.band)" == "5g" ] && uci -q set wireless.radio0.band="2g"

View File

@ -10,8 +10,8 @@ include $(TOPDIR)/rules.mk
PKG_ARCH_quickstart:=$(ARCH)
PKG_NAME:=quickstart
PKG_VERSION:=0.7.12
PKG_RELEASE:=60
PKG_VERSION:=0.7.13
PKG_RELEASE:=61
PKG_SOURCE:=$(PKG_NAME)-binary-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/linkease/istore-packages/releases/download/prebuilt/
PKG_HASH:=skip

View File

@ -6,8 +6,8 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=sing-box
PKG_VERSION:=1.3.5
PKG_RELEASE:=51
PKG_VERSION:=1.3.6
PKG_RELEASE:=52
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/SagerNet/sing-box/tar.gz/v$(PKG_VERSION)?

View File

@ -5,8 +5,8 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=v2rayA
PKG_VERSION:=2.1.0
PKG_RELEASE:=237
PKG_VERSION:=2.1.1
PKG_RELEASE:=238
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/v2rayA/v2rayA/tar.gz/v$(PKG_VERSION)?
@ -59,7 +59,7 @@ define Download/v2raya-web
URL:=https://codeload.github.com/v2rayA/v2raya-web/tar.gz/v$(PKG_VERSION)?
URL_FILE:=$(WEB_FILE)
FILE:=$(WEB_FILE)
HASH:=5fbd8298316167d16aa15b9e8d48c243623cf3a8cfd9b3d36590c35948a93912
HASH:=d1293a94a41c3726880d7a230db2be399245fecdbcf98d9dde9bb414b4ec1e19
endef
define Build/Prepare