🎁 Sync 2026-04-02 08:47:45

This commit is contained in:
github-actions[bot] 2026-04-02 08:47:45 +08:00
parent 66079c2f8f
commit 77da5c9ab5
9 changed files with 2402 additions and 2280 deletions

View File

@ -5,12 +5,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=gn
PKG_RELEASE:=3
PKG_RELEASE:=4
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://gn.googlesource.com/gn.git
PKG_SOURCE_DATE:=2025-09-18
PKG_SOURCE_VERSION:=81b24e01531ecf0eff12ec9359a555ec3944ec4e
PKG_SOURCE_DATE:=2026-03-31
PKG_SOURCE_VERSION:=6e8dcdebbadf4f8aa75e6a4b6e0bdf89dce1513a
PKG_MIRROR_HASH:=skip
PKG_LICENSE:=BSD 3-Clause

View File

@ -3,7 +3,7 @@
#ifndef OUT_LAST_COMMIT_POSITION_H_
#define OUT_LAST_COMMIT_POSITION_H_
#define LAST_COMMIT_POSITION_NUM 2286
#define LAST_COMMIT_POSITION "2286 (81b24e01531e)"
#define LAST_COMMIT_POSITION_NUM 2355
#define LAST_COMMIT_POSITION "2355 (6e8dcdebbadf)"
#endif // OUT_LAST_COMMIT_POSITION_H_

View File

@ -320,12 +320,15 @@ function renderListeners(s, uciconfig, isClient) {
o.modalonly = true;
o = s.taboption('field_general', form.ListValue, 'sudoku_table_type', _('Obfuscate type'));
o.value('prefer_ascii', _('Obfuscated as ASCII data stream'));
o.value('prefer_entropy', _('Obfuscated as low-entropy data stream'));
o.value('prefer_ascii', _('Obfuscated as %s').format(_('ASCII data stream')));
o.value('prefer_entropy', _('Obfuscated as %s').format(_('Low-entropy data stream')));
o.value('up_ascii_down_entropy', _('UP: %s; DOWN: %s').format(_('ASCII data stream'), _('Low-entropy data stream')));
o.value('up_entropy_down_ascii', _('UP: %s; DOWN: %s').format(_('Low-entropy data stream'), _('ASCII data stream')));
o.depends('type', 'sudoku');
o.modalonly = true;
o = s.taboption('field_general', form.DynamicList, 'sudoku_custom_tables', _('Custom byte layout'));
o = s.taboption('field_general', form.DynamicList, 'sudoku_custom_tables', _('Custom byte layout'),
_('Only applies to the %s.').format(_('Low-entropy data stream')));
o.renderWidget = function(/* ... */) {
let node = form.DynamicList.prototype.renderWidget.apply(this, arguments);
@ -338,7 +341,7 @@ function renderListeners(s, uciconfig, isClient) {
return node;
}
o.validate = hm.validateSudokuCustomTable;
o.depends('sudoku_table_type', 'prefer_entropy');
o.depends({sudoku_table_type: /^(prefer_entropy|up_ascii_down_entropy|up_entropy_down_ascii)$/});
o.modalonly = true;
o = s.taboption('field_general', form.Value, 'sudoku_padding_min', _('Minimum padding rate'));

View File

@ -405,14 +405,17 @@ return view.extend({
so.modalonly = true;
so = ss.taboption('field_general', form.ListValue, 'sudoku_table_type', _('Obfuscate type'));
so.value('prefer_ascii', _('Obfuscated as ASCII data stream'));
so.value('prefer_entropy', _('Obfuscated as low-entropy data stream'));
so.value('prefer_ascii', _('Obfuscated as %s').format(_('ASCII data stream')));
so.value('prefer_entropy', _('Obfuscated as %s').format(_('Low-entropy data stream')));
so.value('up_ascii_down_entropy', _('UP: %s; DOWN: %s').format(_('ASCII data stream'), _('Low-entropy data stream')));
so.value('up_entropy_down_ascii', _('UP: %s; DOWN: %s').format(_('Low-entropy data stream'), _('ASCII data stream')));
so.depends('type', 'sudoku');
so.modalonly = true;
so = ss.taboption('field_general', form.DynamicList, 'sudoku_custom_tables', _('Custom byte layout'));
so = ss.taboption('field_general', form.DynamicList, 'sudoku_custom_tables', _('Custom byte layout'),
_('Only applies to the %s.').format(_('Low-entropy data stream')));
so.validate = hm.validateSudokuCustomTable;
so.depends('sudoku_table_type', 'prefer_entropy');
so.depends({sudoku_table_type: /^(prefer_entropy|up_ascii_down_entropy|up_entropy_down_ascii)$/});
so.modalonly = true;
so = ss.taboption('field_general', form.Value, 'sudoku_padding_min', _('Minimum padding rate'));
@ -1197,6 +1200,13 @@ return view.extend({
so.depends({transport_enabled: '1', transport_type: 'grpc'});
so.modalonly = true;
so = ss.taboption('field_transport', form.Value, 'transport_grpc_ping_interval', _('gRPC ping interval'),
_('In seconds.'));
so.datatype = 'uinteger';
so.placeholder = '0';
so.depends({transport_enabled: '1', transport_type: 'grpc'});
so.modalonly = true;
so = ss.taboption('field_transport', form.Value, 'transport_ws_max_early_data', _('Max Early Data'),
_('Early Data first packet length limit.'));
so.datatype = 'uinteger';

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -239,8 +239,8 @@ config["etag-support"] = (uci.get(uciconf, uciglobal, 'etag_support') === '0') ?
config.ipv6 = (uci.get(uciconf, uciglobal, 'ipv6') === '0') ? false : true;
config["unified-delay"] = strToBool(uci.get(uciconf, uciglobal, 'unified_delay')) || false;
config["tcp-concurrent"] = strToBool(uci.get(uciconf, uciglobal, 'tcp_concurrent')) || false;
config["keep-alive-interval"] = durationToSecond(uci.get(uciconf, uciglobal, 'keep_alive_interval')) || 30;
config["keep-alive-idle"] = durationToSecond(uci.get(uciconf, uciglobal, 'keep_alive_idle')) || 600;
config["keep-alive-interval"] = durationToSecond(uci.get(uciconf, uciglobal, 'keep_alive_interval')) ?? 30;
config["keep-alive-idle"] = durationToSecond(uci.get(uciconf, uciglobal, 'keep_alive_idle')) ?? 600;
/* ACL settings */
config["interface-name"] = bind_interface;
config["routing-mark"] = self_mark;
@ -540,7 +540,7 @@ uci.foreach(uciconf, ucinode, (cfg) => {
mode: cfg.sudoku_http_mask_mode,
tls: strToBool(cfg.sudoku_http_mask_tls) || false,
host: cfg.sudoku_http_mask_host,
path_root: cfg.sudoku_path_root,
"path-root": cfg.sudoku_path_root,
multiplex: cfg.sudoku_http_mask_multiplex,
}
} : {}),
@ -648,7 +648,8 @@ uci.foreach(uciconf, ucinode, (cfg) => {
} : null,
"grpc-opts": cfg.transport_type === 'grpc' ? {
"grpc-service-name": cfg.transport_grpc_servicename,
"grpc-user-agent": cfg.transport_grpc_user_agent
"grpc-user-agent": cfg.transport_grpc_user_agent,
"ping-interval": strToInt(cfg.transport_grpc_ping_interval) || null
} : null,
"ws-opts": cfg.transport_type === 'ws' ? {
path: cfg.transport_path || '/',

View File

@ -273,7 +273,7 @@ export function parseListener(cfg, isClient, label) {
httpmask: (cfg.sudoku_http_mask === '0') ? { disable: true } : {
disable: false,
mode: cfg.sudoku_http_mask_mode,
path_root: cfg.sudoku_path_root,
"path-root": cfg.sudoku_path_root,
}
} : {}),
fallback: (cfg.sudoku_http_mask === '0') ? null : cfg.sudoku_fallback,