package org.fluxtream.core.utils;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
public class Utils {
// private static Policy policy;
//
// @SuppressWarnings("deprecation")
// public static String clean(String userContent) {
// try {
// if (policy==null)
// policy = Policy.getInstance(Utils.class.getResourceAsStream("/antisamy-ebay-1.4.4.xml"));
//
// AntiSamy as = new AntiSamy();
// CleanResults cr;
// cr = as.scan(userContent, policy);
//
// return cr.getCleanHTML();
// } catch (Exception e) {
// e.printStackTrace();
// }
//
// return "YOUR CONTENT COULD NOT BE VERIFIED FOR CODE INJECTION";
// }
private static final char[] symbols = new char[36];
public static String sanitize(String s) {
StringBuffer sb = new StringBuffer();
for (int i=0; i<s.length(); i++) {
if (s.charAt(i)==' ' || Character.isLetter(s.charAt(i))||s.charAt(i)=='_' ||
Character.isDigit(s.charAt(i))) {
sb.append(s.charAt(i));
} else sb.append('_');
}
return sb.toString();
}
static {
for (int idx = 0; idx < 10; ++idx)
symbols[idx] = (char) ('0' + idx);
for (int idx = 10; idx < 36; ++idx)
symbols[idx] = (char) ('a' + idx - 10);
}
private static SecureRandom random = new SecureRandom();
public static String generateSecureRandomString()
{
return new BigInteger(200, random).toString(32);
}
public static final Map<String,String> parseParameters(String s){
StringTokenizer st = new StringTokenizer(s, "=&");
Map<String,String> result = new HashMap<String,String>();
while(st.hasMoreTokens()) {
String key = st.nextToken();
String val = st.nextToken();
result.put(key, val);
}
return result;
}
public static String hash(String toHash) {
byte[] uniqueKey = toHash.getBytes();
byte[] hash = null;
try {
hash = MessageDigest.getInstance("MD5").digest(uniqueKey);
} catch (NoSuchAlgorithmException e) {e.printStackTrace();}
StringBuilder hashString = new StringBuilder();
for (int i = 0; i < hash.length; i++) {
String hex = Integer.toHexString(hash[i]);
if (hex.length() == 1) {
hashString.append('0');
hashString.append(hex.charAt(hex.length() - 1));
} else
hashString.append(hex.substring(hex.length() - 2));
}
return hashString.toString();
}
public static String sha1Hash(String toHash) throws NoSuchAlgorithmException {
byte[] uniqueKey = toHash.getBytes();
byte[] hash = null;
hash = MessageDigest.getInstance("SHA1").digest(uniqueKey);
StringBuilder hashString = new StringBuilder();
for (int i = 0; i < hash.length; i++) {
String hex = Integer.toHexString(hash[i]);
if (hex.length() == 1) {
hashString.append('0');
hashString.append(hex.charAt(hex.length() - 1));
} else
hashString.append(hex.substring(hex.length() - 2));
}
return hashString.toString();
}
public static String shortStackTrace(Throwable t) {
StringWriter writer = new StringWriter();
t.printStackTrace(new PrintWriter(writer));
String trace = writer.toString();
return trace.length()<64?trace:trace.substring(0,64);
}
public static String mediumStackTrace(Throwable t) {
StringWriter writer = new StringWriter();
t.printStackTrace(new PrintWriter(writer));
String trace = writer.toString();
return trace.length()<64?trace:trace.substring(0,512);
}
public static String stackTrace(Throwable t) {
StringWriter writer = new StringWriter();
t.printStackTrace(new PrintWriter(writer));
return writer.toString();
}
}