Fangjie Hu 8 years ago
parent
commit
6879e74563
  1. 4
      designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java
  2. 11
      designer/src/com/fr/design/mainframe/bbs/UserInfoPane.java
  3. 10
      designer_base/src/com/fr/design/DesignerEnvManager.java
  4. 148
      designer_base/src/com/fr/design/extra/LoginWebBridge.java
  5. 6
      designer_base/src/com/fr/design/extra/PluginWebBridge.java
  6. 3
      designer_base/src/com/fr/design/extra/QQLoginWebBridge.java
  7. 2
      designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java
  8. 255
      designer_base/src/com/fr/design/extra/ucenter/Client.java
  9. 113
      designer_base/src/com/fr/design/extra/ucenter/PHPFunctions.java
  10. 39
      designer_base/src/com/fr/design/extra/ucenter/XMLHelper.java

4
designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java

@ -47,6 +47,8 @@ public class UserInfoLabel extends UILabel{
private static final int MIN_MESSAGE_COUNT = 1; private static final int MIN_MESSAGE_COUNT = 1;
private static final int MENU_HEIGHT = 20; private static final int MENU_HEIGHT = 20;
private static final int DEFAULT_BBS_UID = 0;
//用户名 //用户名
private String userName; private String userName;
//消息条数 //消息条数
@ -116,6 +118,8 @@ public class UserInfoLabel extends UILabel{
private void clearLoginInformation(){ private void clearLoginInformation(){
DesignerEnvManager.getEnvManager().setBBSName(StringUtils.EMPTY); DesignerEnvManager.getEnvManager().setBBSName(StringUtils.EMPTY);
DesignerEnvManager.getEnvManager().setBBSPassword(StringUtils.EMPTY); DesignerEnvManager.getEnvManager().setBBSPassword(StringUtils.EMPTY);
DesignerEnvManager.getEnvManager().setInShowBBsName(StringUtils.EMPTY);
DesignerEnvManager.getEnvManager().setBbsUid(DEFAULT_BBS_UID);
} }
private void updateInfoPane(){ private void updateInfoPane(){

11
designer/src/com/fr/design/mainframe/bbs/UserInfoPane.java

@ -14,6 +14,7 @@ import java.util.Date;
import com.fr.base.FRContext; import com.fr.base.FRContext;
import com.fr.design.DesignerEnvManager; import com.fr.design.DesignerEnvManager;
import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.BasicPane;
import com.fr.design.extra.LoginWebBridge;
import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerContext;
import com.fr.general.DateUtils; import com.fr.general.DateUtils;
import com.fr.general.FRLogger; import com.fr.general.FRLogger;
@ -34,6 +35,9 @@ public class UserInfoPane extends BasicPane{
private static final int WIDTH = 104; private static final int WIDTH = 104;
private static final int HEIGHT = 24; private static final int HEIGHT = 24;
//登录成功
private static final String LOGININ = "0";
// 登录框弹出间隔时间 // 登录框弹出间隔时间
private static final int LOGIN_DIFF_DAY = 7; private static final int LOGIN_DIFF_DAY = 7;
// 等待国际化等相关初始化工作完成之后再弹出登录框 // 等待国际化等相关初始化工作完成之后再弹出登录框
@ -74,10 +78,11 @@ public class UserInfoPane extends BasicPane{
public void run() { public void run() {
String username = DesignerEnvManager.getEnvManager().getBBSName(); String username = DesignerEnvManager.getEnvManager().getBBSName();
String password = DesignerEnvManager.getEnvManager().getBBSPassword(); String password = DesignerEnvManager.getEnvManager().getBBSPassword();
if(!BBSLoginDialog.login(username, password)){ String loginResult = LoginWebBridge.getHelper().login(username, password);
markUnSignIn(); if (loginResult.equals(LOGININ)) {
}else{
markSignIn(username); markSignIn(username);
}else {
markUnSignIn();
} }
} }
}); });

10
designer_base/src/com/fr/design/DesignerEnvManager.java

@ -93,6 +93,8 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
private String bbsName; private String bbsName;
//当前设计器用户的论坛密码 //当前设计器用户的论坛密码
private String bbsPassword; private String bbsPassword;
//当前设计器用户的论坛ID
private int bbsUid;
//当前设计器用户的昵称显示(带消息) //当前设计器用户的昵称显示(带消息)
private String inShowBBsName; private String inShowBBsName;
//上一次登录弹窗的时间, 为了控制一天只弹一次窗口 //上一次登录弹窗的时间, 为了控制一天只弹一次窗口
@ -1151,6 +1153,14 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
this.bbsPassword = bbsPassword; this.bbsPassword = bbsPassword;
} }
public int getBbsUid() {
return bbsUid;
}
public void setBbsUid(int bbsUid) {
this.bbsUid = bbsUid;
}
public void setInShowBBsName(String inShowBBsName) { public void setInShowBBsName(String inShowBBsName) {
this.inShowBBsName = inShowBBsName; this.inShowBBsName = inShowBBsName;
} }

148
designer_base/src/com/fr/design/extra/LoginWebBridge.java

@ -3,9 +3,10 @@ package com.fr.design.extra;
import com.fr.base.FRContext; import com.fr.base.FRContext;
import com.fr.design.DesignerEnvManager; import com.fr.design.DesignerEnvManager;
import com.fr.design.dialog.UIDialog; import com.fr.design.dialog.UIDialog;
import com.fr.design.extra.ucenter.Client;
import com.fr.design.extra.ucenter.XMLHelper;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerContext;
import com.fr.general.FRLogger;
import com.fr.general.SiteCenter; import com.fr.general.SiteCenter;
import com.fr.general.http.HttpClient; import com.fr.general.http.HttpClient;
import com.fr.json.JSONObject; import com.fr.json.JSONObject;
@ -14,12 +15,12 @@ import com.fr.stable.StringUtils;
import javafx.scene.web.WebEngine; import javafx.scene.web.WebEngine;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URI; import java.net.URI;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedList;
public class LoginWebBridge { public class LoginWebBridge {
@ -29,18 +30,22 @@ public class LoginWebBridge {
private static final String SUCCESS_MESSAGE_STATUS = "ok"; private static final String SUCCESS_MESSAGE_STATUS = "ok";
//数据通讯失败 //数据通讯失败
private static final String FAILED_MESSAGE_STATUS = "error"; private static final String FAILED_MESSAGE_STATUS = "error";
//消息条数 //消息条数
private int messageCount; private int messageCount;
//最低消息的条数 //最低消息的条数
private static final int MIN_MESSAGE_COUNT = 0; private static final int MIN_MESSAGE_COUNT = 0;
//登录成功
private static final String LOGIN_SUCCESS_FLAG = "http://bbs.finereport.com";
private static final String LOGININ = "0"; private static final String LOGININ = "0";
private static final String LOGIN_INFO_EMPTY = "-1"; //用户名不存在
private static final String DISCONNECTED = "-2"; private static final String USERNAME_NOT_EXSIT = "-1";
private static final String LOGININFO_ERROR = "-3"; //密码错误
private static final String PASSWORD_ERROR = "-2";
//未知错误
private static final String UNKNOWN_ERROR = "-3";
//网络连接失败
private static final String NET_FAILED = "-4";
//用户名,密码为空
private static final String LOGIN_INFO_EMPTY = "-5";
private static final int TIME_OUT = 10000; private static final int TIME_OUT = 10000;
private static com.fr.design.extra.LoginWebBridge helper; private static com.fr.design.extra.LoginWebBridge helper;
@ -52,6 +57,10 @@ public class LoginWebBridge {
return messageCount; return messageCount;
} }
/**
* 测试论坛网络连接
* @return
*/
private boolean testConnection() { private boolean testConnection() {
HttpClient client = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("bbs.test")); HttpClient client = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("bbs.test"));
return client.isServerAlive(); return client.isServerAlive();
@ -94,6 +103,11 @@ public class LoginWebBridge {
setUserName(username, uiLabel); setUserName(username, uiLabel);
} }
/**
* 设置显示的用户名
* @param userName 登录用户名
* @param label label显示
*/
public void setUserName(String userName, UILabel label) { public void setUserName(String userName, UILabel label) {
if (uiLabel == null) { if (uiLabel == null) {
this.uiLabel = label; this.uiLabel = label;
@ -101,27 +115,27 @@ public class LoginWebBridge {
if(StringUtils.isEmpty(userName)){ if(StringUtils.isEmpty(userName)){
return; return;
} }
if(!StringUtils.isEmpty(this.userName)){ if(!StringUtils.isEmpty(this.userName)){
updateMessageCount(); updateMessageCount();
} }
//往designerenvmanger里写一下
DesignerEnvManager.getEnvManager().setBBSName(userName); DesignerEnvManager.getEnvManager().setBBSName(userName);
this.userName = userName; this.userName = userName;
} }
/**
* 定时取后台论坛消息
*/
private void updateMessageCount(){ private void updateMessageCount(){
//启动获取消息更新的线程 //启动获取消息更新的线程
//登陆状态, 根据存起来的用户名密码, 每1分钟发起一次请求, 更新消息条数. //登陆状态, 根据存起来的用户名密码, 每1分钟发起一次请求, 更新消息条数.
Thread updateMessageThread = new Thread(new Runnable() { Thread updateMessageThread = new Thread(new Runnable() {
@Override @Override
public void run() { public void run() {
sleep(CHECK_MESSAGE_TIME); sleep(CHECK_MESSAGE_TIME);
//从env中获取username, 因为如果注销的话, env的里username会被清空.
while(StringUtils.isNotEmpty(DesignerEnvManager.getEnvManager().getBBSName())){ while(StringUtils.isNotEmpty(DesignerEnvManager.getEnvManager().getBBSName())){
HashMap<String, String> para = new HashMap<String, String>(); HashMap<String, String> para = new HashMap<>();
para.put("username", encode(encode(userName))); int uid = DesignerEnvManager.getEnvManager().getBbsUid();
para.put("uid", String.valueOf(uid));
HttpClient getMessage = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("bbs.message"), para); HttpClient getMessage = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("bbs.message"), para);
getMessage.asGet(); getMessage.asGet();
if(getMessage.isServerAlive()){ if(getMessage.isServerAlive()){
@ -145,6 +159,10 @@ public class LoginWebBridge {
updateMessageThread.start(); updateMessageThread.start();
} }
/**
* 设置获取的消息长度并设置显示
* @param count
*/
public void setMessageCount(int count) { public void setMessageCount(int count) {
if (count == MIN_MESSAGE_COUNT) { if (count == MIN_MESSAGE_COUNT) {
uiLabel.setText(DesignerEnvManager.getEnvManager().getBBSName()); uiLabel.setText(DesignerEnvManager.getEnvManager().getBBSName());
@ -199,45 +217,47 @@ public class LoginWebBridge {
} }
/** /**
* 登录操作的回调 * 设计器端的用户登录
* @param username * @param username 用户名
* @param password * @param password 密码
* @return * @return 登录信息标志
*/ */
public String defaultLogin(String username, String password) { public String defaultLogin(String username, String password) {
if (!StringUtils.isNotBlank(username) && !StringUtils.isNotBlank(password)) { return login(username, password, uiLabel);
return LOGIN_INFO_EMPTY;
}
if (!testConnection()) {
return DISCONNECTED;
}
if (login(username, password)) {
updateUserInfo(username, password);
loginSuccess(username);
setUserName(username, uiLabel);
return LOGININ;
}else {
return LOGININFO_ERROR;
}
} }
/* /**
插件管理那边的登录 * 插件管理的用户登录部分
* @param username 用户名
* @param password 密码
* @param uiLabel 设计器端的label
* @return 登录信息标志
*/ */
public String pluginManageLogin(String username, String password, UILabel uiLabel) { public String pluginManageLogin(String username, String password, UILabel uiLabel) {
return login(username, password, uiLabel);
}
/**
* 登录操作
* @param username 用户名
* @param password 密码
* @param uiLabel 两边的label显示
* @return 登录信息标志
*/
private String login(String username, String password, UILabel uiLabel) {
if (!StringUtils.isNotBlank(username) && !StringUtils.isNotBlank(password)) { if (!StringUtils.isNotBlank(username) && !StringUtils.isNotBlank(password)) {
return LOGIN_INFO_EMPTY; return LOGIN_INFO_EMPTY;
} }
if (!testConnection()) { if (!testConnection()) {
return DISCONNECTED; return NET_FAILED;
} }
if (login(username, password)) { String loginResult = login(username, password);
if (loginResult.equals(LOGININ)) {
updateUserInfo(username, password); updateUserInfo(username, password);
uiLabel.setText(username); loginSuccess(username);
return LOGININ; setUserName(username, uiLabel);
}else {
return LOGININFO_ERROR;
} }
return loginResult;
} }
/** /**
@ -251,9 +271,15 @@ public class LoginWebBridge {
} }
} }
/**
* 更新后台的用户信息
* @param username 用户名
* @param password 密码
*/
public void updateUserInfo(String username,String password) { public void updateUserInfo(String username,String password) {
DesignerEnvManager.getEnvManager().setBBSName(username); DesignerEnvManager.getEnvManager().setBBSName(username);
DesignerEnvManager.getEnvManager().setBBSPassword(password); DesignerEnvManager.getEnvManager().setBBSPassword(password);
DesignerEnvManager.getEnvManager().setInShowBBsName(username);
this.userName = username; this.userName = username;
} }
@ -284,28 +310,30 @@ public class LoginWebBridge {
}); });
} }
public boolean login(String username, String password) { public String login(String username, String password) {
if (StringUtils.isNotBlank(username) && StringUtils.isNotBlank(password)) {
try {
username = URLEncoder.encode(username, EncodeConstants.ENCODING_GBK);
password = URLEncoder.encode(password, EncodeConstants.ENCODING_GBK);
} catch (UnsupportedEncodingException e) {
FRLogger.getLogger().error(e.getMessage());
}
String url = SiteCenter.getInstance().acquireUrlByKind("bbs.login") + "&username=" + username + "&password=" + password;
HttpClient client = new HttpClient(url);
client.setTimeout(TIME_OUT);
if (client.getResponseCodeNoException() == HttpURLConnection.HTTP_OK) {
try { try {
String res = client.getResponseText(EncodeConstants.ENCODING_GBK); Client uc = new Client();
if (res.contains(LOGIN_SUCCESS_FLAG)) { String result = uc.uc_user_login(username, password);
return true; result = new String(result.getBytes("iso-8859-1"), "gbk");
} LinkedList<String> list = XMLHelper.uc_unserialize(result);
} catch (Exception e) { if (list.size() > 0) {
FRLogger.getLogger().error(e.getMessage()); int $uid = Integer.parseInt(list.get(0));
if ($uid > 0) {
DesignerEnvManager.getEnvManager().setBbsUid($uid);
return LOGININ;//登录成功,0
} else if ($uid == -1) {
return USERNAME_NOT_EXSIT;//用户名不存在,-1
} else if ($uid == -2) {
return PASSWORD_ERROR;//密码错误,-2
} else {
return UNKNOWN_ERROR;//未知错误,-3
} }
}else {
return NET_FAILED;
} }
}catch (Exception e) {
FRContext.getLogger().info(e.getMessage());
} }
return false; return UNKNOWN_ERROR;
} }
} }

6
designer_base/src/com/fr/design/extra/PluginWebBridge.java

@ -43,11 +43,6 @@ public class PluginWebBridge {
private String KEYWORD = "keyword"; private String KEYWORD = "keyword";
private Map<String, Object> config; private Map<String, Object> config;
private static final String LOGININ = "0";
private static final String LOGIN_INFO_EMPTY = "-1";
private static final String DISCONNECTED = "-2";
private static final String LOGININFO_ERROR = "-3";
private UILabel uiLabel; private UILabel uiLabel;
/** /**
@ -547,6 +542,7 @@ public class PluginWebBridge {
public void clearUserInfo() { public void clearUserInfo() {
DesignerEnvManager.getEnvManager().setBBSName(StringUtils.EMPTY); DesignerEnvManager.getEnvManager().setBBSName(StringUtils.EMPTY);
DesignerEnvManager.getEnvManager().setBBSPassword(StringUtils.EMPTY); DesignerEnvManager.getEnvManager().setBBSPassword(StringUtils.EMPTY);
DesignerEnvManager.getEnvManager().setInShowBBsName(StringUtils.EMPTY);
uiLabel.setText(Inter.getLocText("FR-Base_UnSignIn")); uiLabel.setText(Inter.getLocText("FR-Base_UnSignIn"));
} }
} }

3
designer_base/src/com/fr/design/extra/QQLoginWebBridge.java

@ -106,10 +106,13 @@ public class QQLoginWebBridge {
String status = jo.get("status").toString(); String status = jo.get("status").toString();
if (status.equals(LOGINSUCCESS)) { if (status.equals(LOGINSUCCESS)) {
String username = jo.get("username").toString(); String username = jo.get("username").toString();
int uid = Integer.parseInt(jo.get("uid") == null ? "" : jo.get("uid").toString());
closeQQWindow(); closeQQWindow();
closeParentWindow(); closeParentWindow();
pluginuiLabel.setText(username); pluginuiLabel.setText(username);
DesignerEnvManager.getEnvManager().setBBSName(username); DesignerEnvManager.getEnvManager().setBBSName(username);
DesignerEnvManager.getEnvManager().setBbsUid(uid);
DesignerEnvManager.getEnvManager().setInShowBBsName(username);
}else if (status.equals(LOGINFAILED)){ }else if (status.equals(LOGINFAILED)){
//账号没有QQ授权 //账号没有QQ授权
closeQQWindow(); closeQQWindow();

2
designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java

@ -30,7 +30,7 @@ public class GetLoginInfoExecutor implements Executor {
String inShowUsername = DesignerEnvManager.getEnvManager().getInShowBBsName(); String inShowUsername = DesignerEnvManager.getEnvManager().getInShowBBsName();
if (StringUtils.isEmpty(username) && StringUtils.isEmpty(inShowUsername)) { if (StringUtils.isEmpty(username) && StringUtils.isEmpty(inShowUsername)) {
}else { }else {
result = inShowUsername; result = StringUtils.isEmpty(inShowUsername) ? username : inShowUsername;
} }
} }
} }

255
designer_base/src/com/fr/design/extra/ucenter/Client.java

@ -0,0 +1,255 @@
package com.fr.design.extra.ucenter;
import com.fr.base.FRContext;
import com.fr.general.SiteCenter;
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;
/**
* Created by lp on 2016/9/9.
*/
public class Client extends PHPFunctions{
public static String UC_IP = "211.149.195.54";
public static String UC_API = SiteCenter.getInstance().acquireUrlByKind("bbs.ucapi");
public static String UC_CONNECT = "";
public static String UC_KEY = "Rc85U37411p4zdvcedm8D4t4D3l9Sa42H0kd98Gbd82aA99a61S2Z5LbQ9u430M0";
public static String UC_APPID = "4";
public static String UC_CLIENT_RELEASE = "20090212";
public static String UC_ROOT = "";
public static String UC_API_FUNC = UC_CONNECT.equals("mysql") ? "uc_api_mysql" : "uc_api_post";
public String uc_user_login(String username, String password) {
return uc_user_login(username, password, 0, 0);
}
public String uc_user_login(String username, String password, int isuid, int checkques) {
return uc_user_login(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 uc_user_login(String username, String password, int isuid, int checkques, String questionid, String answer) {
Map<String, Object> args = new HashMap<>();
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 $return = call_user_func(UC_API_FUNC, "user", "login", args);
return UC_CONNECT.equals("mysql") ? $return : $return;
}
/**
* 拼接发送的post请求
* @param module 模块
* @param action 操作模式
* @param arg 参数
* @return 发送的请求加密内容
*/
public String uc_api_post(String module, String action, Map<String, Object> arg) {
StringBuffer str = new StringBuffer();
String sep = "";
for (String k : arg.keySet()) {
Object v = arg.get(k);
k = urlencode(k);
if (v.getClass().isAssignableFrom(Map.class)) {
String s2 = "";
String sep2 = "";
for (String k2 : ((Map<String, Object>) v).keySet()) {
Object v2 = ((Map<String, Object>) v).get(k2);
k2 = urlencode(k2);
s2 += sep2 + "{" + k + "}[" + k2 + "]=" + 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 = uc_api_requestdata(module, action, str.toString(), "");
return uc_fopen2(UC_API + "/index.php", 500000, $postdata, "", true, UC_IP, 20, true);
}
public String uc_api_mysql(String model, String action, Map args) {
return "";
}
public String uc_api_input(String data) {
String str = urlencode(uc_authcode(data + "&agent=" + md5("") + "&time=" + time(), "ENCODE", UC_KEY), "GBK");
return str;
}
protected String uc_api_requestdata(String module, String action, String arg, String extra) {
String input = uc_api_input(arg);
String post = "m=" + module + "&a=" + action + "&inajax=2&release=" + UC_CLIENT_RELEASE + "&input=" + input + "&appid=" + UC_APPID + extra;
return post;
}
public String uc_authcode(String string, String operation, String key) {
return uc_authcode(string, operation, key, 0);
}
/**
* 内容加密
* @param string 原文
* @param operation decode或者encode
* @param key 密钥
* @param expiry 密文有效时限
* @return 加密之后的原文
*/
public String uc_authcode(String string, String operation, String key, int expiry) {
int ckey_length = 4;
key = md5(key != null ? key : UC_KEY);
String keya = md5(substr(key, 0, 16));
String keyb = md5(substr(key, 16, 16));
String keyc = ckey_length > 0 ? (operation.equals("DECODE") ? substr(string, 0, ckey_length) : substr(md5(microtime()), - ckey_length)) : "";
String cryptkey = keya + md5(keya + keyc);
int key_length = cryptkey.length();
string = operation.equals("DECODE") ? base64_decode(substr(string, ckey_length)) : sprintf("%010d", expiry > 0 ? expiry + time() : 0) + substr(md5(string + keyb), 0, 16) + string;
int string_length = string.length();
StringBuffer result1 = new StringBuffer();
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 % key_length);
}
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 < string_length; 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 (operation.equals("DECODE")) {
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.toString(), 0, 10)) == 0 || Long.parseLong(substr(result.toString(), 0, 10)) - time() > 0) && substr(result.toString(), 10, 16).equals(substr(md5(substr(result.toString(), 26) + keyb), 0, 16))) {
return substr(result.toString(), 26);
} else {
return "";
}
} else {
return keyc + base64_encode(result1.toString()).replaceAll("=", "");
}
}
protected String uc_fopen2(String url, int limit, String post, String cookie, boolean bysocket, String ip, int timeout, boolean block) {
url += url.indexOf("?") > 0 ? "&" : "?" + "__times__=1";
return uc_fopen(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 取到的字符串
*/
protected String uc_fopen(String url, int limit, String post, String cookie, boolean bysocket, String ip, int timeout, boolean block) {
String result = "";
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());
}
StringBuffer out = new StringBuffer();
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 || header.equals("") || header == "\r\n" || header == "\n") {
break;
}
}
while (true) {
String data = reader.readLine();
if (data == null || data.equals("")) {
break;
} else {
result += data;
}
}
fp.close();
}
} catch (IOException e) {
FRContext.getLogger().info(e.getMessage());
}
return result;
}
}

113
designer_base/src/com/fr/design/extra/ucenter/PHPFunctions.java

@ -0,0 +1,113 @@
package com.fr.design.extra.ucenter;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Map;
import com.fr.base.Base64;
import com.fr.base.FRContext;
/**
* Created by lp on 2016/9/9.
*/
public abstract class PHPFunctions {
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 base64_decode(String input){
try {
return new String(Base64.decode(input));
} catch (Exception e) {
FRContext.getLogger().info(e.getMessage());
return "";
}
}
protected String base64_encode(String input){
try {
return new String(Base64.encode(input.getBytes("iso-8859-1")));
} catch (Exception e) {
FRContext.getLogger().info(e.getMessage());
return "";
}
}
protected String byte2hex(byte[] b) {
StringBuffer hs = new StringBuffer();
String stmp = "";
for (int n = 0; n < b.length; n++) {
stmp = (java.lang.Integer.toHexString(b[n] & 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 call_user_func(String function, String model, String action, Map<String,Object> args){
if("uc_api_mysql".equals(function)){
return this.uc_api_mysql(model, action, args);
}
if("uc_api_post".equals(function)){
return this.uc_api_post(model, action, args);
}
return "";
}
public abstract String uc_api_post(String $module, String $action, Map<String,Object> $arg );
public abstract String uc_api_mysql(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 "";
}
}

39
designer_base/src/com/fr/design/extra/ucenter/XMLHelper.java

@ -0,0 +1,39 @@
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;
/**
* Created by lp on 2016/9/9.
*/
public class XMLHelper {
public static LinkedList<String> uc_unserialize(String input){
LinkedList<String> result = new LinkedList<String>();
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;
}
}
Loading…
Cancel
Save