#region /* ----------------------------------------------------------------------- * * * Copyright 2011-2012 GRNET S.A. All rights reserved. * * Redistribution and use in source and binary forms, with or * without modification, are permitted provided that the following * conditions are met: * * 1. Redistributions of source code must retain the above * copyright notice, this list of conditions and the following * disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. * * * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * The views and conclusions contained in the software and * documentation are those of the authors and should not be * interpreted as representing official policies, either expressed * or implied, of GRNET S.A. * * ----------------------------------------------------------------------- */ #endregion using System.Net; using Pithos.Interfaces; namespace Pithos.Client.WPF { using System; using System.Collections.Generic; using System.Linq; using System.Text; /// /// TODO: Update summary. /// public class Proxy { //or the proxy changes, not when the monitor starts public static void SetFromSettings(IPithosSettings pithosSettings) { IWebProxy proxy; if (pithosSettings.UseNoProxy) { proxy = null; } else if (pithosSettings.UseManualProxy) { proxy = new WebProxy(pithosSettings.ProxyServer, pithosSettings.ProxyPort); //If the proxy requires specific authentication settings, use them if (pithosSettings.ProxyAuthentication) { proxy.Credentials = new NetworkCredential(pithosSettings.ProxyUsername, pithosSettings.ProxyPassword, pithosSettings.ProxyDomain); } //Otherwise, if there are generic authentication settings, use them if (!String.IsNullOrWhiteSpace(CredentialCache.DefaultNetworkCredentials.UserName)) { proxy.Credentials = CredentialCache.DefaultNetworkCredentials; } } //In all other cases, use the default proxy else { proxy = WebRequest.GetSystemWebProxy(); //We can't use any previous proxy credentials when we pick the default proxy //If we set the proxy due to a change in settings, the credentials will only be //valid for the previous proxy. proxy.Credentials = CredentialCache.DefaultNetworkCredentials; } WebRequest.DefaultWebProxy = proxy; } public static void SetCredentials(string proxyUsername, string proxyPassword, string proxyDomain) { CredentialCache.DefaultNetworkCredentials.Password = proxyPassword; CredentialCache.DefaultNetworkCredentials.UserName = proxyUsername; CredentialCache.DefaultNetworkCredentials.Domain = proxyDomain; if (WebRequest.DefaultWebProxy!=null) WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials; } } }