1
13693261870
2025-01-14 ef225d856cdaf8c5f5b7c08db4b1a3e01ffca90f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package com.se.system.utils;
 
import com.se.system.domain.vo.LicenseExtraParamVo;
import com.se.system.domain.vo.LicenseResultVo;
import com.se.system.domain.vo.LicenseVerifyMg;
import com.se.system.domain.vo.LicenseVerifyParamVo;
import com.se.system.service.CustomVerifyListenerService;
import com.se.system.service.LiceVerifyInstallListener;
import com.se.system.service.inte.IACustomVerifyListener;
import com.se.system.service.inte.IAServerInfoService;
import de.schlichtherle.license.LicenseContent;
 
import java.io.File;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
 
@SuppressWarnings("ALL")
public class LicenseVerifyUtils {
    public static LicenseVerifyParamVo licenseVerifyProperties = new LicenseVerifyParamVo();
 
    public static void installListener() {
        licenseVerifyProperties.setSubject("se-cloud");
        licenseVerifyProperties.setPublicAlias("publiccert");
        licenseVerifyProperties.setPublicKeysStorePath("/publicCerts.store");
        licenseVerifyProperties.setStorePass("Se_System_20!24");
        // licenseVerifyProperties.setLicensePath("classpath:license.lic");
        String serverTempPath = IAServerInfoService.getServerTempPath() + "/lic-files/";
        String latestLicFilePath = getLatestLicFilePath(serverTempPath);
        licenseVerifyProperties.setLicensePath(latestLicFilePath + File.separator + "license.lic");
 
        // 安装证书
        LiceVerifyInstallListener.LicenseVerifyInstall(licenseVerifyProperties);
        // 添加自定义校验模式
        initCustomVerifyListener();
        // 校验证书
        LicenseVerify();
    }
 
    /**
     * 自定义校验模式比如license分发
     */
    public static void initCustomVerifyListener() {
        new CustomVerifyListenerService();
        // new CustomVerifyListenerB();
    }
 
    public static void LicenseVerify() {
        LicenseVerifyMg licenseVerifyManager = new LicenseVerifyMg();
        LicenseResultVo verifyResult = licenseVerifyManager.verify(licenseVerifyProperties.getVerifyParam());
        if (!verifyResult.getResult()) {
            System.out.println(verifyResult.getMessage());
        }
        LicenseContent content = verifyResult.getContent();
        LicenseExtraParamVo licenseCheck = (LicenseExtraParamVo) content.getExtra();
        if (verifyResult.getResult()) {
            /** 增加业务系统监听,是否自定义验证 */
            List<IACustomVerifyListener> customListenerList = IACustomVerifyListener.getCustomListenerList();
            boolean compare = true;
            for (IACustomVerifyListener listener : customListenerList) {
                boolean verify = listener.verify(licenseCheck);
                compare = compare && verify;
            }
            if (true) {
                System.out.println("licnese 校验成功");
                return;
            } else {
                throw new RuntimeException("license 校验失败");
            }
        }
 
        throw new RuntimeException(verifyResult.getException().getMessage());
    }
 
    public static String getLatestLicFilePath(String folderPath) {
        File folder = new File(folderPath);
 
        if (folder.isDirectory()) {
            File[] files = folder.listFiles();
 
            if (files != null && files.length > 0) {
                // 按文件最后修改时间排序
                Arrays.sort(files, Comparator.comparingLong(File::lastModified).reversed());
 
                // 返回最新文件的路径
                return files[0].getAbsolutePath();
            }
        }
 
        // 如果文件夹中没有lic文件,返回null或者你认为合适的值
        return null;
    }
 
    public static void test() {
        installListener();
        LicenseVerify();
        LicenseVerify();
        LicenseVerify();
    }
}