Эх сурвалжийг харах

add Jrebel work offline validate

gsls200808 8 жил өмнө
parent
commit
1bfc90d6eb

+ 8 - 3
src/main/java/com/vvvtimes/JrebelUtil/JrebelSign.java

@@ -5,12 +5,17 @@ import org.apache.commons.lang3.StringUtils;
 public class JrebelSign {
     private String signature;
 
-    public void toLeaseCreateJson(String clientRandomness,String guid ) {
+    public void toLeaseCreateJson(String clientRandomness, String guid, boolean offline, String validFrom, String validUntil) {
         //String serverRandomness = ByteUtil.a(ByteUtil.a(8));
         String serverRandomness =  "H2ulzLlh7E0="; //服务端随机数,如果要自己生成,务必将其写到json的serverRandomness中
         String installationGuidString = guid;
-        String value = String.valueOf("false");
-        String s2 = StringUtils.join((Object[]) new String[]{clientRandomness, serverRandomness, installationGuidString , value}, ';');
+        //String value = String.valueOf("false");
+        String s2= "";
+        if(offline){
+            s2 = StringUtils.join((Object[]) new String[]{clientRandomness, serverRandomness, installationGuidString , String.valueOf(offline), validFrom, validUntil}, ';');
+        }else{
+            s2 = StringUtils.join((Object[]) new String[]{clientRandomness, serverRandomness, installationGuidString , String.valueOf(offline)}, ';');
+        }
         System.out.println(s2);
         final byte[] a2 =LicenseServer2ToJRebelPrivateKey.a(s2.getBytes());
         this.signature = ByteUtil.a(a2);

+ 43 - 10
src/main/java/com/vvvtimes/server/MainServer.java

@@ -4,6 +4,7 @@ import com.vvvtimes.JrebelUtil.JrebelSign;
 import net.sf.json.JSONObject;
 
 import java.io.IOException;
+import java.text.SimpleDateFormat;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
@@ -16,7 +17,7 @@ import org.eclipse.jetty.server.handler.AbstractHandler;
 public class MainServer extends AbstractHandler {
 
     public static void main(String[] args) throws Exception {
-        Server server = new Server(8081);
+        Server server = new Server(8083);
         server.setHandler(new MainServer());
         server.start();
         server.join();
@@ -27,9 +28,11 @@ public class MainServer extends AbstractHandler {
         System.out.println(target);
         if (target.equals("/")) {
             indexHandler(target, baseRequest, request, response);
-        }  else if (target.equals("/jrebel/leases")) {
+        } else if (target.equals("/jrebel/leases")) {
             jrebelLeasesHandler(target, baseRequest, request, response);
-        }  else if (target.equals("/agent/leases")) {
+        } else if (target.equals("/jrebel/leases/1")) {
+            jrebelLeases1Handler(target, baseRequest, request, response);
+        } else if (target.equals("/agent/leases")) {
             jrebelLeasesHandler(target, baseRequest, request, response);
         } else {
             response.setStatus(HttpServletResponse.SC_FORBIDDEN);
@@ -37,12 +40,42 @@ public class MainServer extends AbstractHandler {
 
     }
 
+    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) + Integer.parseInt(offlineDays) * 3 * 24 * 60 * 60 * 1000;
+            validFrom = clientTime;
+            validUntil = String.valueOf(clinetTimeUntil);
+        }
         baseRequest.setHandled(true);
         String jsonStr = "{\n" +
                 "    \"serverVersion\": \"3.2.4\",\n" +
@@ -56,9 +89,9 @@ public class MainServer extends AbstractHandler {
                 "    \"serverRandomness\": \"H2ulzLlh7E0=\",\n" +
                 "    \"seatPoolType\": \"standalone\",\n" +
                 "    \"statusCode\": \"SUCCESS\",\n" +
-                "    \"offline\": false,\n" +
-                "    \"validFrom\": null,\n" +
-                "    \"validUntil\": null,\n" +
+                "    \"offline\": " + String.valueOf(offline) + ",\n" +
+                "    \"validFrom\": " + validFrom + ",\n" +
+                "    \"validUntil\": " + validUntil + ",\n" +
                 "    \"company\": \"Administrator\",\n" +
                 "    \"orderId\": \"\",\n" +
                 "    \"zeroIds\": [\n" +
@@ -72,11 +105,11 @@ public class MainServer extends AbstractHandler {
         if (clientRandomness == null || username == null || guid == null) {
             response.setStatus(HttpServletResponse.SC_FORBIDDEN);
         } else {
-            JrebelSign jrebelSign =new JrebelSign();
-            jrebelSign.toLeaseCreateJson(clientRandomness,guid);
+            JrebelSign jrebelSign = new JrebelSign();
+            jrebelSign.toLeaseCreateJson(clientRandomness, guid, offline, validFrom, validUntil);
             String signature = jrebelSign.getSignature();
-            jsonObject.put("signature",signature);
-            jsonObject.put("company",username);
+            jsonObject.put("signature", signature);
+            jsonObject.put("company", username);
             String body = jsonObject.toString();
             response.getWriter().print(body);
         }