public static void Update(Configuration config, bool forceDisable) { int sysProxyMode = config.sysProxyMode; if (sysProxyMode == (int)ProxyMode.NoModify) { return; } if (forceDisable) { sysProxyMode = (int)ProxyMode.Direct; } bool global = sysProxyMode == (int)ProxyMode.Global; bool enabled = sysProxyMode != (int)ProxyMode.Direct; try { if (enabled)//sysProxyMode != (int)ProxyMode.Direct,global & pac { string pacUrl = $"http://127.0.0.1:{config.localPort}/pac?auth={config.localAuthPassword}&t={Util.Utils.GetTimestamp(DateTime.Now)}"; Sysproxy.SetIEProxy(enabled, global, $"127.0.0.1:{config.localPort}", pacUrl); } else { Sysproxy.SetIEProxy(false, false, null, null); //Sysproxy.SetIEProxy(config.proxyEnable, config.proxyEnable, $"{config.proxyHost}:{config.proxyPort}", ""); } } catch (Exception ex) { Logging.LogUsefulException(ex); } }
public ClanApplicationContext() { _clansMenuStrip = new ContextMenuStrip(); _clansMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(menuOpening); // 读取配置并开启 clash 进程 readConfig(); _clash = new Clash(_currentConfig); _clash.Start(); // 读取 API 端口,并连接 API string cfg = File.ReadAllText(_currentConfig); Dictionary <string, object> dict = new Deserializer().Deserialize <Dictionary <string, object> >(cfg); string extController = dict["external-controller"].ToString(); _clashAPI = new ClashAPI(extController); //TODO: external controller protentially not started yet. // 打开系统代理 _sysproxy = new Sysproxy(_clashAPI.config.port); _sysproxy.Enabled = true; // 若当前托管配置记录了 selector 选择,则恢复选择状态 if (_configList.index >= 0 && _configList.files[_configList.index].selections.Count > 0) { restoreSelections(_configList.files[_configList.index].selections); } _trayIcon = new NotifyIcon() { Icon = Clans.Properties.Resources.Clash, ContextMenuStrip = _clansMenuStrip, Visible = true }; }
public static void Update(Configuration config, bool forceDisable, PACServer pacSrv, bool noRetry = false) { bool global = config.global; bool enabled = config.enabled; if (forceDisable) { enabled = false; } try { if (enabled) { if (global) { Sysproxy.SetIEProxy(true, true, "localhost:" + config.localPort.ToString(), null); } else { string pacUrl; if (config.useOnlinePac && !config.pacUrl.IsNullOrEmpty()) { pacUrl = config.pacUrl; } else { pacUrl = pacSrv.PacUrl; } Sysproxy.SetIEProxy(true, false, null, pacUrl); } } else { Sysproxy.SetIEProxy(false, false, null, null); Proxies.UnsetProxy(); } } catch (ProxyException ex) { Logging.LogUsefulException(ex); if (ex.Type != ProxyExceptionType.Unspecific && !noRetry) { var ret = MessageBox.Show(I18N.GetString("Error occured when process proxy setting, do you want reset current setting and retry?"), I18N.GetString("Shadowsocks"), MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (ret == DialogResult.Yes) { Sysproxy.ResetIEProxy(); Update(config, forceDisable, pacSrv, true); } } else { MessageBox.Show(I18N.GetString("Unrecoverable proxy setting error occured, see log for detail"), I18N.GetString("Shadowsocks"), MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
public static void Update(Configuration config, bool forceDisable, PACServer pacSrv) { bool global = config.global; bool enabled = config.enabled; if (forceDisable) { enabled = false; } try { if (enabled) { if (global) { Sysproxy.SetIEProxy(true, true, "127.0.0.1:" + config.localPort.ToString(), ""); } else { string pacUrl; if (config.useOnlinePac && !config.pacUrl.IsNullOrEmpty()) { pacUrl = config.pacUrl; } else { pacUrl = $"http://127.0.0.1:{config.localPort}/pac?t={GetTimestamp(DateTime.Now)}{pacSrv.PacSecret}"; } Sysproxy.SetIEProxy(true, false, "", pacUrl); } } else { Sysproxy.SetIEProxy(false, false, "", ""); } } catch (ProxyException ex) { Logging.LogUsefulException(ex); } }
public ShadowsocksController() { /***************************************************<Start> add by Ian.May 2016/10/15****************************************************/ // preparing parameters for destructing fogNodes at closing stage, should not be handed from _config;(shallow copy) _configBackup = Configuration.Load(); _clientUser = ClientUser.Load(); isShadowFogMode = true; isInitialStartup = true; isShadowFogStarted = false; Sysproxy.SetIEProxy(false, false, "", ""); //Ends /****************************************************<End> add by Ian.May 2016/10/15*****************************************************/ _config = Configuration.Load(); StatisticsConfiguration = StatisticsStrategyConfiguration.Load(); _strategyManager = new StrategyManager(this); StartReleasingMemory(); StartTrafficStatistics(61); }
void reloadConfig() { _clash.ReloadConfig(_currentConfig); // 读取 API 端口,并连接 API string cfg = File.ReadAllText(_currentConfig); Dictionary <string, object> dict = new Deserializer().Deserialize <Dictionary <string, object> >(cfg); string extController = dict["external-controller"].ToString(); _clashAPI.UpdateURL(extController); //TODO: external controller protentially not started yet. // 更新系统代理 _sysproxy = new Sysproxy(_clashAPI.config.port); _sysproxy.Enabled = true; // 若当前托管配置记录了 selector 选择,则恢复选择状态 if (_configList.index >= 0 && _configList.files[_configList.index].selections.Count > 0) { restoreSelections(_configList.files[_configList.index].selections); } }