李攀
8 years ago
10 changed files with 843 additions and 63 deletions
@ -0,0 +1,256 @@
|
||||
package com.fr.design.extra.ucenter; |
||||
|
||||
import java.io.*; |
||||
|
||||
/** |
||||
* Created by lp on 2016/9/9. |
||||
*/ |
||||
public class Base64 { |
||||
/** |
||||
* returns an array of base64-encoded characters to represent the |
||||
* passed data array. |
||||
* |
||||
* @param data the array of bytes to encode |
||||
* @return base64-coded character array. |
||||
*/ |
||||
public static char[] encode(byte[] data) { |
||||
char[] out = new char[((data.length + 2) / 3) * 4]; |
||||
|
||||
//
|
||||
// 3 bytes encode to 4 chars. Output is always an even
|
||||
// multiple of 4 characters.
|
||||
//
|
||||
for (int i = 0, index = 0; i < data.length; i += 3, index += 4) { |
||||
boolean quad = false; |
||||
boolean trip = false; |
||||
|
||||
int val = (0xFF & data[i]); |
||||
val <<= 8; |
||||
if ((i + 1) < data.length) { |
||||
val |= (0xFF & data[i + 1]); |
||||
trip = true; |
||||
} |
||||
val <<= 8; |
||||
if ((i + 2) < data.length) { |
||||
val |= (0xFF & data[i + 2]); |
||||
quad = true; |
||||
} |
||||
out[index + 3] = alphabet[(quad ? (val & 0x3F) : 64)]; |
||||
val >>= 6; |
||||
out[index + 2] = alphabet[(trip ? (val & 0x3F) : 64)]; |
||||
val >>= 6; |
||||
out[index + 1] = alphabet[val & 0x3F]; |
||||
val >>= 6; |
||||
out[index + 0] = alphabet[val & 0x3F]; |
||||
} |
||||
return out; |
||||
} |
||||
|
||||
/** |
||||
* Decodes a BASE-64 encoded stream to recover the original |
||||
* data. White space before and after will be trimmed away, |
||||
* but no other manipulation of the input will be performed. |
||||
* |
||||
* As of version 1.2 this method will properly handle input |
||||
* containing junk characters (newlines and the like) rather |
||||
* than throwing an error. It does this by pre-parsing the |
||||
* input and generating from that a count of VALID input |
||||
* characters. |
||||
**/ |
||||
public static byte[] decode(char[] data) { |
||||
// as our input could contain non-BASE64 data (newlines,
|
||||
// whitespace of any sort, whatever) we must first adjust
|
||||
// our count of USABLE data so that...
|
||||
// (a) we don't misallocate the output array, and
|
||||
// (b) think that we miscalculated our data length
|
||||
// just because of extraneous throw-away junk
|
||||
|
||||
int tempLen = data.length; |
||||
for (int ix = 0; ix < data.length; ix++) { |
||||
if ((data[ix] > 255) || codes[data[ix]] < 0) |
||||
--tempLen; // ignore non-valid chars and padding
|
||||
} |
||||
// calculate required length:
|
||||
// -- 3 bytes for every 4 valid base64 chars
|
||||
// -- plus 2 bytes if there are 3 extra base64 chars,
|
||||
// or plus 1 byte if there are 2 extra.
|
||||
|
||||
int len = (tempLen / 4) * 3; |
||||
if ((tempLen % 4) == 3) |
||||
len += 2; |
||||
if ((tempLen % 4) == 2) |
||||
len += 1; |
||||
|
||||
byte[] out = new byte[len]; |
||||
|
||||
|
||||
int shift = 0; // # of excess bits stored in accum
|
||||
int accum = 0; // excess bits
|
||||
int index = 0; |
||||
|
||||
// we now go through the entire array (NOT using the 'tempLen' value)
|
||||
for (int ix = 0; ix < data.length; ix++) { |
||||
int value = (data[ix] > 255) ? -1 : codes[data[ix]]; |
||||
|
||||
if (value >= 0)// skip over non-code
|
||||
{ |
||||
accum <<= 6; // bits shift up by 6 each time thru
|
||||
shift += 6; // loop, with new bits being put in
|
||||
accum |= value; // at the bottom.
|
||||
if (shift >= 8)// whenever there are 8 or more shifted in,
|
||||
{ |
||||
shift -= 8; // write them out (from the top, leaving any
|
||||
out[index++] = // excess at the bottom for next iteration.
|
||||
(byte) ((accum >> shift) & 0xff); |
||||
} |
||||
} |
||||
// we will also have skipped processing a padding null byte ('=') here;
|
||||
// these are used ONLY for padding to an even length and do not legally
|
||||
// occur as encoded data. for this reason we can ignore the fact that
|
||||
// no index++ operation occurs in that special case: the out[] array is
|
||||
// initialized to all-zero bytes to start with and that works to our
|
||||
// advantage in this combination.
|
||||
} |
||||
|
||||
// if there is STILL something wrong we just have to throw up now!
|
||||
if (index != out.length) { |
||||
throw new Error("Miscalculated data length (wrote " + |
||||
index + " instead of " + out.length + ")"); |
||||
} |
||||
|
||||
return out; |
||||
} |
||||
|
||||
|
||||
//
|
||||
// code characters for values 0..63
|
||||
//
|
||||
private static char[] alphabet = |
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".toCharArray(); |
||||
|
||||
//
|
||||
// lookup table for converting base64 characters to value in range 0..63
|
||||
//
|
||||
private static byte[] codes = new byte[256]; |
||||
|
||||
static { |
||||
for (int i = 0; i < 256; i++) |
||||
codes[i] = -1; |
||||
for (int i = 'A'; i <= 'Z'; i++) |
||||
codes[i] = (byte) (i - 'A'); |
||||
for (int i = 'a'; i <= 'z'; i++) |
||||
codes[i] = (byte) (26 + i - 'a'); |
||||
for (int i = '0'; i <= '9'; i++) |
||||
codes[i] = (byte) (52 + i - '0'); |
||||
codes['+'] = 62; |
||||
codes['/'] = 63; |
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
///////////////////////////////////////////////////
|
||||
// remainder (main method and helper functions) is
|
||||
// for testing purposes only, feel free to clip it.
|
||||
///////////////////////////////////////////////////
|
||||
|
||||
public static void main(String[] args) { |
||||
boolean decode = false; |
||||
|
||||
if (args.length == 0) { |
||||
System.out.println("usage: java Base64 [-d[ecode]] filename"); |
||||
System.exit(0); |
||||
} |
||||
for (int i = 0; i < args.length; i++) { |
||||
if ("-decode".equalsIgnoreCase(args[i])) |
||||
decode = true; |
||||
else if ("-d".equalsIgnoreCase(args[i])) |
||||
decode = true; |
||||
} |
||||
|
||||
String filename = args[args.length - 1]; |
||||
File file = new File(filename); |
||||
if (!file.exists()) { |
||||
System.out.println("Error: file '" + filename + "' doesn't exist!"); |
||||
System.exit(0); |
||||
} |
||||
|
||||
if (decode) { |
||||
char[] encoded = readChars(file); |
||||
byte[] decoded = decode(encoded); |
||||
writeBytes(file, decoded); |
||||
} |
||||
else { |
||||
byte[] decoded = readBytes(file); |
||||
char[] encoded = encode(decoded); |
||||
writeChars(file, encoded); |
||||
} |
||||
} |
||||
|
||||
private static byte[] readBytes(File file) { |
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream(); |
||||
try { |
||||
InputStream fis = new FileInputStream(file); |
||||
InputStream is = new BufferedInputStream(fis); |
||||
int count = 0; |
||||
byte[] buf = new byte[16384]; |
||||
while ((count = is.read(buf)) != -1) { |
||||
if (count > 0) |
||||
baos.write(buf, 0, count); |
||||
} |
||||
is.close(); |
||||
} |
||||
catch (Exception e) { |
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
return baos.toByteArray(); |
||||
} |
||||
|
||||
private static char[] readChars(File file) { |
||||
CharArrayWriter caw = new CharArrayWriter(); |
||||
try { |
||||
Reader fr = new FileReader(file); |
||||
Reader in = new BufferedReader(fr); |
||||
int count = 0; |
||||
char[] buf = new char[16384]; |
||||
while ((count = in.read(buf)) != -1) { |
||||
if (count > 0) |
||||
caw.write(buf, 0, count); |
||||
} |
||||
in.close(); |
||||
} |
||||
catch (Exception e) { |
||||
e.printStackTrace(); |
||||
} |
||||
|
||||
return caw.toCharArray(); |
||||
} |
||||
|
||||
private static void writeBytes(File file, byte[] data) { |
||||
try { |
||||
OutputStream fos = new FileOutputStream(file); |
||||
OutputStream os = new BufferedOutputStream(fos); |
||||
os.write(data); |
||||
os.close(); |
||||
} |
||||
catch (Exception e) { |
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
|
||||
private static void writeChars(File file, char[] data) { |
||||
try { |
||||
Writer fos = new FileWriter(file); |
||||
Writer os = new BufferedWriter(fos); |
||||
os.write(data); |
||||
os.close(); |
||||
} |
||||
catch (Exception e) { |
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
///////////////////////////////////////////////////
|
||||
// end of test code.
|
||||
///////////////////////////////////////////////////
|
||||
} |
@ -0,0 +1,335 @@
|
||||
package com.fr.design.extra.ucenter; |
||||
|
||||
import java.io.BufferedReader; |
||||
import java.io.IOException; |
||||
import java.io.InputStream; |
||||
import java.io.InputStreamReader; |
||||
import java.io.OutputStream; |
||||
import java.net.MalformedURLException; |
||||
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 boolean IN_UC = true; |
||||
public static String UC_IP = "211.149.195.54"; |
||||
public static String UC_API = "http://bbs.fanruan.com/uc_server"; |
||||
public static String UC_CONNECT = ""; |
||||
public static String UC_KEY = "Rc85U37411p4zdvcedm8D4t4D3l9Sa42H0kd98Gbd82aA99a61S2Z5LbQ9u430M0"; |
||||
public static String UC_APPID = "4"; |
||||
public static String UC_CLIENT_VERSION = "1.0"; |
||||
public static String UC_CLIENT_RELEASE = "20090212"; |
||||
public static String UC_ROOT = ""; //note 用户中心客户端的根目?? UC_CLIENTROOT
|
||||
public static String UC_DATADIR = UC_ROOT + "./data/"; //note 用户中心的数据缓存目??
|
||||
public static String UC_DATAURL = "UC_API" + "/data"; //note 用户中心的数?? URL
|
||||
public static String UC_API_FUNC = UC_CONNECT.equals("mysql") ? "uc_api_mysql" : "uc_api_post"; |
||||
public static String[] uc_controls = {}; |
||||
|
||||
protected String uc_serialize(String $arr, int $htmlon) { |
||||
return $arr; |
||||
} |
||||
|
||||
protected String uc_unserialize(String $s) { |
||||
return $s; |
||||
} |
||||
|
||||
protected String uc_addslashes(String $string, int $force, boolean $strip) { |
||||
return $string; |
||||
} |
||||
|
||||
protected String daddslashes(String $string, int $force) { |
||||
return uc_addslashes($string, $force, false); |
||||
} |
||||
|
||||
protected String uc_stripslashes(String $string) { |
||||
return $string; |
||||
} |
||||
|
||||
public String uc_api_post(String $module, String $action, Map<String, Object> $arg) { |
||||
StringBuffer $s = 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(uc_stripslashes(String.valueOf($v2))); |
||||
$sep2 = "&"; |
||||
} |
||||
$s.append($sep).append($s2); |
||||
} else { |
||||
$s.append($sep).append($k).append("=").append(urlencode(uc_stripslashes(String.valueOf($v)), "GBK")); |
||||
} |
||||
$sep = "&"; |
||||
} |
||||
String $postdata = uc_api_requestdata($module, $action, $s.toString(), ""); |
||||
return uc_fopen2(UC_API + "/index.php", 500000, $postdata, "", true, UC_IP, 20, true); |
||||
} |
||||
|
||||
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; |
||||
} |
||||
|
||||
protected String uc_api_url(String $module, String $action, String $arg, String $extra) { |
||||
String $url = UC_API + "/index.php?" + uc_api_requestdata($module, $action, $arg, $extra); |
||||
return $url; |
||||
} |
||||
|
||||
public String uc_api_input(String $data) { |
||||
String $s = urlencode(uc_authcode($data + "&agent=" + md5("") + "&time=" + time(), "ENCODE", UC_KEY), "GBK"); |
||||
return $s; |
||||
} |
||||
|
||||
public String uc_api_mysql(String $model, String $action, Map $args) { |
||||
if ($action.charAt(0) != '_') { |
||||
return null; |
||||
} else { |
||||
return ""; |
||||
} |
||||
} |
||||
|
||||
public String uc_authcode(String $string, String $operation) { |
||||
return uc_authcode($string, $operation, null); |
||||
} |
||||
|
||||
public String uc_authcode(String $string, String $operation, String $key) { |
||||
return uc_authcode($string, $operation, $key, 0); |
||||
} |
||||
|
||||
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); |
||||
} |
||||
|
||||
protected String uc_fopen(String $url, int $limit, String $post, String $cookie, boolean $bysocket, String $ip, int $timeout, boolean $block) { |
||||
String $return = ""; |
||||
|
||||
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 (MalformedURLException e1) { |
||||
} |
||||
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 { |
||||
$return += $data; |
||||
} |
||||
} |
||||
$fp.close(); |
||||
} |
||||
} catch (IOException e) { |
||||
|
||||
} |
||||
return $return; |
||||
} |
||||
|
||||
public String uc_app_ls() { |
||||
String $return = call_user_func(UC_API_FUNC, "app", "ls", null); |
||||
return UC_CONNECT.equals("mysql") ? $return : uc_unserialize($return); |
||||
} |
||||
|
||||
public String uc_user_register(String $username, String $password, String $email) { |
||||
return uc_user_register($username, $password, $email, "", ""); |
||||
} |
||||
|
||||
public String uc_user_register(String $username, String $password, String $email, String $questionid, String $answer) { |
||||
Map<String, Object> args = new HashMap<String, Object>(); |
||||
args.put("username", $username); |
||||
args.put("password", $password); |
||||
args.put("email", $email); |
||||
args.put("questionid", $questionid); |
||||
args.put("answer", $answer); |
||||
return call_user_func(UC_API_FUNC, "user", "register", args); |
||||
} |
||||
|
||||
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 |
||||
* @param $checkques |
||||
* @param $questionid |
||||
* @param $answer |
||||
* @return |
||||
*/ |
||||
public String uc_user_login(String $username, String $password, int $isuid, int $checkques, String $questionid, String $answer) { |
||||
Map<String, Object> args = new HashMap<String, Object>(); |
||||
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 : uc_unserialize($return); |
||||
} |
||||
|
||||
public String uc_user_synlogin(int $uid) { |
||||
Map<String, Object> args = new HashMap<String, Object>(); |
||||
args.put("uid", $uid); |
||||
String $return = uc_api_post("user", "synlogin", args); |
||||
return $return; |
||||
} |
||||
|
||||
public String uc_user_synlogout() { |
||||
String $return = uc_api_post("user", "synlogout", new HashMap<String, Object>()); |
||||
return $return; |
||||
} |
||||
|
||||
public String uc_get_user(String $username, int $isuid) { |
||||
Map<String, Object> args = new HashMap<String, Object>(); |
||||
args.put("username", $username); |
||||
args.put("isuid", $isuid); |
||||
String $return = call_user_func(UC_API_FUNC, "user", "get_user", args); |
||||
return UC_CONNECT.equals("mysql") ? $return : uc_unserialize($return); |
||||
} |
||||
|
||||
public String uc_user_edit(String $username, String $oldpw, String $newpw, String $email, int $ignoreoldpw, String $questionid, String $answer) { |
||||
Map<String, Object> args = new HashMap<String, Object>(); |
||||
args.put("username", $username); |
||||
args.put("oldpw", $oldpw); |
||||
args.put("newpw", $newpw); |
||||
args.put("email", $email); |
||||
args.put("ignoreoldpw", $ignoreoldpw); |
||||
args.put("questionid", $questionid); |
||||
args.put("answer", $answer); |
||||
return call_user_func(UC_API_FUNC, "user", "edit", args); |
||||
} |
||||
|
||||
public String uc_user_delete(String $uid) { |
||||
Map<String, Object> args = new HashMap<String, Object>(); |
||||
args.put("uid", $uid); |
||||
return call_user_func(UC_API_FUNC, "user", "delete", args); |
||||
} |
||||
|
||||
public String uc_user_deleteavatar(String $uid) { |
||||
Map<String, Object> args = new HashMap<String, Object>(); |
||||
args.put("uid", $uid); |
||||
return uc_api_post("user", "deleteavatar", args); |
||||
} |
||||
} |
@ -0,0 +1,108 @@
|
||||
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; |
||||
|
||||
/** |
||||
* 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) { |
||||
e.printStackTrace(); |
||||
return null; |
||||
} |
||||
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.toCharArray()),"iso-8859-1"); |
||||
} catch (Exception e) { |
||||
return e.getMessage(); |
||||
} |
||||
} |
||||
|
||||
protected String base64_encode(String input){ |
||||
try { |
||||
return new String(Base64.encode(input.getBytes("iso-8859-1"))); |
||||
} catch (Exception e) { |
||||
return e.getMessage(); |
||||
} |
||||
} |
||||
|
||||
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) { |
||||
e.printStackTrace(); |
||||
} |
||||
return null; |
||||
} |
||||
} |
@ -0,0 +1,36 @@
|
||||
package com.fr.design.extra.ucenter; |
||||
|
||||
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) { |
||||
e.printStackTrace(); |
||||
} catch (IOException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
return result; |
||||
} |
||||
} |
Loading…
Reference in new issue