Пример #1
0
 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;
 }
Пример #2
0
        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");
            }
        }