修改flutter兼容版本,优化macos无法切换节点和协议不兼容等问题

(cherry picked from commit dcc07886f8ba73eb2630a14a81bda191468c7a1f)
This commit is contained in:
2025-10-30 02:50:00 -07:00
committed by speakeloudest
parent 8bba2441c2
commit 064a0a7402
8 changed files with 940 additions and 555 deletions
+31 -30
View File
@@ -138,7 +138,9 @@ class KROutboundItem {
"password": nodeListItem.uuid
};
break;
case "hysteria":
case "hysteria2":
// 后端的 "hysteria" 实际上是 Hysteria2 协议
final securityConfig =
json["security_config"] as Map<String, dynamic>? ?? {};
config = {
@@ -156,8 +158,7 @@ class KROutboundItem {
"tls": {
"enabled": true,
"server_name": securityConfig["sni"] ?? "",
"insecure": securityConfig["allow_insecure"] ?? true,
"alpn": ["h3"]
"insecure": securityConfig["allow_insecure"] ?? true
}
};
break;
@@ -260,6 +261,10 @@ class KROutboundItem {
print('📄 完整配置: $config');
break;
case "vless":
// 判断是否为域名(非IP地址)
final bool isDomain = !RegExp(r'^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$')
.hasMatch(nodeListItem.serverAddr);
config = {
"type": "vless",
"tag": nodeListItem.name,
@@ -268,7 +273,7 @@ class KROutboundItem {
"uuid": nodeListItem.uuid,
"tls": {
"enabled": true,
"server_name": nodeListItem.serverAddr,
if (isDomain) "server_name": nodeListItem.serverAddr,
"insecure": true,
"utls": {
"enabled": true,
@@ -280,6 +285,10 @@ class KROutboundItem {
print('📄 完整配置: $config');
break;
case "vmess":
// 判断是否为域名(非IP地址)
final bool isDomain = !RegExp(r'^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$')
.hasMatch(nodeListItem.serverAddr);
config = {
"type": "vmess",
"tag": nodeListItem.name,
@@ -290,7 +299,7 @@ class KROutboundItem {
"security": "auto",
"tls": {
"enabled": true,
"server_name": nodeListItem.serverAddr,
if (isDomain) "server_name": nodeListItem.serverAddr,
"insecure": true,
"utls": {"enabled": true, "fingerprint": "chrome"}
}
@@ -299,6 +308,10 @@ class KROutboundItem {
print('📄 完整配置: $config');
break;
case "trojan":
// 判断是否为域名(非IP地址)
final bool isDomain = !RegExp(r'^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$')
.hasMatch(nodeListItem.serverAddr);
config = {
"type": "trojan",
"tag": nodeListItem.name,
@@ -307,7 +320,7 @@ class KROutboundItem {
"password": nodeListItem.uuid,
"tls": {
"enabled": true,
"server_name": nodeListItem.serverAddr,
if (isDomain) "server_name": nodeListItem.serverAddr,
"insecure": true,
"utls": {"enabled": true, "fingerprint": "chrome"}
}
@@ -316,42 +329,30 @@ class KROutboundItem {
print('📄 完整配置: $config');
break;
case "hysteria":
config = {
"type": "hysteria",
"tag": nodeListItem.name,
"server": nodeListItem.serverAddr,
"server_port": nodeListItem.port,
"up_mbps": 100,
"down_mbps": 100,
"auth_str": nodeListItem.uuid,
"tls": {
"enabled": true,
"server_name": nodeListItem.serverAddr,
"insecure": true,
"alpn": ["h3"]
}
};
print('✅ Hysteria 节点配置构建成功: ${nodeListItem.name}');
print('📄 完整配置: $config');
break;
case "hysteria2":
// 后端的 "hysteria" 实际上是 Hysteria2 协议
print('🔍 构建 Hysteria2 节点: ${nodeListItem.name}');
print(' - serverAddr: ${nodeListItem.serverAddr}');
print(' - port: ${nodeListItem.port}');
print(' - uuid: ${nodeListItem.uuid}');
//判断是否为域名
final bool isDomain = !RegExp(r'^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$')
.hasMatch(nodeListItem.serverAddr);
config = {
"type": "hysteria2",
"tag": nodeListItem.name,
"server": nodeListItem.serverAddr,
"server_port": nodeListItem.port,
"password": nodeListItem.uuid,
"up_mbps": 100,
"down_mbps": 100,
"tls": {
"enabled": true,
"server_name": nodeListItem.serverAddr,
"insecure": true,
"alpn": ["h3"]
if (isDomain) "server_name": nodeListItem.serverAddr,
}
};
print('✅ Hysteria2 节点配置构建成功: ${nodeListItem.name}');
print('📄 完整配置: $config');
print('✅ Hysteria2 节点配置构建成功');
print('📄 完整配置: ${jsonEncode(config)}');
break;
default:
print('⚠️ 不支持的协议类型: ${nodeListItem.protocol}');