Statistics
| Branch: | Revision:

root / trunk / Pithos.ShellExtensions / ShellSettings.cs @ 31c97141

History | View | Annotate | Download (6.3 kB)

1 255f5f86 Panagiotis Kanavos
#region
2 255f5f86 Panagiotis Kanavos
/* -----------------------------------------------------------------------
3 255f5f86 Panagiotis Kanavos
 * <copyright file="ShellSettings.cs" company="GRNet">
4 255f5f86 Panagiotis Kanavos
 * 
5 255f5f86 Panagiotis Kanavos
 * Copyright 2011-2012 GRNET S.A. All rights reserved.
6 255f5f86 Panagiotis Kanavos
 *
7 255f5f86 Panagiotis Kanavos
 * Redistribution and use in source and binary forms, with or
8 255f5f86 Panagiotis Kanavos
 * without modification, are permitted provided that the following
9 255f5f86 Panagiotis Kanavos
 * conditions are met:
10 255f5f86 Panagiotis Kanavos
 *
11 255f5f86 Panagiotis Kanavos
 *   1. Redistributions of source code must retain the above
12 255f5f86 Panagiotis Kanavos
 *      copyright notice, this list of conditions and the following
13 255f5f86 Panagiotis Kanavos
 *      disclaimer.
14 255f5f86 Panagiotis Kanavos
 *
15 255f5f86 Panagiotis Kanavos
 *   2. Redistributions in binary form must reproduce the above
16 255f5f86 Panagiotis Kanavos
 *      copyright notice, this list of conditions and the following
17 255f5f86 Panagiotis Kanavos
 *      disclaimer in the documentation and/or other materials
18 255f5f86 Panagiotis Kanavos
 *      provided with the distribution.
19 255f5f86 Panagiotis Kanavos
 *
20 255f5f86 Panagiotis Kanavos
 *
21 255f5f86 Panagiotis Kanavos
 * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
22 255f5f86 Panagiotis Kanavos
 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
23 255f5f86 Panagiotis Kanavos
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24 255f5f86 Panagiotis Kanavos
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
25 255f5f86 Panagiotis Kanavos
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 255f5f86 Panagiotis Kanavos
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27 255f5f86 Panagiotis Kanavos
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
28 255f5f86 Panagiotis Kanavos
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
29 255f5f86 Panagiotis Kanavos
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 255f5f86 Panagiotis Kanavos
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31 255f5f86 Panagiotis Kanavos
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32 255f5f86 Panagiotis Kanavos
 * POSSIBILITY OF SUCH DAMAGE.
33 255f5f86 Panagiotis Kanavos
 *
34 255f5f86 Panagiotis Kanavos
 * The views and conclusions contained in the software and
35 255f5f86 Panagiotis Kanavos
 * documentation are those of the authors and should not be
36 255f5f86 Panagiotis Kanavos
 * interpreted as representing official policies, either expressed
37 255f5f86 Panagiotis Kanavos
 * or implied, of GRNET S.A.
38 255f5f86 Panagiotis Kanavos
 * </copyright>
39 255f5f86 Panagiotis Kanavos
 * -----------------------------------------------------------------------
40 255f5f86 Panagiotis Kanavos
 */
41 255f5f86 Panagiotis Kanavos
#endregion
42 5bcf6d70 Panagiotis Kanavos
using System.ComponentModel.Composition;
43 5bcf6d70 Panagiotis Kanavos
using System.Diagnostics;
44 5bcf6d70 Panagiotis Kanavos
using System.ServiceModel;
45 b5061ac8 Panagiotis Kanavos
using Microsoft.Win32;
46 5bcf6d70 Panagiotis Kanavos
using Pithos.Interfaces;
47 5bcf6d70 Panagiotis Kanavos
48 5bcf6d70 Panagiotis Kanavos
namespace Pithos.ShellExtensions
49 5bcf6d70 Panagiotis Kanavos
{
50 5bcf6d70 Panagiotis Kanavos
    using System;
51 5bcf6d70 Panagiotis Kanavos
    using System.Collections.Generic;
52 5bcf6d70 Panagiotis Kanavos
    using System.Linq;
53 5bcf6d70 Panagiotis Kanavos
    using System.Text;
54 5bcf6d70 Panagiotis Kanavos
55 5bcf6d70 Panagiotis Kanavos
    /// <summary>
56 5bcf6d70 Panagiotis Kanavos
    /// TODO: Update summary.
57 5bcf6d70 Panagiotis Kanavos
    /// </summary>
58 5bcf6d70 Panagiotis Kanavos
    [Export(typeof(IPithosSettings))]
59 5bcf6d70 Panagiotis Kanavos
    public class ShellSettings:IPithosSettings
60 5bcf6d70 Panagiotis Kanavos
    {
61 7e26c075 Panagiotis Kanavos
        private static readonly log4net.ILog Log = log4net.LogManager.GetLogger("Pithos.ShellSettings");
62 7e26c075 Panagiotis Kanavos
63 5bcf6d70 Panagiotis Kanavos
        private Lazy<IPithosSettings> _settings;
64 5bcf6d70 Panagiotis Kanavos
        public ShellSettings()
65 5bcf6d70 Panagiotis Kanavos
        {
66 5bcf6d70 Panagiotis Kanavos
            _settings = new Lazy<IPithosSettings>(LoadSettings);
67 5bcf6d70 Panagiotis Kanavos
        }
68 5bcf6d70 Panagiotis Kanavos
69 5bcf6d70 Panagiotis Kanavos
        public bool UseDefaultProxy
70 5bcf6d70 Panagiotis Kanavos
        {
71 5bcf6d70 Panagiotis Kanavos
            get { return _settings.Value.UseDefaultProxy; }
72 5bcf6d70 Panagiotis Kanavos
            set { _settings.Value.UseDefaultProxy = value; }
73 5bcf6d70 Panagiotis Kanavos
        }
74 5bcf6d70 Panagiotis Kanavos
75 5bcf6d70 Panagiotis Kanavos
        public bool UseManualProxy
76 5bcf6d70 Panagiotis Kanavos
        {
77 5bcf6d70 Panagiotis Kanavos
            get { return _settings.Value.UseManualProxy; }
78 5bcf6d70 Panagiotis Kanavos
            set { _settings.Value.UseManualProxy = value; }
79 5bcf6d70 Panagiotis Kanavos
        }
80 5bcf6d70 Panagiotis Kanavos
81 5bcf6d70 Panagiotis Kanavos
        public bool UseNoProxy
82 5bcf6d70 Panagiotis Kanavos
        {
83 5bcf6d70 Panagiotis Kanavos
            get { return _settings.Value.UseNoProxy; }
84 5bcf6d70 Panagiotis Kanavos
            set { _settings.Value.UseNoProxy = value; }
85 5bcf6d70 Panagiotis Kanavos
        }
86 5bcf6d70 Panagiotis Kanavos
87 5bcf6d70 Panagiotis Kanavos
        public string PithosPath
88 5bcf6d70 Panagiotis Kanavos
        {
89 5bcf6d70 Panagiotis Kanavos
            get { return _settings.Value.PithosPath; }
90 5bcf6d70 Panagiotis Kanavos
            set { _settings.Value.PithosPath = value; }
91 5bcf6d70 Panagiotis Kanavos
        }
92 5bcf6d70 Panagiotis Kanavos
93 f734ab5b Panagiotis Kanavos
/*
94 5bcf6d70 Panagiotis Kanavos
        public string PithosSite
95 5bcf6d70 Panagiotis Kanavos
        {
96 5bcf6d70 Panagiotis Kanavos
            get { return _settings.Value.PithosSite; }
97 5bcf6d70 Panagiotis Kanavos
        }
98 f734ab5b Panagiotis Kanavos
*/
99 5bcf6d70 Panagiotis Kanavos
100 5bcf6d70 Panagiotis Kanavos
        public string IconsPath
101 5bcf6d70 Panagiotis Kanavos
        {
102 5bcf6d70 Panagiotis Kanavos
            get { return _settings.Value.IconsPath; }
103 5bcf6d70 Panagiotis Kanavos
            set { _settings.Value.IconsPath = value; }
104 5bcf6d70 Panagiotis Kanavos
        }
105 5bcf6d70 Panagiotis Kanavos
106 5bcf6d70 Panagiotis Kanavos
        public string UserName
107 5bcf6d70 Panagiotis Kanavos
        {
108 5bcf6d70 Panagiotis Kanavos
            get { return _settings.Value.UserName; }
109 5bcf6d70 Panagiotis Kanavos
            set { _settings.Value.UserName = value; }
110 5bcf6d70 Panagiotis Kanavos
        }
111 5bcf6d70 Panagiotis Kanavos
112 5bcf6d70 Panagiotis Kanavos
        public string ApiKey
113 5bcf6d70 Panagiotis Kanavos
        {
114 5bcf6d70 Panagiotis Kanavos
            get { return _settings.Value.ApiKey; }
115 5bcf6d70 Panagiotis Kanavos
            set { _settings.Value.ApiKey = value; }
116 5bcf6d70 Panagiotis Kanavos
        }
117 5bcf6d70 Panagiotis Kanavos
118 5bcf6d70 Panagiotis Kanavos
        public AccountsCollection Accounts
119 5bcf6d70 Panagiotis Kanavos
        {
120 5bcf6d70 Panagiotis Kanavos
            get { return _settings.Value.Accounts; }
121 5bcf6d70 Panagiotis Kanavos
            set { _settings.Value.Accounts = value; }
122 5bcf6d70 Panagiotis Kanavos
        }
123 5bcf6d70 Panagiotis Kanavos
124 5bcf6d70 Panagiotis Kanavos
        public string ProxyServer
125 5bcf6d70 Panagiotis Kanavos
        {
126 5bcf6d70 Panagiotis Kanavos
            get { return _settings.Value.ProxyServer; }
127 5bcf6d70 Panagiotis Kanavos
            set { _settings.Value.ProxyServer = value; }
128 5bcf6d70 Panagiotis Kanavos
        }
129 5bcf6d70 Panagiotis Kanavos
130 5bcf6d70 Panagiotis Kanavos
        public int ProxyPort
131 5bcf6d70 Panagiotis Kanavos
        {
132 5bcf6d70 Panagiotis Kanavos
            get { return _settings.Value.ProxyPort; }
133 5bcf6d70 Panagiotis Kanavos
            set { _settings.Value.ProxyPort = value; }
134 5bcf6d70 Panagiotis Kanavos
        }
135 5bcf6d70 Panagiotis Kanavos
136 5bcf6d70 Panagiotis Kanavos
        public string ProxyUsername
137 5bcf6d70 Panagiotis Kanavos
        {
138 5bcf6d70 Panagiotis Kanavos
            get { return _settings.Value.ProxyUsername; }
139 5bcf6d70 Panagiotis Kanavos
            set { _settings.Value.ProxyUsername = value; }
140 5bcf6d70 Panagiotis Kanavos
        }
141 5bcf6d70 Panagiotis Kanavos
142 5bcf6d70 Panagiotis Kanavos
143 5bcf6d70 Panagiotis Kanavos
        public string ProxyPassword
144 5bcf6d70 Panagiotis Kanavos
        {
145 5bcf6d70 Panagiotis Kanavos
            get { return _settings.Value.ProxyPassword; }
146 5bcf6d70 Panagiotis Kanavos
            set { _settings.Value.ProxyPassword = value; }
147 5bcf6d70 Panagiotis Kanavos
        }
148 5bcf6d70 Panagiotis Kanavos
149 65282d58 Panagiotis Kanavos
        public string ProxyDomain
150 65282d58 Panagiotis Kanavos
        {
151 65282d58 Panagiotis Kanavos
            get { return _settings.Value.ProxyDomain; }
152 65282d58 Panagiotis Kanavos
            set { _settings.Value.ProxyDomain = value; }
153 65282d58 Panagiotis Kanavos
        }
154 65282d58 Panagiotis Kanavos
155 5bcf6d70 Panagiotis Kanavos
        public bool ProxyAuthentication
156 5bcf6d70 Panagiotis Kanavos
        {
157 5bcf6d70 Panagiotis Kanavos
158 5bcf6d70 Panagiotis Kanavos
            get { return _settings.Value.ProxyAuthentication; }
159 5bcf6d70 Panagiotis Kanavos
            set { _settings.Value.ProxyAuthentication = value; }
160 5bcf6d70 Panagiotis Kanavos
        }
161 5bcf6d70 Panagiotis Kanavos
162 5bcf6d70 Panagiotis Kanavos
        public bool ExtensionsActivated
163 5bcf6d70 Panagiotis Kanavos
        {
164 5bcf6d70 Panagiotis Kanavos
165 5bcf6d70 Panagiotis Kanavos
            get { return _settings.Value.ExtensionsActivated; }
166 5bcf6d70 Panagiotis Kanavos
            set { _settings.Value.ExtensionsActivated = value; }
167 5bcf6d70 Panagiotis Kanavos
        }
168 133f83c2 Panagiotis Kanavos
169 133f83c2 Panagiotis Kanavos
        public int PollingInterval
170 133f83c2 Panagiotis Kanavos
        {
171 133f83c2 Panagiotis Kanavos
            get { return _settings.Value.PollingInterval; }
172 133f83c2 Panagiotis Kanavos
            set { _settings.Value.PollingInterval = value; }
173 133f83c2 Panagiotis Kanavos
        }
174 422c9598 Panagiotis Kanavos
175 759bd3c4 Panagiotis Kanavos
        public TimeSpan StartupDelay
176 759bd3c4 Panagiotis Kanavos
        {
177 759bd3c4 Panagiotis Kanavos
            get { return _settings.Value.StartupDelay; }
178 759bd3c4 Panagiotis Kanavos
            set { _settings.Value.StartupDelay = value; }
179 759bd3c4 Panagiotis Kanavos
        }
180 759bd3c4 Panagiotis Kanavos
181 422c9598 Panagiotis Kanavos
        public byte HashingParallelism
182 422c9598 Panagiotis Kanavos
        {
183 422c9598 Panagiotis Kanavos
            get { return _settings.Value.HashingParallelism; }
184 422c9598 Panagiotis Kanavos
            set { _settings.Value.HashingParallelism = value; }
185 422c9598 Panagiotis Kanavos
        }
186 5bcf6d70 Panagiotis Kanavos
        public void Save()
187 5bcf6d70 Panagiotis Kanavos
        {
188 5bcf6d70 Panagiotis Kanavos
           
189 5bcf6d70 Panagiotis Kanavos
        }
190 5bcf6d70 Panagiotis Kanavos
191 5bcf6d70 Panagiotis Kanavos
        public void Reload()
192 5bcf6d70 Panagiotis Kanavos
        {
193 5bcf6d70 Panagiotis Kanavos
            _settings=new Lazy<IPithosSettings>(LoadSettings);
194 5bcf6d70 Panagiotis Kanavos
        }
195 5bcf6d70 Panagiotis Kanavos
196 5bcf6d70 Panagiotis Kanavos
        private  IPithosSettings LoadSettings()
197 5bcf6d70 Panagiotis Kanavos
        {
198 b5061ac8 Panagiotis Kanavos
199 5bcf6d70 Panagiotis Kanavos
            try
200 5bcf6d70 Panagiotis Kanavos
            {
201 b5061ac8 Panagiotis Kanavos
                using (var client = PithosHost.GetSettingsClient())
202 5bcf6d70 Panagiotis Kanavos
                {
203 5bcf6d70 Panagiotis Kanavos
                    return client.GetSettings();
204 5bcf6d70 Panagiotis Kanavos
                }
205 5bcf6d70 Panagiotis Kanavos
            }
206 5bcf6d70 Panagiotis Kanavos
            catch (Exception exc)
207 5bcf6d70 Panagiotis Kanavos
            {
208 5120f3cb Panagiotis Kanavos
                Log.ErrorFormat("[ERROR] while loading settings:\r{0}",exc);
209 5bcf6d70 Panagiotis Kanavos
                _settings = new Lazy<IPithosSettings>(LoadSettings);
210 5bcf6d70 Panagiotis Kanavos
            }
211 5bcf6d70 Panagiotis Kanavos
            return null;
212 5bcf6d70 Panagiotis Kanavos
        }
213 5bcf6d70 Panagiotis Kanavos
    }
214 5bcf6d70 Panagiotis Kanavos
}