⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serverlicenseprovider.cs

📁 这是可以加密&解密字符串
💻 CS
字号:
using System;
using System.IO;
using System.Globalization;
using FireSpider.Lang;

namespace GTT
{
    public class ServerLicenseProvider : LicenseProvider
    {
        public override void SaveLicense(string fileName, ServerLicense license)
        {
            Stream licenseDataStream = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite, FileShare.None);
            try
            {
                SaveLicenseToDataStream(licenseDataStream, license);
                licenseDataStream.Flush();
            }
            finally
            {
                licenseDataStream.Close();
                licenseDataStream.Dispose();
            }
        }

        protected void SaveLicenseToDataStream(Stream licenseDataStream, ServerLicense license)
        {
            Stream inputStream = GetLicenseDataStream(license);
            inputStream.Position = 0;
            BinaryReader br = new BinaryReader(inputStream);

            BinaryWriter writer = new BinaryWriter(licenseDataStream);
            writer.Write(br.ReadBytes((int)inputStream.Length), 0, (int)inputStream.Length);
            writer.Flush();
        }

        protected virtual Stream GetLicenseDataStream(ServerLicense license)
        {
            string key = license.StartTicks + ":" + license.EndTicks;

            MemoryStream memoryStream = new MemoryStream();
            byte[] bytes = EnvironmentEx.LowToHighBC.GetBytes(key);
            memoryStream.Write(bytes, 0, bytes.Length);

            return memoryStream;
        }

        /// <summary>
        /// 创建运行期间许可。
        /// </summary>
        /// <param name="type"></param>
        /// <param name="key"></param>
        /// <returns></returns>
        protected virtual ServerLicense CreateLicense(string key)
        {
            string[] strArray = key.Split(new char[] { ':' });
            return new ServerLicense(long.Parse(strArray[0], CultureInfo.InvariantCulture), long.Parse(strArray[1]));
        }

        /// <summary>
        /// 取得许可。
        /// </summary>
        /// <param name="context"></param>
        /// <param name="type"></param>
        /// <param name="instance"></param>
        /// <param name="allowExceptions"></param>
        /// <returns></returns>
        public override ServerLicense LoadLicense(string fileName)
        {
            ServerLicense license = null;
            string errorMessage = null;
            string licenseData = this.GetLicenseData(fileName);//从文件加载许可证数据。
            if (((licenseData != null) && (licenseData.Length != 0)) && this.ValidateLicenseData(licenseData))//验证数据合法性。
            {
                ServerLicense license2 = this.CreateLicense(licenseData);//创建许可证对象。
                if (this.ValidateLicense(license2, out errorMessage))//验证许可证的有效性。
                {
                    license = license2;
                }
            }
            return license;
        }

        /// <summary>
        /// 获得许可证数据。
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        protected virtual string GetLicenseData(string fileName)
        {
            string str = null;
            Stream licenseDataStream = null;
            try
            {
                licenseDataStream = this.GetLicenseDataStream(fileName);
                if (licenseDataStream != null)
                {
                    licenseDataStream.Position = 0;
                    BinaryReader br = new BinaryReader(licenseDataStream);
                    byte[] bytes = br.ReadBytes((int)licenseDataStream.Length);
                    str = EnvironmentEx.LowToHighBC.ToString(bytes);
                }
            }
            finally
            {
                if (licenseDataStream != null)
                {
                    licenseDataStream.Close();
                    licenseDataStream = null;
                }
            }
            return str;
        }

        /// <summary>
        /// 获得许可证的文件流。
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        protected virtual Stream GetLicenseDataStream(string fileName)
        {
            try
            {
                if (File.Exists(fileName))
                {
                    return new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read);
                }
            }
            catch
            {
            }
            return null;
        }

        /// <summary>
        /// 许可是否有效。
        /// </summary>
        /// <param name="license"></param>
        /// <param name="errorMessage"></param>
        /// <returns></returns>
        protected virtual bool ValidateLicense(ServerLicense license, out string errorMessage)
        {
            errorMessage = null;
            ServerLicense license2 = (ServerLicense)license;
            if (license2.IsExpired)
            {
                errorMessage = "The ServerLicense has expired.";
                return false;
            }
            return true;
        }


        protected virtual bool ValidateLicenseData(string licenseData)
        {
            string[] strArray = licenseData.Split(new char[] { ':' });
            return strArray.Length == 2;
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -