public ProxyForBookmakerData( [NotNull] ProxyForChrome proxy, [CanBeNull] CredentialsForHostInIRequestContext credentials, [NotNull] Uri host) { this.Proxy = proxy; if (credentials != null) { this.Credentials = credentials; this.IsNeedCredentials = true; } this.Host = host; }
public async Task UpdateProxyInProgram(Settings settings, bool loadTestPage = true) { ProxyPanelViewModel proxyPanelViewModel = this; ProxyForChrome proxyFromProxyConfig = proxyPanelViewModel.ExtractMainProxyFromProxyConfig(settings.ProxyConfig); CredentialsForHostInIRequestContext credentialsFromProxyConfig = proxyPanelViewModel.ExtractMainProxyCredentialsFromProxyConfig(settings.ProxyConfig); List <ProxyPanelViewModel.ProxyForBookmakerData> proxyForBookmakers = proxyPanelViewModel.ExtractProxyForBookmakers(settings.UserSettings.BookmakersList); foreach (Api allApi in Api.AllApis) { RequestHandler innerHandler = allApi.Request.GetInnerHandler(); innerHandler?.AddProxyDataCredentials(credentialsFromProxyConfig); if (settings.ProxyConfig.CurrentProxy.HeaderAuth != null && innerHandler != null) { innerHandler.AddCutomRequestHeader(settings.ProxyConfig.CurrentProxy.HeaderAuth); } } ProxyForChrome proxy; if (proxyForBookmakers.Count > 0) { PacScript pacScript = new PacScript(proxyFromProxyConfig); foreach (ProxyPanelViewModel.ProxyForBookmakerData forBookmakerData in proxyForBookmakers) { pacScript.AddNewProxyForHost(forBookmakerData.Host, forBookmakerData.Proxy); if (forBookmakerData.IsNeedCredentials) { foreach (Api allApi in Api.AllApis) { allApi.Request.StopLoadingOnce(); allApi.Request.GetInnerHandler()?.AddProxyDataCredentials(forBookmakerData.Credentials); } } } proxy = (ProxyForChrome)pacScript; } else { proxy = proxyFromProxyConfig; } SetPreferenceRezult preferenceRezult = await Cef.GetGlobalRequestContext().SetProxy(proxy); if (!preferenceRezult.IsSuccess) { await proxyPanelViewModel.ShowErrorDialogAsync((BaseViewModel)proxyPanelViewModel._mainVm, "Прокси НЕ УСТАНОВЛЕН! " + preferenceRezult.ErrorMessage); } else { bool isClosed; try { isClosed = await proxyPanelViewModel.CloseAllConnection(Cef.GetGlobalRequestContext()); int num = await proxyPanelViewModel.ClearAllConnectionErrors(Cef.GetGlobalRequestContext()) ? 1 : 0; } catch (Exception ex) { isClosed = false; } if (!isClosed) { await proxyPanelViewModel.ShowMessageDialogAsync((BaseViewModel)proxyPanelViewModel._mainVm, "Предупреждение", "Перезапустите программу, что бы корректно закрыть все соединения или попробуйте еще раз сохранить!"); } if (!loadTestPage) { return; } await Task.Delay(TimeSpan.FromMilliseconds(500.0)); proxyPanelViewModel._workerOne?.LoadPage("https://2ip.ru"); proxyPanelViewModel._workerTwo?.LoadPage("https://yandex.ru/internet"); } }