From 096f0f3ba07884c14ff7f8929ee15ccf7a4c7c89 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 25 Mar 2026 20:27:28 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8D=89=20Sync=202026-03-25=2020:27:28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- luci-app-amlogic/Makefile | 4 +- .../root/usr/sbin/openwrt-install-amlogic | 4 +- .../model/cbi/passwall/server/type/ray.lua | 33 ++++++++++++++++- .../cbi/passwall/server/type/sing-box.lua | 10 ++--- .../luasrc/passwall/util_xray.lua | 37 ++++++++++++++++++- luci-app-passwall/po/zh-cn/passwall.po | 3 ++ luci-theme-argon/Makefile | 4 +- modeminfo/Makefile | 2 +- .../root/usr/share/modeminfo/scripts/MEIGLINK | 7 ++-- qmbimat/Makefile | 37 +++++++++++++++++++ qmbimat/patches/0001-cc.patch | 20 ++++++++++ telegrambot/Makefile | 2 +- .../root/usr/lib/telegrambot/plugins/wanip.sh | 2 +- .../root/usr/lib/telegrambot/telegrambot | 1 + 14 files changed, 145 insertions(+), 21 deletions(-) create mode 100644 qmbimat/Makefile create mode 100644 qmbimat/patches/0001-cc.patch diff --git a/luci-app-amlogic/Makefile b/luci-app-amlogic/Makefile index eb70a385b..4eb26356f 100644 --- a/luci-app-amlogic/Makefile +++ b/luci-app-amlogic/Makefile @@ -16,8 +16,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-amlogic -PKG_VERSION:=3.1.287 -PKG_RELEASE:=2 +PKG_VERSION:=3.1.288 +PKG_RELEASE:=3 PKG_LICENSE:=GPL-2.0 License PKG_MAINTAINER:=ophub diff --git a/luci-app-amlogic/root/usr/sbin/openwrt-install-amlogic b/luci-app-amlogic/root/usr/sbin/openwrt-install-amlogic index 3e4549c83..99cf0460b 100755 --- a/luci-app-amlogic/root/usr/sbin/openwrt-install-amlogic +++ b/luci-app-amlogic/root/usr/sbin/openwrt-install-amlogic @@ -282,8 +282,8 @@ while [ $p -ge 1 ]; do done # you can change ROOT size(MB) >= 320 -ROOT1="2048" -ROOT2="2048" +ROOT1="1280" +ROOT2="1280" if [[ "${AMLOGIC_SOC}" == "s912" ]] && [[ "${boxtype}" == "213" || "${boxtype}" == "2e" ]]; then BOOT="512" BLANK1="700" diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ray.lua b/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ray.lua index 1fd538ce9..c2ab35486 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ray.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/server/type/ray.lua @@ -37,6 +37,7 @@ o:value("http", "HTTP") o:value("socks", "Socks") o:value("shadowsocks", "Shadowsocks") o:value("trojan", "Trojan") +o:value("hysteria2", translate("Hysteria2")) o:value("dokodemo-door", "dokodemo-door") o:depends({ [_n("custom")] = false }) @@ -122,6 +123,30 @@ o:value("", translate("Disable")) o:value("xtls-rprx-vision") o:depends({ [_n("protocol")] = "vless" }) +---- [[ hysteria2 ]] +o = s:option(Value, _n("hysteria2_auth_password"), translate("Auth Password")) +o.password = true +o:depends({ [_n("protocol")] = "hysteria2"}) + +o = s:option(Flag, _n("hysteria2_ignore_client_bandwidth"), translate("Client BBR Flow Control")) +o.default = 0 +o:depends({ [_n("protocol")] = "hysteria2" }) + +o = s:option(Value, _n("hysteria2_up_mbps"), translate("Max upload Mbps")) +o:depends({ [_n("protocol")] = "hysteria2", [_n("hysteria2_ignore_client_bandwidth")] = false }) + +o = s:option(Value, _n("hysteria2_down_mbps"), translate("Max download Mbps")) +o:depends({ [_n("protocol")] = "hysteria2", [_n("hysteria2_ignore_client_bandwidth")] = false }) + +o = s:option(ListValue, _n("hysteria2_obfs_type"), translate("Obfs Type")) +o:value("", translate("Disable")) +o:value("salamander") +o:depends({ [_n("protocol")] = "hysteria2" }) + +o = s:option(Value, _n("hysteria2_obfs_password"), translate("Obfs Password")) +o:depends({ [_n("hysteria2_obfs_type")] = "salamander" }) + +---- [[ TLS ]] o = s:option(Flag, _n("tls"), translate("TLS")) o.default = 0 o.validate = function(self, value, t) @@ -190,6 +215,7 @@ o:value("http/1.1") o:value("h2,http/1.1") o:value("h3,h2,http/1.1") o:depends({ [_n("tls")] = true, [_n("reality")] = false }) +o:depends({ [_n("protocol")] = "hysteria2"}) o = s:option(Flag, _n("use_mldsa65Seed"), translate("ML-DSA-65")) o.default = "0" @@ -215,6 +241,7 @@ o = s:option(FileUpload, _n("tls_certificateFile"), translate("Public key absolu o.default = m:get(s.section, "tls_certificateFile") or "/etc/config/ssl/" .. arg[1] .. ".pem" if o and o:formvalue(arg[1]) then o.default = o:formvalue(arg[1]) end o:depends({ [_n("tls")] = true, [_n("reality")] = false }) +o:depends({ [_n("protocol")] = "hysteria2"}) o.validate = function(self, value, t) if value and value ~= "" then if not fs.access(value) then @@ -230,6 +257,7 @@ o = s:option(FileUpload, _n("tls_keyFile"), translate("Private key absolute path o.default = m:get(s.section, "tls_keyFile") or "/etc/config/ssl/" .. arg[1] .. ".key" if o and o:formvalue(arg[1]) then o.default = o:formvalue(arg[1]) end o:depends({ [_n("tls")] = true, [_n("reality")] = false }) +o:depends({ [_n("protocol")] = "hysteria2"}) o.validate = function(self, value, t) if value and value ~= "" then if not fs.access(value) then @@ -398,7 +426,10 @@ o:depends({ [_n("custom")] = false }) --[[Fast Open]] o = s:option(Flag, _n("tcp_fast_open"), "TCP " .. translate("Fast Open")) o.default = "0" -o:depends({ [_n("custom")] = false }) +o:depends({ [_n("protocol")] = "vmess", [_n("custom")] = false }) +o:depends({ [_n("protocol")] = "vless", [_n("custom")] = false }) +o:depends({ [_n("protocol")] = "shadowsocks", [_n("custom")] = false }) +o:depends({ [_n("protocol")] = "trojan", [_n("custom")] = false }) -- [[ Fallback部分 ]]-- o = s:option(Flag, _n("fallback"), translate("Fallback")) diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/server/type/sing-box.lua b/luci-app-passwall/luasrc/model/cbi/passwall/server/type/sing-box.lua index 0dfa75df1..7e815a245 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/server/type/sing-box.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/server/type/sing-box.lua @@ -154,7 +154,11 @@ if singbox_tags:find("with_quic") then end if singbox_tags:find("with_quic") then - o = s:option(Flag, _n("hysteria2_ignore_client_bandwidth"), translate("Commands the client to use the BBR flow control algorithm")) + o = s:option(Value, _n("hysteria2_auth_password"), translate("Auth Password")) + o.password = true + o:depends({ [_n("protocol")] = "hysteria2"}) + + o = s:option(Flag, _n("hysteria2_ignore_client_bandwidth"), translate("Client BBR Flow Control"), translate("Commands the client to use the BBR flow control algorithm")) o.default = 0 o:depends({ [_n("protocol")] = "hysteria2" }) @@ -171,10 +175,6 @@ if singbox_tags:find("with_quic") then o = s:option(Value, _n("hysteria2_obfs_password"), translate("Obfs Password")) o:depends({ [_n("hysteria2_obfs_type")] = "salamander" }) - - o = s:option(Value, _n("hysteria2_auth_password"), translate("Auth Password")) - o.password = true - o:depends({ [_n("protocol")] = "hysteria2"}) end o = s:option(ListValue, _n("d_protocol"), translate("Destination protocol")) diff --git a/luci-app-passwall/luasrc/passwall/util_xray.lua b/luci-app-passwall/luasrc/passwall/util_xray.lua index 07234e9f1..f340bb647 100644 --- a/luci-app-passwall/luasrc/passwall/util_xray.lua +++ b/luci-app-passwall/luasrc/passwall/util_xray.lua @@ -456,6 +456,13 @@ function gen_config_server(node) clients = clients } end + elseif node.protocol == "hysteria2" then + settings = { + version = 2, + clients = node.hysteria2_auth_password and { + { auth = node.hysteria2_auth_password } + } + } elseif node.protocol == "dokodemo-door" then settings = { network = node.d_protocol, @@ -533,6 +540,12 @@ function gen_config_server(node) end end + if node.protocol == "hysteria2" then + node.protocol = "hysteria" + node.transport = "hysteria" + node.tls = "1" + end + local config = { log = { -- error = "/tmp/etc/passwall_server/log/" .. user[".name"] .. ".log", @@ -601,8 +614,11 @@ function gen_config_server(node) maxUploadSize = node.xhttp_maxuploadsize, maxConcurrentUploads = node.xhttp_maxconcurrentuploads } or nil, + hysteriaSettings = (node.transport == "hysteria") and { + version = 2 + } or nil, finalmask = (function() - local finalmask + local finalmask = {} if node.transport == "mkcp" then local map = {none = "none", srtp = "header-srtp", utp = "header-utp", ["wechat-video"] = "header-wechat", dtls = "header-dtls", wireguard = "header-wireguard", dns = "header-dns"} @@ -619,7 +635,24 @@ function gen_config_server(node) c.settings = { password = node.mkcp_seed } end udp[#udp+1] = c - finalmask = { udp = udp } + finalmask.udp = udp + elseif node.transport == "hysteria" then + if node.hysteria2_obfs_type and node.hysteria2_obfs_type ~= "" then + finalmask.udp = {{ + type = node.hysteria2_obfs_type, + settings = node.hysteria2_obfs_password and { + password = node.hysteria2_obfs_password + } or nil + }} + end + local ignore = tonumber(node.hysteria2_ignore_client_bandwidth) == 1 + local up = (not ignore) and tonumber(node.hysteria2_up_mbps) or 0 + local down = (not ignore) and tonumber(node.hysteria2_down_mbps) or 0 + finalmask.quicParams = { + congestion = (up <= 0 and down <= 0) and "bbr" or "brutal", + brutalUp = up > 0 and (up .. "mbps") or nil, + brutalDown = down > 0 and (down .. "mbps") or nil + } end if node.finalmask and node.finalmask ~= "" then local ok, fm = pcall(jsonc.parse, api.base64Decode(node.finalmask)) diff --git a/luci-app-passwall/po/zh-cn/passwall.po b/luci-app-passwall/po/zh-cn/passwall.po index de1c97251..3bd1ebc29 100644 --- a/luci-app-passwall/po/zh-cn/passwall.po +++ b/luci-app-passwall/po/zh-cn/passwall.po @@ -679,6 +679,9 @@ msgstr "认证类型" msgid "Auth Password" msgstr "认证密码" +msgid "Client BBR Control" +msgstr "客户端 BBR 流控" + msgid "Commands the client to use the BBR flow control algorithm" msgstr "命令客户端使用 BBR 流量控制算法" diff --git a/luci-theme-argon/Makefile b/luci-theme-argon/Makefile index ed9398f5a..5380b4405 100644 --- a/luci-theme-argon/Makefile +++ b/luci-theme-argon/Makefile @@ -7,10 +7,10 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=Argon Theme -LUCI_DEPENDS:=+wget +jsonfilter +LUCI_DEPENDS:=+@wget-any +jsonfilter PKG_VERSION:=2.4.3 -PKG_RELEASE:=1 +PKG_RELEASE:=2 LUCI_MINIFY_CSS:=0 diff --git a/modeminfo/Makefile b/modeminfo/Makefile index d01bf5536..774f4aeb7 100644 --- a/modeminfo/Makefile +++ b/modeminfo/Makefile @@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=modeminfo PKG_VERSION:=0.4.5 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_MAINTAINER:=Konstantine Shevlakov include $(INCLUDE_DIR)/package.mk diff --git a/modeminfo/root/usr/share/modeminfo/scripts/MEIGLINK b/modeminfo/root/usr/share/modeminfo/scripts/MEIGLINK index 2eddbf675..3b4a9f60b 100644 --- a/modeminfo/root/usr/share/modeminfo/scripts/MEIGLINK +++ b/modeminfo/root/usr/share/modeminfo/scripts/MEIGLINK @@ -51,13 +51,12 @@ function modem_data(){ ENBID=$(printf %d 0x$ENBx) LTE_CA=$(echo "$O" | awk '/\^CELLINFO: / {print $0}' | wc -l) if [ $LTE_CA -gt 0 ]; then - OIFS="$IFS"; IFS="|" LTE_CA=1; OIFS="$IFS"; IFS="|" - set -- $(echo "$O" | awk -v bwdl=${BWC:-0} -F [,]' - /^\^CELLINFO: "SCC"/{bands = bands "+" $7; sum+=$6/5; bwca=sum+bedl} + set -- $(echo "$O" | awk -v bwdl=${BWC:-0} -F [,] ' + /CELLINFO: "SCC"/{bands = bands "+" $7; sum+=$6/5; bwca=sum+bwdl} END{print bands "|" bwca} ') - BWCA=${1}; SCC=${2} + BWCA=${2}; SCC=${1} IFS="$OIFS"; unset OIFS BWC fi ;; diff --git a/qmbimat/Makefile b/qmbimat/Makefile new file mode 100644 index 000000000..fad1ffe7a --- /dev/null +++ b/qmbimat/Makefile @@ -0,0 +1,37 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=qmbimat +PKG_VERSION:=0.0.1 +PKG_RELEASE:=1 + +PKG_MAINTAINER:=Konstantine Shevlakov +PKG_LICENSE:=LICENSE +PKG_LICENSE_FILES:=COPYING + +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://github.com/quectel-official/QMbimAT.git +PKG_SOURCE_VERSION:=7c665521a732acbe7722ed19c91011163649f899 + +PKG_SOURCE_SUBDIR:=$(PKG_NAME) +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR) + +include $(INCLUDE_DIR)/package.mk + +define Package/$(PKG_NAME) + SECTION:=utils + CATEGORY:=Network + TITLE:=Tool for send AT-command via MBIM interface + URL:=https://github.com/quectel-official/QMbimAT +endef + +define Package/$(PKG_NAME)/description + Tool for send AT-command via MBIM interface +endef + +define Package/$(PKG_NAME)/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/$(PKG_NAME) $(1)/usr/bin/ +endef + +$(eval $(call BuildPackage,$(PKG_NAME))) diff --git a/qmbimat/patches/0001-cc.patch b/qmbimat/patches/0001-cc.patch new file mode 100644 index 000000000..e7eb8be8c --- /dev/null +++ b/qmbimat/patches/0001-cc.patch @@ -0,0 +1,20 @@ +--- a/Makefile ++++ b/Makefile +@@ -16,14 +16,14 @@ OBJS = $(SOURCES:%.c=%.o) + all: $(PROG) + + $(PROG): $(OBJS) $(MYLIBS) +- g++ $(LDFLAGS) $(OBJS) $(LIBS) -o $(PROG) ++ $(CXX) $(LDFLAGS) $(OBJS) $(LIBS) -o $(PROG) + rm -rf ./src/*.o + + %.o:%.c +- gcc $(CFLAGS) -c -o $@ $< ++ $(CC) $(CFLAGS) -c -o $@ $< + + %.a: +- make -C $(dir $@) ++ $(MAKE) -C $(dir $@) + + clean: + # make clean -C $(SUBDIR) diff --git a/telegrambot/Makefile b/telegrambot/Makefile index ef91242fc..82af7706c 100644 --- a/telegrambot/Makefile +++ b/telegrambot/Makefile @@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=telegrambot PKG_VERSION:=0.0.4 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_MAINTAINER:=Konstantine Shevlakov include $(INCLUDE_DIR)/package.mk diff --git a/telegrambot/root/usr/lib/telegrambot/plugins/wanip.sh b/telegrambot/root/usr/lib/telegrambot/plugins/wanip.sh index d8b7e88ed..650e72c81 100755 --- a/telegrambot/root/usr/lib/telegrambot/plugins/wanip.sh +++ b/telegrambot/root/usr/lib/telegrambot/plugins/wanip.sh @@ -1,3 +1,3 @@ #ip r | awk '/default/{print "interface "$5": "$9}' -IP=$(nslookup myip.opendns.com resolver1.opendns.com | awk '/^Address( 1)?: / { print $3 }') +IP=$(nslookup myip.opendns.com resolver1.opendns.com | awk '/^[[:space:]]*Address( 1)?: / { print $2 }') echo -en "[$IP](https://whois.ru/$IP)" diff --git a/telegrambot/root/usr/lib/telegrambot/telegrambot b/telegrambot/root/usr/lib/telegrambot/telegrambot index 0a178cde5..4f84c937e 100755 --- a/telegrambot/root/usr/lib/telegrambot/telegrambot +++ b/telegrambot/root/usr/lib/telegrambot/telegrambot @@ -159,6 +159,7 @@ do } || { RETURN_TEXT="Command not accepted! Uptime ${UPTIME} sec is smaller 180s" reply_to_msg $msg_id $origin "\${RETURN_TEXT}" + } ;; ("/wol") (echo "Call $cmd [$parms]" | logger -t "telegram_bot" -p daemon.info)&