package com.qxueyou.scc.base.service.impl;
|
|
import java.io.BufferedReader;
|
import java.io.IOException;
|
import java.io.InputStreamReader;
|
|
import javax.annotation.PostConstruct;
|
|
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.Logger;
|
import org.apache.tomcat.util.http.fileupload.IOUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.core.io.Resource;
|
import org.springframework.core.io.ResourceLoader;
|
import org.springframework.stereotype.Service;
|
|
import com.license4j.License;
|
import com.license4j.LicenseValidator;
|
import com.qxueyou.scc.base.util.AESUtil;
|
import com.qxueyou.scc.config.SccConfig;
|
|
@Service
|
public final class LicenseChecker{
|
|
private final Logger log = LogManager.getLogger(LicenseChecker.class);
|
|
@Autowired
|
private SccConfig config;
|
|
@Autowired
|
ResourceLoader resourceLoader;
|
|
private License license;
|
|
public License getLicense() {
|
return license;
|
}
|
|
@PostConstruct
|
private void init() {
|
|
String licenseText = readLicense();
|
|
license = LicenseValidator.validate(
|
licenseText,
|
AESUtil.decrypt(config.getLicensePublicKey()),
|
config.getProductId(),
|
null,
|
null,
|
null,
|
null);
|
|
switch (license.getValidationStatus()) {
|
case LICENSE_VALID:
|
log.info("license valid");
|
break;
|
case LICENSE_INVALID:
|
exit("LICENSE_INVALID");
|
break;
|
case LICENSE_EXPIRED:
|
exit("LICENSE_EXPIRED");
|
break;
|
case LICENSE_MAINTENANCE_EXPIRED:
|
exit("LICENSE_MAINTENANCE_EXPIRED");
|
break;
|
case INCORRECT_SYSTEM_TIME:
|
exit("INCORRECT_SYSTEM_TIME");
|
break;
|
case MISMATCH_HARDWARE_ID:
|
exit("MISMATCH_HARDWARE_ID");
|
break;
|
case MISMATCH_PRODUCT_ID:
|
exit("MISMATCH_PRODUCT_ID");
|
break;
|
case MISMATCH_PRODUCT_EDITION:
|
exit("MISMATCH_PRODUCT_EDITION");
|
break;
|
case MISMATCH_PRODUCT_VERSION:
|
exit("MISMATCH_PRODUCT_VERSION");
|
break;
|
case FLOATING_LICENSE_ALLOWED_USE_COUNT_REACHED:
|
exit("FLOATING_LICENSE_ALLOWED_USE_COUNT_REACHED");
|
break;
|
case FLOATING_LICENSE_ALLOWED_USE_TIME_REACHED:
|
exit("FLOATING_LICENSE_ALLOWED_USE_TIME_REACHED");
|
break;
|
case FLOATING_LICENSE_CLIENT_REJECTED:
|
exit("FLOATING_LICENSE_CLIENT_REJECTED");
|
break;
|
case FLOATING_LICENSE_NOT_AVAILABLE_ALL_IN_USE:
|
exit("FLOATING_LICENSE_NOT_AVAILABLE_ALL_IN_USE");
|
break;
|
case FLOATING_LICENSE_NOT_FOUND:
|
exit("FLOATING_LICENSE_NOT_FOUND");
|
break;
|
case FLOATING_LICENSE_OVERUSED:
|
exit("FLOATING_LICENSE_OVERUSED");
|
break;
|
case FLOATING_LICENSE_SERVER_NOT_AVAILABLE:
|
exit("FLOATING_LICENSE_SERVER_NOT_AVAILABLE");
|
break;
|
case VALIDATION_REJECTED_FEATURE_DISABLED:
|
exit("VALIDATION_REJECTED_FEATURE_DISABLED");
|
break;
|
case VALIDATION_REJECTED_IP_BLOCK_RESTRICTION:
|
exit("VALIDATION_REJECTED_IP_BLOCK_RESTRICTION");
|
break;
|
default:
|
break;
|
}
|
|
|
}
|
|
private String readLicense() {
|
|
Resource resource = resourceLoader.getResource(config.getLicensePath());
|
BufferedReader br = null;
|
|
try {
|
br = new BufferedReader(new InputStreamReader(resource.getInputStream()),1024);
|
StringBuilder stringBuilder = new StringBuilder(2000);
|
String line;
|
while ((line = br.readLine()) != null) {
|
stringBuilder.append(line).append('\n');
|
}
|
return stringBuilder.toString();
|
|
} catch (IOException e) {
|
log.error(e,e);
|
} finally {
|
IOUtils.closeQuietly(br);
|
}
|
|
return null;
|
}
|
|
private void exit(String msg) {
|
log.error("license invalid:"+msg);
|
/**
|
* ÁÙʱÆÁ±Î
|
*/
|
// System.exit(-1);
|
}
|
|
}
|