From fd098f67ef7e57f7165c06519a3f238f9d4529b0 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期二, 15 十一月 2022 09:19:14 +0800
Subject: [PATCH] 1

---
 src/main/java/com/lf/server/entity/other/CheckOutLicense.java           |  238 +++++++++++++++++++++++++++++++++++++++++++++++
 src/main/java/com/lf/server/entity/other/ReqParamFloatServer.java       |    2 
 src/main/java/com/lf/server/entity/other/FloatServerResponse.java       |   14 +-
 src/main/java/com/lf/server/controller/other/FloatServerController.java |   26 ++++-
 说明.txt                                                                  |    1 
 5 files changed, 268 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/lf/server/controller/other/FloatServerController.java b/src/main/java/com/lf/server/controller/other/FloatServerController.java
index 8b44250..b207683 100644
--- a/src/main/java/com/lf/server/controller/other/FloatServerController.java
+++ b/src/main/java/com/lf/server/controller/other/FloatServerController.java
@@ -2,8 +2,8 @@
 
 import com.alibaba.fastjson.JSON;
 import com.lf.server.controller.all.BaseController;
-import com.lf.server.entity.show.FloatServerResponse;
-import com.lf.server.entity.show.ReqParamFloatServer;
+import com.lf.server.entity.other.FloatServerResponse;
+import com.lf.server.entity.other.ReqParamFloatServer;
 import com.lf.server.helper.HttpHelper;
 import com.lf.server.helper.LicHelper;
 import io.swagger.annotations.Api;
@@ -43,15 +43,15 @@
             LicHelper helper = getHelper();
             String reqJson = helper.b(str);
 
-            ReqParamFloatServer reqParam = JSON.parseObject(reqJson, ReqParamFloatServer.class);
-            FloatServerResponse fsr = new FloatServerResponse(reqParam);
+            ReqParamFloatServer rfs = JSON.parseObject(reqJson, ReqParamFloatServer.class);
+            FloatServerResponse fsr = new FloatServerResponse(rfs);
 
             String resJson = JSON.toJSONString(fsr);
             String strRes = helper.a(resJson);
 
             res.getWriter().write(strRes);
         } catch (Exception ex) {
-            //
+            String str = ex.getMessage();
         }
     }
 
@@ -74,6 +74,22 @@
         return licHelper;
     }
 
+    @SuppressWarnings("AlibabaUndefineMagicConstant")
+    private static String getClientIpAddr(HttpServletRequest req) {
+        String ip;
+        if ((ip = req.getHeader("x-forwarded-for")) == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+            ip = req.getHeader("Proxy-Client-IP");
+        }
+        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+            ip = req.getHeader("WL-Proxy-Client-IP");
+        }
+        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+            ip = req.getRemoteAddr();
+        }
+
+        return ip;
+    }
+
     public static void test() {
         try {
             ReqParamFloatServer reqParam = new ReqParamFloatServer("192.168.20.106", "12316");
diff --git a/src/main/java/com/lf/server/entity/other/CheckOutLicense.java b/src/main/java/com/lf/server/entity/other/CheckOutLicense.java
new file mode 100644
index 0000000..136e64d
--- /dev/null
+++ b/src/main/java/com/lf/server/entity/other/CheckOutLicense.java
@@ -0,0 +1,238 @@
+package com.lf.server.entity.other;
+
+import org.apache.commons.codec.binary.Hex;
+
+import javax.crypto.Cipher;
+import javax.crypto.SecretKey;
+import java.io.ByteArrayInputStream;
+import java.io.ObjectInputStream;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Random;
+
+/**
+ *  CheckOutLicense
+ * @author WWW
+ */
+@SuppressWarnings("AlibabaUndefineMagicConstant")
+public class CheckOutLicense {
+    public static String createFloatingLicense(int n, String s, long expireDate) {
+        int[] registeredModules = new int[]{1, 3, 4, 9, 10, 11, 12, 13, 17, 25, 30, 33, 37};
+
+        long n2;
+        if ((n2 = System.currentTimeMillis() + 86400000L) > expireDate) {
+            n2 = expireDate;
+        }
+
+        CheckOutLicense e = new CheckOutLicense();
+        e.a(n2);
+        e.a(n);
+        e.cc(s);
+        e.a(registeredModules);
+
+        return e.aaa(e);
+    }
+
+    public String aaa(final CheckOutLicense b) {
+        final CheckOutLicense e = b;
+        return new String(a(e.a, e.b, e.c)) + new bb().a(new StringBuilder().append(e.ee()).toString());
+    }
+
+    private char[] a(final long n, final int[] array, final int i) {
+        final char[] array2 = new char[48];
+        final String b = b(n);
+        final String value = String.valueOf(i);
+
+        final bb b2 = new bb();
+        final String a = b2.a(b);
+        final String a2 = b2.a(value);
+
+        final cc c = new cc();
+        for (int j = 0; j < array.length; ++j) {
+            c.b(array[j]);
+        }
+
+        final char[] a3 = c.a();
+        for (int k = 0; k < 16; ++k) {
+            array2[k * 3] = a3[k];
+            array2[k * 3 + 1] = a.charAt(k);
+            array2[k * 3 + 2] = a2.charAt(k);
+        }
+        return array2;
+    }
+
+    private static String b(final long timeInMillis) {
+        final Calendar instance;
+        (instance = Calendar.getInstance()).setTimeInMillis(timeInMillis);
+        final int value = instance.get(1);
+        final int value2 = instance.get(2);
+        final int value3 = instance.get(5);
+        final String substring = Integer.toString(value).substring(2, 4);
+        String s;
+        if ((s = Integer.toString(value2 + 1)).length() == 1) {
+            s = "0".concat(String.valueOf(s));
+        }
+        String s2;
+        if ((s2 = Integer.toString(value3)).length() == 1) {
+            s2 = "0".concat(String.valueOf(s2));
+        }
+        return String.valueOf(substring) + s + s2;
+    }
+
+    public static CheckOutLicense a(String s) {
+        try {
+            return null;
+        } catch (Exception ex) {
+            return null;
+        }
+    }
+
+    public final String ee() {
+        return this.aa;
+    }
+
+    private String aa;
+    private long a;
+    private int c;
+    private int[] b;
+
+    public final void a(final long a) {
+        this.a = a;
+    }
+
+    public final void a(final int c) {
+        this.c = c;
+    }
+
+    public final void a(final int[] b) {
+        this.b = b;
+    }
+
+    public final long a() {
+        return this.a;
+    }
+
+    public final int[] b() {
+        return this.b;
+    }
+
+    public final int c() {
+        return this.c;
+    }
+
+    private void cc(String aa) {
+        this.aa = aa;
+    }
+
+    @SuppressWarnings("AlibabaClassNamingShouldBeCamel")
+    public class bb {
+        private SecretKey a;
+
+        public bb() {
+            try {
+                this.a = (SecretKey) new ObjectInputStream(new ByteArrayInputStream(Hex.decodeHex("aced0005737200146a6176612e73656375726974792e4b6579526570bdf94fb3889aa5430200044c0009616c676f726974686d7400124c6a6176612f6c616e672f537472696e673b5b0007656e636f6465647400025b424c0006666f726d617471007e00014c00047479706574001b4c6a6176612f73656375726974792f4b657952657024547970653b7870740003444553757200025b42acf317f8060854e00200007870000000084f5b0e52b33dbf797400035241577e7200196a6176612e73656375726974792e4b6579526570245479706500000000000000001200007872000e6a6176612e6c616e672e456e756d00000000000000001200007870740006534543524554".toCharArray()))).readObject();
+            } catch (Exception ex) {
+                ex.printStackTrace();
+            }
+        }
+
+        public String a(final String s) {
+            try {
+                final Cipher instance;
+                (instance = Cipher.getInstance("DES/ECB/PKCS5Padding")).init(1, this.a);
+                return Hex.encodeHexString(instance.doFinal(s.getBytes()));
+            } catch (Exception ex) {
+                return null;
+            }
+        }
+
+        public String b(final String s) {
+            try {
+                final Cipher instance;
+                (instance = Cipher.getInstance("DES/ECB/PKCS5Padding")).init(2, this.a);
+                return new String(instance.doFinal(Hex.decodeHex(s.toCharArray())));
+            } catch (Exception ex) {
+                return null;
+            }
+        }
+    }
+
+    @SuppressWarnings("AlibabaClassNamingShouldBeCamel")
+    public final class cc {
+        private int a;
+        private char[] b;
+        private int c = 63;
+
+        public cc() {
+            this.a = 0;
+            Arrays.fill(this.b = new char[c], '0');
+            this.a = new Random().nextInt(16);
+            String obj;
+            if ((obj = Integer.toBinaryString(this.a)).length() == 1) {
+                obj = "000".concat(String.valueOf(obj));
+            } else if (obj.length() == 2) {
+                obj = "00".concat(String.valueOf(obj));
+            } else if (obj.length() == 3) {
+                obj = "0".concat(String.valueOf(obj));
+            }
+            for (int i = 0; i < 4; ++i) {
+                this.b[i] = obj.charAt(i);
+            }
+        }
+
+        public cc(String binaryString) {
+            this.a = 0;
+            Arrays.fill(this.b = new char[c], '0');
+            final int length;
+            if ((length = (binaryString = Long.toBinaryString(Long.parseUnsignedLong(binaryString, 16))).length()) <= c) {
+                for (int i = 0; i < length; ++i) {
+                    this.b[c - length + i] = binaryString.charAt(i);
+                }
+            }
+            final char[] value = new char[4];
+            System.arraycopy(this.b, 0, value, 0, 4);
+            binaryString = new String(value);
+            this.a = Integer.parseUnsignedInt(binaryString, 2);
+        }
+
+        @Override
+        public final String toString() {
+            String string = "";
+            for (int i = 0; i < c; ++i) {
+                string = String.valueOf(string) + this.b[i];
+            }
+            return string;
+        }
+
+        public final char[] a() {
+            final String hexString = Long.toHexString(Long.parseUnsignedLong(this.toString(), 2));
+            final int n;
+            final char[] array;
+            Arrays.fill(array = new char[n = (c + 1) / 4], '0');
+            for (int length = hexString.length(), i = 0; i < length; ++i) {
+                array[n - length + i] = hexString.charAt(i);
+            }
+            return array;
+        }
+
+        public final boolean a(int c) {
+            return (c = this.c(c)) < c && this.b[c] == '1' && c >= 4;
+        }
+
+        private int c(int n) {
+            if (n >= 0 && n < 59) {
+                if ((n += 4 + this.a) >= 63) {
+                    n -= 59;
+                }
+                return n;
+            }
+            return -1;
+        }
+
+        public final void b(int c) {
+            if ((c = this.c(c)) < c && c >= 4) {
+                this.b[c] = '1';
+            }
+        }
+    }
+}
diff --git a/src/main/java/com/lf/server/entity/show/FloatServerResponse.java b/src/main/java/com/lf/server/entity/other/FloatServerResponse.java
similarity index 79%
rename from src/main/java/com/lf/server/entity/show/FloatServerResponse.java
rename to src/main/java/com/lf/server/entity/other/FloatServerResponse.java
index 9aaab2a..de5ed9d 100644
--- a/src/main/java/com/lf/server/entity/show/FloatServerResponse.java
+++ b/src/main/java/com/lf/server/entity/other/FloatServerResponse.java
@@ -1,9 +1,8 @@
-package com.lf.server.entity.show;
+package com.lf.server.entity.other;
 
 import com.lf.server.helper.StringHelper;
 
 import java.util.Calendar;
-import java.util.Date;
 
 /**
  * FloatServerResponse
@@ -29,16 +28,17 @@
     public FloatServerResponse() {
     }
 
-    public FloatServerResponse(ReqParamFloatServer req) {
+    public FloatServerResponse(ReqParamFloatServer rfs) {
         Calendar calendar = Calendar.getInstance();
         calendar.set(Calendar.YEAR, 2025);
 
-        this.id = req.getId();
-        this.localId = req.getLocalId();
-        this.availableNum = req.getAvailableNum();
+        this.id = rfs.getId();
+        this.localId = rfs.getLocalId();
+        this.availableNum = rfs.getAvailableNum();
         this.time = calendar.getTimeInMillis();
         this.expireDate = StringHelper.YMD_FORMAT.format(this.time);
-        this.licenseCode = "78a82f0920de0f557f8177bec1e48601c4dc25e4054a00728e4314b56528d3a1632de5298edee38a65412277977a174fea5d91c452b19ef138dbc2ba089ba632";
+        //this.licenseCode = "78a82f0920de0f557f8177bec1e48601c4dc25e4054a00728e4314b56528d3a1632de5298edee38a65412277977a174fea5d91c452b19ef138dbc2ba089ba632";
+        this.licenseCode = CheckOutLicense.createFloatingLicense(rfs.getAvailableNum(), rfs.getId(), this.time);
     }
 
     public String getModules() {
diff --git a/src/main/java/com/lf/server/entity/show/ReqParamFloatServer.java b/src/main/java/com/lf/server/entity/other/ReqParamFloatServer.java
similarity index 98%
rename from src/main/java/com/lf/server/entity/show/ReqParamFloatServer.java
rename to src/main/java/com/lf/server/entity/other/ReqParamFloatServer.java
index d512d4e..2342e00 100644
--- a/src/main/java/com/lf/server/entity/show/ReqParamFloatServer.java
+++ b/src/main/java/com/lf/server/entity/other/ReqParamFloatServer.java
@@ -1,4 +1,4 @@
-package com.lf.server.entity.show;
+package com.lf.server.entity.other;
 
 import java.net.Inet4Address;
 import java.net.InetAddress;
diff --git "a/\350\257\264\346\230\216.txt" "b/\350\257\264\346\230\216.txt"
index 1f54a4d..fd25d20 100644
--- "a/\350\257\264\346\230\216.txt"
+++ "b/\350\257\264\346\230\216.txt"
@@ -149,6 +149,7 @@
 ---------------------------------------------------------------------------------------------------- floatserver
 http://localhost:12316/floatserver/checkout/license
 String str = EntityUtils.toString(entity, "UTF-8");
+java -jar C:\360\luyten054\luyten-0.5.4.jar
 
 璇锋眰锛�
 8dfb75298185cbcc4b2d485fdb4f25627f7aeb4dd41329076b5015586e4d56cf755f0dfd19be0d80e2573e0a2a22edca35215b390607b0ff68deab90c69296df60934315036bd8a64ee668a39502754b701be7534d0ca2e790161194d673d9454c44c570a1dbe604ac5952be731ca15809f9f4d43ad1b023f69981ce77abacc50e8e5217627eb236d5f6d114e00585d9a597f3a195b0b0c0ff8cf1e2445ca12e

--
Gitblit v1.9.3