Statistics
| Branch: | Revision:

root / trunk / Pithos.Client.WPF / Proxy.cs @ 255f5f86

History | View | Annotate | Download (4.1 kB)

1
#region
2
/* -----------------------------------------------------------------------
3
 * <copyright file="Proxy.cs" company="GRNet">
4
 * 
5
 * Copyright 2011-2012 GRNET S.A. All rights reserved.
6
 *
7
 * Redistribution and use in source and binary forms, with or
8
 * without modification, are permitted provided that the following
9
 * conditions are met:
10
 *
11
 *   1. Redistributions of source code must retain the above
12
 *      copyright notice, this list of conditions and the following
13
 *      disclaimer.
14
 *
15
 *   2. Redistributions in binary form must reproduce the above
16
 *      copyright notice, this list of conditions and the following
17
 *      disclaimer in the documentation and/or other materials
18
 *      provided with the distribution.
19
 *
20
 *
21
 * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
22
 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
23
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
25
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
28
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
29
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32
 * POSSIBILITY OF SUCH DAMAGE.
33
 *
34
 * The views and conclusions contained in the software and
35
 * documentation are those of the authors and should not be
36
 * interpreted as representing official policies, either expressed
37
 * or implied, of GRNET S.A.
38
 * </copyright>
39
 * -----------------------------------------------------------------------
40
 */
41
#endregion
42
using System.Net;
43
using Pithos.Interfaces;
44

    
45
namespace Pithos.Client.WPF
46
{
47
    using System;
48
    using System.Collections.Generic;
49
    using System.Linq;
50
    using System.Text;
51

    
52
    /// <summary>
53
    /// TODO: Update summary.
54
    /// </summary>
55
    public class Proxy
56
    {
57
        //or the proxy changes, not when the monitor starts
58
        public static void SetFromSettings(IPithosSettings pithosSettings)
59
        {
60
            IWebProxy proxy;
61
            if (pithosSettings.UseNoProxy)
62
            {
63
                proxy = null;
64
            }
65
            else if (pithosSettings.UseManualProxy)
66
            {
67
                proxy = new WebProxy(pithosSettings.ProxyServer, pithosSettings.ProxyPort);
68
                //If the proxy requires specific authentication settings, use them
69
                if (pithosSettings.ProxyAuthentication)
70
                {
71
                    proxy.Credentials = new NetworkCredential(pithosSettings.ProxyUsername, pithosSettings.ProxyPassword, pithosSettings.ProxyDomain);
72
                }
73
                //Otherwise, if there are generic authentication settings, use them
74
                if (!String.IsNullOrWhiteSpace(CredentialCache.DefaultNetworkCredentials.UserName))
75
                {
76
                    proxy.Credentials = CredentialCache.DefaultNetworkCredentials;
77
                }
78
            }
79
            //In all other cases, use the default proxy
80
            else 
81
            {
82
                proxy = WebRequest.GetSystemWebProxy();
83
                //We can't use any previous proxy credentials when we pick the default proxy
84
                //If we set the proxy due to a change in settings, the credentials will only be 
85
                //valid for the previous proxy.
86
                proxy.Credentials = CredentialCache.DefaultNetworkCredentials;
87
            }
88
            WebRequest.DefaultWebProxy = proxy;
89
        }
90

    
91

    
92
        public static void SetCredentials(string proxyUsername, string proxyPassword, string proxyDomain)
93
        {
94
            CredentialCache.DefaultNetworkCredentials.Password = proxyPassword;
95
            CredentialCache.DefaultNetworkCredentials.UserName = proxyUsername;
96
            CredentialCache.DefaultNetworkCredentials.Domain = proxyDomain;
97
            if (WebRequest.DefaultWebProxy!=null)
98
                WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;
99
        }
100
    }
101
}