| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- package com.vvvtimes.server;
- import com.vvvtimes.JrebelUtil.JrebelSign;
- import net.sf.json.JSONObject;
- import java.io.IOException;
- import java.text.SimpleDateFormat;
- import java.util.*;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.eclipse.jetty.server.Request;
- import org.eclipse.jetty.server.Server;
- import org.eclipse.jetty.server.handler.AbstractHandler;
- public class MainServer extends AbstractHandler {
- public static Map<String, String> parseArguments(String[] args) {
- Map<String, String> params = new HashMap<>();
- String option = null;
- for (final String arg : args) {
- if (arg.charAt(0) == '-') {
- if (arg.length() < 2) {
- throw new IllegalArgumentException("Error at argument " + arg);
- }
- option = arg.substring(1);
- } else {
- params.put(option, arg);
- }
- }
- return params;
- }
- public static void main(String[] args) throws Exception {
- Map<String, String> arguments = parseArguments(args);
- String port = arguments.get("p");
- if (port == null || !port.matches("\\d+")) {
- port = "8081";
- }
- Server server = new Server(Integer.parseInt(port));
- server.setHandler(new MainServer());
- server.start();
- System.out.println("License Server started at http://localhost:" + port);
- System.out.println("Activation address was: http://localhost:" + port + "/{tokenname}, with any email.");
- server.join();
- }
- public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
- throws IOException, ServletException {
- System.out.println(target);
- if (target.equals("/")) {
- indexHandler(target, baseRequest, request, response);
- } else if (target.equals("/jrebel/leases")) {
- jrebelLeasesHandler(target, baseRequest, request, response);
- } else if (target.equals("/jrebel/leases/1")) {
- jrebelLeases1Handler(target, baseRequest, request, response);
- } else if (target.equals("/agent/leases")) {
- jrebelLeasesHandler(target, baseRequest, request, response);
- } else if (target.equals("/agent/leases/1")) {
- jrebelLeases1Handler(target, baseRequest, request, response);
- } else {
- response.setStatus(HttpServletResponse.SC_FORBIDDEN);
- }
- }
- private void jrebelLeases1Handler(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException {
- response.setContentType("application/json; charset=utf-8");
- response.setStatus(HttpServletResponse.SC_OK);
- baseRequest.setHandled(true);
- String jsonStr = "{\n" +
- " \"serverVersion\": \"3.2.4\",\n" +
- " \"serverProtocolVersion\": \"1.1\",\n" +
- " \"serverGuid\": \"a1b4aea8-b031-4302-b602-670a990272cb\",\n" +
- " \"groupType\": \"managed\",\n" +
- " \"statusCode\": \"SUCCESS\",\n" +
- " \"msg\": null,\n" +
- " \"statusMessage\": null\n" +
- "}\n";
- JSONObject jsonObject = JSONObject.fromObject(jsonStr);
- String body = jsonObject.toString();
- response.getWriter().print(body);
- }
- private void jrebelLeasesHandler(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException {
- response.setContentType("application/json; charset=utf-8");
- response.setStatus(HttpServletResponse.SC_OK);
- String clientRandomness = request.getParameter("randomness");
- String username = request.getParameter("username");
- String guid = request.getParameter("guid");
- System.out.println(((Request) request).getParameters());
- boolean offline = Boolean.parseBoolean(request.getParameter("offline"));
- String validFrom = "null";
- String validUntil = "null";
- if (offline) {
- String clientTime = request.getParameter("clientTime");
- String offlineDays = request.getParameter("offlineDays");
- //long clinetTimeUntil = Long.parseLong(clientTime) + Long.parseLong(offlineDays) * 24 * 60 * 60 * 1000;
- long clinetTimeUntil = Long.parseLong(clientTime) + 180L * 24 * 60 * 60 * 1000;
- validFrom = clientTime;
- validUntil = String.valueOf(clinetTimeUntil);
- }
- baseRequest.setHandled(true);
- String jsonStr = "{\n" +
- " \"serverVersion\": \"3.2.4\",\n" +
- " \"serverProtocolVersion\": \"1.1\",\n" +
- " \"serverGuid\": \"a1b4aea8-b031-4302-b602-670a990272cb\",\n" +
- " \"groupType\": \"managed\",\n" +
- " \"id\": 1,\n" +
- " \"licenseType\": 1,\n" +
- " \"evaluationLicense\": false,\n" +
- " \"signature\": \"OJE9wGg2xncSb+VgnYT+9HGCFaLOk28tneMFhCbpVMKoC/Iq4LuaDKPirBjG4o394/UjCDGgTBpIrzcXNPdVxVr8PnQzpy7ZSToGO8wv/KIWZT9/ba7bDbA8/RZ4B37YkCeXhjaixpmoyz/CIZMnei4q7oWR7DYUOlOcEWDQhiY=\",\n" +
- " \"serverRandomness\": \"H2ulzLlh7E0=\",\n" +
- " \"seatPoolType\": \"standalone\",\n" +
- " \"statusCode\": \"SUCCESS\",\n" +
- " \"offline\": " + String.valueOf(offline) + ",\n" +
- " \"validFrom\": " + validFrom + ",\n" +
- " \"validUntil\": " + validUntil + ",\n" +
- " \"company\": \"Administrator\",\n" +
- " \"orderId\": \"\",\n" +
- " \"zeroIds\": [\n" +
- " \n" +
- " ],\n" +
- " \"licenseValidFrom\": 1490544001000,\n" +
- " \"licenseValidUntil\": 1691839999000\n" +
- "}";
- JSONObject jsonObject = JSONObject.fromObject(jsonStr);
- if (clientRandomness == null || username == null || guid == null) {
- response.setStatus(HttpServletResponse.SC_FORBIDDEN);
- } else {
- JrebelSign jrebelSign = new JrebelSign();
- jrebelSign.toLeaseCreateJson(clientRandomness, guid, offline, validFrom, validUntil);
- String signature = jrebelSign.getSignature();
- jsonObject.put("signature", signature);
- jsonObject.put("company", username);
- String body = jsonObject.toString();
- response.getWriter().print(body);
- }
- }
- private void indexHandler(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException {
- response.setContentType("text/html; charset=utf-8");
- response.setStatus(HttpServletResponse.SC_OK);
- baseRequest.setHandled(true);
- response.getWriter().println("<h1>Hello,This is a Jrebel License Server!</h1>");
- }
- }
|