diff --git a/clashoo/Makefile b/clashoo/Makefile index 2eb045782..597b43d69 100644 --- a/clashoo/Makefile +++ b/clashoo/Makefile @@ -6,13 +6,13 @@ PKG_UPSTREAM_TAG:=v$(PKG_UPSTREAM_VERSION) PKG_SHORT_SHA:=0455d0d PKG_VERSION:=2026.11.12.$(PKG_UPSTREAM_VERSION) -PKG_RELEASE:=30 +PKG_RELEASE:=31 PKG_SOURCE:=$(PKG_NAME)-stable-$(PKG_UPSTREAM_TAG)-$(PKG_SHORT_SHA).tar.gz PKG_SOURCE_SUBDIR:=$(PKG_NAME)-stable-$(PKG_UPSTREAM_TAG)-$(PKG_SHORT_SHA) PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR) PKG_SOURCE_URL:=https://github.com/kenzok8/openwrt-clashoo/releases/download/mihomo-src -PKG_SOURCE_VERSION:=6fc13a30bff74e8781714defe9aae70ae50574ed +PKG_SOURCE_VERSION:=699f86a8fa8f94912881aa45be209f11ac9a691c PKG_HASH:=skip PKG_BUILD_VERSION:=$(PKG_UPSTREAM_TAG) diff --git a/libopenssl-gost/Makefile b/libopenssl-gost/Makefile index 82444175b..458679b89 100644 --- a/libopenssl-gost/Makefile +++ b/libopenssl-gost/Makefile @@ -3,11 +3,11 @@ include $(TOPDIR)/rules.mk PKG_NAME:=libopenssl-gost PKG_VERSION:=3.0.5 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/gost-engine/engine.git -PKG_SOURCE_VERSION:=af2b7e69e855572202420ffc36bae06ccd70796b +PKG_SOURCE_VERSION:=81d161e978130ddb05a2415bfa80167127ed2bc5 PKG_MAINTAINER:= PKG_LICENSE:=Apache-2.0 diff --git a/luci-app-trafficctl/Makefile b/luci-app-trafficctl/Makefile index ed3f86bb6..5c4753db1 100644 --- a/luci-app-trafficctl/Makefile +++ b/luci-app-trafficctl/Makefile @@ -1,8 +1,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-trafficctl -PKG_VERSION:=1.30.7 -PKG_RELEASE:=34 +PKG_VERSION:=1.30.8 +PKG_RELEASE:=35 PKG_LICENSE:=Apache-2.0 PKG_MAINTAINER:=Denis Iusupov diff --git a/luci-app-trafficctl/htdocs/luci-static/resources/view/trafficctl/status.js b/luci-app-trafficctl/htdocs/luci-static/resources/view/trafficctl/status.js index 0e7fe9c02..2ead0bd0d 100644 --- a/luci-app-trafficctl/htdocs/luci-static/resources/view/trafficctl/status.js +++ b/luci-app-trafficctl/htdocs/luci-static/resources/view/trafficctl/status.js @@ -1027,6 +1027,64 @@ function buildOverviewPanel(ifaces, ifHistory, speedMap, nameByIp, showOther, on var PRIVATE_RE = /^(192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[01])\.)/; +// ── Reverse DNS for the connection table (#165) ───────────────────────────── +// +// network.rrdns replies once every query has an answer or its timeout has run +// out. AdGuard Home in front of dnsmasq (AGH on :53, dnsmasq moved to :54) +// rate-limits each client to 20 queries a second by default and drops the +// excess without an answer, and the router itself is one such client. The +// view used to send every unresolved destination in one batch and throw the +// reply away if the next device poll (3 s) had started meanwhile, so a device +// with more than 20 destinations waited out the 5 s timeout on every tick and +// never showed a name, and each tick sent the same batch again. Now a tick +// sends at most RDNS_BATCH new lookups, nothing goes out twice while it is in +// flight, and a reply is kept whenever it arrives. A destination with no +// answer is retried after RDNS_RETRY_MS rather than shown as "—" for good. +var RDNS_BATCH = 16; +var RDNS_TIMEOUT = 5000; +var RDNS_RETRY_MS = 60000; + +function rdnsState() { + return { names: {}, misses: {}, pending: {} }; +} + +// The destinations of dsts that need a lookup now, at most RDNS_BATCH. +function rdnsPick(st, dsts, now) { + var out = []; + for (var i = 0; i < dsts.length && out.length < RDNS_BATCH; i++) { + var d = dsts[i]; + if (st.names[d] !== undefined || st.pending[d]) continue; + if (st.misses[d] !== undefined && now - st.misses[d] < RDNS_RETRY_MS) continue; + out.push(d); + } + return out; +} + +// What a host cell shows: the name, null for "no name", undefined while the +// lookup has not finished. +function rdnsShown(st, d) { + if (st.names[d] !== undefined) return st.names[d]; + if (st.misses[d] !== undefined && !st.pending[d]) return null; + return undefined; +} + +// lookup(addrs) is a promise of { addr: host }; paint(addr, host or null) is +// called for every address once its answer, or the lack of one, is known. +function rdnsResolve(st, addrs, lookup, paint, clock) { + addrs.forEach(function(d) { st.pending[d] = true; }); + function done(replies) { + var now = clock(); + addrs.forEach(function(d) { + var host = (replies && typeof(replies[d]) === 'string' && replies[d]) || null; + delete st.pending[d]; + if (host) { st.names[d] = host; delete st.misses[d]; } + else st.misses[d] = now; + paint(d, host); + }); + } + return Promise.resolve(addrs.length ? lookup(addrs) : {}).then(done, function() { done(null); }); +} + // ── Rate-limit targets that are not a single device ───────────────────────── // // A limit can be placed on a block of addresses ("10.0.20.0/24") or on the @@ -1824,13 +1882,12 @@ return view.extend({ _deviceTimer: null, _pollMode: null, _onPopState: null, - _rdnsCache: {}, + _rdns: rdnsState(), _sortCol: 'bytes', _sortDir: 'desc', _sumCol: 'name', _sumDir: 'asc', _hiddenCols: {}, - _queryGen: 0, load: function() { // config_get rides along with the leases so the router-wide Poll and @@ -2158,31 +2215,23 @@ return view.extend({ var statsDiv = E('div', { 'style': 'margin:8px 0', 'class': opts.showStats === false ? 'tc-hidden' : '' }); var connsDiv = E('div', { 'class': opts.showConns === false ? 'tc-hidden' : '' }); - function _rdnsBatch(addrs, gen) { + function paintHost(dst, host) { + Array.prototype.forEach.call( + connsDiv.querySelectorAll('[data-dst="'+dst+'"]'), + function(cell) { + if (host) { cell.textContent = host; cell.style.color = ''; } + else { cell.innerHTML = '—'; } + } + ); + } + + // No generation check: a name is a name whichever poll asked for it, + // and the cells are looked up in the table on screen when it lands. + function _rdnsBatch(addrs) { if (!addrs.length) return; - callNetworkRrdnsLookup(addrs, 5000, addrs.length).then(function(replies) { - if (gen !== self._queryGen) return; - addrs.forEach(function(dst) { - var host = (replies && replies[dst]) || null; - self._rdnsCache[dst] = host; - Array.prototype.forEach.call( - connsDiv.querySelectorAll('[data-dst="'+dst+'"]'), - function(cell) { - if (host) { cell.textContent = host; cell.style.color = ''; } - else { cell.innerHTML = '—'; } - } - ); - }); - }).catch(function() { - if (gen !== self._queryGen) return; - addrs.forEach(function(dst) { - self._rdnsCache[dst] = null; - Array.prototype.forEach.call( - connsDiv.querySelectorAll('[data-dst="'+dst+'"]'), - function(cell) { cell.innerHTML = '—'; } - ); - }); - }); + rdnsResolve(self._rdns, addrs, function(a) { + return callNetworkRrdnsLookup(a, RDNS_TIMEOUT, a.length); + }, paintHost, Date.now); } // Speed graph popup on spark cell hover @@ -3136,9 +3185,6 @@ return view.extend({ function runSingle(ip) { var o = loadOpts(); var proto = (o.proto && o.proto !== 'all') ? o.proto : ''; - self._queryGen++; - var gen = self._queryGen; - pollStart(); callDevice(ip, proto).then(function(data) { @@ -3275,25 +3321,16 @@ return view.extend({ data.connections.length + ' ' + _('connections') + '. ' + _('Click header to sort.'))); if (o.rdns) { - var seen = {}, uncached = []; + var seen = {}, dsts = []; data.connections.forEach(function(c) { var dst = c.dst || ''; if (!dst || seen[dst] || PRIVATE_RE.test(dst)) return; seen[dst] = true; - if (self._rdnsCache[dst] !== undefined) { - var cached = self._rdnsCache[dst]; - Array.prototype.forEach.call( - connsDiv.querySelectorAll('[data-dst="'+dst+'"]'), - function(cell) { - if (cached) { cell.textContent = cached; cell.style.color = ''; } - else { cell.innerHTML = '—'; } - } - ); - } else { - uncached.push(dst); - } + dsts.push(dst); + var shown = rdnsShown(self._rdns, dst); + if (shown !== undefined) paintHost(dst, shown); }); - _rdnsBatch(uncached, gen); + _rdnsBatch(rdnsPick(self._rdns, dsts, Date.now())); } } } diff --git a/luci-app-wwand/htdocs/luci-static/resources/view/wwand/settings.js b/luci-app-wwand/htdocs/luci-static/resources/view/wwand/settings.js index 1b67ad5a9..2e4e74d6d 100644 --- a/luci-app-wwand/htdocs/luci-static/resources/view/wwand/settings.js +++ b/luci-app-wwand/htdocs/luci-static/resources/view/wwand/settings.js @@ -1248,6 +1248,11 @@ return view.extend({ (proto ? ' (' + String(proto).toUpperCase() + ')' : ''); var warns = renderWarnings(data.info && data.info.config_warnings); + var modesSid = self.modemSid(data.modem); + /* as the daemon reads it (qmi_backend.uc parse_modes): an empty value + and a uci list apply no mask, so only a non-empty string is pinned */ + var cfgModes = modesSid ? uci.get('network', modesSid, 'modes') : null; + var pinnedModes = (typeof cfgModes == 'string' && cfgModes != '') ? cfgModes : null; /* multi-modem: one tab per live modem; a tab reloads the page with ?modem= so every tool section below targets that modem */ @@ -1290,10 +1295,21 @@ return view.extend({ (settable && settable.length == 0) ? E('p', {}, E('em', {}, [ s.settable_note || _('This modem\'s bands cannot be changed from here right now.') ])) : '', - row(_('Radio technologies'), E('div', {}, modeBoxes), + row(_('Radio technologies'), E('div', {}, modeBoxes), [ can('mode_preference') ? _('Which generations the modem may use. Unchecking one stops it being used at all — a modem restricted to 5G will not fall back to LTE where 5G is absent, so leave everything the network offers checked unless you are deliberately pinning a technology.') - : _('Shown, not set: this modem picks its technologies with its own RAT setting, and a band edit keeps it as it is.')), + : _('Shown, not set: this modem picks its technologies with its own RAT setting, and a band edit keeps it as it is.'), + /* A change here goes to the modem only, while a configured + `modes` is applied again at every modem start (wwand + modem_init_qmi step_confnet_apply, modem_mbim sync_modes): + without this note a power cycle silently undid the edit + (evidence: ddimension/wwand#75, 2026-11-13: LTE + NR5G + ticked here, modes 'nr5g' configured, LTE gone after it) */ + pinnedModes ? E('div', { 'style': 'margin-top:4px' }, [ + E('strong', {}, _('Lasts until the next modem start:')), ' ', + _('this modem\'s settings fix "Radio technology" at "%s", and wwand applies that again whenever the modem starts. To keep a change, make it there.').format(pinnedModes), + ]) : '', + ]), orderPicker ? row(_('RAT priority'), orderPicker, _('The order in which the modem searches the radio technologies, first row first. Only ticked ones are searched: a technology allowed above but unticked here may never be used — a modem with 5G enabled and NR5G missing from this list may never try 5G standalone. Applying a change re-attaches the modem, so its connections drop briefly. Kept in the modem\'s own memory; to have wwand restore it on every start, set "RAT priority" on the modem page.')) : '', can('usage_preference') ? row(_('UE usage'), usageSel, diff --git a/luci-app-wwand/po/templates/wwand.pot b/luci-app-wwand/po/templates/wwand.pot index fbe84a74a..a470dc942 100644 --- a/luci-app-wwand/po/templates/wwand.pot +++ b/luci-app-wwand/po/templates/wwand.pot @@ -7,7 +7,7 @@ msgid "" "overwrite it. Pick a different name." msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:575 +#: htdocs/luci-static/resources/wwand/modemopts.js:599 msgid "\"%s\" is listed twice" msgstr "" @@ -118,7 +118,7 @@ msgstr "" msgid "(last attempt)" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:597 +#: htdocs/luci-static/resources/wwand/modemopts.js:621 #: htdocs/luci-static/resources/wwand/simlist.js:232 msgid "(none)" msgstr "" @@ -188,28 +188,32 @@ msgid "4 — embedded" msgstr "" #: htdocs/luci-static/resources/view/wwand/settings.js:914 -#: htdocs/luci-static/resources/wwand/modemopts.js:619 +#: htdocs/luci-static/resources/wwand/modemopts.js:643 msgid "5G NR SA cell lock" msgstr "" +#: htdocs/luci-static/resources/wwand/modemopts.js:562 +msgid "5G NR mode" +msgstr "" + #: htdocs/luci-static/resources/view/wwand/status.js:1221 msgid "5G NR neighbour cells" msgstr "" -#: htdocs/luci-static/resources/view/wwand/settings.js:1310 +#: htdocs/luci-static/resources/view/wwand/settings.js:1326 msgid "" "5G bands for non-standalone operation, where a 5G carrier rides on an LTE " "anchor. Which of the two lists applies depends on the network: the Status " "page names the mode the modem is actually in." msgstr "" -#: htdocs/luci-static/resources/view/wwand/settings.js:1308 +#: htdocs/luci-static/resources/view/wwand/settings.js:1324 msgid "" "5G bands for standalone operation, where the modem talks 5G only with no LTE " "anchor." msgstr "" -#: htdocs/luci-static/resources/view/wwand/settings.js:1306 +#: htdocs/luci-static/resources/view/wwand/settings.js:1322 msgid "" "5G bands. This modem has one 5G band list for standalone and non-standalone " "operation alike." @@ -333,11 +337,11 @@ msgstr "" msgid "Aggregation DL datagram size" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:537 +#: htdocs/luci-static/resources/wwand/modemopts.js:547 msgid "All" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:751 +#: htdocs/luci-static/resources/wwand/modemopts.js:775 msgid "All sentences" msgstr "" @@ -371,7 +375,7 @@ msgstr "" msgid "Applied, except the band settings — the modem refused them (%s)." msgstr "" -#: htdocs/luci-static/resources/view/wwand/settings.js:1323 +#: htdocs/luci-static/resources/view/wwand/settings.js:1339 msgid "Apply" msgstr "" @@ -426,7 +430,7 @@ msgstr "" msgid "Authentication type" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:756 +#: htdocs/luci-static/resources/wwand/modemopts.js:780 msgid "Auto-correct modem config" msgstr "" @@ -488,6 +492,10 @@ msgstr "" msgid "Capabilities" msgstr "" +#: htdocs/luci-static/resources/wwand/modemopts.js:529 +msgid "Card (IPAe, default)" +msgstr "" + #: htdocs/luci-static/resources/view/wwand/status.js:1144 msgid "Carrier aggregation" msgstr "" @@ -681,11 +689,11 @@ msgstr "" msgid "Datapath counters (parent)" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:702 +#: htdocs/luci-static/resources/wwand/modemopts.js:726 msgid "Dead-bearer poll count" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:525 +#: htdocs/luci-static/resources/wwand/modemopts.js:535 msgid "" "Default SIM PIN for this modem, entered on each start. Empty = unlocked SIM. " "Per-card overrides live in the SIMs list." @@ -920,7 +928,7 @@ msgstr "" msgid "FCC unlock" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:652 +#: htdocs/luci-static/resources/wwand/modemopts.js:676 msgid "" "Failed attempts at which the recovery ladder cycles the radio, resets the " "modem and pulses the reset line / repowers it, e.g. \"2 6 12\". One or two " @@ -943,7 +951,7 @@ msgstr "" msgid "Firmware" msgstr "" -#: htdocs/luci-static/resources/view/wwand/settings.js:1394 +#: htdocs/luci-static/resources/view/wwand/settings.js:1410 msgid "Firmware protocol mode" msgstr "" @@ -961,7 +969,7 @@ msgstr "" msgid "Fix age" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:750 +#: htdocs/luci-static/resources/wwand/modemopts.js:774 msgid "Fix only (less CPU)" msgstr "" @@ -994,11 +1002,11 @@ msgstr "" msgid "GNSS" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:747 +#: htdocs/luci-static/resources/wwand/modemopts.js:771 msgid "GNSS NMEA output" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:730 +#: htdocs/luci-static/resources/wwand/modemopts.js:754 msgid "GNSS receiver" msgstr "" @@ -1144,7 +1152,7 @@ msgstr "" msgid "Id" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:666 +#: htdocs/luci-static/resources/wwand/modemopts.js:690 msgid "" "If the modem has not answered since boot or since the outage began, pulse " "its reset GPIO once after this many seconds. Only a modem with its own reset " @@ -1186,7 +1194,7 @@ msgid "" "anyway?" msgstr "" -#: htdocs/luci-static/resources/view/wwand/settings.js:1280 +#: htdocs/luci-static/resources/view/wwand/settings.js:1285 msgid "Interfaces" msgstr "" @@ -1205,7 +1213,7 @@ msgstr "" msgid "International Mobile Equipment Identity — the modem hardware serial" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:558 +#: htdocs/luci-static/resources/wwand/modemopts.js:582 msgid "Keep the modem's order" msgstr "" @@ -1225,7 +1233,7 @@ msgstr "" msgid "LTE" msgstr "" -#: htdocs/luci-static/resources/view/wwand/settings.js:1303 +#: htdocs/luci-static/resources/view/wwand/settings.js:1319 msgid "LTE bands" msgstr "" @@ -1234,7 +1242,7 @@ msgid "LTE carriers" msgstr "" #: htdocs/luci-static/resources/view/wwand/settings.js:912 -#: htdocs/luci-static/resources/wwand/modemopts.js:608 +#: htdocs/luci-static/resources/wwand/modemopts.js:632 msgid "LTE cell lock" msgstr "" @@ -1250,6 +1258,10 @@ msgstr "" msgid "Last error" msgstr "" +#: htdocs/luci-static/resources/view/wwand/settings.js:1309 +msgid "Lasts until the next modem start:" +msgstr "" + #: htdocs/luci-static/resources/view/wwand/settings.js:257 msgid "Later" msgstr "" @@ -1258,24 +1270,25 @@ msgstr "" msgid "Latitude and longitude as the receiver last reported them." msgstr "" -#: htdocs/luci-static/resources/view/wwand/settings.js:1312 +#: htdocs/luci-static/resources/view/wwand/settings.js:1328 msgid "" "Leave every band unchecked (and the fallback empty) to let the modem use all " "supported bands." msgstr "" #: htdocs/luci-static/resources/wwand/modemopts.js:178 -#: htdocs/luci-static/resources/wwand/modemopts.js:749 +#: htdocs/luci-static/resources/wwand/modemopts.js:564 +#: htdocs/luci-static/resources/wwand/modemopts.js:773 msgid "Leave modem setting unchanged" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:757 +#: htdocs/luci-static/resources/wwand/modemopts.js:781 msgid "" "Let wwand reprogram mismatched modem-side settings (attach profile, etc.) " "when it detects them." msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:736 +#: htdocs/luci-static/resources/wwand/modemopts.js:760 msgid "" "Let wwand step the system clock from the GNSS time — only while the clock is " "plainly unset, so it never fights the NTP client. Off by default. For " @@ -1315,12 +1328,12 @@ msgstr "" msgid "Lock" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:609 +#: htdocs/luci-static/resources/wwand/modemopts.js:633 msgid "" "Lock to LTE cells, one \"earfcn:pci\" per entry (several = a cell list)." msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:620 +#: htdocs/luci-static/resources/wwand/modemopts.js:644 msgid "" "Lock to a 5G SA cell: \"pci:arfcn:scs:band\" — the subcarrier spacing is in " "kHz (15, 30, 60 …). The \"Lock this 5G cell\" button fills in 30 as a " @@ -1348,11 +1361,11 @@ msgstr "" msgid "MBIM, over the QMI passthrough" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:582 +#: htdocs/luci-static/resources/wwand/modemopts.js:606 msgid "MCC" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:587 +#: htdocs/luci-static/resources/wwand/modemopts.js:611 msgid "MNC" msgstr "" @@ -1419,7 +1432,7 @@ msgstr "" msgid "Minimum severity" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:583 +#: htdocs/luci-static/resources/wwand/modemopts.js:607 msgid "Mobile Country Code for manual network selection." msgstr "" @@ -1427,7 +1440,7 @@ msgstr "" msgid "Mobile Modems" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:588 +#: htdocs/luci-static/resources/wwand/modemopts.js:612 msgid "Mobile Network Code (requires MCC)." msgstr "" @@ -1475,7 +1488,7 @@ msgstr "" msgid "Modem currently locked: %s — the live read-back of the lock editor." msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:536 +#: htdocs/luci-static/resources/wwand/modemopts.js:546 msgid "Modem default" msgstr "" @@ -1487,7 +1500,7 @@ msgstr "" msgid "Modem device" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:636 +#: htdocs/luci-static/resources/wwand/modemopts.js:660 msgid "Modem init delay" msgstr "" @@ -1523,7 +1536,7 @@ msgid "Modem settings applied." msgstr "" #: htdocs/luci-static/resources/view/wwand/modems.js:122 -#: htdocs/luci-static/resources/view/wwand/settings.js:1276 +#: htdocs/luci-static/resources/view/wwand/settings.js:1281 #: root/usr/share/luci/menu.d/luci-app-wwand.json:39 msgid "Modems" msgstr "" @@ -1560,7 +1573,7 @@ msgstr "" msgid "NCM (AT + ethernet data port)" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:703 +#: htdocs/luci-static/resources/wwand/modemopts.js:727 msgid "" "NCM modems only. How many consecutive status polls may list no data context " "— with no received traffic in between — before wwand declares the bearer " @@ -1578,18 +1591,26 @@ msgstr "" msgid "NMEA stream" msgstr "" -#: htdocs/luci-static/resources/view/wwand/settings.js:1309 +#: htdocs/luci-static/resources/view/wwand/settings.js:1325 msgid "NR5G NSA bands" msgstr "" -#: htdocs/luci-static/resources/view/wwand/settings.js:1307 +#: htdocs/luci-static/resources/view/wwand/settings.js:1323 msgid "NR5G SA bands" msgstr "" -#: htdocs/luci-static/resources/view/wwand/settings.js:1305 +#: htdocs/luci-static/resources/view/wwand/settings.js:1321 msgid "NR5G bands" msgstr "" +#: htdocs/luci-static/resources/wwand/modemopts.js:565 +msgid "NSA and SA" +msgstr "" + +#: htdocs/luci-static/resources/wwand/modemopts.js:566 +msgid "NSA only" +msgstr "" + #: htdocs/luci-static/resources/view/wwand/settings.js:791 #: htdocs/luci-static/resources/view/wwand/sims.js:89 #: htdocs/luci-static/resources/wwand/simlist.js:144 @@ -1754,7 +1775,7 @@ msgstr "" msgid "On, card detected at low level" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:657 +#: htdocs/luci-static/resources/wwand/modemopts.js:681 msgid "One to three whole numbers, rising, e.g. \"2 6 12\"" msgstr "" @@ -1786,7 +1807,7 @@ msgstr "" msgid "Optional APN for this card, overriding the interface/default APN." msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:595 +#: htdocs/luci-static/resources/wwand/modemopts.js:619 msgid "" "Optional: a saved PLMN list (config wwand_plmnlist) the daemon restores " "before every radio-on. Edit lists on the modem status page." @@ -1886,7 +1907,7 @@ msgstr "" msgid "Parent device" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:679 +#: htdocs/luci-static/resources/wwand/modemopts.js:703 msgid "Park the radio when idle" msgstr "" @@ -1925,7 +1946,7 @@ msgstr "" msgid "Persist in modem" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:624 +#: htdocs/luci-static/resources/wwand/modemopts.js:648 msgid "Persist lock in modem" msgstr "" @@ -1969,7 +1990,7 @@ msgstr "" msgid "Preferred-PLMN editor —" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:594 +#: htdocs/luci-static/resources/wwand/modemopts.js:618 #: htdocs/luci-static/resources/wwand/simlist.js:228 msgid "Preferred-PLMN list" msgstr "" @@ -2028,11 +2049,11 @@ msgstr "" msgid "Protocol" msgstr "" -#: htdocs/luci-static/resources/view/wwand/settings.js:1412 +#: htdocs/luci-static/resources/view/wwand/settings.js:1428 msgid "Protocol switch failed: %s." msgstr "" -#: htdocs/luci-static/resources/view/wwand/settings.js:1411 +#: htdocs/luci-static/resources/view/wwand/settings.js:1427 msgid "Protocol switch to %s issued — the modem resets." msgstr "" @@ -2044,7 +2065,7 @@ msgstr "" msgid "Provider confirmations (notifications)" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:680 +#: htdocs/luci-static/resources/wwand/modemopts.js:704 msgid "" "Put the modem's radio into low power once no interface on this modem is up — " "for battery and solar installs, where an idle modem still spends a couple of " @@ -2065,7 +2086,7 @@ msgstr "" msgid "QMI Foxconn (SDX55, DW5821e)" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:551 +#: htdocs/luci-static/resources/wwand/modemopts.js:575 msgid "" "QMI and MBIM modems: the order in which the modem searches the radio " "technologies, most preferred first, e.g. nr5g,lte. wwand writes " @@ -2084,7 +2105,7 @@ msgstr "" msgid "QRTR node" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:748 +#: htdocs/luci-static/resources/wwand/modemopts.js:772 msgid "" "Quectel and ASR modems: which NMEA sentences the receiver streams. Written " "when wwand starts the receiver; saving a change restarts this modem's bring-" @@ -2111,8 +2132,8 @@ msgstr "" msgid "RAT" msgstr "" -#: htdocs/luci-static/resources/view/wwand/settings.js:1297 -#: htdocs/luci-static/resources/wwand/modemopts.js:550 +#: htdocs/luci-static/resources/view/wwand/settings.js:1313 +#: htdocs/luci-static/resources/wwand/modemopts.js:574 msgid "RAT priority" msgstr "" @@ -2184,11 +2205,11 @@ msgstr "" msgid "Radio stack" msgstr "" -#: htdocs/luci-static/resources/view/wwand/settings.js:1293 +#: htdocs/luci-static/resources/view/wwand/settings.js:1298 msgid "Radio technologies" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:534 +#: htdocs/luci-static/resources/wwand/modemopts.js:544 msgid "Radio technology" msgstr "" @@ -2254,21 +2275,21 @@ msgstr "" msgid "Reboot" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:642 +#: htdocs/luci-static/resources/wwand/modemopts.js:666 msgid "Reboot after N failures" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:671 +#: htdocs/luci-static/resources/wwand/modemopts.js:695 msgid "Reboot after N protocol errors" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:672 +#: htdocs/luci-static/resources/wwand/modemopts.js:696 msgid "" "Reboot after this many consecutive control-protocol errors. Gated by the " "failure-reboot setting above — with reboot disabled it never fires." msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:643 +#: htdocs/luci-static/resources/wwand/modemopts.js:667 msgid "" "Reboot the router after this many failed connection attempts. 0 = never " "reboot — the hardware recovery rungs (op-mode cycle, modem reset, GPIO/" @@ -2289,7 +2310,7 @@ msgstr "" msgid "Recovery" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:651 +#: htdocs/luci-static/resources/wwand/modemopts.js:675 msgid "Recovery steps" msgstr "" @@ -2365,7 +2386,7 @@ msgstr "" msgid "Repower" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:684 +#: htdocs/luci-static/resources/wwand/modemopts.js:708 msgid "Repower / reset duration" msgstr "" @@ -2388,7 +2409,7 @@ msgstr "" msgid "Reset GPIO fallback" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:665 +#: htdocs/luci-static/resources/wwand/modemopts.js:689 msgid "Reset a never-answering modem after (s)" msgstr "" @@ -2406,11 +2427,11 @@ msgstr "" msgid "Reset modem now" msgstr "" -#: htdocs/luci-static/resources/view/wwand/settings.js:1328 +#: htdocs/luci-static/resources/view/wwand/settings.js:1344 msgid "Reset radio/band/usage/roaming settings to defaults?" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:697 +#: htdocs/luci-static/resources/wwand/modemopts.js:721 msgid "" "Reset the modem when, with a connection up, the kernel reports its transmit " "queue stuck for this many seconds, i.e. the modem has stopped taking packets " @@ -2426,7 +2447,7 @@ msgid "" "or dropped off USB." msgstr "" -#: htdocs/luci-static/resources/view/wwand/settings.js:1372 +#: htdocs/luci-static/resources/view/wwand/settings.js:1388 msgid "Reset to defaults" msgstr "" @@ -2450,7 +2471,7 @@ msgstr "" msgid "Restart modem now" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:691 +#: htdocs/luci-static/resources/wwand/modemopts.js:715 msgid "" "Restart the connection after this many seconds without received packets (0 = " "off)." @@ -2464,14 +2485,14 @@ msgstr "" msgid "Restore now" msgstr "" -#: htdocs/luci-static/resources/view/wwand/settings.js:1304 +#: htdocs/luci-static/resources/view/wwand/settings.js:1320 msgid "" "Restrict LTE to these bands. Leave everything unchecked to let the modem use " "all bands it supports — a narrowed list is a way to pin a known-good band, " "not a way to improve a working link." msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:535 +#: htdocs/luci-static/resources/wwand/modemopts.js:545 msgid "Restrict the modem to certain radio access technologies." msgstr "" @@ -2479,17 +2500,29 @@ msgstr "" msgid "Revision" msgstr "" -#: htdocs/luci-static/resources/view/wwand/settings.js:1417 +#: htdocs/luci-static/resources/view/wwand/settings.js:1433 msgid "" "Rewrites the modem firmware mode (QMI ↔ MBIM). The modem resets; use only " "when the other mode is known to work on this module. The daemon clears a " "contradicting \"Control protocol\" pin when the switch succeeds." msgstr "" -#: htdocs/luci-static/resources/view/wwand/settings.js:1301 +#: htdocs/luci-static/resources/view/wwand/settings.js:1317 msgid "Roaming" msgstr "" +#: htdocs/luci-static/resources/wwand/modemopts.js:530 +msgid "Router (IPAd)" +msgstr "" + +#: htdocs/luci-static/resources/wwand/modemopts.js:567 +msgid "SA only" +msgstr "" + +#: htdocs/luci-static/resources/wwand/modemopts.js:527 +msgid "SGP.32 IPA" +msgstr "" + #: htdocs/luci-static/resources/wwand/format.js:278 msgid "SGP.32 IoT eUICC" msgstr "" @@ -2504,7 +2537,7 @@ msgid "SIM" msgstr "" #: htdocs/luci-static/resources/wwand/esim.js:216 -#: htdocs/luci-static/resources/wwand/modemopts.js:524 +#: htdocs/luci-static/resources/wwand/modemopts.js:534 msgid "SIM PIN" msgstr "" @@ -2638,7 +2671,7 @@ msgid "" "before the reset GPIO is pulsed (default 30)." msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:709 +#: htdocs/luci-static/resources/wwand/modemopts.js:733 msgid "Seconds between throughput/signal telemetry samples while connected." msgstr "" @@ -2649,13 +2682,13 @@ msgid "" "still current." msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:685 +#: htdocs/luci-static/resources/wwand/modemopts.js:709 msgid "" "Seconds the modem is held de-powered during a recovery power-cycle (or held " "in reset, when a reset GPIO is used). Default 30 s." msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:637 +#: htdocs/luci-static/resources/wwand/modemopts.js:661 msgid "Seconds to wait before initializing the modem." msgstr "" @@ -2719,11 +2752,11 @@ msgstr "" msgid "Set automatic" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:735 +#: htdocs/luci-static/resources/wwand/modemopts.js:759 msgid "Set the clock from GNSS" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:717 +#: htdocs/luci-static/resources/wwand/modemopts.js:741 msgid "Set the clock from the network" msgstr "" @@ -2735,7 +2768,7 @@ msgstr "" msgid "Show raw lpac log" msgstr "" -#: htdocs/luci-static/resources/view/wwand/settings.js:1296 +#: htdocs/luci-static/resources/view/wwand/settings.js:1301 msgid "" "Shown, not set: this modem picks its technologies with its own RAT setting, " "and a band edit keeps it as it is." @@ -2807,12 +2840,12 @@ msgid "State" msgstr "" #: htdocs/luci-static/resources/view/wwand/modems.js:609 -#: htdocs/luci-static/resources/view/wwand/settings.js:1278 +#: htdocs/luci-static/resources/view/wwand/settings.js:1283 #: htdocs/luci-static/resources/wwand/netsel.js:133 msgid "Status" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:718 +#: htdocs/luci-static/resources/wwand/modemopts.js:742 msgid "" "Step the system clock to the network's time (NITZ) when it is more than two " "minutes off. Smaller differences are left to NTP. A router without a real-" @@ -2830,7 +2863,7 @@ msgstr "" msgid "Storage" msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:625 +#: htdocs/luci-static/resources/wwand/modemopts.js:649 msgid "Store the cell lock in modem non-volatile memory." msgstr "" @@ -2847,11 +2880,11 @@ msgstr "" msgid "Switch now" msgstr "" -#: htdocs/luci-static/resources/view/wwand/settings.js:1415 +#: htdocs/luci-static/resources/view/wwand/settings.js:1431 msgid "Switch protocol" msgstr "" -#: htdocs/luci-static/resources/view/wwand/settings.js:1406 +#: htdocs/luci-static/resources/view/wwand/settings.js:1422 msgid "" "Switch the modem firmware to %s? The modem resets and re-enumerates — its " "connections come back on their own. A \"Control protocol\" pinned on the " @@ -2859,7 +2892,7 @@ msgid "" "contradicts disables hardware recovery for this modem." msgstr "" -#: htdocs/luci-static/resources/view/wwand/settings.js:1405 +#: htdocs/luci-static/resources/view/wwand/settings.js:1421 msgid "" "Switch the modem firmware to MBIM? The modem resets and re-enumerates. Some " "firmwares reject MBIM even though the switch itself succeeds — if the modem " @@ -2868,7 +2901,7 @@ msgid "" "contradicts disables hardware recovery for this modem." msgstr "" -#: htdocs/luci-static/resources/wwand/modemopts.js:731 +#: htdocs/luci-static/resources/wwand/modemopts.js:755 msgid "" "Switch the modem's GNSS on. With wwand-gps installed wwand reads " "the position itself: from the modem's NMEA port (reported as gps_port diff --git a/v2raya-geosite/Makefile b/v2raya-geosite/Makefile index 4749b0c65..bbb768ba4 100644 --- a/v2raya-geosite/Makefile +++ b/v2raya-geosite/Makefile @@ -10,8 +10,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=v2raya-geosite -PKG_VERSION:=20261107053621 -PKG_RELEASE:=1 +PKG_VERSION:=20261112220449 +PKG_RELEASE:=2 PKG_LICENSE:=MIT PKG_MAINTAINER:=Amr Fateem @@ -19,7 +19,7 @@ PKG_MAINTAINER:=Amr Fateem include $(INCLUDE_DIR)/package.mk GEOSITE_FILE:=dlc.dat.$(PKG_VERSION) -GEOSITE_HASH:=f110a7b96b3e3ed9c19cf18ae0ac5f8c46de54fa778863609c0a3b8f1738b58c +GEOSITE_HASH:=02ad51927d05608b672bbcdf37f37b94ce1fdb7dcd10852f367ed457ad56280b define Download/geosite URL:=https://github.com/v2fly/domain-list-community/releases/download/$(PKG_VERSION)/ diff --git a/v2raya/Makefile b/v2raya/Makefile index 02d0c8570..07d42bb3e 100644 --- a/v2raya/Makefile +++ b/v2raya/Makefile @@ -14,14 +14,14 @@ include $(TOPDIR)/rules.mk PKG_NAME:=v2raya PKG_VERSION:=2.5.15 -PKG_RELEASE:=14 +PKG_RELEASE:=15 PKG_SOURCE:=v2rayA-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/v2rayA/v2rayA/tar.gz/v$(PKG_VERSION)? PKG_HASH:=skip WEB_FILE:=v2raya-web-$(PKG_VERSION).tar.gz -WEB_HASH:=76774f195ee74604fbc43a48fe74e5f3363e81ec68af02d1c26feeeacc0f63ae +WEB_HASH:=5e4dc08ca1dd89d3cc627d951018739c753ced272bd698d8778bed3bba2197e7 PKG_BUILD_DIR:=$(BUILD_DIR)/v2rayA-$(PKG_VERSION)/service @@ -37,7 +37,7 @@ PKG_BUILD_FLAGS:=no-mips16 # shipped by older OpenWrt releases is older than that, so let GOTOOLCHAIN # fetch the matching toolchain from proxy.golang.org during the build. # scripts/update-version.sh refreshes this after a major Go bump. -V2RAYA_GO_TOOLCHAIN?=go1.27.3+auto +V2RAYA_GO_TOOLCHAIN?=go1.27.4+auto GO_PKG:=github.com/v2rayA/v2rayA GO_PKG_BUILD_PKG:=github.com/v2rayA/v2rayA @@ -123,11 +123,9 @@ endef define Build/Prepare $(call Build/Prepare/Default) - # OpenWrt's LAN is a bridge (br-lan). v2rayA 2.5.x defaults to excluding - # br-* from transparent proxy, which silently bypasses every LAN client. - # The old OpenWrt package removed that exclusion with TproxyNotSkipBr; - # 2.5.x moved it into this stored default, so strip it here as well. - $(SED) 's/,br-\*"/"/' $(PKG_BUILD_DIR)/db/configure/setting.go + # v2rayA 2.5.15 includes LAN bridges in TPROXY on OpenWrt by default + # (upstream PR #2057). The historical br-* exclusion is migrated in + # MigrateOpenWrtBridgeExclusion, so no rewrite is needed here. # v2rayA 2.2.7 (the old OpenWrt package) did not hijack DNS. 2.5.x turns # DNS interception on by default and sends queries through the proxy. With diff --git a/wwand/Makefile b/wwand/Makefile index db13fccbd..937569f6c 100644 --- a/wwand/Makefile +++ b/wwand/Makefile @@ -50,12 +50,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=wwand -PKG_VERSION:=1.9.0_pre20 -PKG_RELEASE:=93 +PKG_VERSION:=1.9.0_pre27 +PKG_RELEASE:=94 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/ddimension/wwand.git -PKG_SOURCE_VERSION:=b646c9ec93928e8a8e57356551cfa7717d7171b6 +PKG_SOURCE_VERSION:=069546e1c817cac4c3936a1b98057b27cad7fd80 PKG_MIRROR_HASH:=skip PKG_LICENSE:=GPL-2.0-only @@ -473,15 +473,16 @@ define Package/wwand-mhi SUBMENU:=WWAN TITLE:=PCIe/MHI transport + drivers for wwand DEPENDS:=+wwand +kmod-mhi-pci-generic +kmod-mhi-wwan-ctrl \ - +kmod-mhi-wwan-mbim +kmod-mhi-net + +kmod-mhi-wwan-mbim +kmod-mhi-net +kmod-qrtr-mhi endef define Package/wwand-mhi/description Support for cellular modems attached over PCIe/MHI (Foxconn T99W175 and similar), whose control ports appear on the kernel wwan subsystem. Pulls the - 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). + MHI bus/PCI/control/data drivers and the MHI IPC-router channel (for + modems whose QMI lives only on the QRTR bus, option device 'qrtr'), 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 worth weighing on a QMI-driven MHI modem: many of them expose no DUN channel and therefore no AT port at all, and wwand can then