using KGIS.Framework.Core.Services; using KGIS.Framework.Platform.Interface; using KGIS.Framework.Utils; using KGIS.Framework.Utils.Helper; using Kingo.Core.Authorize; using Kingo.PlatformPlugin.Services; using Kingo.PluginServiceInterface; using System; using System.Configuration; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.InteropServices; using System.Threading; using System.Windows.Forms; using UIShell.OSGi; namespace Kingo.PlatformPlugin { public class Activator : IBundleActivator { private IPlatformService _platformService; private IOutPutMsg _outputMsg; private IDockViewService dockViewService; public void Start(IBundleContext context) { try { #if DEBUG _platformService = new PlatformService(context as IBundleContext); (context as IBundleContext).AddService(_platformService); dockViewService = new DockViewService(); (context as IBundleContext).AddService(dockViewService); #else VerifyLic(context); #endif //RunIDService2.Instance.Verify(AuthorizeType.多合一授权, "BGDCPRO", "300", "3x"); } catch (Exception ex) { LogAPI.Debug(ex); } //System.Threading.Thread.Sleep(5000); } //public bool Verify(AuthorizeType authorizeType, string productid, string exeVersion, string authorizefileveesion) //{ // //var jqm = HardwareIDHelper.GetHardwareID2(); // string[] licpath = System.IO.Directory.GetFiles(System.Environment.CurrentDirectory, "*.lic", System.IO.SearchOption.TopDirectoryOnly); // if (licpath.Length == 0) return false; // foreach (var item in licpath) // { // AuthorizeHelper authorizeHelper = new AuthorizeHelper(authorizeType, productid, exeVersion, authorizefileveesion, item); // authorizeHelper.SetCipherTextTime += (text) => // { // Console.WriteLine(text);//此处处理三方验证 // }; // var state = authorizeHelper.Authorize(); // if (state) // { // //return state; // var code = authorizeHelper.GetAreaCode(); // var codeinfo = authorizeHelper.GetAreaInfo(); // var modelid = authorizeHelper.GetAuthorizeModelInfo(); // var exptime = authorizeHelper.GetExpirationTime(); // var lasttime = authorizeHelper.GetLastUpdateTime(); // var lasttimetxt = authorizeHelper.GetLastUpdateTimeCiphertext(); // var up = authorizeHelper.UpdateLastUpDateTime(); // } // } // return false; //} private bool ValidityVerification(IBundleContext context) { try { AuthorizeHelper authorizeHelper = new AuthorizeHelper(AuthorizeType.单机授权, "BGDCPRO", "300", "3x", ""); var type = ConfigurationManager.AppSettings.Get("LicenseType"); Attribute guid_attr = Attribute.GetCustomAttribute(Assembly.GetExecutingAssembly(), typeof(GuidAttribute)); string guid = ((GuidAttribute)guid_attr).Value; var state = authorizeHelper.Authorize();// ("MobileDataMake", "2x", GetVersion(Assembly.GetExecutingAssembly().Location)); if (state) { _platformService = new PlatformService(context as IBundleContext); (context as IBundleContext).AddService(_platformService); dockViewService = new DockViewService(); (context as IBundleContext).AddService(dockViewService); } else { LogAPI.Debug("软件授权校验未通过"); throw new Exception("授权失败"); } return true; } catch (Exception ex) { if (ex.Message == "Dongle initialization error") { MessageHelper.Show("未读取到加密狗数据:" + ex.Message); return false; } else { MessageHelper.Show("未读取到加密狗数据:" + ex.Message); throw ex; } } } private string GetVersion(string fileName) { FileVersionInfo file1 = System.Diagnostics.FileVersionInfo.GetVersionInfo(fileName); return String.Format("{0}{1}{2}", file1.ProductMajorPart, file1.ProductMinorPart, file1.ProductBuildPart); } private void VerifyLic(object context) { try { Attribute guid_attr = Attribute.GetCustomAttribute(Assembly.GetExecutingAssembly(), typeof(GuidAttribute)); string guid = ((GuidAttribute)guid_attr).Value; var type = ConfigurationManager.AppSettings.Get("LicenseType"); _platformService = new PlatformService(context as IBundleContext); //if (!RunIDService2.Instance.Models.Contains(guid)) //{ // throw new Exception(string.Format("【{0}】插件未授权,加载失败", context.Bundle.Name)); //} (context as IBundleContext).AddService(_platformService); dockViewService = new DockViewService(); (context as IBundleContext).AddService(dockViewService); ////判断授权方式 //var type = ConfigurationManager.AppSettings.Get("LicenseType"); //if (type == "F")//本地授权 //{ // Attribute guid_attr = Attribute.GetCustomAttribute(Assembly.GetExecutingAssembly(), typeof(GuidAttribute)); // string guid = ((GuidAttribute)guid_attr).Value; // try // { // string[] licpath = System.IO.Directory.GetFiles(System.Environment.CurrentDirectory, "*.lic", System.IO.SearchOption.TopDirectoryOnly); // if (licpath.Length == 0) // { // MessageHelper.ShowError("授权校验失败!"); // } // if (licpath.Length == 0 || !RunIDService2.Instance.Verify(AuthorizeType.多合一授权, "BGDCPRO", "300", "3x", "10eaa61")) // { // KGIS.PlatformPlugin.Views.License.LicenseView lic = new KGIS.PlatformPlugin.Views.License.LicenseView(context); // lic.DocValidity += VerifyLic; // DialogResult dialog = lic.ShowDialog(); // } // else // { // _platformService = new PlatformService(context as IBundleContext); // (context as IBundleContext).AddService(_platformService); // dockViewService = new DockViewService(); // (context as IBundleContext).AddService(dockViewService); // return; // } // } // catch (Exception ex) // { // MessageHelper.Show(ex.Message); // LogAPI.Debug(ex); // KGIS.PlatformPlugin.Views.License.LicenseView lic = new KGIS.PlatformPlugin.Views.License.LicenseView(context); // lic.DocValidity += VerifyLic; // DialogResult dialog = lic.ShowDialog(); // } //} //else if (type == "D") //{ // if (!RunIDService2.Instance.Verify("BGDCPRO", "300", "3x")) // { // KGIS.PlatformPlugin.Views.License.LicenseView lic = new KGIS.PlatformPlugin.Views.License.LicenseView(context); // lic.DocValidity = (o) => // { // _platformService = new PlatformService(context as IBundleContext); // (context as IBundleContext).AddService(_platformService); // dockViewService = new DockViewService(); // (context as IBundleContext).AddService(dockViewService); // }; // DialogResult dialog = lic.ShowDialog(); // } // else // { // _platformService = new PlatformService(context as IBundleContext); // (context as IBundleContext).AddService(_platformService); // dockViewService = new DockViewService(); // (context as IBundleContext).AddService(dockViewService); // } //} //else //{ // KGIS.PlatformPlugin.Views.License.LicenseView lic = new KGIS.PlatformPlugin.Views.License.LicenseView(context); // lic.DocValidity += VerifyLic; // DialogResult dialog = lic.ShowDialog(); //} } catch (Exception ex) { LogAPI.Debug(ex); } } public void Stop(IBundleContext context) { if (null != _platformService) { context.RemoveService(_platformService); _platformService = null; } if (null != _outputMsg) { context.RemoveService(_outputMsg); _outputMsg = null; } } } }