update 2025-07-24 09:38:41

This commit is contained in:
actions-user 2025-07-24 09:38:41 +08:00
parent cba4222c57
commit fe1c805859
6 changed files with 49 additions and 60 deletions

View File

@ -5,10 +5,10 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=daed PKG_NAME:=daed
PKG_VERSION:=2025.07.20 PKG_VERSION:=2025.07.23
DAED_VERSION:=daed-c3588a9 DAED_VERSION:=daed-c3588a9
WING_VERSION:=wing-6df3da2 WING_VERSION:=wing-6df3da2
CORE_VERSION:=core-635ab7e CORE_VERSION:=core-358f459
WING_HASH_SHORT:=$(shell echo $(WING_VERSION) | cut -d- -f2) WING_HASH_SHORT:=$(shell echo $(WING_VERSION) | cut -d- -f2)
CORE_HASH_SHORT:=$(shell echo $(CORE_VERSION) | cut -d- -f2) CORE_HASH_SHORT:=$(shell echo $(CORE_VERSION) | cut -d- -f2)
PKG_RELEASE:=1 PKG_RELEASE:=1

View File

@ -80,7 +80,7 @@ return baseclass.extend({
__name__: 'CBI.StaticList', __name__: 'CBI.StaticList',
renderWidget: function(/* ... */) { 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(); dl.querySelector('.add-item ul > li[data-value="-"]')?.remove();
return dl; return dl;
} }
@ -88,49 +88,41 @@ return baseclass.extend({
calcStringMD5(e) { calcStringMD5(e) {
/* Thanks to https://stackoverflow.com/a/41602636 */ /* Thanks to https://stackoverflow.com/a/41602636 */
function h(a, b) { let h = (a, b) => {
var c, d, e, f, g; let c, d, e, f, g;
e = a & 2147483648; c = a & 2147483648;
f = b & 2147483648; d = b & 2147483648;
c = a & 1073741824; e = a & 1073741824;
d = b & 1073741824; f = b & 1073741824;
g = (a & 1073741823) + (b & 1073741823); 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; 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),
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); } 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),
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); } m = (a, b, c, d, e, f, g) => h((a = h(a, h(h(b ^ c ^ d, e), g))) << 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); } n = (a, b, c, d, e, f, g) => h((a = h(a, h(h(c ^ (b | ~d), e), g))) << 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); } 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; };
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;
}
var f = [], q, r, s, t, a, b, c, d; let f = [], q, r, s, t, a, b, c, d;
e = function(a) { e = (() => {
a = a.replace(/\r\n/g, '\n'); e = e.replace(/\r\n/g, '\n');
for (var b = '', d = 0; d < a.length; d++) { let b = '';
var c = a.charCodeAt(d); for (let d = 0; d < e.length; d++) {
128 > c ? b += String.fromCharCode(c) : (127 < c && 2048 > c ? b += String.fromCharCode(c >> 6 | 192) : let c = e.charCodeAt(d);
(b += String.fromCharCode(c >> 12 | 224), b += String.fromCharCode(c >> 6 & 63 | 128)), b += c < 128 ? String.fromCharCode(c) : c < 2048 ? String.fromCharCode(c >> 6 | 192) + String.fromCharCode(c & 63 | 128) :
b += String.fromCharCode(c & 63 | 128)) String.fromCharCode(c >> 12 | 224) + String.fromCharCode(c >> 6 & 63 | 128) + String.fromCharCode(c & 63 | 128);
} }
return b; return b;
}(e); })();
f = function(b) { f = (() => {
var c = b.length, a = c + 8; let c = e.length, a = c + 8, d = 16 * ((a - a % 64) / 64 + 1), b = Array(d - 1), f = 0, g = 0;
for (var d = 16 * ((a - a % 64) / 64 + 1), e = Array(d - 1), f = 0, g = 0; g < c;) for (; g < c;) a = (g - g % 4) / 4, f = g % 4 * 8, b[a] |= e.charCodeAt(g) << f, g++;
a = (g - g % 4) / 4, f = g % 4 * 8, e[a] |= b.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;
a = (g - g % 4) / 4; e[a] |= 128 << g % 4 * 8; e[d - 2] = c << 3; e[d - 1] = c >>> 29; return b;
return e; })();
}(e);
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 = 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), 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), 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),
@ -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), 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), 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); 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(); return (p(a) + p(b) + p(c) + p(d)).toLowerCase();
}, },
@ -173,7 +166,7 @@ return baseclass.extend({
/* Thanks to luci-app-ssr-plus */ /* Thanks to luci-app-ssr-plus */
str = str.replace(/-/g, '+').replace(/_/g, '/'); str = str.replace(/-/g, '+').replace(/_/g, '/');
var padding = (4 - str.length % 4) % 4; let padding = (4 - str.length % 4) % 4;
if (padding) if (padding)
str = str + Array(padding + 1).join('='); str = str + Array(padding + 1).join('=');
@ -193,7 +186,7 @@ return baseclass.extend({
}, },
generateRand(type, length) { generateRand(type, length) {
var byteArr; let byteArr;
if (['base64', 'hex'].includes(type)) if (['base64', 'hex'].includes(type))
byteArr = crypto.getRandomValues(new Uint8Array(length)); byteArr = crypto.getRandomValues(new Uint8Array(length));
switch (type) { switch (type) {
@ -215,7 +208,7 @@ return baseclass.extend({
}, },
loadDefaultLabel(uciconfig, ucisection) { loadDefaultLabel(uciconfig, ucisection) {
var label = uci.get(uciconfig, ucisection, 'label'); let label = uci.get(uciconfig, ucisection, 'label');
if (label) { if (label) {
return label; return label;
} else { } else {
@ -225,16 +218,16 @@ return baseclass.extend({
}, },
loadModalTitle(title, addtitle, uciconfig, ucisection) { loadModalTitle(title, addtitle, uciconfig, ucisection) {
var label = uci.get(uciconfig, ucisection, 'label'); let label = uci.get(uciconfig, ucisection, 'label');
return label ? title + ' » ' + label : addtitle; return label ? title + ' » ' + label : addtitle;
}, },
renderSectionAdd(section, extra_class) { 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'); nameEl = el.querySelector('.cbi-section-create-name');
ui.addValidator(nameEl, 'uciname', true, (v) => { ui.addValidator(nameEl, 'uciname', true, (v) => {
var button = el.querySelector('.cbi-section-create > .cbi-button-add'); let button = el.querySelector('.cbi-section-create > .cbi-button-add');
var uciconfig = section.uciconfig || section.map.config; let uciconfig = section.uciconfig || section.map.config;
if (!v) { if (!v) {
button.disabled = true; button.disabled = true;
@ -314,7 +307,7 @@ return baseclass.extend({
if (ucioption === 'node' && value === 'urltest') if (ucioption === 'node' && value === 'urltest')
return true; return true;
var duplicate = false; let duplicate = false;
uci.sections(uciconfig, ucisection, (res) => { uci.sections(uciconfig, ucisection, (res) => {
if (res['.name'] !== section_id) if (res['.name'] !== section_id)
if (res[ucioption] === value) if (res[ucioption] === value)

View File

@ -304,11 +304,6 @@ return view.extend({
o.depends('routing_mode', 'custom'); o.depends('routing_mode', 'custom');
ss = o.subsection; 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'), so = ss.option(form.ListValue, 'tcpip_stack', _('TCP/IP stack'),
_('TCP/IP stack.')); _('TCP/IP stack.'));
if (features.with_gvisor) { if (features.with_gvisor) {

View File

@ -13,7 +13,6 @@ config homeproxy 'infra'
option tun_addr4 '172.19.0.1/30' option tun_addr4 '172.19.0.1/30'
option tun_addr6 'fdfe:dcba:9876::1/126' option tun_addr6 'fdfe:dcba:9876::1/126'
option tun_mtu '9000' option tun_mtu '9000'
option tun_gso '0'
option table_mark '100' option table_mark '100'
option self_mark '100' option self_mark '100'
option tproxy_mark '101' option tproxy_mark '101'

View File

@ -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'; const mixed_port = uci.get(uciconfig, uciinfra, 'mixed_port') || '5330';
let self_mark, redirect_port, tproxy_port, 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; tcpip_stack, endpoint_independent_nat, udp_timeout;
udp_timeout = uci.get(uciconfig, 'infra', 'udp_timeout'); udp_timeout = uci.get(uciconfig, 'infra', 'udp_timeout');
if (routing_mode === 'custom') 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_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_addr6 = uci.get(uciconfig, uciinfra, 'tun_addr6') || 'fdfe:dcba:9876::1/126';
tun_mtu = uci.get(uciconfig, uciinfra, 'tun_mtu') || '9000'; tun_mtu = uci.get(uciconfig, uciinfra, 'tun_mtu') || '9000';
tun_gso = uci.get(uciconfig, uciinfra, 'tun_gso') || '0';
tcpip_stack = 'system'; tcpip_stack = 'system';
if (routing_mode === 'custom') { if (routing_mode === 'custom') {
tun_gso = uci.get(uciconfig, uciroutingsetting, 'tun_gso') || '0';
tcpip_stack = uci.get(uciconfig, uciroutingsetting, 'tcpip_stack') || 'system'; tcpip_stack = uci.get(uciconfig, uciroutingsetting, 'tcpip_stack') || 'system';
endpoint_independent_nat = uci.get(uciconfig, uciroutingsetting, 'endpoint_independent_nat'); endpoint_independent_nat = uci.get(uciconfig, uciroutingsetting, 'endpoint_independent_nat');
} }
@ -610,7 +608,6 @@ if (match(proxy_mode, /tun/))
interface_name: tun_name, interface_name: tun_name,
address: (ipv6_support === '1') ? [tun_addr4, tun_addr6] : [tun_addr4], address: (ipv6_support === '1') ? [tun_addr4, tun_addr6] : [tun_addr4],
mtu: strToInt(tun_mtu), mtu: strToInt(tun_mtu),
gso: (tun_gso === '1'),
auto_route: false, auto_route: false,
endpoint_independent_nat: strToBool(endpoint_independent_nat), endpoint_independent_nat: strToBool(endpoint_independent_nat),
udp_timeout: udp_timeout ? (udp_timeout + 's') : null, udp_timeout: udp_timeout ? (udp_timeout + 's') : null,

View File

@ -45,6 +45,11 @@ if (github_token) {
uci.delete(uciconfig, uciinfra, '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 */ /* empty value defaults to all ports now */
if (uci.get(uciconfig, ucimain, 'routing_port') === 'all') if (uci.get(uciconfig, ucimain, 'routing_port') === 'all')
uci.delete(uciconfig, ucimain, 'routing_port'); uci.delete(uciconfig, ucimain, 'routing_port');