目录修改
This commit is contained in:
211
src/main/java/com/license/utils/HaspUtil.java
Normal file
211
src/main/java/com/license/utils/HaspUtil.java
Normal file
@@ -0,0 +1,211 @@
|
||||
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 = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"
|
||||
+ "<haspscope>\n"
|
||||
+ "<license_manager hostname=\"localhost\" />\n"
|
||||
+ "</haspscope>\n";
|
||||
/** Runtime query view */
|
||||
protected final static String KEY_VIEW = "<haspformat format=\"host_fingerprint\"/>";
|
||||
|
||||
protected final static String LICENSE_STATUS =
|
||||
"<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" +
|
||||
"<haspformat root=\"hasp_info\">" +
|
||||
" <feature>" +
|
||||
" <attribute name=\"id\" />" +
|
||||
" <element name=\"license\" />" +
|
||||
" <hasp>" +
|
||||
" <attribute name=\"id\" />" +
|
||||
" <attribute name=\"type\" />" +
|
||||
" </hasp>" +
|
||||
" </feature>" +
|
||||
"</haspformat>" +
|
||||
"";
|
||||
|
||||
protected final static String KEY_C2V_FORMAT = "<haspformat format=\"updateinfo\"/>";
|
||||
|
||||
protected final static String KEY_ID_FORMAT = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" +
|
||||
"<haspformat root=\"haspscope\">\n" +
|
||||
" <hasp>\n" +
|
||||
" <attribute name=\"id\" />\n" +
|
||||
" </hasp>\n" +
|
||||
"</haspformat>";
|
||||
|
||||
public final static String ALL_FORMAT = "<haspformat>\n" +
|
||||
" <hasp>\n" +
|
||||
" <element name=\"id\"/>\n" +
|
||||
" <element name=\"type\"/>\n" +
|
||||
" <element name=\"configuration\"/>\n" +
|
||||
" <element name=\"clone_protected\"/>\n" +
|
||||
" <element name=\"disabled\"/>\n" +
|
||||
" <element name=\"production_date\"/>\n" +
|
||||
" <element name=\"updatecounter\"/>\n" +
|
||||
" <element name=\"parentid\"/>\n" +
|
||||
" <feature>\n" +
|
||||
" <element name=\"id\"/>\n" +
|
||||
" <element name=\"locked\"/>\n" +
|
||||
" <element name=\"license\"/>\n" +
|
||||
" <element name=\"name\"/>\n" +
|
||||
" <element name=\"concurrency\"/>\n" +
|
||||
" <element name=\"usable\"/>\n" +
|
||||
" </feature>\n" +
|
||||
" <product>\n" +
|
||||
" <element name=\"id\"/>\n" +
|
||||
" <element name=\"name\"/>\n" +
|
||||
" </product>\n" +
|
||||
" <license_manager>\n" +
|
||||
" <element name=\"host_fingerprint\"/>\n" +
|
||||
" <element name=\"hostname\"/>\n" +
|
||||
" <element name=\"osname\"/>\n" +
|
||||
" <element name=\"osversion\"/>\n" +
|
||||
" <element name=\"name\"/>\n" +
|
||||
" <element name=\"time\"/>\n" +
|
||||
" <element name=\"uptime\"/>\n" +
|
||||
" <element name=\"architecture\"/>\n" +
|
||||
" <element name=\"ip\"/>\n" +
|
||||
" </license_manager>\n" +
|
||||
" <vendor>\n" +
|
||||
" <element name=\"id\"/>\n" +
|
||||
" <element name=\"name\"/>\n" +
|
||||
" </vendor>\n" +
|
||||
" </hasp>\n" +
|
||||
"</haspformat>";
|
||||
|
||||
public final static String HASP_FORMAT = "<haspformat>\n" +
|
||||
" <hasp>\n" +
|
||||
" <element name=\"id\"/>\n" +
|
||||
" <element name=\"type\"/>\n" +
|
||||
" <element name=\"configuration\"/>\n" +
|
||||
" <element name=\"clone_protected\"/>\n" +
|
||||
" <element name=\"disabled\"/>\n" +
|
||||
" <element name=\"production_date\"/>\n" +
|
||||
" <element name=\"updatecounter\"/>\n" +
|
||||
" <element name=\"parentid\"/>\n" +
|
||||
" <feature>\n" +
|
||||
" <element name=\"id\"/>\n" +
|
||||
" <element name=\"locked\"/>\n" +
|
||||
" <element name=\"license\"/>\n" +
|
||||
" <element name=\"name\"/>\n" +
|
||||
" <element name=\"concurrency\"/>\n" +
|
||||
" <element name=\"usable\"/>\n" +
|
||||
" </feature>\n" +
|
||||
" <product>\n" +
|
||||
" <element name=\"id\"/>\n" +
|
||||
" <element name=\"name\"/>\n" +
|
||||
" </product>\n" +
|
||||
" </hasp>\n" +
|
||||
"</haspformat>";
|
||||
|
||||
|
||||
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("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><haspscope><feature id=\"\n" +
|
||||
featureId +
|
||||
"\"/></haspscope>", 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("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" +
|
||||
// "<haspscope>\n" +
|
||||
// " <hasp " +
|
||||
// "id= \"" + id +"\""+
|
||||
// "/>\n" +
|
||||
// "</haspscope>",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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user