using System; namespace Netch.Controllers { public class HTTPController { /// /// 实例 /// public PrivoxyController pPrivoxyController = new PrivoxyController(); /// /// 启动 /// /// 服务器 /// 模式 /// 是否启动成功 public bool Start(Models.Server server, Models.Mode mode) { try { if (server.Type == "Socks5") { if (!string.IsNullOrWhiteSpace(server.Username) && !string.IsNullOrWhiteSpace(server.Password)) { return false; } pPrivoxyController.Start(server, mode); } else { pPrivoxyController.Start(server, mode); } if (mode.Type != 5) { NativeMethods.SetGlobal($"127.0.0.1:{Global.Settings.HTTPLocalPort}", ""); // HTTP 系统代理模式,启动系统代理 /* using (var registry = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true)) { registry.SetValue("ProxyEnable", 1); registry.SetValue("ProxyServer", $"127.0.0.1:{Global.Settings.HTTPLocalPort}"); Win32Native.InternetSetOption(IntPtr.Zero, 39, IntPtr.Zero, 0); Win32Native.InternetSetOption(IntPtr.Zero, 37, IntPtr.Zero, 0); } */ } } catch (Exception e) { Utils.Logging.Info(e.ToString()); return false; } return true; } /// /// 停止 /// public void Stop() { try { try { pPrivoxyController.Stop(); } catch (Exception e) { Utils.Logging.Info(e.ToString()); } NativeMethods.SetDIRECT(); /* using (var registry = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true)) { registry.SetValue("ProxyEnable", 0); registry.DeleteValue("ProxyServer", false); Win32Native.InternetSetOption(IntPtr.Zero, 39, IntPtr.Zero, 0); Win32Native.InternetSetOption(IntPtr.Zero, 37, IntPtr.Zero, 0); } */ } catch (Exception e) { Utils.Logging.Info(e.ToString()); } } } }