mirror of
https://github.com/mirror/jdownloader.git
synced 2024-11-23 12:09:43 +00:00
*Plugins: Fixes/Changes/Maintenance*
- FileCryptCc: removed duplicated code - TeraboxComFolder: updated pattern: some links containing file/subfolder-path crawled all URLs while the plugin should've only crawled a specific file or subfolder git-svn-id: svn://svn.jdownloader.org/jdownloader/trunk@49840 ebf7c1c2-ba36-0410-9fe8-c592906822b4 Former-commit-id: f537970f69bb68ed3b6ded135caaa7fcd1f9aea6
This commit is contained in:
parent
9414221f52
commit
c490750feb
@ -562,7 +562,7 @@ public class FileCryptCc extends PluginForDecrypt {
|
|||||||
throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT, "Failed to find captchaForm");
|
throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT, "Failed to find captchaForm");
|
||||||
}
|
}
|
||||||
final String captchaURL = captchaForm.getRegex("((https?://[^<>\"']*?)?/captcha/[^<>\"']*?)\"").getMatch(0);
|
final String captchaURL = captchaForm.getRegex("((https?://[^<>\"']*?)?/captcha/[^<>\"']*?)\"").getMatch(0);
|
||||||
if (captchaURL != null && captchaURL.contains("circle.php")) {
|
if (captchaURL != null && this.containsCircleCaptcha(captchaURL)) {
|
||||||
/* Click-captcha */
|
/* Click-captcha */
|
||||||
final File file = this.getLocalCaptchaFile();
|
final File file = this.getLocalCaptchaFile();
|
||||||
getCaptchaBrowser(br).getDownload(file, captchaURL);
|
getCaptchaBrowser(br).getDownload(file, captchaURL);
|
||||||
@ -786,8 +786,8 @@ public class FileCryptCc extends PluginForDecrypt {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private final boolean containsCircleCaptcha(final String html) {
|
private final boolean containsCircleCaptcha(final String str) {
|
||||||
if (html.contains("circle.php")) {
|
if (StringUtils.containsIgnoreCase(str, "circle.php")) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
|
@ -22,6 +22,12 @@ import java.util.concurrent.atomic.AtomicLong;
|
|||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import org.appwork.storage.TypeRef;
|
||||||
|
import org.appwork.utils.StringUtils;
|
||||||
|
import org.appwork.utils.Time;
|
||||||
|
import org.appwork.utils.parser.UrlQuery;
|
||||||
|
import org.jdownloader.scripting.JavaScriptEngineFactory;
|
||||||
|
|
||||||
import jd.PluginWrapper;
|
import jd.PluginWrapper;
|
||||||
import jd.controlling.AccountController;
|
import jd.controlling.AccountController;
|
||||||
import jd.controlling.ProgressController;
|
import jd.controlling.ProgressController;
|
||||||
@ -41,12 +47,6 @@ import jd.plugins.PluginForDecrypt;
|
|||||||
import jd.plugins.PluginForHost;
|
import jd.plugins.PluginForHost;
|
||||||
import jd.plugins.hoster.TeraboxCom;
|
import jd.plugins.hoster.TeraboxCom;
|
||||||
|
|
||||||
import org.appwork.storage.TypeRef;
|
|
||||||
import org.appwork.utils.StringUtils;
|
|
||||||
import org.appwork.utils.Time;
|
|
||||||
import org.appwork.utils.parser.UrlQuery;
|
|
||||||
import org.jdownloader.scripting.JavaScriptEngineFactory;
|
|
||||||
|
|
||||||
@DecrypterPlugin(revision = "$Revision$", interfaceVersion = 3, names = {}, urls = {})
|
@DecrypterPlugin(revision = "$Revision$", interfaceVersion = 3, names = {}, urls = {})
|
||||||
public class TeraboxComFolder extends PluginForDecrypt {
|
public class TeraboxComFolder extends PluginForDecrypt {
|
||||||
public TeraboxComFolder(PluginWrapper wrapper) {
|
public TeraboxComFolder(PluginWrapper wrapper) {
|
||||||
@ -83,7 +83,7 @@ public class TeraboxComFolder extends PluginForDecrypt {
|
|||||||
public static String[] buildAnnotationUrls(final List<String[]> pluginDomains) {
|
public static String[] buildAnnotationUrls(final List<String[]> pluginDomains) {
|
||||||
final List<String> ret = new ArrayList<String>();
|
final List<String> ret = new ArrayList<String>();
|
||||||
for (final String[] domains : pluginDomains) {
|
for (final String[] domains : pluginDomains) {
|
||||||
ret.add("https?://(?:www\\.)?" + buildHostsPatternPart(domains) + "/(web/share/(?:init|link|filelist)\\?surl=[A-Za-z0-9\\-_]+(\\&path=[^/]+)?|web/share/videoPlay\\?surl=[A-Za-z0-9\\-_]+\\&dir=[^\\&]+|s/[A-Za-z0-9\\-_]+|(?:[a-z0-9]+/)?sharing/link\\?surl=[A-Za-z0-9\\-_]+)");
|
ret.add("https?://(?:www\\.)?" + buildHostsPatternPart(domains) + "/(web/share/(?:init|link|filelist)\\?surl=[A-Za-z0-9\\-_]+.*|web/share/videoPlay\\?surl=[A-Za-z0-9\\-_]+\\&dir=[^\\&]+|s/[A-Za-z0-9\\-_]+|(?:[a-z0-9]+/)?sharing/link\\?surl=[A-Za-z0-9\\-_]+.*)");
|
||||||
}
|
}
|
||||||
return ret.toArray(new String[0]);
|
return ret.toArray(new String[0]);
|
||||||
}
|
}
|
||||||
@ -110,10 +110,10 @@ public class TeraboxComFolder extends PluginForDecrypt {
|
|||||||
br.setCookie(host, "BOXCLND", passwordCookie);
|
br.setCookie(host, "BOXCLND", passwordCookie);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final String TYPE_SHORT = "(?i)https?://[^/]+/s/(.+)";
|
private static final Pattern TYPE_SHORT = Pattern.compile("https?://[^/]+/s/(.+)", Pattern.CASE_INSENSITIVE);
|
||||||
private static final String TYPE_SHORT_NEW = "(?i)https?://[^/]+/(?:[a-z0-9]+/)?sharing/link\\?surl=([A-Za-z0-9\\-_]+)";
|
private static final Pattern TYPE_SHORT_NEW = Pattern.compile("https?://[^/]+/(?:[a-z0-9]+/)?sharing/link\\?surl=([A-Za-z0-9\\-_]+).*", Pattern.CASE_INSENSITIVE);
|
||||||
/* For such URLs leading to single files we'll crawl all items of the folder that file is in -> Makes it easier */
|
/* For such URLs leading to single files we'll crawl all items of the folder that file is in -> Makes it easier */
|
||||||
private static final String TYPE_SINGLE_VIDEO = "(?i)https?://[^/]+/web/share/videoPlay\\?surl=([A-Za-z0-9\\-_]+)\\&dir=([^\\&]+)";
|
private static final Pattern TYPE_SINGLE_VIDEO = Pattern.compile("https?://[^/]+/web/share/videoPlay\\?surl=([A-Za-z0-9\\-_]+)\\&dir=([^\\&]+)", Pattern.CASE_INSENSITIVE);
|
||||||
private static final AtomicLong anonymousJstokenTimestamp = new AtomicLong(-1);
|
private static final AtomicLong anonymousJstokenTimestamp = new AtomicLong(-1);
|
||||||
private static AtomicReference<String> anonymousJstoken = new AtomicReference<String>(null);
|
private static AtomicReference<String> anonymousJstoken = new AtomicReference<String>(null);
|
||||||
|
|
||||||
@ -131,21 +131,16 @@ public class TeraboxComFolder extends PluginForDecrypt {
|
|||||||
contenturl = contenturl.replaceFirst(Pattern.quote(domainOfAddedURL) + "/", getHost() + "/");
|
contenturl = contenturl.replaceFirst(Pattern.quote(domainOfAddedURL) + "/", getHost() + "/");
|
||||||
}
|
}
|
||||||
final UrlQuery paramsOfAddedURL = UrlQuery.parse(contenturl);
|
final UrlQuery paramsOfAddedURL = UrlQuery.parse(contenturl);
|
||||||
String surl;
|
String surl = null;
|
||||||
String preGivenPath = null;
|
String preGivenPath = null;
|
||||||
if (contenturl.matches(TYPE_SHORT)) {
|
if (new Regex(contenturl, TYPE_SHORT).patternFind()) {
|
||||||
surl = new Regex(contenturl, TYPE_SHORT).getMatch(0);
|
surl = new Regex(contenturl, TYPE_SHORT).getMatch(0);
|
||||||
} else if (contenturl.matches(TYPE_SHORT_NEW)) {
|
|
||||||
surl = new Regex(param.getCryptedUrl(), TYPE_SHORT_NEW).getMatch(0);
|
|
||||||
} else if (contenturl.matches(TYPE_SINGLE_VIDEO)) {
|
|
||||||
surl = paramsOfAddedURL.get("surl");
|
|
||||||
preGivenPath = paramsOfAddedURL.get("dir");
|
|
||||||
} else {
|
} else {
|
||||||
surl = paramsOfAddedURL.get("surl");
|
surl = paramsOfAddedURL.get("surl");
|
||||||
preGivenPath = paramsOfAddedURL.get("dir");
|
}
|
||||||
if (preGivenPath == null) {
|
preGivenPath = paramsOfAddedURL.get("dir");
|
||||||
preGivenPath = paramsOfAddedURL.get("path");
|
if (preGivenPath == null) {
|
||||||
}
|
preGivenPath = paramsOfAddedURL.get("path");
|
||||||
}
|
}
|
||||||
if (surl == null) {
|
if (surl == null) {
|
||||||
/* Developer mistake */
|
/* Developer mistake */
|
||||||
@ -336,17 +331,16 @@ public class TeraboxComFolder extends PluginForDecrypt {
|
|||||||
logger.info("Assume that this folder is offline");
|
logger.info("Assume that this folder is offline");
|
||||||
throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
|
throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
|
||||||
}
|
}
|
||||||
final List<Object> ressourcelist = (List<Object>) entries.get("list");
|
final List<Map<String, Object>> ressourcelist = (List<Map<String, Object>>) entries.get("list");
|
||||||
if (ressourcelist.isEmpty()) {
|
if (ressourcelist.isEmpty()) {
|
||||||
logger.info("Stopping because: Current page doesn't contain any items");
|
logger.info("Stopping because: Current page doesn't contain any items");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
for (final Object ressourceO : ressourcelist) {
|
for (final Map<String, Object> ressource : ressourcelist) {
|
||||||
entries = (Map<String, Object>) ressourceO;
|
final String path = (String) ressource.get("path");
|
||||||
final String path = (String) entries.get("path");
|
|
||||||
/* 2021-04-14: 'category' is represented as a String. */
|
/* 2021-04-14: 'category' is represented as a String. */
|
||||||
final long category = JavaScriptEngineFactory.toLong(entries.get("category"), -1);
|
final long category = JavaScriptEngineFactory.toLong(ressource.get("category"), -1);
|
||||||
if (JavaScriptEngineFactory.toLong(entries.get("isdir"), -1) == 1) {
|
if (JavaScriptEngineFactory.toLong(ressource.get("isdir"), -1) == 1) {
|
||||||
/* Folder */
|
/* Folder */
|
||||||
final String url = "https://www." + this.getHost() + "/web/share/link?surl=" + surl + "&path=" + Encoding.urlEncode(path);
|
final String url = "https://www." + this.getHost() + "/web/share/link?surl=" + surl + "&path=" + Encoding.urlEncode(path);
|
||||||
final DownloadLink folder = this.createDownloadlink(url);
|
final DownloadLink folder = this.createDownloadlink(url);
|
||||||
@ -360,12 +354,12 @@ public class TeraboxComFolder extends PluginForDecrypt {
|
|||||||
ret.add(folder);
|
ret.add(folder);
|
||||||
} else {
|
} else {
|
||||||
/* File */
|
/* File */
|
||||||
final String serverfilename = (String) entries.get("server_filename");
|
final String serverfilename = (String) ressource.get("server_filename");
|
||||||
// final long fsid = JavaScriptEngineFactory.toLong(entries.get("fs_id"), -1);
|
// final long fsid = JavaScriptEngineFactory.toLong(entries.get("fs_id"), -1);
|
||||||
final String fsidStr = Long.toString(JavaScriptEngineFactory.toLong(entries.get("fs_id"), -1));
|
final String fsidStr = Long.toString(JavaScriptEngineFactory.toLong(ressource.get("fs_id"), -1));
|
||||||
final String realpath;
|
final String realpath;
|
||||||
if (path.endsWith("/" + serverfilename)) {
|
if (path.endsWith("/" + serverfilename)) {
|
||||||
realpath = path.replaceFirst("/" + org.appwork.utils.Regex.escape(serverfilename) + "$", "");
|
realpath = path.replaceFirst("/" + Pattern.quote(serverfilename) + "$", "");
|
||||||
} else {
|
} else {
|
||||||
realpath = path;
|
realpath = path;
|
||||||
}
|
}
|
||||||
@ -385,7 +379,7 @@ public class TeraboxComFolder extends PluginForDecrypt {
|
|||||||
}
|
}
|
||||||
final DownloadLink dl = new DownloadLink(plg, "dubox", this.getHost(), url, true);
|
final DownloadLink dl = new DownloadLink(plg, "dubox", this.getHost(), url, true);
|
||||||
dl.setContentUrl(contentURL);
|
dl.setContentUrl(contentURL);
|
||||||
TeraboxCom.parseFileInformation(dl, entries);
|
TeraboxCom.parseFileInformation(dl, ressource);
|
||||||
if (passCode != null) {
|
if (passCode != null) {
|
||||||
dl.setDownloadPassword(passCode);
|
dl.setDownloadPassword(passCode);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user