jdownloader/tools/captchaMethodChecker.java
DwD 4c58d31f0d captchaMethodChecker update
git-svn-id: svn://svn.jdownloader.org/jdownloader/trunk@8452 ebf7c1c2-ba36-0410-9fe8-c592906822b4
2009-09-10 10:23:48 +00:00

164 lines
5.8 KiB
Java

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Vector;
import jd.captcha.JACMethod;
import jd.parser.Regex;
import jd.utils.JDUtilities;
public class captchaMethodChecker {
public static int count = 0;
public static int count2 = 0;
private static String getLocalFile(File file) {
if (!file.exists()) return "";
BufferedReader f;
try {
f = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
String line;
StringBuffer ret = new StringBuffer();
String sep = "\r\n";
while ((line = f.readLine()) != null) {
ret.append(line + sep);
}
f.close();
return ret.toString();
} catch (IOException e) {
}
return "";
}
private static String getHost(String source) {
return new Regex(source, "names\\s*=\\s*\\{\\s*\"([^\"]*)\"\\s*\\}").getMatch(0);
}
private static String getMethode(String host) {
for (JACMethod method : JACMethod.getMethods()) {
if (host.equalsIgnoreCase(method.getServiceName())) { return method.getFileName(); }
}
File dir = JDUtilities.getResourceFile(JDUtilities.getJACMethodsDirectory() + host);
if (dir.exists()) return host;
return null;
}
private static void parseAdditon(File file, String regexp) {
String text = getLocalFile(file);
// text = text.replaceAll("(?is)/\\*.*?\\*/", "");
// text = text.replaceAll("//.*", "");
// text = text.replaceAll(".*final .*", ""); // kann man nich verändern
boolean showPluginsWithountMethod = true;
String[] res = new Regex(text, regexp).getRow(0);
if (res != null && res.length > 0) {
String[] lines = text.split("(\\r\\n)|\\r|\\n");
int ln = 0;
for (; ln < lines.length; ln++) {
String string = lines[ln];
if (string.contains("getCaptchaCode"))
{
ln ++;
break;
}
}
String host = getHost(text);
for (String string : res) {
if (string.split(",").length == 2) {
String meth = getMethode(host);
if (showPluginsWithountMethod) {
if (meth == null) {
//new line in print cause System.out.println ignores System.err.println
System.out.print(host+"\r\n");
if (text.toLowerCase().contains("recaptcha")) System.out.print("ReCaptcha\r\n");
System.err.print("getCaptchaCode at (" + file.getName() + ":" + ln + ")\r\n");
// System.out.println("");
// System.out.println(string);
System.out.println("__________________________");
count2++;
} else
count++;
} else {
if (meth != null) {
System.out.println(host);
System.out.println("Methodname: " + meth);
System.out.println("__________________________");
}
}
} else {
String host2 = string.replaceFirst(".*?\"", "").replaceFirst("\".*", "");
String meth = getMethode(host2);
if (showPluginsWithountMethod) {
if (meth == null) {
System.out.print(host+"\r\n");
if (text.toLowerCase().contains("recaptcha"))
System.out.print("ReCaptcha\r\n");
else if (host != null && !host.equals(host2)) System.out.print(host2+"\r\n");
// System.out.println(); //
System.err.print("getCaptchaCode at (" + file.getName() + ":" + ln + ")\r\n");
// System.out.println(string);
System.out.println("__________________________");
count2++;
} else
count++;
} else {
if (meth != null) {
System.out.println(host2);
System.out.println("Methodname: " + meth);
System.out.println("__________________________");
}
}
}
}
}
}
private static Vector<File> getFiles(File directory) {
Vector<File> ret = new Vector<File>();
for (File file : directory.listFiles()) {
if (file.isDirectory()) {
ret.addAll(getFiles(file));
} else if (file.getName().matches(".*\\.java$")) {
ret.add(file);
}
}
return ret;
}
public static void parse(String regexp) {
System.out.println("Hoster:");
System.out.println(":::::::::::::::::");
for (File file : getFiles(new File("src/jd/plugins/hoster"))) {
parseAdditon(file, regexp);
}
System.out.println("");
System.out.println("");
System.out.println("Decrypter:");
System.out.println(":::::::::::::::::");
for (File file : getFiles(new File("src/jd/plugins/decrypter"))) {
parseAdditon(file, regexp);
}
}
public static void main(String[] args) {
parse("(getCaptchaCode\\(.*?\\);)");
System.out.println(count);
System.out.println(count2);
}
}