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 | } |