package com.license.utils;
import Aladdin.Hasp;
import Aladdin.HaspStatus;
import cn.hutool.core.util.XmlUtil;
import cn.hutool.log.Log;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class HaspUtil {
private static final Log log = Log.get();
/** Runtime query scope */
protected final static String KEY_SCOPE = "\n"
+ "\n"
+ "\n"
+ "\n";
/** Runtime query view */
protected final static String KEY_VIEW = "";
protected final static String LICENSE_STATUS =
"" +
"" +
" " +
" " +
" " +
" " +
" " +
" " +
" " +
" " +
"" +
"";
protected final static String KEY_C2V_FORMAT = "";
protected final static String KEY_ID_FORMAT = "\n" +
"\n" +
" \n" +
" \n" +
" \n" +
"";
public final static String ALL_FORMAT = "\n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
"";
public final static String HASP_FORMAT = "\n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
" \n" +
"";
public static String getLicenseInfo(String vendorCode, Integer featureId) {
Hasp hasp = new Hasp(featureId);
hasp.login(vendorCode);
int status = hasp.getLastError();
log.info("query license status: {}", status);
if(status == HaspStatus.HASP_STATUS_OK) {
String licenseInfo = hasp.getSessionInfo(LICENSE_STATUS);
status = hasp.getLastError();
// log.info("license status: {}", status);
if (status != HaspStatus.HASP_STATUS_OK) {
}
return licenseInfo;
}else if (status == HaspStatus.HASP_FEATURE_EXPIRED){
//过期
String licenseInfo = hasp.getInfo("", LICENSE_STATUS,vendorCode);
return licenseInfo;
}else {
log.error("Error: with status code :{}",status);
return null;
}
}
/**
* Updates the key with the license (v2c)
*
* @param v2c
* @return
* @throws Exception
*/
public static int updateKeyWithLicense(String v2c) {
Hasp hasp = new Hasp(Hasp.HASP_DEFAULT_FID);
hasp.update(v2c);
int status = hasp.getLastError();
log.info("updateLicense license status: {}", status);
if (status != HaspStatus.HASP_STATUS_OK) {
log.error("Error: updateLicense Fails with status code :{}",status);
}
return status;
}
/**
*
* @param vendorCode
* @return
* @throws Exception
*/
public static String readC2V(String vendorCode, Integer featureId) {
Hasp hasp = new Hasp(featureId);
hasp.login(vendorCode);
int status = hasp.getLastError();
// log.info("license status: {}", status);
if(status == HaspStatus.HASP_STATUS_OK) {
//如果已经安装过license ,读取指纹和 hasp id
String licenseInfo = hasp.getSessionInfo(KEY_C2V_FORMAT);
// String info = hasp.getSessionInfo(KEY_ID_FORMAT);
// Document document = XmlUtil.parseXml(info);
// Element rootEle = document.getDocumentElement();
// Element haspElement=XmlUtil.getElement(rootEle,"hasp");
// String id = haspElement.getAttribute("id");
// String licenseInfo = hasp.getInfo("\n" +
// "\n" +
// " \n" +
// "",KEY_C2V_FORMAT,vendorCode);
status = hasp.getLastError();
log.info("getLicense c2v license status: {}", status);
if (status != HaspStatus.HASP_STATUS_OK) {
log.error("Error: Download Fails with status code :{}",status);
}
return licenseInfo;
}else {
hasp = new Hasp(featureId);
String infos = hasp.getInfo(KEY_SCOPE, KEY_VIEW, vendorCode);
status = hasp.getLastError();
log.info("getLicense c2v license status: {}", status);
if(status != HaspStatus.HASP_STATUS_OK) {
log.error("Error: getLicense c2v Fails with status code :{}",status);
throw new RuntimeException();
}
return infos;
}
}
public static int verify(String vendorCode, Integer fetureId) {
Hasp hasp = new Hasp(fetureId);
hasp.login(vendorCode);
int status = hasp.getLastError();
log.info("verify license status: {}", status);
if(status != HaspStatus.HASP_STATUS_OK) {
log.error("Error: license login Fails with status code :{}",status);
}
hasp.logout();
return status;
}
}