mirror of
https://github.com/netchx/netch.git
synced 2026-05-05 22:35:48 +08:00
Update TUNController _serverAddress
Update ModeHelper FilesystemWatcher OnNext
This commit is contained in:
@@ -26,7 +26,7 @@ namespace Netch.Controllers
|
||||
|
||||
private NetRoute _tun;
|
||||
|
||||
private IPAddress _serverAddresses = null!;
|
||||
private IPAddress? _serverRemoteAddress;
|
||||
|
||||
private Mode _mode = null!;
|
||||
|
||||
@@ -34,7 +34,10 @@ namespace Netch.Controllers
|
||||
{
|
||||
_mode = mode;
|
||||
var server = MainController.Server!;
|
||||
_serverAddresses = DnsUtils.Lookup(server.Hostname)!; // server address have been cached when MainController.Start
|
||||
_serverRemoteAddress = DnsUtils.Lookup(server.Hostname);
|
||||
|
||||
if (_serverRemoteAddress != null && IPAddress.IsLoopback(_serverRemoteAddress))
|
||||
_serverRemoteAddress = null;
|
||||
|
||||
_outbound = NetRoute.GetBestRouteTemplate(out var address);
|
||||
CheckDriver();
|
||||
@@ -112,8 +115,8 @@ namespace Netch.Controllers
|
||||
Log.Information("设置路由规则");
|
||||
|
||||
// Server Address
|
||||
if (!IPAddress.IsLoopback(_serverAddresses))
|
||||
RouteUtils.CreateRoute(_outbound.FillTemplate(_serverAddresses.ToString(), 32));
|
||||
if (_serverRemoteAddress != null)
|
||||
RouteUtils.CreateRoute(_outbound.FillTemplate(_serverRemoteAddress.ToString(), 32));
|
||||
|
||||
// Global Bypass IPs
|
||||
RouteUtils.CreateRouteFill(_outbound, Global.Settings.TUNTAP.BypassIPs);
|
||||
@@ -154,8 +157,8 @@ namespace Netch.Controllers
|
||||
|
||||
private void ClearRouteTable()
|
||||
{
|
||||
if (!IPAddress.IsLoopback(_serverAddresses))
|
||||
RouteUtils.DeleteRoute(_outbound.FillTemplate(_serverAddresses.ToString(), 32));
|
||||
if (_serverRemoteAddress != null)
|
||||
RouteUtils.DeleteRoute(_outbound.FillTemplate(_serverRemoteAddress.ToString(), 32));
|
||||
|
||||
RouteUtils.DeleteRouteFill(_outbound, Global.Settings.TUNTAP.BypassIPs);
|
||||
|
||||
|
||||
@@ -52,10 +52,10 @@ namespace Netch.Utils
|
||||
.Select(x => x.EventArgs);
|
||||
|
||||
var o = Observable.Merge(created, deleted, renamed, changed);
|
||||
o.Throttle(TimeSpan.FromSeconds(3)).Select(_ => true).Subscribe(OnNext, exception => Log.Error(exception, "FileSystemWatcherError"));
|
||||
o.Throttle(TimeSpan.FromSeconds(3)).Subscribe(_ => OnModeChange(), exception => Log.Error(exception, "FileSystemWatcherError"));
|
||||
}
|
||||
|
||||
private static void OnNext(bool obj)
|
||||
private static void OnModeChange()
|
||||
{
|
||||
Load();
|
||||
Global.MainForm.LoadModes();
|
||||
|
||||
Reference in New Issue
Block a user