/// <summary>
        /// Initializes a new instance of the <see cref="LicenseKeyForm"/> class.
        /// </summary>
        /// <param name="processorSettings">Gateway processor config provider.</param>
        public LicenseKeyForm(GatewayProcessorConfigProvider gatewayProcessorConfigProvider)
        {
            _gatewayProcessorConfigProvider = gatewayProcessorConfigProvider;

            InitializeComponent();

            Application.EnableVisualStyles();
        }
        public void TestLoadGatewayProcessorConfig()
        {
            var configurationDirectory = CreateTemporaryDirectory().FullName;
            var random = new Random();

            var expectedGatewayProcessorConfig = RandomGatewayProcessorConfig(random);

            Serialise(expectedGatewayProcessorConfig, configurationDirectory, GatewayProcessorConfigProvider.GatewayProcessorConfigFileName);

            var gatewayProcessorConfigProvider = new GatewayProcessorConfigProvider(_baseTestLogger, configurationDirectory);
            var actualGatewayProcessorConfig   = gatewayProcessorConfigProvider.GatewayProcessorConfig();

            Assert.AreEqual(expectedGatewayProcessorConfig, actualGatewayProcessorConfig);
        }
Exemple #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="BaseTestClass"/> class.
        /// </summary>
        public BaseTestClass()
        {
            ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;

            _loggerFactory  = LoggerFactory.Create(builder => builder.AddConsole());
            _baseTestLogger = _loggerFactory.CreateLogger("BaseTest");

            // Set a logger for fo-dicom network operations so that they show up in VS output when debugging
            Dicom.Log.LogManager.SetImplementation(new Dicom.Log.TextWriterLogManager(new DataProviderTests.DebugTextWriter()));

            _testAETConfigProvider             = new AETConfigProvider(_loggerFactory.CreateLogger("ModelSettings"), _basePathConfigs);
            TestGatewayProcessorConfigProvider = new GatewayProcessorConfigProvider(_loggerFactory.CreateLogger("ProcessorSettings"), _basePathConfigs);
            _testGatewayReceiveConfigProvider  = new GatewayReceiveConfigProvider(_loggerFactory.CreateLogger("ProcessorSettings"), _basePathConfigs);
        }
        public static ActionResult ValidateProductKey(Session session)
        {
#if DEBUG
            Debugger.Launch();
#endif

            // Make sure that the applications are run as services.
            using (var gatewayProcessorConfigProvider = new GatewayProcessorConfigProvider(null, ConfigInstallDirectory))
            {
                gatewayProcessorConfigProvider.SetRunAsConsole(false);

                using (var gatewayReceiveConfigProvider = new GatewayReceiveConfigProvider(
                           null,
                           ConfigInstallDirectory))
                {
                    gatewayReceiveConfigProvider.SetRunAsConsole(false);
                }

                // Check if the installer is running unattended - lets skip the UI if true
                if (session.CustomActionData[UILevelCustomActionKey] == "2")
                {
                    return(ActionResult.Success);
                }

                // In the context of the installer, this may have a different SecurityProtocol to the application.
                // In testing it was: SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls
                // but it may vary. In order to value the uri and license key, we need TLS 1.2
                ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;

                // First time install so lets display a form to grab the license key.
                using (var form = new LicenseKeyForm(gatewayProcessorConfigProvider))
                {
                    var licenseKeyDialogResult = form.ShowDialog();

                    switch (licenseKeyDialogResult)
                    {
                    case DialogResult.Cancel:
                        return(ActionResult.UserExit);

                    case DialogResult.No:
                        return(ActionResult.NotExecuted);

                    default:
                        return(ActionResult.Success);
                    }
                }
            }
        }
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        public static void Main()
        {
            // Create the loggerFactory as Console + Log4Net.
            using (var loggerFactory = LoggerFactory.Create(builder =>
            {
                builder.AddConsole();
                builder.SetMinimumLevel(LogLevel.Trace);
                builder.AddLog4Net();
            }))
            {
                var relativePaths = new[] {
                    "../Config",
                    "../../../../../SampleConfigurations"
                };

                var configurationsPathRoot = ConfigurationService.FindRelativeDirectory(relativePaths, loggerFactory.CreateLogger("Main"));

                using (var aetConfigurationProvider = new AETConfigProvider(
                           loggerFactory.CreateLogger("ModelSettings"),
                           configurationsPathRoot))
                    using (var gatewayProcessorConfigProvider = new GatewayProcessorConfigProvider(
                               loggerFactory.CreateLogger("ProcessorSettings"),
                               configurationsPathRoot))
                    {
                        var segmentationClientLogger = loggerFactory.CreateLogger("SegmentationClient");

                        // The ProjectInstaller.cs uses the service name to install the service.
                        // If you change it please update the ProjectInstaller.cs
                        ServiceHelpers.RunServices(
                            ServiceName,
                            gatewayProcessorConfigProvider.ServiceSettings(),
                            new ConfigurationService(
                                gatewayProcessorConfigProvider.CreateInnerEyeSegmentationClient(segmentationClientLogger),
                                gatewayProcessorConfigProvider.ConfigurationServiceConfig,
                                loggerFactory.CreateLogger("ConfigurationService"),
                                new UploadService(
                                    gatewayProcessorConfigProvider.CreateInnerEyeSegmentationClient(segmentationClientLogger),
                                    aetConfigurationProvider.AETConfigModels,
                                    GatewayMessageQueue.UploadQueuePath,
                                    GatewayMessageQueue.DownloadQueuePath,
                                    GatewayMessageQueue.DeleteQueuePath,
                                    gatewayProcessorConfigProvider.DequeueServiceConfig,
                                    loggerFactory.CreateLogger("UploadService"),
                                    instances: 2),
                                new DownloadService(
                                    gatewayProcessorConfigProvider.CreateInnerEyeSegmentationClient(segmentationClientLogger),
                                    GatewayMessageQueue.DownloadQueuePath,
                                    GatewayMessageQueue.PushQueuePath,
                                    GatewayMessageQueue.DeleteQueuePath,
                                    gatewayProcessorConfigProvider.DownloadServiceConfig,
                                    gatewayProcessorConfigProvider.DequeueServiceConfig,
                                    loggerFactory.CreateLogger("DownloadService"),
                                    instances: 1),
                                new PushService(
                                    aetConfigurationProvider.AETConfigModels,
                                    new DicomDataSender(),
                                    GatewayMessageQueue.PushQueuePath,
                                    GatewayMessageQueue.DeleteQueuePath,
                                    gatewayProcessorConfigProvider.DequeueServiceConfig,
                                    loggerFactory.CreateLogger("PushService"),
                                    instances: 1),
                                new DeleteService(
                                    GatewayMessageQueue.DeleteQueuePath,
                                    gatewayProcessorConfigProvider.DequeueServiceConfig,
                                    loggerFactory.CreateLogger("DeleteService"))));
                    }
            }
        }
        /// <summary>
        /// Validates the license key using the InnerEye segmentation client.
        /// </summary>
        /// <param name="gatewayProcessorConfigProvider">Gateway processor config provider.</param>
        /// <param name="licenseKey">The license key to validate.</param>
        /// <param name="inferenceUri">Inference Uri to validate.</param>
        /// <returns>If valid and text to display with the validation result.</returns>
        internal static async Task <(bool Result, string ValidationText)> ValidateLicenseKeyAsync(GatewayProcessorConfigProvider gatewayProcessorConfigProvider, string licenseKey, Uri inferenceUri)
        {
            var validationText       = string.Empty;
            var processorSettings    = gatewayProcessorConfigProvider.ProcessorSettings();
            var existingInferenceUri = processorSettings.InferenceUri;
            var existingLicenseKey   = processorSettings.LicenseKey;

            try
            {
                // Update the settings for the Gateway.
                gatewayProcessorConfigProvider.SetProcessorSettings(inferenceUri, licenseKey);

                using (var segmentationClient = gatewayProcessorConfigProvider.CreateInnerEyeSegmentationClient()())
                {
                    await segmentationClient.PingAsync();
                }

                return(true, validationText);
            }
            catch (AuthenticationException)
            {
                validationText = "Invalid product key";
            }
            catch (Exception)
            {
                validationText = "Unable to connect to inference service uri";
            }

            // Restore the previous config
            gatewayProcessorConfigProvider.SetProcessorSettings(existingInferenceUri, existingLicenseKey);

            return(false, validationText);
        }