コード例 #1
0
ファイル: ValidateLicense.cs プロジェクト: mow/ravendb
        private string AssertLicenseAttributes(IDictionary <string, string> licenseAttributes, LicenseType licenseType)
        {
            string version;
            var    errorMessage = string.Empty;

            licenseAttributes.TryGetValue("version", out version); // note that a 1.0 license might not have version

            if (version != "3.0")
            {
                if (licenseType != LicenseType.Subscription)
                {
                    throw new LicenseExpiredException("This is not a license for RavenDB 3.0");
                }
            }

            string maxRam;

            if (licenseAttributes.TryGetValue("maxRamUtilization", out maxRam))
            {
                if (string.Equals(maxRam, "unlimited", StringComparison.OrdinalIgnoreCase) == false)
                {
                    MemoryStatistics.MemoryLimit = (int)(long.Parse(maxRam) / 1024 / 1024);
                }
            }

            string maxParallel;

            if (licenseAttributes.TryGetValue("maxParallelism", out maxParallel))
            {
                if (string.Equals(maxParallel, "unlimited", StringComparison.OrdinalIgnoreCase) == false)
                {
                    MemoryStatistics.MaxParallelism = Math.Max(2, (int.Parse(maxParallel) * 2));
                }
            }
            var clasterInspector = new ClusterInspecter();

            string claster;

            if (licenseAttributes.TryGetValue("allowWindowsClustering", out claster))
            {
                if (bool.Parse(claster) == false)
                {
                    if (clasterInspector.IsRavenRunningAsClusterGenericService())
                    {
                        throw new LicenseExpiredException("Your license does not allow clustering, but RavenDB is running in clustered mode");
                    }
                }
            }
            else
            {
                if (clasterInspector.IsRavenRunningAsClusterGenericService())
                {
                    throw new LicenseExpiredException("Your license does not allow clustering, but RavenDB is running in clustered mode");
                }
            }

            return(errorMessage);
        }
コード例 #2
0
        private void AssertForV2(IDictionary <string, string> licenseAttributes)
        {
            string version;

            if (licenseAttributes.TryGetValue("version", out version) == false)
            {
                throw new LicenseExpiredException("This is not a license for RavenDB 2.0");
            }

            if (version != "1.2" && version != "2.0")
            {
                throw new LicenseExpiredException("This is not a license for RavenDB 2.0");
            }

            string maxRam;

            if (licenseAttributes.TryGetValue("maxRamUtilization", out maxRam))
            {
                if (string.Equals(maxRam, "unlimited", StringComparison.InvariantCultureIgnoreCase) == false)
                {
                    MemoryStatistics.MemoryLimit = int.Parse(maxRam);
                }
            }

            string maxParallel;

            if (licenseAttributes.TryGetValue("maxParallelism", out maxParallel))
            {
                if (string.Equals(maxParallel, "unlimited", StringComparison.InvariantCultureIgnoreCase) == false)
                {
                    MemoryStatistics.MaxParallelism = int.Parse(maxParallel);
                }
            }

            var clasterInspector = new ClusterInspecter();

            string claster;

            if (licenseAttributes.TryGetValue("allowWindowsClustering", out claster))
            {
                if (bool.Parse(claster) == false)
                {
                    if (clasterInspector.IsRavenRunningAsClusterGenericService())
                    {
                        throw new InvalidOperationException("Your license does not allow clastering, but RavenDB is running in clustered mode");
                    }
                }
            }
            else
            {
                if (clasterInspector.IsRavenRunningAsClusterGenericService())
                {
                    throw new InvalidOperationException("Your license does not allow clastering, but RavenDB is running in clustered mode");
                }
            }
        }
コード例 #3
0
ファイル: ValidateLicense.cs プロジェクト: xinix00/ravendb
        private static string AssertLicenseAttributes(IDictionary <string, string> licenseAttributes, LicenseType licenseType)
        {
            var errorMessage = string.Empty;

            ThrowIfStandardLicenseExpired(licenseAttributes, licenseType);

            string maxRam;

            if (licenseAttributes.TryGetValue("maxRamUtilization", out maxRam))
            {
                if (string.Equals(maxRam, "unlimited", StringComparison.OrdinalIgnoreCase) == false)
                {
                    MemoryStatistics.MemoryLimit = (int)(long.Parse(maxRam) / 1024 / 1024);
                }
            }

            string maxParallel;

            if (licenseAttributes.TryGetValue("maxParallelism", out maxParallel))
            {
                if (string.Equals(maxParallel, "unlimited", StringComparison.OrdinalIgnoreCase) == false)
                {
                    MemoryStatistics.MaxParallelism = Math.Max(2, (int.Parse(maxParallel) * 2));
                }
            }

            var    clasterInspector = new ClusterInspecter();
            string cluster;

            if (licenseAttributes.TryGetValue("allowWindowsClustering", out cluster) == false ||
                bool.Parse(cluster) == false)
            {
                if (clasterInspector.IsRavenRunningAsClusterGenericService())
                {
                    throw new LicenseExpiredException("Your license does not allow clustering, but RavenDB is running in clustered mode");
                }
            }

            return(errorMessage);
        }
コード例 #4
0
        private void AssertForV2(IDictionary <string, string> licenseAttributes)
        {
            string version;

            if (licenseAttributes.TryGetValue("version", out version) == false)
            {
                if (licenseValidator.LicenseType != LicenseType.Subscription)
                {
                    throw new LicenseExpiredException("This is not a license for RavenDB 2.0");
                }

                // Add backward compatibility for the subscription licenses of v1
                licenseAttributes["version"] = "2.5";
                licenseAttributes["implicit20StandardLicenseBy10Subscription"] = "true";
                licenseAttributes["allowWindowsClustering"] = "false";
                licenseAttributes["numberOfDatabases"]      = "unlimited";
                licenseAttributes["periodicBackup"]         = "true";
                licenseAttributes["encryption"]             = "false";
                licenseAttributes["compression"]            = "false";
                licenseAttributes["quotas"]             = "false";
                licenseAttributes["authorization"]      = "true";
                licenseAttributes["documentExpiration"] = "true";
                licenseAttributes["replication"]        = "true";
                licenseAttributes["versioning"]         = "true";
                licenseAttributes["maxSizeInMb"]        = "unlimited";

                string oem;
                if (licenseValidator.LicenseAttributes.TryGetValue("OEM", out oem) &&
                    "true".Equals(oem, StringComparison.OrdinalIgnoreCase))
                {
                    licenseAttributes["OEM"] = "true";
                    licenseAttributes["maxRamUtilization"] = "6442450944";
                    licenseAttributes["maxParallelism"]    = "3";
                }
                else
                {
                    licenseAttributes["OEM"] = "false";
                    licenseAttributes["maxRamUtilization"] = "12884901888";
                    licenseAttributes["maxParallelism"]    = "6";
                }
            }
            else
            {
                if (version != "1.2" && version != "2.0" && version != "2.5")
                {
                    throw new LicenseExpiredException("This is not a license for RavenDB 2.x");
                }
            }

            string maxRam;

            if (licenseAttributes.TryGetValue("maxRamUtilization", out maxRam))
            {
                if (string.Equals(maxRam, "unlimited", StringComparison.OrdinalIgnoreCase) == false)
                {
                    MemoryStatistics.MemoryLimit = (int)(long.Parse(maxRam) / 1024 / 1024);
                }
            }

            string maxParallel;

            if (licenseAttributes.TryGetValue("maxParallelism", out maxParallel))
            {
                if (string.Equals(maxParallel, "unlimited", StringComparison.OrdinalIgnoreCase) == false)
                {
                    MemoryStatistics.MaxParallelism = int.Parse(maxParallel);
                }
            }

            var clasterInspector = new ClusterInspecter();

            string claster;

            if (licenseAttributes.TryGetValue("allowWindowsClustering", out claster))
            {
                if (bool.Parse(claster) == false)
                {
                    if (clasterInspector.IsRavenRunningAsClusterGenericService())
                    {
                        throw new InvalidOperationException("Your license does not allow clustering, but RavenDB is running in clustered mode");
                    }
                }
            }
            else
            {
                if (clasterInspector.IsRavenRunningAsClusterGenericService())
                {
                    throw new InvalidOperationException("Your license does not allow clustering, but RavenDB is running in clustered mode");
                }
            }
        }