From 1aa32eaf3a40047a00e4d6c249620262542557de Mon Sep 17 00:00:00 2001 From: ChsBuffer <33744752+chsbuffer@users.noreply.github.com> Date: Mon, 8 Mar 2021 09:05:51 +0800 Subject: [PATCH] HTTPController.Stop check state validity --- Netch/Controllers/HTTPController.cs | 19 +++++++++++++++++-- .../Utils/HttpProxyHandler/PACServerHandle.cs | 10 +++++----- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/Netch/Controllers/HTTPController.cs b/Netch/Controllers/HTTPController.cs index 0963ff29..3d86eb4c 100644 --- a/Netch/Controllers/HTTPController.cs +++ b/Netch/Controllers/HTTPController.cs @@ -38,7 +38,7 @@ namespace Netch.Controllers Global.Settings.Pac_Port = PortHelper.GetAvailablePort(); } - pacUrl = PACServerHandle.InitPACServer("127.0.0.1"); + pacUrl = PACServerHandle.InitPACServer(); } if (mode.Type is 3) @@ -76,7 +76,22 @@ namespace Netch.Controllers if (_oldState != null) { using var service = new ProxyService(); - service.Set(_oldState!); + try + { + if (_oldState.IsProxy && _oldState.ProxyServer == service.Query().ProxyServer || + _oldState.IsAutoProxyUrl && _oldState.AutoConfigUrl!.StartsWith(PACServerHandle.PacPrefix)) + { + service.Direct(); + return; + } + + service.Set(_oldState); + } + catch + { + service.Direct(); + throw; + } } }) }; diff --git a/Netch/Utils/HttpProxyHandler/PACServerHandle.cs b/Netch/Utils/HttpProxyHandler/PACServerHandle.cs index c252233a..d4c6451b 100644 --- a/Netch/Utils/HttpProxyHandler/PACServerHandle.cs +++ b/Netch/Utils/HttpProxyHandler/PACServerHandle.cs @@ -14,15 +14,15 @@ namespace Netch.Utils.HttpProxyHandler { private static HttpWebServer? _httpWebServer; private static string? _pacContent; + public static readonly string PacPrefix= $"http://127.0.0.1:{Global.Settings.Pac_Port}/pac/"; - public static string InitPACServer(string address) + public static string InitPACServer() { try { - _pacContent = GetPacList(address); - var prefixes = $"http://{address}:{Global.Settings.Pac_Port}/pac/"; + _pacContent = GetPacList("127.0.0.1"); - _httpWebServer = new HttpWebServer(SendResponse, prefixes); + _httpWebServer = new HttpWebServer(SendResponse, PacPrefix); Task.Run(() => _httpWebServer.StartWaitingRequest()); var pacUrl = GetPacUrl(); @@ -77,7 +77,7 @@ namespace Netch.Utils.HttpProxyHandler /// public static string GetPacUrl() { - return $"http://127.0.0.1:{Global.Settings.Pac_Port}/pac/?t={DateTime.Now:yyyyMMddHHmmssfff}"; + return PacPrefix + $"?t={DateTime.Now:yyyyMMddHHmmssfff}"; } } } \ No newline at end of file