diff --git a/daed/Makefile b/daed/Makefile index 814584c..a3b5749 100644 --- a/daed/Makefile +++ b/daed/Makefile @@ -5,10 +5,10 @@ include $(TOPDIR)/rules.mk PKG_NAME:=daed -PKG_VERSION:=2025.07.20 +PKG_VERSION:=2025.07.23 DAED_VERSION:=daed-c3588a9 WING_VERSION:=wing-6df3da2 -CORE_VERSION:=core-635ab7e +CORE_VERSION:=core-358f459 WING_HASH_SHORT:=$(shell echo $(WING_VERSION) | cut -d- -f2) CORE_HASH_SHORT:=$(shell echo $(CORE_VERSION) | cut -d- -f2) PKG_RELEASE:=1 diff --git a/luci-app-homeproxy/htdocs/luci-static/resources/homeproxy.js b/luci-app-homeproxy/htdocs/luci-static/resources/homeproxy.js index 5f40810..369b3a4 100644 --- a/luci-app-homeproxy/htdocs/luci-static/resources/homeproxy.js +++ b/luci-app-homeproxy/htdocs/luci-static/resources/homeproxy.js @@ -80,7 +80,7 @@ return baseclass.extend({ __name__: 'CBI.StaticList', renderWidget: function(/* ... */) { - var dl = form.DynamicList.prototype.renderWidget.apply(this, arguments); + let dl = form.DynamicList.prototype.renderWidget.apply(this, arguments); dl.querySelector('.add-item ul > li[data-value="-"]')?.remove(); return dl; } @@ -88,52 +88,44 @@ return baseclass.extend({ calcStringMD5(e) { /* Thanks to https://stackoverflow.com/a/41602636 */ - function h(a, b) { - var c, d, e, f, g; - e = a & 2147483648; - f = b & 2147483648; - c = a & 1073741824; - d = b & 1073741824; + let h = (a, b) => { + let c, d, e, f, g; + c = a & 2147483648; + d = b & 2147483648; + e = a & 1073741824; + f = b & 1073741824; g = (a & 1073741823) + (b & 1073741823); - return c & d ? g ^ 2147483648 ^ e ^ f : c | d ? g & 1073741824 ? g ^ 3221225472 ^ e ^ f : g ^ 1073741824 ^ e ^ f : g ^ e ^ f; - } - function k(a, b, c, d, e, f, g) { a = h(a, h(h(b & c | ~b & d, e), g)); return h(a << f | a >>> 32 - f, b); } - function l(a, b, c, d, e, f, g) { a = h(a, h(h(b & d | c & ~d, e), g)); return h(a << f | a >>> 32 - f, b); } - function m(a, b, d, c, e, f, g) { a = h(a, h(h(b ^ d ^ c, e), g)); return h(a << f | a >>> 32 - f, b); } - function n(a, b, d, c, e, f, g) { a = h(a, h(h(d ^ (b | ~c), e), g)); return h(a << f | a >>> 32 - f, b); } - function p(a) { - var b = '', d = ''; - for (var c = 0; 3 >= c; c++) d = a >>> 8 * c & 255, d = '0' + d.toString(16), b += d.substr(d.length - 2, 2); - return b; - } + return e & f ? g ^ 2147483648 ^ c ^ d : e | f ? g & 1073741824 ? g ^ 3221225472 ^ c ^ d : g ^ 1073741824 ^ c ^ d : g ^ c ^ d; + }, k = (a, b, c, d, e, f, g) => h((a = h(a, h(h(b & c | ~b & d, e), g))) << f | a >>> 32 - f, b), + l = (a, b, c, d, e, f, g) => h((a = h(a, h(h(b & d | c & ~d, e), g))) << f | a >>> 32 - f, b), + m = (a, b, c, d, e, f, g) => h((a = h(a, h(h(b ^ c ^ d, e), g))) << f | a >>> 32 - f, b), + n = (a, b, c, d, e, f, g) => h((a = h(a, h(h(c ^ (b | ~d), e), g))) << f | a >>> 32 - f, b), + p = a => { let b = '', d = ''; for (let c = 0; c <= 3; c++) d = a >>> 8 * c & 255, d = '0' + d.toString(16), b += d.substr(d.length - 2, 2); return b; }; - var f = [], q, r, s, t, a, b, c, d; - e = function(a) { - a = a.replace(/\r\n/g, '\n'); - for (var b = '', d = 0; d < a.length; d++) { - var c = a.charCodeAt(d); - 128 > c ? b += String.fromCharCode(c) : (127 < c && 2048 > c ? b += String.fromCharCode(c >> 6 | 192) : - (b += String.fromCharCode(c >> 12 | 224), b += String.fromCharCode(c >> 6 & 63 | 128)), - b += String.fromCharCode(c & 63 | 128)) + let f = [], q, r, s, t, a, b, c, d; + e = (() => { + e = e.replace(/\r\n/g, '\n'); + let b = ''; + for (let d = 0; d < e.length; d++) { + let c = e.charCodeAt(d); + b += c < 128 ? String.fromCharCode(c) : c < 2048 ? String.fromCharCode(c >> 6 | 192) + String.fromCharCode(c & 63 | 128) : + String.fromCharCode(c >> 12 | 224) + String.fromCharCode(c >> 6 & 63 | 128) + String.fromCharCode(c & 63 | 128); } return b; - }(e); - f = function(b) { - var c = b.length, a = c + 8; - for (var d = 16 * ((a - a % 64) / 64 + 1), e = Array(d - 1), f = 0, g = 0; g < c;) - a = (g - g % 4) / 4, f = g % 4 * 8, e[a] |= b.charCodeAt(g) << f, g++; - a = (g - g % 4) / 4; e[a] |= 128 << g % 4 * 8; e[d - 2] = c << 3; e[d - 1] = c >>> 29; - return e; - }(e); - a = 1732584193; - b = 4023233417; - c = 2562383102; - d = 271733878; + })(); + f = (() => { + let c = e.length, a = c + 8, d = 16 * ((a - a % 64) / 64 + 1), b = Array(d - 1), f = 0, g = 0; + for (; g < c;) a = (g - g % 4) / 4, f = g % 4 * 8, b[a] |= e.charCodeAt(g) << f, g++; + a = (g - g % 4) / 4, b[a] |= 128 << g % 4 * 8, b[d - 2] = c << 3, b[d - 1] = c >>> 29; + return b; + })(); - for (e = 0; e < f.length; e += 16) q = a, r = b, s = c, t = d, + a = 1732584193, b = 4023233417, c = 2562383102, d = 271733878; + for (e = 0; e < f.length; e += 16) { + q = a, r = b, s = c, t = d; a = k(a, b, c, d, f[e + 0], 7, 3614090360), d = k(d, a, b, c, f[e + 1], 12, 3905402710), c = k(c, d, a, b, f[e + 2], 17, 606105819), b = k(b, c, d, a, f[e + 3], 22, 3250441966), - a = k(a, b, c, d, f[e + 4], 7, 4118548399), d = k(d, a, b, c, f[e + 5], 12, 1200080426), + a = k(a, b, c, d, f[e + 4], 7, 4118548399), d = k(d, a, b, c, f[e + 5], 12, 1200080426), c = k(c, d, a, b, f[e + 6], 17, 2821735955), b = k(b, c, d, a, f[e + 7], 22, 4249261313), a = k(a, b, c, d, f[e + 8], 7, 1770035416), d = k(d, a, b, c, f[e + 9], 12, 2336552879), c = k(c, d, a, b, f[e + 10], 17, 4294925233), b = k(b, c, d, a, f[e + 11], 22, 2304563134), @@ -164,6 +156,7 @@ return baseclass.extend({ a = n(a, b, c, d, f[e + 4], 6, 4149444226), d = n(d, a, b, c, f[e + 11], 10, 3174756917), c = n(c, d, a, b, f[e + 2], 15, 718787259), b = n(b, c, d, a, f[e + 9], 21, 3951481745), a = h(a, q), b = h(b, r), c = h(c, s), d = h(d, t); + } return (p(a) + p(b) + p(c) + p(d)).toLowerCase(); }, @@ -173,7 +166,7 @@ return baseclass.extend({ /* Thanks to luci-app-ssr-plus */ str = str.replace(/-/g, '+').replace(/_/g, '/'); - var padding = (4 - str.length % 4) % 4; + let padding = (4 - str.length % 4) % 4; if (padding) str = str + Array(padding + 1).join('='); @@ -193,7 +186,7 @@ return baseclass.extend({ }, generateRand(type, length) { - var byteArr; + let byteArr; if (['base64', 'hex'].includes(type)) byteArr = crypto.getRandomValues(new Uint8Array(length)); switch (type) { @@ -215,7 +208,7 @@ return baseclass.extend({ }, loadDefaultLabel(uciconfig, ucisection) { - var label = uci.get(uciconfig, ucisection, 'label'); + let label = uci.get(uciconfig, ucisection, 'label'); if (label) { return label; } else { @@ -225,16 +218,16 @@ return baseclass.extend({ }, loadModalTitle(title, addtitle, uciconfig, ucisection) { - var label = uci.get(uciconfig, ucisection, 'label'); + let label = uci.get(uciconfig, ucisection, 'label'); return label ? title + ' ยป ' + label : addtitle; }, renderSectionAdd(section, extra_class) { - var el = form.GridSection.prototype.renderSectionAdd.apply(section, [ extra_class ]), + let el = form.GridSection.prototype.renderSectionAdd.apply(section, [ extra_class ]), nameEl = el.querySelector('.cbi-section-create-name'); ui.addValidator(nameEl, 'uciname', true, (v) => { - var button = el.querySelector('.cbi-section-create > .cbi-button-add'); - var uciconfig = section.uciconfig || section.map.config; + let button = el.querySelector('.cbi-section-create > .cbi-button-add'); + let uciconfig = section.uciconfig || section.map.config; if (!v) { button.disabled = true; @@ -314,7 +307,7 @@ return baseclass.extend({ if (ucioption === 'node' && value === 'urltest') return true; - var duplicate = false; + let duplicate = false; uci.sections(uciconfig, ucisection, (res) => { if (res['.name'] !== section_id) if (res[ucioption] === value) diff --git a/luci-app-homeproxy/htdocs/luci-static/resources/view/homeproxy/client.js b/luci-app-homeproxy/htdocs/luci-static/resources/view/homeproxy/client.js index e2b6fe1..e5adb69 100644 --- a/luci-app-homeproxy/htdocs/luci-static/resources/view/homeproxy/client.js +++ b/luci-app-homeproxy/htdocs/luci-static/resources/view/homeproxy/client.js @@ -304,11 +304,6 @@ return view.extend({ o.depends('routing_mode', 'custom'); ss = o.subsection; - so = ss.option(form.Flag, 'tun_gso', _('Generic segmentation offload')); - so.depends('homeproxy.config.proxy_mode', 'redirect_tun'); - so.depends('homeproxy.config.proxy_mode', 'tun'); - so.rmempty = false; - so = ss.option(form.ListValue, 'tcpip_stack', _('TCP/IP stack'), _('TCP/IP stack.')); if (features.with_gvisor) { diff --git a/luci-app-homeproxy/root/etc/config/homeproxy b/luci-app-homeproxy/root/etc/config/homeproxy index 313cad9..1bcbe56 100644 --- a/luci-app-homeproxy/root/etc/config/homeproxy +++ b/luci-app-homeproxy/root/etc/config/homeproxy @@ -13,7 +13,6 @@ config homeproxy 'infra' option tun_addr4 '172.19.0.1/30' option tun_addr6 'fdfe:dcba:9876::1/126' option tun_mtu '9000' - option tun_gso '0' option table_mark '100' option self_mark '100' option tproxy_mark '101' diff --git a/luci-app-homeproxy/root/etc/homeproxy/scripts/generate_client.uc b/luci-app-homeproxy/root/etc/homeproxy/scripts/generate_client.uc index 7216779..a8f221f 100755 --- a/luci-app-homeproxy/root/etc/homeproxy/scripts/generate_client.uc +++ b/luci-app-homeproxy/root/etc/homeproxy/scripts/generate_client.uc @@ -105,7 +105,7 @@ const proxy_mode = uci.get(uciconfig, ucimain, 'proxy_mode') || 'redirect_tproxy const mixed_port = uci.get(uciconfig, uciinfra, 'mixed_port') || '5330'; let self_mark, redirect_port, tproxy_port, - tun_name, tun_addr4, tun_addr6, tun_mtu, tun_gso, + tun_name, tun_addr4, tun_addr6, tun_mtu, tcpip_stack, endpoint_independent_nat, udp_timeout; udp_timeout = uci.get(uciconfig, 'infra', 'udp_timeout'); if (routing_mode === 'custom') @@ -122,10 +122,8 @@ if (match(proxy_mode), /tun/) { tun_addr4 = uci.get(uciconfig, uciinfra, 'tun_addr4') || '172.19.0.1/30'; tun_addr6 = uci.get(uciconfig, uciinfra, 'tun_addr6') || 'fdfe:dcba:9876::1/126'; tun_mtu = uci.get(uciconfig, uciinfra, 'tun_mtu') || '9000'; - tun_gso = uci.get(uciconfig, uciinfra, 'tun_gso') || '0'; tcpip_stack = 'system'; if (routing_mode === 'custom') { - tun_gso = uci.get(uciconfig, uciroutingsetting, 'tun_gso') || '0'; tcpip_stack = uci.get(uciconfig, uciroutingsetting, 'tcpip_stack') || 'system'; endpoint_independent_nat = uci.get(uciconfig, uciroutingsetting, 'endpoint_independent_nat'); } @@ -610,7 +608,6 @@ if (match(proxy_mode, /tun/)) interface_name: tun_name, address: (ipv6_support === '1') ? [tun_addr4, tun_addr6] : [tun_addr4], mtu: strToInt(tun_mtu), - gso: (tun_gso === '1'), auto_route: false, endpoint_independent_nat: strToBool(endpoint_independent_nat), udp_timeout: udp_timeout ? (udp_timeout + 's') : null, diff --git a/luci-app-homeproxy/root/etc/homeproxy/scripts/migrate_config.uc b/luci-app-homeproxy/root/etc/homeproxy/scripts/migrate_config.uc index 5b28db0..2e00a4e 100755 --- a/luci-app-homeproxy/root/etc/homeproxy/scripts/migrate_config.uc +++ b/luci-app-homeproxy/root/etc/homeproxy/scripts/migrate_config.uc @@ -45,6 +45,11 @@ if (github_token) { uci.delete(uciconfig, uciinfra, 'github_token') } +/* tun_gso was deprecated in sb 1.11 */ +const tun_gso = uci.get(uciconfig, uciinfra, 'tun_gso'); +if (tun_gso || tun_gso === '0') + uci.delete(uciconfig, uciinfra, 'tun_gso'); + /* empty value defaults to all ports now */ if (uci.get(uciconfig, ucimain, 'routing_port') === 'all') uci.delete(uciconfig, ucimain, 'routing_port');