fix: 更新诸多bug
This commit is contained in:
@@ -14,6 +14,7 @@ import 'package:kaer_with_panels/app/localization/kr_language_utils.dart';
|
||||
import 'package:kaer_with_panels/app/utils/kr_common_util.dart';
|
||||
import 'package:kaer_with_panels/app/services/singbox_imp/kr_sing_box_imp.dart';
|
||||
import 'package:kaer_with_panels/app/services/kr_site_config_service.dart';
|
||||
import 'package:kaer_with_panels/app/utils/kr_http_adapter_util.dart';
|
||||
import 'package:kaer_with_panels/singbox/model/singbox_status.dart';
|
||||
|
||||
// import 'package:crypto/crypto.dart';
|
||||
@@ -74,52 +75,11 @@ class HttpUtil {
|
||||
};
|
||||
|
||||
// 🔧 配置HttpClientAdapter 优先走本地 sing-box mixed 端口,
|
||||
// 若代理不可用则回退到直连
|
||||
// 若代理不可用则回推到直连
|
||||
KRLogUtil.kr_i('🔧 配置 HttpClientAdapter...', tag: 'HttpUtil');
|
||||
_dio.httpClientAdapter = IOHttpClientAdapter(
|
||||
createHttpClient: () {
|
||||
KRLogUtil.kr_i('📱 createHttpClient 回调被调用', tag: 'HttpUtil');
|
||||
final client = HttpClient();
|
||||
|
||||
// ✅ 优化:智能代理回退逻辑
|
||||
client.findProxy = (url) {
|
||||
try {
|
||||
// 检查 SingBox 是否正在运行
|
||||
final singBoxStatus = KRSingBoxImp.instance.kr_status;
|
||||
final isProxyAvailable = singBoxStatus == SingboxStatus.started();
|
||||
|
||||
if (!isProxyAvailable) {
|
||||
// 代理未运行,直接使用直连
|
||||
KRLogUtil.kr_i(
|
||||
'🔄 代理未运行,使用直连模式: $url',
|
||||
tag: 'HttpUtil',
|
||||
);
|
||||
return 'DIRECT';
|
||||
}
|
||||
|
||||
// 代理正在运行,使用代理配置
|
||||
final proxyConfig = KRSingBoxImp.instance.kr_buildProxyRule();
|
||||
KRLogUtil.kr_i(
|
||||
'✅ 使用代理模式, url: $url, proxy: $proxyConfig',
|
||||
tag: 'HttpUtil',
|
||||
);
|
||||
return proxyConfig;
|
||||
} catch (e) {
|
||||
// 发生异常时回退到直连
|
||||
KRLogUtil.kr_w(
|
||||
'⚠️ 代理配置异常,回退到直连: $e',
|
||||
tag: 'HttpUtil',
|
||||
);
|
||||
return 'DIRECT';
|
||||
}
|
||||
};
|
||||
|
||||
// ✅ 优化:设置连接失败时的自动回退
|
||||
client.connectionTimeout = const Duration(seconds: 10);
|
||||
client.badCertificateCallback = (cert, host, port) => true;
|
||||
|
||||
return client;
|
||||
},
|
||||
_dio.httpClientAdapter = KRHttpAdapterUtil.createAdapter(
|
||||
useSingBoxProxy: true,
|
||||
timeout: const Duration(seconds: 10),
|
||||
);
|
||||
KRLogUtil.kr_i('✅ HttpUtil.initDio() 初始化完成', tag: 'HttpUtil');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user