From ed58d82beeceae0af699890e1e5041fa469e1199 Mon Sep 17 00:00:00 2001 From: kerry Date: Wed, 5 Dec 2018 16:59:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A0=E7=94=A8=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/extra/ucenter/AbstractClient.java | 120 -------- .../com/fr/design/extra/ucenter/Client.java | 264 ------------------ .../fr/design/extra/ucenter/XMLHelper.java | 41 --- 3 files changed, 425 deletions(-) delete mode 100644 designer-base/src/main/java/com/fr/design/extra/ucenter/AbstractClient.java delete mode 100644 designer-base/src/main/java/com/fr/design/extra/ucenter/Client.java delete mode 100644 designer-base/src/main/java/com/fr/design/extra/ucenter/XMLHelper.java diff --git a/designer-base/src/main/java/com/fr/design/extra/ucenter/AbstractClient.java b/designer-base/src/main/java/com/fr/design/extra/ucenter/AbstractClient.java deleted file mode 100644 index 855e5a96e..000000000 --- a/designer-base/src/main/java/com/fr/design/extra/ucenter/AbstractClient.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.fr.design.extra.ucenter; - -import com.fr.base.Base64; -import com.fr.base.FRContext; -import com.fr.stable.StringUtils; - -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.util.Map; - -/** - * @author lp - * @date 2016/9/9 - */ -public abstract class AbstractClient { - - static final String UC_API_MYSQL = "ucApiMysql"; - static final String UC_API_POST = "ucApiPost"; - - protected String urlEncode(String value) { - return URLEncoder.encode(value); - } - - protected String md5(String input) { - MessageDigest md; - try { - md = MessageDigest.getInstance("MD5"); - } catch (NoSuchAlgorithmException e) { - FRContext.getLogger().info(e.getMessage()); - return ""; - } - return byte2hex(md.digest(input.getBytes())); - } - - protected String md5(long input) { - return md5(String.valueOf(input)); - } - - protected String base64Decode(String input) { - try { - return new String(Base64.decode(input)); - } catch (Exception e) { - FRContext.getLogger().info(e.getMessage()); - return ""; - } - } - - protected String base64Encode(String input) { - try { - return Base64.encode(input.getBytes("iso-8859-1")); - } catch (Exception e) { - FRContext.getLogger().info(e.getMessage()); - return ""; - } - } - - protected String byte2hex(byte[] b) { - StringBuilder hs = new StringBuilder(); - String stmp = ""; - for (byte aB : b) { - stmp = (Integer.toHexString(aB & 0XFF)); - if (stmp.length() == 1) { - hs.append("0").append(stmp); - } else { - hs.append(stmp); - } - } - return hs.toString(); - } - - protected String subStr(String input, int begin, int length) { - return input.substring(begin, begin + length); - } - - protected String subStr(String input, int begin) { - if (begin > 0) { - return input.substring(begin); - } else { - return input.substring(input.length() + begin); - } - } - - protected long microTime() { - return System.currentTimeMillis(); - } - - protected long time() { - return System.currentTimeMillis() / 1000; - } - - protected String sprintf(String format, long input) { - String temp = "0000000000" + input; - return temp.substring(temp.length() - 10); - } - - protected String callUserFunc(String function, String model, String action, Map args) { - if (UC_API_MYSQL.equals(function)) { - return this.ucApiMysql(model, action, args); - } - if (UC_API_POST.equals(function)) { - return this.ucApiPost(model, action, args); - } - return StringUtils.EMPTY; - } - - public abstract String ucApiPost(String module, String action, Map arg); - - public abstract String ucApiMysql(String model, String action, Map args); - - protected String urlEncode(String value, String code) { - try { - return URLEncoder.encode(value, code); - } catch (UnsupportedEncodingException e) { - FRContext.getLogger().info(e.getMessage()); - } - return ""; - } -} \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/extra/ucenter/Client.java b/designer-base/src/main/java/com/fr/design/extra/ucenter/Client.java deleted file mode 100644 index 903286476..000000000 --- a/designer-base/src/main/java/com/fr/design/extra/ucenter/Client.java +++ /dev/null @@ -1,264 +0,0 @@ -package com.fr.design.extra.ucenter; - -import com.fr.base.FRContext; -import com.fr.general.CloudCenter; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.net.Socket; -import java.net.URL; -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; - -/** - * - * @author lp - * @date 2016/9/9 - */ -public class Client extends AbstractClient { - - private static String UC_IP = ""; - private static String UC_API = ""; - private static String UC_CONNECT = ""; - private static String UC_KEY = "Rc85U37411p4zdvcedm8D4t4D3l9Sa42H0kd98Gbd82aA99a61S2Z5LbQ9u430M0"; - private static String UC_APPID = "4"; - private static String UC_CLIENT_RELEASE = "20090212"; - public static String UC_ROOT = ""; - private static String UC_API_FUNC = "mysql".equals(UC_CONNECT) ? UC_API_MYSQL : UC_API_POST; - - public String ucUserLogin(String username, String password) { - return ucUserLogin(username, password, 0, 0); - } - - public String ucUserLogin(String username, String password, int isUid, int checkQues) { - return ucUserLogin(username, password, isUid, checkQues, "", ""); - } - - /** - * 用户登录 - * - * @param username 用户名 - * @param password 密码 - * @param isUid 是否为uid - * @param checkQues 是否使用安全问题 - * @param questionId 安全提问 - * @param answer 安全提问答案 - * @return array (uid/status, username, password, email) - */ - public String ucUserLogin(String username, String password, int isUid, int checkQues, String questionId, String answer) { - Map args = new HashMap<>(6); - args.put("username", username); - args.put("password", password); - args.put("isUid", isUid); - args.put("checkQues", checkQues); - args.put("questionId", questionId); - args.put("answer", answer); - String res = callUserFunc(UC_API_FUNC, "user", "login", args); - return "mysql".equals(UC_CONNECT) ? res : res; - } - - /** - * 拼接发送的post请求 - * - * @param module 模块 - * @param action 操作模式 - * @param arg 参数 - * @return 发送的请求加密内容 - */ - @Override - public String ucApiPost(String module, String action, Map arg) { - StringBuilder str = new StringBuilder(); - String sep = ""; - for (String k : arg.keySet()) { - Object v = arg.get(k); - k = urlEncode(k); - if (v.getClass().isAssignableFrom(Map.class)) { - StringBuilder s2 = new StringBuilder(); - String sep2 = ""; - for (String k2 : ((Map) v).keySet()) { - Object v2 = ((Map) v).get(k2); - k2 = urlEncode(k2); - s2.append(sep2).append("{").append(k).append("}[").append(k2).append("]=").append(urlEncode(String.valueOf(v2))); - sep2 = "&"; - } - str.append(sep).append(s2); - } else { - str.append(sep).append(k).append("=").append(urlEncode(String.valueOf(v), "GBK")); - } - sep = "&"; - } - String postData = ucApiRequestdata(module, action, str.toString(), ""); - UC_API = CloudCenter.getInstance().acquireUrlByKind("bbs.ucapi"); - UC_IP = CloudCenter.getInstance().acquireUrlByKind("bbs.ip"); - return ucFopen2(UC_API + "/index.php", 500000, postData, "", true, UC_IP, 20, true); - } - - @Override - public String ucApiMysql(String model, String action, Map args) { - return ""; - } - - public String ucApiInput(String data) { - return urlEncode(ucAuthCode(data + "&agent=" + md5("") + "&time=" + time(), "ENCODE", UC_KEY), "GBK"); - } - - protected String ucApiRequestdata(String module, String action, String arg, String extra) { - String input = ucApiInput(arg); - return "m=" + module + "&a=" + action + "&inajax=2&release=" + UC_CLIENT_RELEASE + "&input=" + input + "&appid=" + UC_APPID + extra; - } - - public String ucAuthCode(String string, String operation, String key) { - return ucAuthCode(string, operation, key, 0); - } - - /** - * 内容加密 - * - * @param string 原文 - * @param operation decode或者encode - * @param key 密钥 - * @param expiry 密文有效时限 - * @return 加密之后的原文 - */ - public String ucAuthCode(String string, String operation, String key, int expiry) { - int ckeyLength = 4; - key = md5(key != null ? key : UC_KEY); - String keya = md5(subStr(key, 0, 16)); - String keyb = md5(subStr(key, 16, 16)); - String keyc = "DECODE".equals(operation) ? subStr(string, 0, ckeyLength) : subStr(md5(microTime()), -ckeyLength); - String cryptkey = keya + md5(keya + keyc); - int keyLength = cryptkey.length(); - string = "DECODE".equals(operation) ? base64Decode(subStr(string, ckeyLength)) : sprintf("%010d", expiry > 0 ? expiry + time() : 0) + subStr(md5(string + keyb), 0, 16) + string; - int stringLength = string.length(); - StringBuilder result1 = new StringBuilder(); - int[] box = new int[256]; - for (int i = 0; i < 256; i++) { - box[i] = i; - } - int[] rndkey = new int[256]; - for (int i = 0; i <= 255; i++) { - rndkey[i] = (int) cryptkey.charAt(i % keyLength); - } - int j = 0; - for (int i = 0; i < 256; i++) { - j = (j + box[i] + rndkey[i]) % 256; - int tmp = box[i]; - box[i] = box[j]; - box[j] = tmp; - } - j = 0; - int a = 0; - for (int i = 0; i < stringLength; i++) { - a = (a + 1) % 256; - j = (j + box[a]) % 256; - int tmp = box[a]; - box[a] = box[j]; - box[j] = tmp; - result1.append((char) (((int) string.charAt(i)) ^ (box[(box[a] + box[j]) % 256]))); - } - if ("DECODE".equals(operation)) { - String result = result1.toString(); - try { - result = new String(result.getBytes("iso-8859-1"), "gbk"); - } catch (Exception e) { - result = result1.substring(0, result1.length()); - } - if ((Integer.parseInt(subStr(result, 0, 10)) == 0 || Long.parseLong(subStr(result, 0, 10)) - time() > 0) && subStr(result, 10, 16).equals(subStr(md5(subStr(result, 26) + keyb), 0, 16))) { - return subStr(result, 26); - } else { - return ""; - } - } else { - return keyc + base64Encode(result1.toString()).replaceAll("=", ""); - } - } - - protected String ucFopen2(String url, int limit, String post, String cookie, boolean bysocket, String ip, int timeout, boolean block) { - url += url.indexOf("?") > 0 ? "&" : "?" + "__times__=1"; - return ucFopen(url, limit, post, cookie, bysocket, ip, timeout, block); - } - - /** - * 本地模网络请求取数据 - * - * @param url 打开的url - * @param limit 取返回的数据的长度 - * @param post 要发送的 POST 数据,如uid=1&password=1234 - * @param cookie 要模拟的 COOKIE 数据,如uid=123&auth=a2323sd2323 - * @param bysocket TRUE/FALSE 是否通过SOCKET打开 - * @param ip IP地址 - * @param timeout 连接超时时间 - * @param block 是否为阻塞模式 defaul valuet:true - * @return 取到的字符串 - */ - private String ucFopen(String url, int limit, String post, String cookie, boolean bysocket, String ip, int timeout, boolean block) { - StringBuilder result = new StringBuilder(); - URL matches; - String host = ""; - String path = ""; - int port = 80; - try { - matches = new URL(url); - host = matches.getHost(); - path = matches.getPath() != null ? matches.getPath() + (matches.getQuery() != null ? "?" + matches.getQuery() : "") : "/"; - if (matches.getPort() > 0) port = matches.getPort(); - } catch (Exception e1) { - FRContext.getLogger().info(e1.getMessage()); - } - StringBuilder out = new StringBuilder(); - if (post != null && post.length() > 0) { - out.append("POST ").append(path).append(" HTTP/1.0\r\n"); - out.append("Accept: */*\r\n"); - out.append("Accept-Language: zh-cn\r\n"); - out.append("Content-Type: application/x-www-form-urlencoded\r\n"); - out.append("User-Agent: \r\n"); - out.append("Host: ").append(host).append("\r\n"); - out.append("Content-Length: ").append(post.length()).append("\r\n"); - out.append("Connection: Close\r\n"); - out.append("Cache-Control: no-cache\r\n"); - out.append("Cookie: \r\n\r\n"); - out.append(post); - } else { - out.append("GET $path HTTP/1.0\r\n"); - out.append("Accept: */*\r\n"); - out.append("Accept-Language: zh-cn\r\n"); - out.append("User-Agent: Java/1.5.0_01\r\n"); - out.append("Host: $host\r\n"); - out.append("Connection: Close\r\n"); - out.append("Cookie: $cookie\r\n\r\n"); - } - try { - Socket fp = new Socket(ip != null && ip.length() > 10 ? ip : host, port); - if (!fp.isConnected()) { - return ""; - } else { - OutputStream os = fp.getOutputStream(); - os.write(out.toString().getBytes()); - InputStream ins = fp.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(ins, "iso-8859-1")); - while (true) { - String header = reader.readLine(); - if (header == null || "".equals(header) || Objects.equals(header, "\r\n") || Objects.equals(header, "\n")) { - break; - } - } - while (true) { - String data = reader.readLine(); - if (data == null || "".equals(data)) { - break; - } else { - result.append(data); - } - } - fp.close(); - } - } catch (IOException e) { - FRContext.getLogger().info(e.getMessage()); - } - return result.toString(); - } -} \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/extra/ucenter/XMLHelper.java b/designer-base/src/main/java/com/fr/design/extra/ucenter/XMLHelper.java deleted file mode 100644 index 697da6c56..000000000 --- a/designer-base/src/main/java/com/fr/design/extra/ucenter/XMLHelper.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.fr.design.extra.ucenter; - -import com.fr.base.FRContext; -import com.sun.org.apache.xerces.internal.parsers.DOMParser; -import org.w3c.dom.Document; -import org.w3c.dom.NodeList; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; - -import java.io.IOException; -import java.io.StringReader; -import java.util.LinkedList; - -/** - * @author lp - * @date 2016/9/9 - */ -public class XMLHelper { - - public static LinkedList ucUnserialize(String input) { - - LinkedList result = new LinkedList(); - DOMParser parser = new DOMParser(); - try { - parser.parse(new InputSource(new StringReader(input))); - Document doc = parser.getDocument(); - NodeList nl = doc.getChildNodes().item(0).getChildNodes(); - int length = nl.getLength(); - for (int i = 0; i < length; i++) { - if (nl.item(i).getNodeType() == Document.ELEMENT_NODE) { - result.add(nl.item(i).getTextContent()); - } - } - } catch (SAXException e) { - FRContext.getLogger().info(e.getMessage()); - } catch (IOException e1) { - FRContext.getLogger().info(e1.getLocalizedMessage()); - } - return result; - } -} \ No newline at end of file