Compare commits

..
3 Commits
Author SHA1 Message Date
action fcd7d31b29 update 2026-09-14 17:28:54 2026-09-14 17:28:54 +08:00
action 87faec277a update 2026-09-14 10:58:48 2026-09-14 10:58:48 +08:00
action d341a782d4 update 2026-09-14 06:01:57 2026-09-14 06:01:57 +08:00
25 changed files with 117 additions and 127 deletions
+4 -4
View File
@@ -1,8 +1,8 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=clashoo PKG_NAME:=clashoo
PKG_SHORT_SHA:=dca26db PKG_SHORT_SHA:=dc66a8a
PKG_COMMIT_DATE:=2026.09.11 PKG_COMMIT_DATE:=2026.09.14
PKG_VERSION:=$(PKG_COMMIT_DATE)~$(PKG_SHORT_SHA) PKG_VERSION:=$(PKG_COMMIT_DATE)~$(PKG_SHORT_SHA)
PKG_RELEASE:=1 PKG_RELEASE:=1
@@ -11,8 +11,8 @@ PKG_SOURCE:=$(PKG_NAME)-alpha-$(PKG_SHORT_SHA).tar.gz
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-alpha-$(PKG_SHORT_SHA) PKG_SOURCE_SUBDIR:=$(PKG_NAME)-alpha-$(PKG_SHORT_SHA)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-alpha-$(PKG_SHORT_SHA) PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-alpha-$(PKG_SHORT_SHA)
PKG_SOURCE_URL:=https://github.com/kenzok8/openwrt-clashoo/releases/download/mihomo-src PKG_SOURCE_URL:=https://github.com/kenzok8/openwrt-clashoo/releases/download/mihomo-src
PKG_SOURCE_VERSION:=dca26db017bcde90071f3e16f97b12fafbccfa31 PKG_SOURCE_VERSION:=dc66a8a180c0fa1c2b91cf5413426e68dbca320e
PKG_HASH:=593e53b3aeb52bbd3f49ddf4ae7773ce340bf2e984a9d5634a6385fa3041b5a2 PKG_HASH:=e7003359dc55a62a6f31b45f9123fc14a0a58f66c8cc4a3514ab15e94f08008b
PKG_BUILD_VERSION:=alpha-$(PKG_SHORT_SHA) PKG_BUILD_VERSION:=alpha-$(PKG_SHORT_SHA)
PKG_LICENSE:=GPL3.0+ PKG_LICENSE:=GPL3.0+
@@ -939,6 +939,7 @@ set clashoo_china6 {
2402:7240::/32, 2402:7240::/32,
2402:72a0::/32, 2402:72a0::/32,
2402:72c0::/32, 2402:72c0::/32,
2402:73e0::/32,
2402:7540::/32, 2402:7540::/32,
2402:75c0::/32, 2402:75c0::/32,
2402:7740::/32, 2402:7740::/32,
@@ -1246,11 +1247,12 @@ set clashoo_china6 {
2403:6280::/32, 2403:6280::/32,
2403:62c0::/32, 2403:62c0::/32,
2403:6380::/42, 2403:6380::/42,
2403:6380:41::/48,
2403:6380:43::/48, 2403:6380:43::/48,
2403:6380:44::/46, 2403:6380:44::/46,
2403:6380:48::/45, 2403:6380:48::/45,
2403:6380:50::/44, 2403:6380:50::/44,
2403:6380:70::/44, 2403:6380:60::/43,
2403:6380:80::/41, 2403:6380:80::/41,
2403:6380:100::/40, 2403:6380:100::/40,
2403:6380:200::/39, 2403:6380:200::/39,
@@ -2036,7 +2038,7 @@ set clashoo_china6 {
2406:840:a18::/45, 2406:840:a18::/45,
2406:840:a20::/44, 2406:840:a20::/44,
2406:840:a30::/48, 2406:840:a30::/48,
2406:840:a32::/47, 2406:840:a33::/48,
2406:840:a34::/46, 2406:840:a34::/46,
2406:840:a38::/45, 2406:840:a38::/45,
2406:840:a40::/42, 2406:840:a40::/42,
@@ -2337,7 +2339,10 @@ set clashoo_china6 {
2406:840:e57f::/48, 2406:840:e57f::/48,
2406:840:e580::/41, 2406:840:e580::/41,
2406:840:e610::/44, 2406:840:e610::/44,
2406:840:e620::/43, 2406:840:e622::/47,
2406:840:e624::/46,
2406:840:e628::/45,
2406:840:e630::/44,
2406:840:e640::/43, 2406:840:e640::/43,
2406:840:e660::/46, 2406:840:e660::/46,
2406:840:e664::/47, 2406:840:e664::/47,
@@ -2448,6 +2453,10 @@ set clashoo_china6 {
2406:840:f600::/42, 2406:840:f600::/42,
2406:840:f640::/43, 2406:840:f640::/43,
2406:840:f670::/44, 2406:840:f670::/44,
2406:840:f680::/47,
2406:840:f682::/48,
2406:840:f684::/46,
2406:840:f688::/45,
2406:840:f690::/44, 2406:840:f690::/44,
2406:840:f6a0::/43, 2406:840:f6a0::/43,
2406:840:f6c0::/42, 2406:840:f6c0::/42,
@@ -3039,7 +3048,6 @@ set clashoo_china6 {
2408:4008::/29, 2408:4008::/29,
2408:4010::/30, 2408:4010::/30,
2408:4014::/31, 2408:4014::/31,
2408:4016:1::/48,
2408:4016:2::/47, 2408:4016:2::/47,
2408:4016:4::/46, 2408:4016:4::/46,
2408:4016:8::/45, 2408:4016:8::/45,
@@ -920,7 +920,9 @@ set clashoo_china {
59.153.136.0/22, 59.153.136.0/22,
59.153.152.0/22, 59.153.152.0/22,
59.153.164.0/22, 59.153.164.0/22,
59.153.168.0/21, 59.153.168.0/22,
59.153.173.0/24,
59.153.174.0/23,
59.153.176.0/20, 59.153.176.0/20,
59.153.192.0/22, 59.153.192.0/22,
59.155.0.0/16, 59.155.0.0/16,
@@ -951,6 +953,7 @@ set clashoo_china {
61.29.128.0/18, 61.29.128.0/18,
61.29.192.0/19, 61.29.192.0/19,
61.29.224.0/20, 61.29.224.0/20,
61.29.251.0/24,
61.45.128.0/18, 61.45.128.0/18,
61.45.224.0/20, 61.45.224.0/20,
61.47.128.0/18, 61.47.128.0/18,
@@ -2186,6 +2189,7 @@ set clashoo_china {
103.143.132.0/22, 103.143.132.0/22,
103.143.174.0/23, 103.143.174.0/23,
103.143.228.0/23, 103.143.228.0/23,
103.144.41.0/24,
103.144.66.0/23, 103.144.66.0/23,
103.144.70.0/23, 103.144.70.0/23,
103.144.72.0/23, 103.144.72.0/23,
@@ -2341,7 +2345,7 @@ set clashoo_china {
103.176.244.0/23, 103.176.244.0/23,
103.177.28.0/23, 103.177.28.0/23,
103.177.44.0/23, 103.177.44.0/23,
103.177.70.0/23, 103.177.71.0/24,
103.177.162.0/23, 103.177.162.0/23,
103.178.240.0/23, 103.178.240.0/23,
103.179.76.0/22, 103.179.76.0/22,
@@ -2754,6 +2758,7 @@ set clashoo_china {
103.238.24.0/21, 103.238.24.0/21,
103.238.32.0/21, 103.238.32.0/21,
103.238.40.0/22, 103.238.40.0/22,
103.238.46.0/23,
103.238.48.0/21, 103.238.48.0/21,
103.238.56.0/22, 103.238.56.0/22,
103.238.88.0/21, 103.238.88.0/21,
@@ -3224,7 +3229,10 @@ set clashoo_china {
114.112.228.0/24, 114.112.228.0/24,
114.112.230.0/23, 114.112.230.0/23,
114.112.234.0/23, 114.112.234.0/23,
114.112.240.0/20, 114.112.240.0/21,
114.112.248.0/22,
114.112.252.0/23,
114.112.255.0/24,
114.113.0.0/17, 114.113.0.0/17,
114.113.128.0/21, 114.113.128.0/21,
114.113.140.0/22, 114.113.140.0/22,
@@ -3394,7 +3402,9 @@ set clashoo_china {
117.134.128.0/18, 117.134.128.0/18,
117.134.205.0/24, 117.134.205.0/24,
117.134.207.0/24, 117.134.207.0/24,
117.134.208.0/20, 117.134.208.0/23,
117.134.212.0/23,
117.134.216.0/21,
117.134.232.0/21, 117.134.232.0/21,
117.134.240.0/20, 117.134.240.0/20,
117.135.0.0/16, 117.135.0.0/16,
@@ -3746,7 +3756,6 @@ set clashoo_china {
123.49.236.0/24, 123.49.236.0/24,
123.49.240.0/24, 123.49.240.0/24,
123.49.242.0/23, 123.49.242.0/23,
123.49.245.0/24,
123.49.248.0/21, 123.49.248.0/21,
123.50.160.0/19, 123.50.160.0/19,
123.52.0.0/14, 123.52.0.0/14,
@@ -3981,7 +3990,14 @@ set clashoo_china {
140.179.0.0/16, 140.179.0.0/16,
140.205.0.0/16, 140.205.0.0/16,
140.206.0.0/15, 140.206.0.0/15,
140.210.0.0/16, 140.210.0.0/20,
140.210.16.0/21,
140.210.24.0/22,
140.210.28.0/23,
140.210.30.0/24,
140.210.32.0/19,
140.210.64.0/18,
140.210.128.0/17,
140.224.0.0/16, 140.224.0.0/16,
140.237.0.0/16, 140.237.0.0/16,
140.240.0.0/16, 140.240.0.0/16,
@@ -4214,6 +4230,7 @@ set clashoo_china {
163.47.4.0/22, 163.47.4.0/22,
163.52.28.0/23, 163.52.28.0/23,
163.52.76.0/23, 163.52.76.0/23,
163.52.108.0/23,
163.53.0.0/20, 163.53.0.0/20,
163.53.36.0/22, 163.53.36.0/22,
163.53.40.0/21, 163.53.40.0/21,
Binary file not shown.
Binary file not shown.
+4 -4
View File
@@ -5,13 +5,13 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=dae PKG_NAME:=dae
PKG_VERSION:=2026.09.06 PKG_VERSION:=2026.09.12
PKG_RELEASE:=2 PKG_RELEASE:=1
PKG_SOURCE:=dae-src-2026.09.06-80525dabf966.tar.gz PKG_SOURCE:=dae-src-2026.09.12-187058462a1f.tar.gz
PKG_SOURCE_URL:=https://github.com/kenzok8/openwrt-daede/releases/download/dae-src PKG_SOURCE_URL:=https://github.com/kenzok8/openwrt-daede/releases/download/dae-src
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_HASH:=80525dabf966403524f3eac4ca46bb520ae487177b77e4b7b4482d24c2aa923e PKG_HASH:=187058462a1fd9eeb9885f4971ccf4bc81358533e71730d8509bd7968624c1c7
PKG_LICENSE:=AGPL-3.0-only PKG_LICENSE:=AGPL-3.0-only
PKG_LICENSE_FILE:=LICENSE PKG_LICENSE_FILE:=LICENSE
+4 -4
View File
@@ -5,13 +5,13 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=daed PKG_NAME:=daed
PKG_VERSION:=2026.09.06 PKG_VERSION:=2026.09.12
PKG_RELEASE:=3 PKG_RELEASE:=1
PKG_SOURCE:=daed-src-2026.09.06-62f2e24ac52a.tar.gz PKG_SOURCE:=daed-src-2026.09.12-a0181f729855.tar.gz
PKG_SOURCE_URL:=https://github.com/kenzok8/openwrt-daede/releases/download/daed-src PKG_SOURCE_URL:=https://github.com/kenzok8/openwrt-daede/releases/download/daed-src
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_HASH:=62f2e24ac52a6897633d0a0ed43d5a2419164ae43fa26e5c6fe11b5fe973fa61 PKG_HASH:=a0181f7298552497ed193e683a54b1df77f2d5441524d61989f3e3e3cf6eac51
PKG_LICENSE:=AGPL-3.0-only MIT PKG_LICENSE:=AGPL-3.0-only MIT
PKG_LICENSE_FILES:=LICENSE wing/LICENSE PKG_LICENSE_FILES:=LICENSE wing/LICENSE
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 319 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 389 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 640 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 550 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 547 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 659 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 650 KiB

@@ -612,21 +612,46 @@ o:value("info", "Info")
o:value("warn", "Warning") o:value("warn", "Warning")
o:value("error", "Error") o:value("error", "Error")
o = s:taboption("log", Flag, "advanced_log_feature", translate("Advanced log feature"), translate("For professionals only.")) o = s:taboption("log", DummyValue, "_node_log", translate("Log File"))
o.default = "0" o.rawhtml = true
o = s:taboption("log", Flag, "sys_log", translate("Logging to system log"), translate("Logging to the system log for more advanced functions. For example, send logs to a dedicated log server.")) o.cfgvalue = function(t, n)
o:depends("advanced_log_feature", "1") local log_file = api.TMP_PATH .. "/acl/default/global.log"
o.default = "0" local log_url = api.url("get_redir_log") .. "?id=default"
o = s:taboption("log", Value, "persist_log_path", translate("Persist log file directory"), translate("The path to the directory used to store persist log files, the \"/\" at the end can be omitted. Leave it blank to disable this feature.")) local s = "<code>%s</code>&nbsp;&nbsp;" % log_file
o:depends({ ["advanced_log_feature"] = 1, ["sys_log"] = 0 }) if api.fs.access(log_file) then
o = s:taboption("log", Value, "log_event_filter", translate("Log Event Filter"), translate("Support regular expression.")) local btn = string.format(
o:depends("advanced_log_feature", "1") '<input class="btn cbi-button cbi-button-apply" type="button" value="%s" onclick="window.open(\'%s\', \'_blank\')" />',
o = s:taboption("log", Value, "log_event_cmd", translate("Shell Command"), translate("Shell command to execute, replace log content with %s.")) translate("View Log"),
o:depends("advanced_log_feature", "1") log_url
)
s = s .. btn
end
return s
end
o:depends("log_node", "1")
o = s:taboption("log", Flag, "log_chinadns_ng", translate("Enable") .. " ChinaDNS-NG " .. translate("Log")) o = s:taboption("log", Flag, "log_chinadns_ng", translate("Enable") .. " ChinaDNS-NG " .. translate("Log"))
o.default = "0" o.default = "0"
o.rmempty = false o.rmempty = false
o:depends("dns_shunt", "chinadns-ng")
o = s:taboption("log", DummyValue, "_chinadns_ng_log", translate("Log File"))
o.rawhtml = true
o.cfgvalue = function(t, n)
local log_file = api.TMP_PATH .. "/acl/default/chinadns_ng.log"
local log_url = api.url("get_chinadns_log") .. "?flag=default"
local s = "<code>%s</code>&nbsp;&nbsp;" % log_file
if api.fs.access(log_file) then
local btn = string.format(
'<input class="btn cbi-button cbi-button-apply" type="button" value="%s" onclick="window.open(\'%s\', \'_blank\')" />',
translate("View Log"),
log_url
)
s = s .. btn
end
return s
end
o:depends("log_chinadns_ng", "1")
o = s:taboption("log", DummyValue, "_log_tips", " ") o = s:taboption("log", DummyValue, "_log_tips", " ")
o.rawhtml = true o.rawhtml = true
+22 -29
View File
@@ -12,7 +12,7 @@ local GLOBAL = {
local xray_version = api.get_app_version("xray") local xray_version = api.get_app_version("xray")
local xray_min_version = "26.3.27" local xray_min_version = "26.7.11"
local function get_domain_excluded() local function get_domain_excluded()
local path = string.format("/usr/share/%s/rules/domains_excluded", api.c_config) local path = string.format("/usr/share/%s/rules/domains_excluded", api.c_config)
@@ -58,7 +58,7 @@ function gen_outbound(flag, node, tag, proxy_table)
if node.type ~= "Xray" then if node.type ~= "Xray" then
if node.type == "Socks" then if node.type == "Socks" then
node.protocol = "socks" node.protocol = "socks"
node.transport = "tcp" node.transport = "raw"
else else
local new_port local new_port
if run_socks_instance then if run_socks_instance then
@@ -95,7 +95,7 @@ function gen_outbound(flag, node, tag, proxy_table)
if new_port then if new_port then
node = {} node = {}
node.protocol = "socks" node.protocol = "socks"
node.transport = "tcp" node.transport = "raw"
node.address = "127.0.0.1" node.address = "127.0.0.1"
node.port = new_port node.port = new_port
end end
@@ -172,7 +172,7 @@ function gen_outbound(flag, node, tag, proxy_table)
} or nil, } or nil,
dialerProxy = dialer_proxy_tag, dialerProxy = dialer_proxy_tag,
}, },
[(api.compare_versions(xray_version, "<", "26.7.11")) and "network" or "method"] = node.transport, -- Todo: Remove version check and "network" method = node.transport,
security = node.stream_security, security = node.stream_security,
tlsSettings = (node.stream_security == "tls") and { tlsSettings = (node.stream_security == "tls") and {
serverName = node.tls_serverName, serverName = node.tls_serverName,
@@ -499,7 +499,7 @@ function gen_config_server(node)
local settings = nil local settings = nil
local routing = nil local routing = nil
local outbounds = { local outbounds = {
{ protocol = "freedom", tag = "direct", settings = { finalRules = {{ action = "allow" }}}}, { protocol = "blackhole", tag = "blocked" } { protocol = "freedom", tag = "direct", finalRules = {{ action = "allow" }}}, { protocol = "blackhole", tag = "blocked" }
} }
local users = node.users or {} local users = node.users or {}
@@ -647,9 +647,7 @@ function gen_config_server(node)
interface = node.outbound_node_iface interface = node.outbound_node_iface
} }
}, },
settings = { finalRules = {{ action = "allow" }}
finalRules = {{ action = "allow" }}
}
} }
sys.call(string.format("mkdir -p %s && touch %s/%s", api.TMP_IFACE_PATH, api.TMP_IFACE_PATH, node.outbound_node_iface)) sys.call(string.format("mkdir -p %s && touch %s/%s", api.TMP_IFACE_PATH, api.TMP_IFACE_PATH, node.outbound_node_iface))
else else
@@ -691,7 +689,7 @@ function gen_config_server(node)
protocol = node.protocol, protocol = node.protocol,
settings = settings, settings = settings,
streamSettings = { streamSettings = {
[(api.compare_versions(xray_version, "<", "26.7.11")) and "network" or "method"] = node.transport, -- Todo: Remove version check and "network" method = node.transport,
security = "none", security = "none",
tlsSettings = ("1" == node.tls) and { tlsSettings = ("1" == node.tls) and {
disableSystemRoot = false, disableSystemRoot = false,
@@ -873,9 +871,6 @@ function gen_config_server(node)
config.outbounds[index][k] = nil config.outbounds[index][k] = nil
end end
end end
if value.protocol == "freedom" and api.compare_versions(xray_version, "<", "26.5.3") then -- Todo is to remove it
value.settings = nil
end
end end
return config return config
@@ -1332,9 +1327,7 @@ function gen_config(var)
interface = node.iface interface = node.iface
} }
}, },
settings = (api.compare_versions(xray_version, ">", "26.4.25")) and { -- Todo: Remove version check finalRules = {{ action = "allow" }}
finalRules = {{ action = "allow" }}
} or nil
} }
sys.call(string.format("mkdir -p %s && touch %s/%s", api.TMP_IFACE_PATH, api.TMP_IFACE_PATH, node.iface)) sys.call(string.format("mkdir -p %s && touch %s/%s", api.TMP_IFACE_PATH, api.TMP_IFACE_PATH, node.iface))
end end
@@ -1818,11 +1811,10 @@ function gen_config(var)
sockopt = { dialerProxy = (dns_outbound_tag ~= "blackhole") and dns_outbound_tag or "direct" } sockopt = { dialerProxy = (dns_outbound_tag ~= "blackhole") and dns_outbound_tag or "direct" }
} or nil, } or nil,
settings = { settings = {
address = (chn_list ~= "proxy") and "8.8.8.8" or "223.5.5.5", rewriteAddress = (chn_list ~= "proxy") and "8.8.8.8" or "223.5.5.5",
port = 53, rewritePort = 53,
network = "tcp", rewriteNetwork = "tcp",
nonIPQuery = (api.compare_versions(xray_version, "<", "26.4.25")) and "reject" or nil, -- Todo is to remove it rules = {}
rules = (api.compare_versions(xray_version, ">", "26.4.17")) and {} or nil
} }
} }
@@ -2046,9 +2038,7 @@ function gen_config(var)
local direct_outbound = { local direct_outbound = {
protocol = "freedom", protocol = "freedom",
tag = "direct", tag = "direct",
settings = (api.compare_versions(xray_version, ">", "26.4.25")) and { -- Todo: Remove version check finalRules = {{ action = "allow" }},
finalRules = {{ action = "allow" }}
} or nil,
streamSettings = { streamSettings = {
sockopt = { sockopt = {
mark = 255, mark = 255,
@@ -2152,7 +2142,7 @@ function gen_proto_config(var)
local outbound = { local outbound = {
protocol = server_proto, protocol = server_proto,
streamSettings = { streamSettings = {
network = "tcp", method = "raw",
security = "none" security = "none"
}, },
settings = { settings = {
@@ -2177,10 +2167,10 @@ function gen_proto_config(var)
table.insert(outbounds, { table.insert(outbounds, {
protocol = "freedom", protocol = "freedom",
tag = "direct", tag = "direct",
settings = (api.compare_versions(xray_version, ">", "26.4.25")) and { -- Todo: Remove version check finalRules = {{ action = "allow" }},
finalRules = {{ action = "allow" }} streamSettings = {
} or nil, sockopt = {mark = 255}
sockopt = {mark = 255} }
}) })
local config = { local config = {
@@ -2192,7 +2182,10 @@ function gen_proto_config(var)
-- 传出连接 -- 传出连接
outbounds = outbounds, outbounds = outbounds,
-- 路由 -- 路由
routing = routing routing = routing,
version = {
min = xray_min_version
}
} }
return jsonc.stringify(config, 1) return jsonc.stringify(config, 1)
end end
-30
View File
@@ -1643,36 +1643,6 @@ msgstr "启用节点日志"
msgid "Log Level" msgid "Log Level"
msgstr "日志等级" msgstr "日志等级"
msgid "Advanced log feature"
msgstr "高级日志功能"
msgid "For professionals only."
msgstr "仅限专业人士使用。"
msgid "Persist log file directory"
msgstr "持久性日志文件目录"
msgid "The path to the directory used to store persist log files, the \"/\" at the end can be omitted. Leave it blank to disable this feature."
msgstr "用来存储持久性日志文件的目录路径,末尾的 “/” 可以省略。留空以禁用此功能。"
msgid "Logging to system log"
msgstr "记录到系统日志"
msgid "Logging to the system log for more advanced functions. For example, send logs to a dedicated log server."
msgstr "将日志记录到系统日志,以实现更加高级的功能。例如,把日志发送到专门的日志服务器。"
msgid "Log Event Filter"
msgstr "日志事件过滤器"
msgid "Support regular expression."
msgstr "支持正则表达式。"
msgid "Shell Command"
msgstr "Shell 命令"
msgid "Shell command to execute, replace log content with %s."
msgstr "要执行的 Shell 命令,用 %s 代替日志内容。"
msgid "Not enabled log" msgid "Not enabled log"
msgstr "未启用日志" msgstr "未启用日志"
@@ -1,17 +1,12 @@
#!/bin/sh #!/bin/sh
# Devices without a hardware RTC boot with a wrong system clock: sysfixtime can [ "$ACTION" = "step" ] || exit 0
# only restore the mtime of the newest file under /etc, so the clock is usually
# hours behind after a cold boot. passwall is then started by
# /etc/hotplug.d/iface/98-passwall on ifup, which typically happens before NTP
# has corrected the time, and time-sensitive handshakes (VMess AEAD, TLS) fail.
#
# Nothing restarts passwall once the clock is corrected, so it stays broken
# until the user restarts it manually. Restart once when ntpd reports that the
# time is valid -- the same approach dnsmasq uses for DNSSEC in
# /etc/hotplug.d/ntp/25-dnsmasqsec.
[ "$ACTION" = "stratum" ] || exit 0 offset=${offset#-}
offset=${offset%.*}
# Skip service restart if the time adjustment is less than 120 seconds.
[ "$offset" -lt 120 ] && exit 0
. /usr/share/passwall/utils.sh . /usr/share/passwall/utils.sh
@@ -23,5 +18,5 @@ NTP_LOCK_FILE="${LOCK_PATH}/${CONFIG}_ntp.lock"
echo $$ > ${NTP_LOCK_FILE} echo $$ > ${NTP_LOCK_FILE}
/etc/init.d/${CONFIG} restart >/dev/null 2>&1 & /etc/init.d/${CONFIG} restart >/dev/null 2>&1 &
logger -p notice -t network -s "${CONFIG}: restart after NTP time became valid" logger -p notice -t network -s "${CONFIG}: restart after NTP time step (${offset}s)"
} }
@@ -183,8 +183,6 @@ test_auto_switch() {
start() { start() {
id=$1 id=$1
LOCK_FILE=${LOCK_PATH}/${CONFIG}_socks_auto_switch_${id}.lock LOCK_FILE=${LOCK_PATH}/${CONFIG}_socks_auto_switch_${id}.lock
LOG_EVENT_FILTER=$(uci -q get "${CONFIG}.global[0].log_event_filter" 2>/dev/null)
LOG_EVENT_CMD=$(uci -q get "${CONFIG}.global[0].log_event_cmd" 2>/dev/null)
main_node=$(config_n_get $id node) main_node=$(config_n_get $id node)
socks_port=$(config_n_get $id port 0) socks_port=$(config_n_get $id port 0)
delay=$(config_n_get $id autoswitch_testing_time 30) delay=$(config_n_get $id autoswitch_testing_time 30)
@@ -480,25 +480,9 @@ ln_run() {
echolog " - 找不到 ${ln_name},无法启动..." echolog " - 找不到 ${ln_name},无法启动..."
return 1 return 1
} }
[ "${output}" != "/dev/null" ] && [ -n "$(echo "${output}" | grep -E "default|socks_")" ] && [ "${ln_name}" != "chinadns-ng" ] && {
local persist_log_path=$(config_n_get @global[0] persist_log_path) ${file_func:-echolog " - ${ln_name}"} "$@" >${output} 2>&1 &
local sys_log=$(config_n_get @global[0] sys_log "0")
}
if [ -z "$persist_log_path" ] && [ "$sys_log" != "1" ]; then
${file_func:-echolog " - ${ln_name}"} "$@" >${output} 2>&1 &
else
if [ -n "${persist_log_path}" ]; then
mkdir -p ${persist_log_path}
local log_file=${persist_log_path}/passwall_global_${ln_name}_$(date '+%F').log
echolog "记录到持久性日志文件:${log_file}"
${file_func:-echolog " - ${ln_name}"} "$@" >> ${log_file} 2>&1 &
sys_log=0
fi
if [ "${sys_log}" = "1" ]; then
echolog "记录 ${ln_name}_global 到系统日志"
${file_func:-echolog " - ${ln_name}"} "$@" 2>&1 | logger -t PASSWALL_global_${ln_name} &
fi
fi
[ "$NO_REC_PROCESS" = "1" ] && return [ "$NO_REC_PROCESS" = "1" ] && return
process_count=$(ls $TMP_SCRIPT_FUNC_PATH | wc -l) process_count=$(ls $TMP_SCRIPT_FUNC_PATH | wc -l)
process_count=$((process_count + 1)) process_count=$((process_count + 1))
+1 -1
View File
@@ -80,7 +80,7 @@ export function load_profile() {
let result = {}; let result = {};
const process = popen('yq -M -p yaml -o json /etc/nikki/run/config.yaml'); const process = popen('yq -M -p yaml -o json /etc/nikki/run/config.yaml');
if (process) { if (process) {
result = json(process); result = json(process.read('all'));
process.close(); process.close();
} }
return result; return result;
+1 -1
View File
@@ -30,7 +30,7 @@ define Download/geosite
HASH:=35ed26a24cafa1256bd7261414224b7bcef5c944cea7760e172b030a8b266450 HASH:=35ed26a24cafa1256bd7261414224b7bcef5c944cea7760e172b030a8b266450
endef endef
GEOSITE_IRAN_VER:=202609070121 GEOSITE_IRAN_VER:=202609140147
GEOSITE_IRAN_FILE:=iran.dat.$(GEOSITE_IRAN_VER) GEOSITE_IRAN_FILE:=iran.dat.$(GEOSITE_IRAN_VER)
define Download/geosite-ir define Download/geosite-ir
URL:=https://github.com/bootmortis/iran-hosted-domains/releases/download/$(GEOSITE_IRAN_VER)/ URL:=https://github.com/bootmortis/iran-hosted-domains/releases/download/$(GEOSITE_IRAN_VER)/