@WebServlet(
description = "generator servlet",
urlPatterns = {"/generator"})
public class Generator extends HttpServlet {
private static final Category LOG = Category.getInstance(Generator.class);
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = null;
try {
//Задаем тип страницы
response.setContentType("text/html");
//Для вывода
out = response.getWriter();
//Находим путь к файлу 'сonfig.properties'
Properties props = new Properties();
String propsFile = "config.properties";
InputStream input = getClass().getClassLoader().getResourceAsStream(propsFile);
//Если файл properties не найден
if (input == null) {
LOG.error("property file " + propsFile + " not found");
out.print("<h1>Sorry, config file not found!</h1>");
return;
}
props.load(input);
//Задаем переменным значения
String pr = props.getProperty("product");
String clientsCount = request.getParameter("numUser");
String otpCount = request.getParameter("numUtp");
String lices = request.getParameter("licesee");
String date = request.getParameter("data");
String certPeriod = request.getParameter("certPeriod");
String pass = props.getProperty("password");
String lic = props.getProperty("license");
//Задаем имя файла
String fileName = lices + "_" + clientsCount + "_" + otpCount + "_" + date + ".lic";
//Место хранения файла
String outFile = props.getProperty("outFile");
//Путь к ключу
String keyFile = props.getProperty("keyFile");
//Добавляем в массив данные
ArrayList<String> snlist = new ArrayList<>();
for (int i = 10; i < 10; i++) {
snlist.add(pr);
snlist.add(clientsCount);
snlist.add(otpCount);
snlist.add(lices);
snlist.add(date);
snlist.add(certPeriod);
snlist.add(outFile);
snlist.add(keyFile);
snlist.add(pass);
snlist.add(lic);
}
//Вставляем в config.properties данные
props.put("ActiveOtpCount", otpCount);
props.put("ActiveClientsCount", clientsCount);
props.put("Licensee", lices);
props.put("LicenseExpired", date);
props.put("CertificatesPeriod", certPeriod);
//Инициализация утилит
LicenseGenerator.init();
KeyStore ks = KeyStore.getInstance("AKS", AkSigProv.PROV_NAME);
ks.load(new FileInputStream(keyFile), pass.toCharArray());
String a = ks.aliases().nextElement();
PrivateKey pk = (PrivateKey) ks.getKey(a, pass.toCharArray());
X509Certificate cert = (X509Certificate) ks.getCertificate(a);
//Генерируем лиценцию, и записываем в файл
String x = LicenseGenerator.generateLicense(pr, snlist, props, cert, pk);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(outFile + fileName);
fos.write(x.getBytes());
} catch (Exception e) {
LOG.info("Exception:" + e);
} finally {
fos.close();
}
//Записываем в файл
OutputStream outStream = null;
FileInputStream inStream = null;
try {
//Создаем файл
File downloadFile = new File(outFile + fileName);
//Считываем с файла
inStream = new FileInputStream(downloadFile);
out.print(x);
//Сохраняем файл
String headerKey = "Content-Disposition";
String headerValue = String.format("attachment; filename=\"%s\"", downloadFile.getName());
response.setHeader(headerKey, headerValue);
outStream = response.getOutputStream();
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = inStream.read(buffer)) != -1) {
outStream.write(buffer, 0, bytesRead);
}
} catch (Exception e) {
LOG.error(e);
} finally {
outStream.close();
inStream.close();
}
} catch (NoSuchAlgorithmException ex) {
LOG.error(ex);
} catch (CertificateException ex) {
LOG.error(ex);
} catch (Exception ex) {
LOG.error(ex);
} finally {
out.close();
}
}
}
for (int i = 10; i < 10; i++) {
snlist.add(pr);
snlist.add(clientsCount);
snlist.add(otpCount);
snlist.add(lices);
snlist.add(date);
snlist.add(certPeriod);
snlist.add(outFile);
snlist.add(keyFile);
snlist.add(pass);
snlist.add(lic);
}
@WebServlet(
description = "generator servlet",
urlPatterns = {"/generator"})
public class Generator extends HttpServlet {
private static final Category LOG = Category.getInstance(Generator.class);
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = null;
try {
//Задаем тип страницы
response.setContentType("text/html");
//Для вывода
out = response.getWriter();
//Находим путь к файлу 'сonfig.properties'
Properties props = new Properties();
String propsFile = "config.properties";
InputStream input = getClass().getClassLoader().getResourceAsStream(propsFile);
//Если файл properties не найден
if (input == null) {
LOG.error("property file " + propsFile + " not found");
out.print("<h1>Sorry, config file not found!</h1>");
return;
}
props.load(input);
//Задаем переменным значения
String pr = props.getProperty("product");
String clientsCount = request.getParameter("numUser");
String otpCount = request.getParameter("numUtp");
String lices = request.getParameter("licesee");
String date = request.getParameter("data");
String certPeriod = request.getParameter("certPeriod");
String pass = props.getProperty("password");
String lic = props.getProperty("license");
//Задаем имя файла
String fileName = lices + "_" + clientsCount + "_" + otpCount + "_" + date + ".lic";
//Место хранения файла
String outFile = props.getProperty("outFile");
//Путь к ключу
String keyFile = props.getProperty("keyFile");
//Добавляем в массив данные
ArrayList<String> snlist = new ArrayList<>();
for (int i = 10; i < 10; i++) {
snlist.add(pr);
snlist.add(clientsCount);
snlist.add(otpCount);
snlist.add(lices);
snlist.add(date);
snlist.add(certPeriod);
snlist.add(outFile);
snlist.add(keyFile);
snlist.add(pass);
snlist.add(lic);
}
//Вставляем в config.properties данные
props.put("ActiveOtpCount", otpCount);
props.put("ActiveClientsCount", clientsCount);
props.put("Licensee", lices);
props.put("LicenseExpired", date);
props.put("CertificatesPeriod", certPeriod);
//Инициализация утилит
LicenseGenerator.init();
KeyStore ks = KeyStore.getInstance("AKS", AkSigProv.PROV_NAME);
ks.load(new FileInputStream(keyFile), pass.toCharArray());
String a = ks.aliases().nextElement();
PrivateKey pk = (PrivateKey) ks.getKey(a, pass.toCharArray());
X509Certificate cert = (X509Certificate) ks.getCertificate(a);
//Генерируем лиценцию, и записываем в файл
String x = LicenseGenerator.generateLicense(pr, snlist, props, cert, pk);
saveLicense(response, x, outFile, fileName);
} catch (Exception ex) {
LOG.error(response, ex);
} finally {
out.close();
}
}
public void saveLicense(HttpServletResponse response, String x, String outFile, String fileName)
throws IOException, ServletException {
PrintWriter out = null;
FileOutputStream fos = null;
try {
fos = new FileOutputStream(outFile + fileName);
fos.write(x.getBytes());
String headerKey = "Content-Disposition";
String headerValue = String.format("attachment; filename=\"%s\"", fileName);
response.setHeader(headerKey, headerValue);
out.write(x);
} catch (IOException ex) {
LOG.error(response, ex);
} finally {
out.close();
fos.close();
}
}
}