public static bool StartServer() { Config config = SettingManager.Configuration; List <int> portInUse = NetworkUtil.GetPortInUse(2000); // proxy port if (config.SystemProxyPort == 0 || portInUse.Contains(config.SystemProxyPort)) { config.SystemProxyPort = NetworkUtil.GetAvailablePort(2000, portInUse); portInUse.Add(config.SystemProxyPort); } else { portInUse.Add(config.SystemProxyPort); } // shadowsocks port if (config.LocalSocks5Port == 0 || portInUse.Contains(config.LocalSocks5Port)) { config.LocalSocks5Port = NetworkUtil.GetAvailablePort(2000, portInUse); portInUse.Add(config.LocalSocks5Port); } else { portInUse.Add(config.LocalSocks5Port); } if (!ProcPrivoxy.Start(config.SystemProxyPort, config.LocalSocks5Port)) { return(false); } if (SettingManager.RemoteServer != null) { return(ServerManager.AddProcess(SettingManager.RemoteServer, config.LocalSocks5Port)); } return(true); }
public static void StopServer() { ProcPrivoxy.Stop(); ServerManager.RemoveProcess(SettingManager.RemoteServer); }