MainServer.java 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. package com.vvvtimes.server;
  2. import com.vvvtimes.JrebelUtil.JrebelSign;
  3. import net.sf.json.JSONObject;
  4. import java.io.IOException;
  5. import java.text.SimpleDateFormat;
  6. import java.util.*;
  7. import javax.servlet.ServletException;
  8. import javax.servlet.http.HttpServletRequest;
  9. import javax.servlet.http.HttpServletResponse;
  10. import org.eclipse.jetty.server.Request;
  11. import org.eclipse.jetty.server.Server;
  12. import org.eclipse.jetty.server.handler.AbstractHandler;
  13. public class MainServer extends AbstractHandler {
  14. public static Map<String, String> parseArguments(String[] args) {
  15. Map<String, String> params = new HashMap<>();
  16. String option = null;
  17. for (final String arg : args) {
  18. if (arg.charAt(0) == '-') {
  19. if (arg.length() < 2) {
  20. throw new IllegalArgumentException("Error at argument " + arg);
  21. }
  22. option = arg.substring(1);
  23. } else {
  24. params.put(option, arg);
  25. }
  26. }
  27. return params;
  28. }
  29. public static void main(String[] args) throws Exception {
  30. Map<String, String> arguments = parseArguments(args);
  31. String port = arguments.get("p");
  32. if (port == null || !port.matches("\\d+")) {
  33. port = "8081";
  34. }
  35. Server server = new Server(Integer.parseInt(port));
  36. server.setHandler(new MainServer());
  37. server.start();
  38. System.out.println("License Server started at http://localhost:" + port);
  39. System.out.println("Activation address was: http://localhost:" + port + "/{tokenname}, with any email.");
  40. server.join();
  41. }
  42. public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
  43. throws IOException, ServletException {
  44. System.out.println(target);
  45. if (target.equals("/")) {
  46. indexHandler(target, baseRequest, request, response);
  47. } else if (target.equals("/jrebel/leases")) {
  48. jrebelLeasesHandler(target, baseRequest, request, response);
  49. } else if (target.equals("/jrebel/leases/1")) {
  50. jrebelLeases1Handler(target, baseRequest, request, response);
  51. } else if (target.equals("/agent/leases")) {
  52. jrebelLeasesHandler(target, baseRequest, request, response);
  53. } else if (target.equals("/agent/leases/1")) {
  54. jrebelLeases1Handler(target, baseRequest, request, response);
  55. } else {
  56. response.setStatus(HttpServletResponse.SC_FORBIDDEN);
  57. }
  58. }
  59. private void jrebelLeases1Handler(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException {
  60. response.setContentType("application/json; charset=utf-8");
  61. response.setStatus(HttpServletResponse.SC_OK);
  62. baseRequest.setHandled(true);
  63. String jsonStr = "{\n" +
  64. " \"serverVersion\": \"3.2.4\",\n" +
  65. " \"serverProtocolVersion\": \"1.1\",\n" +
  66. " \"serverGuid\": \"a1b4aea8-b031-4302-b602-670a990272cb\",\n" +
  67. " \"groupType\": \"managed\",\n" +
  68. " \"statusCode\": \"SUCCESS\",\n" +
  69. " \"msg\": null,\n" +
  70. " \"statusMessage\": null\n" +
  71. "}\n";
  72. JSONObject jsonObject = JSONObject.fromObject(jsonStr);
  73. String body = jsonObject.toString();
  74. response.getWriter().print(body);
  75. }
  76. private void jrebelLeasesHandler(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException {
  77. response.setContentType("application/json; charset=utf-8");
  78. response.setStatus(HttpServletResponse.SC_OK);
  79. String clientRandomness = request.getParameter("randomness");
  80. String username = request.getParameter("username");
  81. String guid = request.getParameter("guid");
  82. System.out.println(((Request) request).getParameters());
  83. boolean offline = Boolean.parseBoolean(request.getParameter("offline"));
  84. String validFrom = "null";
  85. String validUntil = "null";
  86. if (offline) {
  87. String clientTime = request.getParameter("clientTime");
  88. String offlineDays = request.getParameter("offlineDays");
  89. //long clinetTimeUntil = Long.parseLong(clientTime) + Long.parseLong(offlineDays) * 24 * 60 * 60 * 1000;
  90. long clinetTimeUntil = Long.parseLong(clientTime) + 180L * 24 * 60 * 60 * 1000;
  91. validFrom = clientTime;
  92. validUntil = String.valueOf(clinetTimeUntil);
  93. }
  94. baseRequest.setHandled(true);
  95. String jsonStr = "{\n" +
  96. " \"serverVersion\": \"3.2.4\",\n" +
  97. " \"serverProtocolVersion\": \"1.1\",\n" +
  98. " \"serverGuid\": \"a1b4aea8-b031-4302-b602-670a990272cb\",\n" +
  99. " \"groupType\": \"managed\",\n" +
  100. " \"id\": 1,\n" +
  101. " \"licenseType\": 1,\n" +
  102. " \"evaluationLicense\": false,\n" +
  103. " \"signature\": \"OJE9wGg2xncSb+VgnYT+9HGCFaLOk28tneMFhCbpVMKoC/Iq4LuaDKPirBjG4o394/UjCDGgTBpIrzcXNPdVxVr8PnQzpy7ZSToGO8wv/KIWZT9/ba7bDbA8/RZ4B37YkCeXhjaixpmoyz/CIZMnei4q7oWR7DYUOlOcEWDQhiY=\",\n" +
  104. " \"serverRandomness\": \"H2ulzLlh7E0=\",\n" +
  105. " \"seatPoolType\": \"standalone\",\n" +
  106. " \"statusCode\": \"SUCCESS\",\n" +
  107. " \"offline\": " + String.valueOf(offline) + ",\n" +
  108. " \"validFrom\": " + validFrom + ",\n" +
  109. " \"validUntil\": " + validUntil + ",\n" +
  110. " \"company\": \"Administrator\",\n" +
  111. " \"orderId\": \"\",\n" +
  112. " \"zeroIds\": [\n" +
  113. " \n" +
  114. " ],\n" +
  115. " \"licenseValidFrom\": 1490544001000,\n" +
  116. " \"licenseValidUntil\": 1691839999000\n" +
  117. "}";
  118. JSONObject jsonObject = JSONObject.fromObject(jsonStr);
  119. if (clientRandomness == null || username == null || guid == null) {
  120. response.setStatus(HttpServletResponse.SC_FORBIDDEN);
  121. } else {
  122. JrebelSign jrebelSign = new JrebelSign();
  123. jrebelSign.toLeaseCreateJson(clientRandomness, guid, offline, validFrom, validUntil);
  124. String signature = jrebelSign.getSignature();
  125. jsonObject.put("signature", signature);
  126. jsonObject.put("company", username);
  127. String body = jsonObject.toString();
  128. response.getWriter().print(body);
  129. }
  130. }
  131. private void indexHandler(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException {
  132. response.setContentType("text/html; charset=utf-8");
  133. response.setStatus(HttpServletResponse.SC_OK);
  134. baseRequest.setHandled(true);
  135. response.getWriter().println("<h1>Hello,This is a Jrebel License Server!</h1>");
  136. }
  137. }