public static bool TryImportLicense(string licenseFile, out string errorMessage) { var licenseText = NonBlockingReader.ReadAllTextWithoutLocking(licenseFile); if (!LicenseVerifier.TryVerify(licenseText, out _)) { errorMessage = "Invalid license file"; return(false); } if (!TryDeserializeLicense(licenseText, out var license)) { errorMessage = "Invalid license file"; return(false); } if (!license.ValidForApplication("ServiceControl")) { errorMessage = "License is not for ServiceControl"; return(false); } if (license.HasExpired()) { errorMessage = "Failed to import because the license has expired"; return(false); } try { new RegistryLicenseStore(Registry.LocalMachine).StoreLicense(licenseText); } catch (Exception) { errorMessage = "Failed to import license into the registry"; return(false); } try { var machineLevelLicenseLocation = LicenseFileLocationResolver.GetPathFor(Environment.SpecialFolder.CommonApplicationData); new FilePathLicenseStore().StoreLicense(machineLevelLicenseLocation, licenseText); } catch (Exception) { errorMessage = "Failed to import license into the filesystem"; return(false); } errorMessage = null; return(true); }
LicenseSourceResult ReadExternalLicense(string applicationName) { var appConfigLicenseFile = ConfigurationManager.AppSettings["NServiceBus/LicensePath"]; if (!string.IsNullOrEmpty(appConfigLicenseFile)) { if (File.Exists(appConfigLicenseFile)) { return(ValidateLicense(NonBlockingReader.ReadAllTextWithoutLocking(appConfigLicenseFile), applicationName)); } } return(new LicenseSourceResult { Location = location, Result = $"License file not found in path supplied by app config file setting 'NServiceBus/LicensePath'. Value was {appConfigLicenseFile}" }); }
public static bool TryImportLicense(string licenseFile, out string errorMessage) { var licenseText = NonBlockingReader.ReadAllTextWithoutLocking(licenseFile); if (!LicenseVerifier.TryVerify(licenseText, out _)) { errorMessage = "Invalid license file"; return(false); } if (!TryDeserializeLicense(licenseText, out var license)) { errorMessage = "Invalid license file"; return(false); } if (!license.ValidForApplication("ServiceControl")) { errorMessage = "License is not for ServiceControl"; return(false); } try { new RegistryLicenseStore(Registry.LocalMachine).StoreLicense(licenseText); } catch (Exception) { errorMessage = "Failed to import license into the registry"; return(false); } try { new FilePathLicenseStore().StoreLicense(FilePathLicenseStore.MachineLevelLicenseLocation, licenseText); } catch (Exception) { errorMessage = "Failed to import license into the filesystem"; return(false); } errorMessage = null; return(true); }
void browseButton_Click(object sender, EventArgs e) { using (var openDialog = new OpenFileDialog()) { openDialog.InitializeLifetimeService(); openDialog.Filter = "License files (*.xml)|*.xml|All files (*.*)|*.*"; openDialog.Title = "Select License file"; var dialogResult = StaThreadRunner.ShowDialogInSTA(openDialog.ShowDialog); if (dialogResult == DialogResult.OK) { var licenseText = NonBlockingReader.ReadAllTextWithoutLocking(openDialog.FileName); try { LicenseVerifier.Verify(licenseText); var license = LicenseDeserializer.Deserialize(licenseText); if (LicenseExpirationChecker.HasLicenseExpired(license)) { var message = "The license you provided has expired, select another file."; Logger.Warn(message); MessageBox.Show(this, message, "License expired", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } ResultingLicenseText = licenseText; Close(); } catch (Exception exception) { var message = $"An error occurred when parsing the license.\r\nMessage: {exception.Message}\r\nThe exception details have been appended to the log."; Logger.Warn("Error parsing license", exception); MessageBox.Show(this, message, "Error parsing license", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }
public void StartRaven(EmbeddableDocumentStore documentStore, Settings settings, bool maintenanceMode) { Settings = settings; Directory.CreateDirectory(settings.DbPath); documentStore.Listeners.RegisterListener(new SubscriptionsLegacyAddressConverter()); if (settings.RunInMemory) { documentStore.RunInMemory = true; } else { documentStore.DataDirectory = settings.DbPath; documentStore.Configuration.CompiledIndexCacheDirectory = settings.DbPath; } documentStore.UseEmbeddedHttpServer = maintenanceMode || settings.ExposeRavenDB; documentStore.EnlistInDistributedTransactions = false; var localRavenLicense = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "RavenLicense.xml"); if (File.Exists(localRavenLicense)) { Logger.InfoFormat("Loading RavenDB license found from {0}", localRavenLicense); documentStore.Configuration.Settings["Raven/License"] = NonBlockingReader.ReadAllTextWithoutLocking(localRavenLicense); } else { Logger.InfoFormat("Loading Embedded RavenDB license"); documentStore.Configuration.Settings["Raven/License"] = ReadLicense(); } //This is affects only remote access to the database in maintenace mode and enables access without authentication documentStore.Configuration.Settings["Raven/AnonymousAccess"] = "Admin"; documentStore.Configuration.Settings["Raven/Licensing/AllowAdminAnonymousAccessForCommercialUse"] = "true"; if (Settings.RunCleanupBundle) { documentStore.Configuration.Settings.Add("Raven/ActiveBundles", "CustomDocumentExpiration"); } documentStore.Configuration.DisableClusterDiscovery = true; documentStore.Configuration.ResetIndexOnUncleanShutdown = true; documentStore.Configuration.Port = settings.DatabaseMaintenancePort; documentStore.Configuration.HostName = settings.Hostname == "*" || settings.Hostname == "+" ? "localhost" : settings.Hostname; documentStore.Conventions.SaveEnumsAsIntegers = true; documentStore.Configuration.Catalog.Catalogs.Add(new AssemblyCatalog(GetType().Assembly)); documentStore.Initialize(); Logger.Info("Index creation started"); IndexCreation.CreateIndexes(typeof(RavenBootstrapper).Assembly, documentStore); IndexCreation.CreateIndexes(typeof(SagaAudit.SagaSnapshot).Assembly, documentStore); PurgeKnownEndpointsWithTemporaryIdsThatAreDuplicate(documentStore); }