管道基础大数据平台系统开发-【后端】-Server
1
13693261870
2022-11-15 fd098f67ef7e57f7165c06519a3f238f9d4529b0
1
已重命名2个文件
已添加1个文件
已修改2个文件
281 ■■■■■ 文件已修改
src/main/java/com/lf/server/controller/other/FloatServerController.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/entity/other/CheckOutLicense.java 238 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/entity/other/FloatServerResponse.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/entity/other/ReqParamFloatServer.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
说明.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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");
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';
            }
        }
    }
}
src/main/java/com/lf/server/entity/other/FloatServerResponse.java
ÎļþÃû´Ó src/main/java/com/lf/server/entity/show/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() {
src/main/java/com/lf/server/entity/other/ReqParamFloatServer.java
ÎļþÃû´Ó src/main/java/com/lf/server/entity/show/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;
˵Ã÷.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