Add DNS via NetBridge

This commit is contained in:
2dust
2026-06-19 17:13:51 +08:00
parent 0d225cd29d
commit ff456a9389
10 changed files with 123 additions and 10 deletions
@@ -5,6 +5,9 @@ public class NetBridgeViewModel : MyReactiveObject
[Reactive]
public bool EnableNetBridge { get; set; }
[Reactive]
public bool EnabletDnsViaProxy { get; set; }
[Reactive]
public string RuleProcess { get; set; }
@@ -27,22 +30,31 @@ public class NetBridgeViewModel : MyReactiveObject
await ToggleNetBridgeAsync(enabled);
});
this.WhenAnyValue(x => x.EnabletDnsViaProxy)
.Skip(1)
.Subscribe(async enabled =>
{
await ToggleDnsViaProxyAsync(enabled);
});
_ = Init();
}
private async Task Init()
{
EnabletDnsViaProxy = _config.NetBridgeItem.EnableDnsViaProxy;
_config.NetBridgeItem ??= new()
{
RuleProcess = string.Empty
};
EnableNetBridge = false;
RuleProcess = _config.NetBridgeItem.RuleProcess;
if (RuleProcess.IsNullOrEmpty())
if (_config.NetBridgeItem.RuleProcess.IsNullOrEmpty())
{
RuleProcess = "Chrome.exe";
_config.NetBridgeItem.RuleProcess = "Chrome.exe";
}
RuleProcess = _config.NetBridgeItem.RuleProcess;
await Task.CompletedTask;
}
@@ -58,6 +70,7 @@ public class NetBridgeViewModel : MyReactiveObject
{
await NetBridgeManager.Instance.UpdateProxyConfig(Global.Loopback, AppManager.Instance.GetLocalPort(EInboundProtocol.socks));
await NetBridgeManager.Instance.UpdateRoutes(RuleProcess);
await NetBridgeManager.Instance.SetDnsViaProxy(EnabletDnsViaProxy);
}
NoticeManager.Instance.Enqueue(succeed ? ResUI.OperationSuccess : ResUI.OperationFailed);
}
@@ -68,6 +81,13 @@ public class NetBridgeViewModel : MyReactiveObject
}
}
private async Task ToggleDnsViaProxyAsync(bool enabled)
{
_config.NetBridgeItem.EnableDnsViaProxy = enabled;
await NetBridgeManager.Instance.SetDnsViaProxy(enabled);
}
/// </summary>
private async Task SaveRulesAsync()
{