diff --git a/luci-app-frpc/po/es/frpc.po b/luci-app-frpc/po/es/frpc.po index 6cd7e5db0..e6c938d3e 100644 --- a/luci-app-frpc/po/es/frpc.po +++ b/luci-app-frpc/po/es/frpc.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2026-04-04 03:09+0000\n" +"PO-Revision-Date: 2026-08-24 16:48+0000\n" "Last-Translator: Franco Castillo \n" "Language-Team: Spanish \n" @@ -11,7 +11,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.17-dev\n" +"X-Generator: Weblate 2026.9.dev0\n" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:1454 msgid "Add new proxy or visitor..." @@ -119,7 +119,7 @@ msgstr "" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:1417 msgid "Collecting data ..." -msgstr "Recopilando los datos..." +msgstr "Recopilando datos..." #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:317 msgid "Command arguments passed to token source exec." @@ -412,7 +412,7 @@ msgstr "" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:1460 msgid "General Settings" -msgstr "Ajustes generales" +msgstr "Configuración general" #: applications/luci-app-frpc/root/usr/share/rpcd/acl.d/luci-app-frpc.json:3 msgid "Grant access to LuCI app frpc" @@ -653,7 +653,7 @@ msgstr "" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:1390 msgid "NOT RUNNING" -msgstr "NO EN EJECUCIÓN" +msgstr "NO SE ESTÁ EJECUTANDO" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:359 msgid "OIDC additional endpoint params" @@ -860,7 +860,7 @@ msgstr "" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:1390 msgid "RUNNING" -msgstr "EN EJECUCIÓN" +msgstr "EJECUTÁNDOSE" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:667 msgid "Remote port" diff --git a/luci-app-frpc/po/pl/frpc.po b/luci-app-frpc/po/pl/frpc.po index 41bf7bcec..827b464b1 100644 --- a/luci-app-frpc/po/pl/frpc.po +++ b/luci-app-frpc/po/pl/frpc.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"PO-Revision-Date: 2026-02-20 00:35+0000\n" +"PO-Revision-Date: 2026-08-24 16:48+0000\n" "Last-Translator: Matthaiks \n" "Language-Team: Polish \n" @@ -9,7 +9,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Weblate 5.16.1-dev\n" +"X-Generator: Weblate 2026.9.dev0\n" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:1454 msgid "Add new proxy or visitor..." diff --git a/luci-app-frps/po/es/frps.po b/luci-app-frps/po/es/frps.po index fe3424fe1..df5e2d61b 100644 --- a/luci-app-frps/po/es/frps.po +++ b/luci-app-frps/po/es/frps.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2026-03-30 03:54+0000\n" +"PO-Revision-Date: 2026-08-24 16:48+0000\n" "Last-Translator: Franco Castillo \n" "Language-Team: Spanish \n" @@ -11,7 +11,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.17-dev\n" +"X-Generator: Weblate 2026.9.dev0\n" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:982 msgid "Access Control" @@ -79,7 +79,7 @@ msgstr "Puerto de enlace" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:969 msgid "Collecting data ..." -msgstr "Recopilando los datos..." +msgstr "Recopilando datos..." #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:323 msgid "Command arguments passed to token source exec." @@ -315,7 +315,7 @@ msgstr "" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:942 msgid "NOT RUNNING" -msgstr "NO EN EJECUCIÓN" +msgstr "NO SE ESTÁ EJECUTANDO" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:349 msgid "OIDC audience" @@ -457,7 +457,7 @@ msgstr "" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:942 msgid "RUNNING" -msgstr "EN EJECUCIÓN" +msgstr "EJECUTÁNDOSE" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:125 msgid "Respawn when crashed" diff --git a/luci-app-frps/po/pl/frps.po b/luci-app-frps/po/pl/frps.po index 624c283b0..c7d7ac01d 100644 --- a/luci-app-frps/po/pl/frps.po +++ b/luci-app-frps/po/pl/frps.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"PO-Revision-Date: 2026-02-20 00:33+0000\n" +"PO-Revision-Date: 2026-08-24 16:48+0000\n" "Last-Translator: Matthaiks \n" "Language-Team: Polish \n" @@ -9,7 +9,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Weblate 5.16.1-dev\n" +"X-Generator: Weblate 2026.9.dev0\n" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:982 msgid "Access Control" diff --git a/luci-app-passwall/Makefile b/luci-app-passwall/Makefile index 8e91a1fa6..dad0a0bf0 100644 --- a/luci-app-passwall/Makefile +++ b/luci-app-passwall/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-passwall PKG_VERSION:=26.8.26 -PKG_RELEASE:=248 +PKG_RELEASE:=249 PKG_PO_VERSION:=$(PKG_VERSION) PKG_CONFIG_DEPENDS:= \ diff --git a/luci-app-passwall/luasrc/controller/passwall.lua b/luci-app-passwall/luasrc/controller/passwall.lua index f5ced71a9..8f7bd79db 100644 --- a/luci-app-passwall/luasrc/controller/passwall.lua +++ b/luci-app-passwall/luasrc/controller/passwall.lua @@ -934,7 +934,8 @@ local backup_files = { "/usr/share/passwall/rules/direct_host", "/usr/share/passwall/rules/direct_ip", "/usr/share/passwall/rules/proxy_host", - "/usr/share/passwall/rules/proxy_ip" + "/usr/share/passwall/rules/proxy_ip", + "/usr/share/passwall/rules/domains_excluded" } function create_backup() diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua index 4f24a55f0..dccc96bd8 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua @@ -193,7 +193,7 @@ if has_xray then o.default = 0 o.description = translate("Override the connection destination address with the sniffed domain.
Otherwise use sniffed domain for routing only.
If using shunt nodes, configure the domain shunt rules correctly.") - local domains_excluded = string.format("/usr/share/%s/domains_excluded", m.config) + local domains_excluded = string.format("/usr/share/%s/rules/domains_excluded", m.config) o = s_xray:option(TextValue, "excluded_domains", translate("Excluded Domains"), translate("If the traffic sniffing result is in this list, the destination address will not be overridden.")) o.rows = 15 o.wrap = "off" diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/type/1_sing-box.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/type/1_sing-box.lua index cbab6003d..5e94c90af 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/type/1_sing-box.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/type/1_sing-box.lua @@ -383,6 +383,10 @@ if singbox_tags:find("with_quic") then o.default = { "stun.sip.us:3478", "stun.nextcloud.com:3478", "global.stun.twilio.com:3478" } o:depends({ hysteria2_realms = "1" }) + o = s:option(Flag, "hysteria2_realm_upnp", translate("Enable") .. " UPnP/NAT-PMP", translate("Enable UPnP/NAT-PMP port mapping on your gateway to improve hole punching success.")) + o.default = "0" + o:depends({ hysteria2_realms = "1" }) + o = s:option(Value, "hysteria2_auth_password", translate("Auth Password")) o.password = true o:depends({ protocol = "hysteria2"}) diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/type/2_xray.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/type/2_xray.lua index 1697d1deb..6ff9f5080 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/type/2_xray.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/type/2_xray.lua @@ -357,6 +357,10 @@ o = s:option(DynamicList, "hysteria2_realm_stun", translate("Realm STUN")) o.default = { "stun.sip.us:3478", "stun.nextcloud.com:3478", "global.stun.twilio.com:3478" } o:depends({ hysteria2_realms = "1" }) +o = s:option(Flag, "hysteria2_realm_upnp", translate("Enable") .. " UPnP/NAT-PMP", translate("Enable UPnP/NAT-PMP port mapping on your gateway to improve hole punching success.")) +o.default = "0" +o:depends({ hysteria2_realms = "1" }) + o = s:option(Value, "hysteria2_auth_password", translate("Auth Password")) o.password = true o:depends({ protocol = "hysteria2"}) diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/type/5_hysteria2.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/type/5_hysteria2.lua index 481fc1f23..d9b4d600e 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/type/5_hysteria2.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/type/5_hysteria2.lua @@ -61,6 +61,11 @@ o.default = { "stun.sip.us:3478", "stun.nextcloud.com:3478", "global.stun.twilio o.rewrite_option = _n(o.option) o:depends({ realms = "1" }) +o = s:option(Flag, "realm_upnp", translate("Enable") .. " UPnP/NAT-PMP", translate("Enable UPnP/NAT-PMP port mapping on your gateway to improve hole punching success.")) +o.default = "0" +o.rewrite_option = _n(o.option) +o:depends({ realms = "1" }) + o = s:option(Value, "auth_password", translate("Auth Password")) o.password = true o.rewrite_option = _n(o.option) @@ -124,6 +129,20 @@ o = s:option(Flag, "disable_mtu_discovery", translate("Disable MTU detection")) o.default = "0" o.rewrite_option = _n(o.option) + +o = s:option(Flag, "ech", translate("ECH")) +o.default = "0" +o:depends({ realms = false }) + +o = s:option(TextValue, "ech_config", translate("ECH Config")) +o.default = "" +o.rows = 5 +o.wrap = "soft" +o:depends({ ech = "1" }) +o.validate = function(self, value) + return api.trim(value:gsub("[\r\n]", "")) +end + o = s:option(Flag, "lazy_start", translate("Lazy Start")) o.default = "0" o.rewrite_option = _n(o.option) diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/server/type/1_sing-box.lua b/luci-app-passwall/luasrc/model/cbi/passwall/server/type/1_sing-box.lua index 129bbfd90..b2f335653 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/server/type/1_sing-box.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/server/type/1_sing-box.lua @@ -183,6 +183,10 @@ if singbox_tags:find("with_quic") then o.default = { "stun.sip.us:3478", "stun.nextcloud.com:3478", "global.stun.twilio.com:3478" } o:depends({ hysteria2_realms = "1" }) + o = s:option(Flag, "hysteria2_realm_upnp", translate("Enable") .. " UPnP/NAT-PMP", translate("Enable UPnP/NAT-PMP port mapping on your gateway to improve hole punching success.")) + o.default = "0" + o:depends({ hysteria2_realms = "1" }) + o = s:option(ListValue, "hysteria2_obfs_type", translate("Obfs Type")) o:value("", translate("Disable")) o:value("salamander") diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/server/type/2_xray.lua b/luci-app-passwall/luasrc/model/cbi/passwall/server/type/2_xray.lua index 182018ef2..11ec4fabb 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/server/type/2_xray.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/server/type/2_xray.lua @@ -149,6 +149,10 @@ o = s:option(DynamicList, "hysteria2_realm_stun", translate("Realm STUN")) o.default = { "stun.sip.us:3478", "stun.nextcloud.com:3478", "global.stun.twilio.com:3478" } o:depends({ hysteria2_realms = "1" }) +o = s:option(Flag, "hysteria2_realm_upnp", translate("Enable") .. " UPnP/NAT-PMP", translate("Enable UPnP/NAT-PMP port mapping on your gateway to improve hole punching success.")) +o.default = "0" +o:depends({ hysteria2_realms = "1" }) + o = s:option(ListValue, "hysteria2_obfs_type", translate("Obfs Type")) o:value("", translate("Disable")) o:value("salamander") diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/server/type/5_hysteria2.lua b/luci-app-passwall/luasrc/model/cbi/passwall/server/type/5_hysteria2.lua index bbc977370..9a037ff75 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/server/type/5_hysteria2.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/server/type/5_hysteria2.lua @@ -73,6 +73,11 @@ o.default = { "stun.sip.us:3478", "stun.nextcloud.com:3478", "global.stun.twilio o.rewrite_option = _n(o.option) o:depends({ realms = "1" }) +o = s:option(Flag, "realm_upnp", translate("Enable") .. " UPnP/NAT-PMP", translate("Enable UPnP/NAT-PMP port mapping on your gateway to improve hole punching success.")) +o.default = "0" +o.rewrite_option = _n(o.option) +o:depends({ realms = "1" }) + o = s:option(ListValue, "obfs_type", translate("Obfs Type")) o:value("", translate("Disable")) o:value("salamander") @@ -147,6 +152,19 @@ o.validate = function(self, value, t) end o:depends({ custom = false }) +o = s:option(FileUpload, "ech_keyFile", translate("ECH key absolute path"), translate("as:") .. "/etc/ssl/ech.pem") +o.validate = function(self, value, t) + if value and value ~= "" then + if not fs.access(value) then + return nil, translate("Can't find this file!") + else + return value + end + end + return nil +end +o:depends({ custom = false }) + o = s:option(Flag, "firewall_allow", translate("Firewall Allow")) o.default = "0" o:depends({ custom = false }) diff --git a/luci-app-passwall/luasrc/passwall/util_hysteria2.lua b/luci-app-passwall/luasrc/passwall/util_hysteria2.lua index cfe305888..60350d069 100644 --- a/luci-app-passwall/luasrc/passwall/util_hysteria2.lua +++ b/luci-app-passwall/luasrc/passwall/util_hysteria2.lua @@ -48,8 +48,10 @@ function gen_config_server(node) ignoreClientBandwidth = (node.hysteria2_ignoreClientBandwidth == "1") and true or false, disableUDP = (node.hysteria2_udp == "0") and true or false, realm = (node.hysteria2_realms and node.hysteria2_realm_stun) and { - stunServers = node.hysteria2_realm_stun - } or nil + stunServers = node.hysteria2_realm_stun, + portMapping = (node.hysteria2_realm_upnp == "1") and { enabled = true } or nil + } or nil, + ech = (node.ech_keyFile and node.ech_keyFile ~= "") and { keyPath = node.ech_keyFile } or nil } if config.obfs and config.obfs.gecko then @@ -101,7 +103,8 @@ function gen_config(var) return server end)(), realm = (node.hysteria2_realms and node.hysteria2_realm_stun) and { - stunServers = node.hysteria2_realm_stun + stunServers = node.hysteria2_realm_stun, + portMapping = (node.hysteria2_realm_upnp == "1") and { enabled = true } or nil } or nil, transport = { type = "udp", @@ -138,6 +141,7 @@ function gen_config(var) sni = node.tls_serverName, insecure = (node.tls_allowInsecure == "1") and true or false, pinSHA256 = (node.tls_pinSHA256) and node.tls_pinSHA256 or nil, + ech = (node.ech == "1") and node.ech_config or nil }, quic = { initStreamReceiveWindow = (node.hysteria2_recv_window) and tonumber(node.hysteria2_recv_window) or nil, diff --git a/luci-app-passwall/luasrc/passwall/util_sing-box.lua b/luci-app-passwall/luasrc/passwall/util_sing-box.lua index c8780b26d..419cfce52 100644 --- a/luci-app-passwall/luasrc/passwall/util_sing-box.lua +++ b/luci-app-passwall/luasrc/passwall/util_sing-box.lua @@ -596,6 +596,7 @@ function gen_outbound(flag, node, tag, proxy_table) realm.scheme = nil realm.address = nil realm.port = nil + realm.port_mapping = (node.hysteria2_realm_upnp == "1") and { enabled = true } or nil return realm end return nil @@ -951,6 +952,7 @@ function gen_config_server(node) realm.address = nil realm.port = nil realm.stun_domain_resolver = "direct" + realm.port_mapping = (node.hysteria2_realm_upnp == "1") and { enabled = true } or nil return realm end return nil diff --git a/luci-app-passwall/luasrc/passwall/util_xray.lua b/luci-app-passwall/luasrc/passwall/util_xray.lua index 6a0c4bbb5..8162ade4b 100644 --- a/luci-app-passwall/luasrc/passwall/util_xray.lua +++ b/luci-app-passwall/luasrc/passwall/util_xray.lua @@ -15,7 +15,7 @@ local xray_version = api.get_app_version("xray") local xray_min_version = "26.3.27" local function get_domain_excluded() - local path = "/usr/share/passwall/domains_excluded" + local path = string.format("/usr/share/%s/rules/domains_excluded", api.c_config) local content = fs.readfile(path) if not content then return nil end local hosts = {} @@ -308,7 +308,8 @@ function gen_outbound(flag, node, tag, proxy_table) type = "realm", settings = { url = url, - stunServers = stun + stunServers = stun, + portMapping = (node.hysteria2_realm_upnp == "1") and { enabled = true } or nil } } udp[#udp+1] = r @@ -782,7 +783,8 @@ function gen_config_server(node) type = "realm", settings = { url = url, - stunServers = stun + stunServers = stun, + portMapping = (node.hysteria2_realm_upnp == "1") and { enabled = true } or nil } } udp[#udp+1] = r diff --git a/luci-app-passwall/luasrc/view/passwall/node_config/link_share_man.htm b/luci-app-passwall/luasrc/view/passwall/node_config/link_share_man.htm index 1e6c71164..03c9f4e0f 100644 --- a/luci-app-passwall/luasrc/view/passwall/node_config/link_share_man.htm +++ b/luci-app-passwall/luasrc/view/passwall/node_config/link_share_man.htm @@ -594,6 +594,7 @@ local current_node = map:get(section) params += opt.query("pinSHA256", dom_prefix + "tls_pinSHA256"); params += opt.query("pcs", dom_prefix + "tls_pinSHA256"); params += opt.query("vcn", dom_prefix + "tls_CertByName"); + params += opt.query("ech", dom_prefix + "ech_config"); var v_password = null; @@ -628,7 +629,7 @@ local current_node = map:get(section) params = params.replace(/^&/, ""); url = _address + ":" + - v_port.value + "?" + + (v_port.value || "443") + "?" + params + "#" + encodeURI(v_alias.value); if (v_password) { @@ -1664,6 +1665,8 @@ local current_node = map:get(section) ); opt.set(dom_prefix + 'tls_pinSHA256', queryParam.pcs || queryParam.pinSHA256 || ''); opt.set(dom_prefix + 'tls_CertByName', queryParam.vcn || ''); + opt.set(dom_prefix + 'ech', !!queryParam.ech); + opt.set(dom_prefix + 'ech_config', queryParam.ech || ''); if (m.hash) { opt.set('remarks', decodeURIComponent(m.hash.substr(1))); } diff --git a/luci-app-passwall/po/zh-cn/passwall.po b/luci-app-passwall/po/zh-cn/passwall.po index 5bd1f6e5c..d6e0455a0 100644 --- a/luci-app-passwall/po/zh-cn/passwall.po +++ b/luci-app-passwall/po/zh-cn/passwall.po @@ -1646,6 +1646,9 @@ msgstr "公钥文件绝对路径" msgid "Private key absolute path" msgstr "私钥文件绝对路径" +msgid "ECH key absolute path" +msgstr "ECH 密钥绝对路径" + msgid "Can't find this file!" msgstr "找不到这个文件!" @@ -2202,6 +2205,9 @@ msgstr "Gecko 包大小(最小)" msgid "Gecko Packet Size (max)" msgstr "Gecko 包大小(最大)" +msgid "Enable UPnP/NAT-PMP port mapping on your gateway to improve hole punching success." +msgstr "在网关上启用 UPnP/NAT-PMP 端口映射以提升打洞成功率。" + msgid "valid time (hh:mm)" msgstr "有效时间(hh:mm)" diff --git a/luci-app-passwall/root/usr/share/passwall/subscribe.lua b/luci-app-passwall/root/usr/share/passwall/subscribe.lua index 0d9cb0904..fbe3924e9 100755 --- a/luci-app-passwall/root/usr/share/passwall/subscribe.lua +++ b/luci-app-passwall/root/usr/share/passwall/subscribe.lua @@ -1467,6 +1467,10 @@ local function processData(szType, content, add_mode, group, sub_cfg) result.hysteria2_up_mbps = params.upmbps or (sub_cfg and sub_hy_up_mbps or nil) result.hysteria2_down_mbps = params.downmbps or (sub_cfg and sub_hy_down_mbps or nil) result.hysteria2_hop = params.mport + if params.ech and params.ech ~= "" then + result.ech = "1" + result.ech_config = params.ech + end if params["obfs-password"] or params["obfs_password"] then result.hysteria2_obfs_type = params.obfs or "salamander" result.hysteria2_obfs_password = params["obfs-password"] or params["obfs_password"] diff --git a/natflow/Makefile b/natflow/Makefile index 6cb2a00d1..f23c942ca 100644 --- a/natflow/Makefile +++ b/natflow/Makefile @@ -10,12 +10,12 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=natflow PKG_VERSION:=20260531 -PKG_RELEASE:=73 +PKG_RELEASE:=74 PKG_SOURCE:=$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=https://github.com/ptpt52/natflow.git PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=8fa0d6022ff4f25fb123dfe8b3fc7337fc38e3fa +PKG_SOURCE_VERSION:=5e3dc6435603076f0fd93ca3d4f2e3899fc87e20 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) PKG_MAINTAINER:=Chen Minqiang PKG_LICENSE:=GPL-2.0 diff --git a/teleproxy/Makefile b/teleproxy/Makefile index c25c11018..be02be87a 100644 --- a/teleproxy/Makefile +++ b/teleproxy/Makefile @@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=teleproxy PKG_VERSION:=4.16.1 -PKG_RELEASE:=25 +PKG_RELEASE:=26 PKG_MAINTAINER:=Kosntantine Shevlakov PKG_LICENSE:=GPLv2 @@ -10,7 +10,7 @@ PKG_LICENSE_FILES:=LICENSE PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/teleproxy/teleproxy.git -PKG_SOURCE_VERSION:=064e893a5cc8fbd9b99609c09bd000a1f3fbc09b +PKG_SOURCE_VERSION:=b7d980539cf2eded55ee159c4c36376af6831a3d PKG_SOURCE_SUBDIR:=$(PKG_NAME) PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz diff --git a/wwand/Makefile b/wwand/Makefile index 76c8b9af5..de8e5c17c 100644 --- a/wwand/Makefile +++ b/wwand/Makefile @@ -43,11 +43,11 @@ include $(TOPDIR)/rules.mk PKG_NAME:=wwand -PKG_RELEASE:=11 +PKG_RELEASE:=12 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/ddimension/wwand.git -PKG_SOURCE_VERSION:=fc013f140d423867b993c6026fd435ec750cbb91 +PKG_SOURCE_VERSION:=2311728191b2b325de54946b0767000baa245366 PKG_SOURCE_DATE:=2026-08-27 PKG_MIRROR_HASH:=skip @@ -328,6 +328,13 @@ define Package/wwand-mhi/description MHI bus/PCI/control/data drivers and installs the wwan-subsystem hotplug so wwand binds these modems on boot. Install together with a control backend (wwand-qmi or wwand-mbim). + + Adding wwand-mbim is worthwhile even on a QMI-driven MHI modem: many of them + expose no DUN channel and therefore no AT port at all, and wwand can then + carry AT over the modem's MBIM channel instead (Quectel QDU). Without that + package the capability is simply absent — vendor AT commands, the protocol + switch and AT telemetry are unavailable, which is a limitation rather than a + failure. endef define Package/wwand-mhi/install