新增调试信息
This commit is contained in:
@@ -97,6 +97,36 @@ class KRSingBoxImp {
|
||||
/// Stream 订阅管理器
|
||||
final List<StreamSubscription<dynamic>> _kr_subscriptions = [];
|
||||
|
||||
/// 当前混合代理端口是否就绪
|
||||
bool get kr_isProxyReady => kr_status.value is SingboxStarted;
|
||||
|
||||
String? _lastProxyRule;
|
||||
|
||||
/// 构建 Dart HttpClient 可识别的代理规则字符串
|
||||
///
|
||||
/// 当 sing-box 尚未启动时返回 `DIRECT`,启动后返回
|
||||
/// `PROXY 127.0.0.1:<port>; DIRECT`,以便在代理不可用时自动回落。
|
||||
String kr_buildProxyRule({bool includeDirectFallback = true}) {
|
||||
if (!kr_isProxyReady) {
|
||||
const directRule = 'DIRECT';
|
||||
if (_lastProxyRule != directRule) {
|
||||
KRLogUtil.kr_i('⏳ sing-box 未就绪,使用 DIRECT 直连', tag: 'SingBox');
|
||||
_lastProxyRule = directRule;
|
||||
}
|
||||
return directRule;
|
||||
}
|
||||
final proxyRule = StringBuffer('PROXY 127.0.0.1:$kr_port');
|
||||
if (includeDirectFallback) {
|
||||
proxyRule.write('; DIRECT');
|
||||
}
|
||||
final ruleString = proxyRule.toString();
|
||||
if (_lastProxyRule != ruleString) {
|
||||
KRLogUtil.kr_i('🛠️ 使用代理规则: $ruleString', tag: 'SingBox');
|
||||
_lastProxyRule = ruleString;
|
||||
}
|
||||
return ruleString;
|
||||
}
|
||||
|
||||
/// 初始化
|
||||
Future<void> init() async {
|
||||
try {
|
||||
@@ -426,8 +456,10 @@ class KRSingBoxImp {
|
||||
|
||||
kr_outbounds = outbounds;
|
||||
|
||||
final map = {};
|
||||
map["outbounds"] = kr_outbounds;
|
||||
// 只保存 outbounds,Mobile.buildConfig() 会添加其他配置
|
||||
final map = {
|
||||
"outbounds": kr_outbounds
|
||||
};
|
||||
|
||||
final file = _file(kr_configName);
|
||||
final temp = _tempFile(kr_configName);
|
||||
|
||||
Reference in New Issue
Block a user