예제 #1
0
        private void BuildHub(string deviceSasKey)
        {
            var currentLocation = Path.GetDirectoryName(Assembly.GetCallingAssembly().Location);

            if (_inContainer)
            {
                currentLocation = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
            }

            Environment.SetEnvironmentVariable(HubService.Constants.ConfigKey.EdgeHubDevServerCertificateFile,
                                               Path.Combine(currentLocation, @"Certificates/edge-hub-dev/edge-hub-server.ca.pem"));

            Environment.SetEnvironmentVariable(HubService.Constants.ConfigKey.EdgeHubDevServerPrivateKeyFile,
                                               Path.Combine(currentLocation, @"Certificates/edge-hub-dev/edge-hub-server.pem"));

            Environment.SetEnvironmentVariable(HubService.Constants.ConfigKey.EdgeHubDevTrustBundleFile,
                                               Path.Combine(currentLocation, @"Certificates/edge-hub-dev/edge-hub-server.ca.pem"));

            Environment.SetEnvironmentVariable("AuthenticationMode", "Cloud");

            var storageFolder = Path.Combine(currentLocation, @"Storage");

            var hubStorageFolder = Path.Combine(storageFolder, HubService.Constants.EdgeHubStorageFolder);

            if (!Directory.Exists(hubStorageFolder))
            {
                Directory.CreateDirectory(hubStorageFolder);
            }

            Environment.SetEnvironmentVariable("storageFolder", storageFolder);

            var csBuilder = IotHubConnectionStringBuilder.Create(_iotHubConnectionString);

            var edgeConnectionString =
                new ModuleConnectionStringBuilder(csBuilder.HostName, _deviceId)
                .Create(Devices.Edge.Agent.Core.Constants.EdgeHubModuleIdentityName)
                .WithSharedAccessKey(deviceSasKey)
                .Build();

            Environment.SetEnvironmentVariable(Devices.Edge.Agent.Core.Constants.EdgeHubConnectionStringKey,
                                               edgeConnectionString);

            Environment.SetEnvironmentVariable(Devices.Edge.Agent.Core.Constants.IotHubConnectionStringKey,
                                               edgeConnectionString);

            var edgeHubConfiguration = new ConfigurationBuilder()
                                       .AddJsonFile("appSettings.json", true)
                                       .AddEnvironmentVariables()
                                       .Build();

            _hub._Init(edgeHubConfiguration, _container);
        }