feat: 更改节点测速
Build Windows / 编译 libcore (Windows) (20.15.1) (push) Successful in 20m53s
Build Windows / build (push) Has been cancelled

This commit is contained in:
2025-11-21 02:52:23 -08:00
parent 9123d5f0e4
commit becc03acfd
4 changed files with 104 additions and 56 deletions
@@ -642,15 +642,7 @@ class KRSingBoxImp {
"enable-fake-dns": false,
"enable-dns-routing": true,
"independent-dns-cache": true,
"rules": [
// ✅ 自定义域名直连规则 - 添加到 HiddifyOptions.Rules 中
// 这样 Native 层的 config.BuildConfig() 会将其包含到最终配置
// 注意:libcore 要求 domains 字段使用前缀格式,如 "domain:ip.sb" 表示 domain_suffix
{
"domains": "domain:api.hifast.biz", // domain: 前缀表示 domain_suffix 匹配
"outbound": "bypass" // bypass = direct
}
],
"rules": _kr_buildHiddifyRules(),
"mux": {
"enable": false,
"padding": false,
@@ -709,6 +701,57 @@ class KRSingBoxImp {
return op;
}
List<Map<String, dynamic>> _kr_buildHiddifyRules() {
final rules = <Map<String, dynamic>>[];
rules.add({
"domains": "domain:api.hifast.biz",
"outbound": "bypass"
});
final nodeDomains = _kr_collectNodeDomains();
for (final d in nodeDomains) {
rules.add({
"domains": "domain:$d",
"outbound": "bypass"
});
}
KRLogUtil.kr_i('✅ 节点域名白名单数量: ${nodeDomains.length}', tag: 'SingBox');
KRLogUtil.kr_i('✅ 节点域名白名单集合: ${jsonEncode(nodeDomains.toList())}', tag: 'SingBox');
return rules;
}
Set<String> _kr_collectNodeDomains() {
final set = <String>{};
void addFromOutbound(Map<String, dynamic> o) {
final server = o['server']?.toString();
if (server != null && server.isNotEmpty && InternetAddress.tryParse(server) == null) {
set.add(server.toLowerCase());
}
final tls = o['tls'];
if (tls is Map) {
final sni = tls['server_name']?.toString();
if (sni != null && sni.isNotEmpty && InternetAddress.tryParse(sni) == null) {
set.add(sni.toLowerCase());
}
}
}
for (final g in kr_outbounds) {
addFromOutbound(g);
}
for (final g in Kr_allOutbounds) {
for (final it in g.outboundList) {
addFromOutbound(it.config);
}
}
return set;
}
/// 动态构建 DNS 配置
///
/// - 真机:使用远程 DoH + 本地系统 DNS,final 指向远程