#
Junjie
2 天以前 686fe55892de7bf8d206cddbead77a5fbdb0e091
src/main/java/com/zy/system/entity/license/CustomLicenseManager.java
@@ -1,6 +1,5 @@
package com.zy.system.entity.license;
import com.core.common.Cools;
import de.schlichtherle.license.*;
import de.schlichtherle.xml.GenericCertificate;
import org.apache.logging.log4j.LogManager;
@@ -120,13 +119,23 @@
        //1. 首先调用父类的validate方法
        super.validate(content);
        //2. 然后校验自定义的License参数
        //License中可被允许的参数信息
        LicenseCheck expectedCheckModel = (LicenseCheck) content.getExtra();
        //当前服务器真实的参数信息
        LicenseCheck serverCheckModel = getServerInfos();
        Object extra = content.getExtra();
        LicenseCheck serverCheckModel = LicenseUtils.getServerInfos();
        if(expectedCheckModel != null && serverCheckModel != null){
        if (serverCheckModel == null) {
            throw new LicenseContentException("不能获取服务器硬件信息");
        }
        if (LicenseBindingSupport.isV2Extra(extra)) {
            LicenseBindModel bindModel = LicenseBindingSupport.parseBindModel(extra);
            if (!LicenseBindingSupport.matches(bindModel, serverCheckModel)) {
                throw new LicenseContentException("当前服务器不在授权节点范围内");
            }
            return;
        }
        LicenseCheck expectedCheckModel = LicenseBindingSupport.parseLegacyLicenseCheck(extra);
        if(expectedCheckModel != null){
            //校验IP地址
            if(!checkIpAddress(expectedCheckModel.getIpAddress(),serverCheckModel.getIpAddress())){
                throw new LicenseContentException("当前服务器的IP没在授权范围内");
@@ -183,26 +192,6 @@
    }
    /**
     * 获取当前服务器需要额外校验的License参数
     */
    private LicenseCheck getServerInfos(){
        //操作系统类型
        String osName = System.getProperty("os.name").toLowerCase();
        AbstractServerInfos abstractServerInfos = null;
        //根据不同操作系统类型选择不同的数据获取方法
        if (osName.startsWith("windows")) {
            abstractServerInfos = new WindowsServerInfos();
        } else if (osName.startsWith("linux")) {
            abstractServerInfos = new LinuxServerInfos();
        }else{//其他服务器类型
            abstractServerInfos = new WindowsServerInfos();
        }
        return abstractServerInfos.getServerInfos();
    }
    /**
     * 校验当前服务器的IP/Mac地址是否在可被允许的IP范围内<br/>
     * 如果存在IP在可被允许的IP/Mac地址范围内,则返回true
     */
@@ -230,8 +219,8 @@
     * 校验当前服务器硬件(主板、CPU等)序列号是否在可允许范围内
     */
    private boolean checkSerial(String expectedSerial,String serverSerial){
        if(!Cools.isEmpty(expectedSerial)){
            if(!Cools.isEmpty(serverSerial)){
        if(!isBlank(expectedSerial)){
            if(!isBlank(serverSerial)){
                if(expectedSerial.equals(serverSerial)){
                    return true;
                }
@@ -242,4 +231,8 @@
        }
    }
}
    private boolean isBlank(String value) {
        return value == null || value.trim().isEmpty();
    }
}