1
#region License Information
3 * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
5 * This file is part of HeuristicLab.
7 * HeuristicLab is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
12 * HeuristicLab is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
23 using System
.Collections
.Generic
;
26 using System
.ServiceModel
;
27 using System
.Security
.Cryptography
.X509Certificates
;
28 using System
.Reflection
;
30 namespace HeuristicLab
.PluginInfrastructure
.Advanced
.DeploymentService
{
32 /// Factory class to generated administration client instances for the deployment service.
34 public static class AdminClientFactory
{
35 private static byte[] serverCrtData
;
38 /// static constructor loads the embedded service certificate
40 static AdminClientFactory() {
41 var stream
= Assembly
.GetExecutingAssembly().GetManifestResourceStream("HeuristicLab.PluginInfrastructure.Advanced.DeploymentService.services.heuristiclab.com.cer");
42 serverCrtData
= new byte[stream
.Length
];
43 stream
.Read(serverCrtData
, 0, serverCrtData
.Length
);
47 /// Factory method to create new administration clients for the deployment service.
48 /// Sets the connection string and user credentials from values provided in settings.
49 /// HeuristicLab.PluginInfrastructure.Properties.Settings.Default.UpdateLocationUserName
50 /// HeuristicLab.PluginInfrastructure.Properties.Settings.Default.UpdateLocationPassword
51 /// HeuristicLab.PluginInfrastructure.Properties.Settings.Default.UpdateLocationnAdministrationAddress
54 /// <returns>A new instance of an adimistration client</returns>
55 public static AdminClient
CreateClient() {
56 var client
= new AdminClient();
57 client
.ClientCredentials
.UserName
.UserName
= HeuristicLab
.PluginInfrastructure
.Properties
.Settings
.Default
.UpdateLocationUserName
;
58 client
.ClientCredentials
.UserName
.Password
= HeuristicLab
.PluginInfrastructure
.Properties
.Settings
.Default
.UpdateLocationPassword
;
59 client
.Endpoint
.Address
= new EndpointAddress(HeuristicLab
.PluginInfrastructure
.Properties
.Settings
.Default
.UpdateLocationAdministrationAddress
);
60 client
.ClientCredentials
.ServiceCertificate
.Authentication
.CertificateValidationMode
= System
.ServiceModel
.Security
.X509CertificateValidationMode
.Custom
;
61 client
.ClientCredentials
.ServiceCertificate
.Authentication
.CustomCertificateValidator
=
62 new DeploymentServerCertificateValidator(new X509Certificate2(serverCrtData
));