diff --git a/aliyundrive-fuse/Makefile b/aliyundrive-fuse/Makefile
index 5f39ec2ad..d7fbcfd52 100644
--- a/aliyundrive-fuse/Makefile
+++ b/aliyundrive-fuse/Makefile
@@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=aliyundrive-fuse
-PKG_VERSION:=0.1.8
+PKG_VERSION:=0.1.9
PKG_RELEASE:=$(AUTORELEASE)
PKG_LICENSE:=MIT
diff --git a/dat/geoip.dat b/dat/geoip.dat
index aa7e7cb8a..858cc0cf4 100644
Binary files a/dat/geoip.dat and b/dat/geoip.dat differ
diff --git a/luci-app-aliyundrive-fuse/Makefile b/luci-app-aliyundrive-fuse/Makefile
index 6c4438673..03820f73f 100644
--- a/luci-app-aliyundrive-fuse/Makefile
+++ b/luci-app-aliyundrive-fuse/Makefile
@@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-aliyundrive-fuse
-PKG_VERSION:=0.1.8
+PKG_VERSION:=0.1.9
PKG_RELEASE:=1
PKG_PO_VERSION:=$(PKG_VERSION)-$(PKG_RELEASE)
diff --git a/luci-app-passwall2/Makefile b/luci-app-passwall2/Makefile
index d5a292a5b..dac48ab0e 100644
--- a/luci-app-passwall2/Makefile
+++ b/luci-app-passwall2/Makefile
@@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-passwall2
PKG_VERSION:=1.2
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_CONFIG_DEPENDS:= \
CONFIG_PACKAGE_$(PKG_NAME)_Transparent_Proxy \
diff --git a/luci-app-passwall2/luasrc/controller/passwall2.lua b/luci-app-passwall2/luasrc/controller/passwall2.lua
index 94c4ed66a..6d41f6ec1 100644
--- a/luci-app-passwall2/luasrc/controller/passwall2.lua
+++ b/luci-app-passwall2/luasrc/controller/passwall2.lua
@@ -163,7 +163,7 @@ end
function status()
local e = {}
- e["global_status"] = luci.sys.call(string.format("top -bn1 | grep -v -E 'grep|acl/|acl_' | grep '%s/bin/' | grep -i 'global' >/dev/null", appname)) == 0
+ e["global_status"] = luci.sys.call(string.format("top -bn1 | grep -v -E 'grep|acl/|acl_' | grep '%s/bin/' | grep -i 'global\\.json' >/dev/null", appname)) == 0
luci.http.prepare_content("application/json")
luci.http.write_json(e)
end
diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/api/gen_v2ray.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/api/gen_v2ray.lua
index 71502ff38..81db3f09a 100644
--- a/luci-app-passwall2/luasrc/model/cbi/passwall2/api/gen_v2ray.lua
+++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/api/gen_v2ray.lua
@@ -464,17 +464,17 @@ if true then
local source = nil
if e.source then
source = {}
- string.gsub(e.source, '[^' .. "\r\n" .. ']+', function(w)
+ string.gsub(e.source, '[^' .. " " .. ']+', function(w)
table.insert(source, w)
end)
end
local rule = {
type = "field",
outboundTag = outboundTag,
- network = e["network"],
+ network = e["network"] or "tcp,udp",
source = source,
- sourcePort = e["sourcePort"] and e["sourcePort"] ~= "",
- port = e["port"] and e["port"] ~= "",
+ sourcePort = e["sourcePort"] ~= "" and e["sourcePort"] or nil,
+ port = e["port"] ~= "" and e["port"] or nil,
protocol = protocols
}
if domains then
diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/shunt_rules.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/shunt_rules.lua
index d47712eda..0488c42cf 100644
--- a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/shunt_rules.lua
+++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/shunt_rules.lua
@@ -23,8 +23,75 @@ network:value("tcp,udp", "TCP UDP")
network:value("tcp", "TCP")
network:value("udp", "UDP")
-source = s:option(TextValue, "source", translate("Source"))
-source.wrap = "off"
+source = s:option(DynamicList, "source", translate("Source"))
+source.description = "
- " .. translate("Example:")
+.. "
- " .. translate("IP") .. ": 192.168.1.100"
+.. "
- " .. translate("IP CIDR") .. ": 192.168.1.0/24"
+.. "
- " .. translate("GeoIP") .. ": geoip:private"
+.. "
"
+source.cast = "string"
+source.cfgvalue = function(self, section)
+ local value
+ if self.tag_error[section] then
+ value = self:formvalue(section)
+ else
+ value = self.map:get(section, self.option)
+ if type(value) == "string" then
+ local value2 = {}
+ string.gsub(value, '[^' .. " " .. ']+', function(w) table.insert(value2, w) end)
+ value = value2
+ end
+ end
+ return value
+end
+source.validate = function(self, value, t)
+ local err = {}
+ for _, v in ipairs(value) do
+ local flag = false
+ if datatypes.ip4addr(v) then
+ flag = true
+ end
+
+ if flag == false and v:find("geoip:") and v:find("geoip:") == 1 then
+ flag = true
+ end
+
+ if flag == false then
+ err[#err + 1] = v
+ end
+ end
+
+ if #err > 0 then
+ self:add_error(t, "invalid", translate("Not true format, please re-enter!"))
+ for _, v in ipairs(err) do
+ self:add_error(t, "invalid", v)
+ end
+ end
+
+ return value
+end
+
+local dynamicList_write = function(self, section, value)
+ local t = {}
+ local t2 = {}
+ if type(value) == "table" then
+ local x
+ for _, x in ipairs(value) do
+ if x and #x > 0 then
+ if not t2[x] then
+ t2[x] = x
+ t[#t+1] = x
+ end
+ end
+ end
+ else
+ t = { value }
+ end
+ t = table.concat(t, " ")
+ return DynamicList.write(self, section, t)
+end
+
+source.write = dynamicList_write
sourcePort = s:option(Value, "sourcePort", translate("Source port"))
diff --git a/luci-app-passwall2/root/usr/share/passwall2/0_default_config b/luci-app-passwall2/root/usr/share/passwall2/0_default_config
index f12275496..bbf73b488 100644
--- a/luci-app-passwall2/root/usr/share/passwall2/0_default_config
+++ b/luci-app-passwall2/root/usr/share/passwall2/0_default_config
@@ -57,15 +57,17 @@ config nodes 'myshunt'
option remarks '分流总节点'
option type 'Xray'
option protocol '_shunt'
- option AD 'nil'
- option BT '_direct'
- option TVB 'nil'
- option China '_direct'
- option default_node 'nil'
option LAN '_direct'
option Direct '_direct'
- option Proxy '_default'
+ option AD 'nil'
+ option BT '_direct'
option Netflix 'nil'
+ option TVB 'nil'
+ option Proxy '_default'
+ option China '_direct'
+ option QUIC '_blackhole'
+ option UDP 'nil'
+ option default_node 'nil'
option domainStrategy 'IPOnDemand'
option domainMatcher 'hybrid'
@@ -194,4 +196,12 @@ config shunt_rules 'China'
option network 'tcp,udp'
option ip_list 'geoip:cn'
option domain_list 'geosite:cn'
-
+
+config shunt_rules 'QUIC'
+ option remarks 'QUIC'
+ option port '80,443'
+ option network 'udp'
+
+config shunt_rules 'UDP'
+ option remarks 'UDP'
+ option network 'udp'
diff --git a/luci-theme-neobird/README.md b/luci-theme-neobird/README.md
index 15d97cb5b..90c1e7fd3 100644
--- a/luci-theme-neobird/README.md
+++ b/luci-theme-neobird/README.md
@@ -1,6 +1,9 @@
# luci-theme-neobird
## 针对移动端优化的Openwrt主题
+For Lean's OpenWRT Only
+https://github.com/coolsnowwolf/lede
+
六年前用OP,随手把luci-theme-material改成了自己喜欢的Advancedtomato样式
因为用了很短时间便没再用OP了,主题也没再管。
后来便有了lede固件默认使用material主题的修改版做主题,包括今天的luci-theme-netgear和luci-theme-argon还是我的思路,不过都不是我喜欢的样子。
diff --git a/mosdns/Makefile b/mosdns/Makefile
index fcf5e2707..c6839d643 100644
--- a/mosdns/Makefile
+++ b/mosdns/Makefile
@@ -5,7 +5,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=mosdns
-PKG_VERSION:=c840d4a
+PKG_VERSION:=b9a9292
PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
diff --git a/natflow/Makefile b/natflow/Makefile
index 3ffb6eead..c917b22b1 100644
--- a/natflow/Makefile
+++ b/natflow/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=natflow
-PKG_VERSION:=20220406
+PKG_VERSION:=20220407
PKG_SOURCE_URL:=https://codeload.github.com/ptpt52/natflow/tar.gz/$(PKG_VERSION)?
PKG_HASH:=skip