/// <summary> /// 生成SAFENET证书 /// </summary> /// <param name="productKey"></param> /// <returns></returns> internal bool installSafeNet(string productKey, out string slId, out string msg) { msg = null; slId = null; try { string v2c = getV2C(productKey, out msg); string refXml = null; if (!string.IsNullOrEmpty(v2c)) { xmlBiz bll = new xmlBiz(); XmlDocument xml = bll.getXmlDocument(v2c.ToString()); XmlNode haspInfo = bll.getXmlSingleNode(xml, "hasp_info"); XmlNode haspscope = bll.getXmlSingleNode(haspInfo, "haspscope"); XmlNode vendor = bll.getXmlSingleNode(haspscope, "vendor"); XmlNode hasp = bll.getXmlSingleNode(vendor, "hasp"); slId = bll.getXmlAttribute(hasp, "id"); } HaspStatus status = Hasp.Update(v2c, ref refXml); return(status == HaspStatus.StatusOk); } catch (Exception ex) { msg += ex.Message + ex.StackTrace; return(false); } }
internal string TransferToolupdate(string v2c) { string refXml = null; HaspStatus status = Hasp.Update(v2c, ref refXml); if (status == HaspStatus.StatusOk) { refXml = "ok"; } else { refXml = ((int)status + status.ToString()); } return(refXml); }
internal string update(string v2c) { string refXml = null; HaspStatus status = Hasp.Update(v2c, ref refXml); if (status == HaspStatus.UpdateAlreadyAdded) { refXml = "T1"; } else if (status == HaspStatus.InvalidUpdateData) { refXml = "T2"; } else if (status == HaspStatus.StatusOk) { refXml = "ok"; } else { refXml = ((int)status + status.ToString()); } return(refXml); }
private void buttonDetach_Click(object sender, EventArgs e) { var myId = MyGlobalMethods.GetInfo(Variables.scopeForLocal, Variables.formatForGetId); string info = null; int detachingTime = (Convert.ToInt32(numericUpDownDaysForDetach.Value) * 24 * 60 * 60); HaspStatus myDetachStatus = Hasp.Transfer(Variables.actionForDetach.Replace("{PRODUCT_ID}", productId).Replace("{NUMBER_OF_SECONDS}", detachingTime.ToString()), Variables.scopeForSpecificKeyId.Replace("{KEY_ID}", parentKeyId), Variables.vendorCode[Variables.vendorCode.Keys.Where(k => k.Key == Variables.currentBatchCode).FirstOrDefault()], myId, ref info); if (myDetachStatus == HaspStatus.StatusOk) { // hasp_update string ack = null; HaspStatus myUpdateStatus = Hasp.Update(info, ref ack); if (myUpdateStatus == HaspStatus.StatusOk) { //handle success var tmpAvaliablesKeys = XDocument.Parse(MyGlobalMethods.GetInfo(Variables.scopeForLocal, Variables.formatForGetAvailableLicenses)); foreach (var el in tmpAvaliablesKeys.Root.Elements("hasp")) { foreach (var el2 in el.Elements("feature")) { if (el2.Attribute("id").Value == Variables.myFeature.FeatureId.ToString()) { childKeyId = el.Attribute("id").Value; break; } } if (String.IsNullOrEmpty(childKeyId)) { break; } } MessageBox.Show(MultiLanguage.ErrorMessageReplacer(language.Key, "Current status of the opperation is: {0} \nPlease, re-login in application, for using LOCALLY license.").Replace("{0}", myUpdateStatus.ToString()), MultiLanguage.ErrorMessageReplacer(language.Key, "Successfully Detached!")); } else { //handle error MessageBox.Show(myUpdateStatus.ToString(), MultiLanguage.ErrorMessageReplacer(language.Key, "Detaching apply update error!")); } } else { if (myDetachStatus == HaspStatus.InvalidDuration) { try { var tmpAvaliablesKeys = XDocument.Parse(MyGlobalMethods.GetInfo(Variables.scopeForLocal, Variables.formatForGetAvailableLicenses)); foreach (var el in tmpAvaliablesKeys.Root.Elements("hasp")) { foreach (var el2 in el.Elements("feature")) { if (el2.Attribute("id").Value == Variables.myFeature.FeatureId.ToString()) { childKeyId = el.Attribute("id").Value; break; } } if (String.IsNullOrEmpty(childKeyId)) { break; } } string myCancelDetachStatus = Variables.useUrl ? MyGlobalMethods.CancelDetachViaUrl(productId, childKeyId) : MyGlobalMethods.CancelDetachViaLicensingApi(childKeyId); if (myCancelDetachStatus == HttpStatusCode.OK.ToString() || myCancelDetachStatus == HaspStatus.StatusOk.ToString()) { myDetachStatus = Hasp.Transfer(Variables.actionForDetach.Replace("{PRODUCT_ID}", productId).Replace("{NUMBER_OF_SECONDS}", detachingTime.ToString()), Variables.scopeForSpecificKeyId.Replace("{KEY_ID}", parentKeyId), Variables.vendorCode[Variables.vendorCode.Keys.Where(k => k.Key == Variables.currentBatchCode).FirstOrDefault()], myId, ref info); if (myDetachStatus == HaspStatus.StatusOk) { // hasp_update string ack = null; HaspStatus myUpdateStatus = Hasp.Update(info, ref ack); if (myUpdateStatus == HaspStatus.StatusOk) { //handle success MessageBox.Show(MultiLanguage.ErrorMessageReplacer(language.Key, "Current status of the opperation is: {0} \nPlease, re-login in application, for using LOCALLY license.").Replace("{0}", myUpdateStatus.ToString()), MultiLanguage.ErrorMessageReplacer(language.Key, "Successfully Detached!")); } else { //handle error MessageBox.Show(myUpdateStatus.ToString(), MultiLanguage.ErrorMessageReplacer(language.Key, "Detaching apply update error!")); } } else { //handle error MessageBox.Show(myDetachStatus.ToString(), MultiLanguage.ErrorMessageReplacer(language.Key, "Re-Detaching error!")); } } else { //handle error MessageBox.Show(MultiLanguage.ErrorMessageReplacer(language.Key, "Status request: {0} \nSomething goes wrong... Please, try again later!").Replace("{0}", myCancelDetachStatus), MultiLanguage.ErrorMessageReplacer(language.Key, "Cancel Detaching error (In Re-Detach)!")); } } catch { // do nothing... MessageBox.Show(myDetachStatus.ToString(), MultiLanguage.ErrorMessageReplacer(language.Key, "Detaching error!")); } } else { //handle error MessageBox.Show(myDetachStatus.ToString(), MultiLanguage.ErrorMessageReplacer(language.Key, "Detaching error!")); } } }