public void addConfiguredAttribute(StringContainer attribute) { attributes.add(attribute.get()); }
@Override public void handleFree(DownloadLink downloadLink) throws Exception { checkShowFreeDialog(); requestFileInformation(downloadLink); br.setFollowRedirects(true); if (server != -1) { synchronized (noFreeSlot) { Long ret = noFreeSlot.get(server); if (ret != null) { if (System.currentTimeMillis() - ret < waitNoFreeSlot) { if (downloadLink.getLinkStatus().getRetryCount() >= 5) { /* * reset counter this error does not cause plugin to stop */ downloadLink.getLinkStatus().setRetryCount(0); } throw new PluginException( LinkStatus.ERROR_TEMPORARILY_UNAVAILABLE, JDL.L( "plugins.hoster.shareonlinebiz.errors.servernotavailable3", "No free Free-User Slots! Get PremiumAccount or wait!"), waitNoFreeSlot); } else { noFreeSlot.remove(server); } } } synchronized (overloadedServer) { Long ret = overloadedServer.get(server); if (ret != null) { if (System.currentTimeMillis() - ret < waitOverloadedServer) { if (downloadLink.getLinkStatus().getRetryCount() >= 5) { /* * reset counter this error does not cause plugin to stop */ downloadLink.getLinkStatus().setRetryCount(0); } throw new PluginException( LinkStatus.ERROR_TEMPORARILY_UNAVAILABLE, "Server overloaded", waitNoFreeSlot); } else { overloadedServer.remove(server); } } } } this.setBrowserExclusive(); br.getHeaders().put("User-Agent", UA.toString()); br.getHeaders() .put("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); br.getHeaders().put("Accept-Language", "en-us,de;q=0.7,en;q=0.3"); br.getHeaders().put("Pragma", null); br.getHeaders().put("Cache-Control", null); br.setCookie("http://www.share-online.biz", "page_language", "english"); // redirects! try { br.getPage(downloadLink.getDownloadURL().replace("https://", "http://")); } catch (final BrowserException e) { if (br.getRequest().getHttpConnection().getResponseCode() == 502) { throw new PluginException( LinkStatus.ERROR_HOSTER_TEMPORARILY_UNAVAILABLE, JDL.L("plugins.hoster.shareonlinebiz.errors.maintenance", "Server maintenance"), 30 * 60 * 1000l); } throw new PluginException( LinkStatus.ERROR_TEMPORARILY_UNAVAILABLE, JDL.L("plugins.hoster.shareonlinebiz.errors.unknownservererror", "Unknown server error"), 1 * 60 * 60 * 1000l); } if (br.getURL().contains("/failure/proxy/1")) { throw new PluginException(LinkStatus.ERROR_FATAL, "Proxy error"); } final Browser brc = br.cloneBrowser(); try { brc.openGetConnection("/template/images/corp/uploadking.php?show=last"); } finally { try { brc.getHttpConnection().disconnect(); } catch (final Throwable e) { } } errorHandling(br, downloadLink, null, null); if (!br.containsHTML(">>> continue for free <<<")) { throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT); } String ID = getID(downloadLink); br.postPage("/dl/" + ID + "/free/", "dl_free=1"); errorHandling(br, downloadLink, null, null); String wait = br.getRegex("var wait=(\\d+)").getMatch(0); boolean captcha = br.containsHTML("RECAPTCHA active"); long startWait = 0; if (captcha == true) { startWait = System.currentTimeMillis(); } else { if (wait != null) { this.sleep(Integer.parseInt(wait) * 1000l, downloadLink); } } String dlINFO = br.getRegex("var dl=\"(.*?)\"").getMatch(0); String url = Encoding.Base64Decode(dlINFO); if (captcha) { /* recaptcha handling */ PluginForHost recplug = JDUtilities.getPluginForHost("DirectHTTP"); jd.plugins.hoster.DirectHTTP.Recaptcha rc = ((DirectHTTP) recplug).getReCaptcha(br); rc.setId("6LdatrsSAAAAAHZrB70txiV5p-8Iv8BtVxlTtjKX"); rc.load(); File cf = rc.downloadCaptcha(getLocalCaptchaFile()); String c = getCaptchaCode("recaptcha", cf, downloadLink); if (wait != null) { long gotWait = Integer.parseInt(wait) * 500l; long waited = System.currentTimeMillis() - startWait; gotWait -= waited; if (gotWait > 0) { this.sleep(gotWait, downloadLink); } } br.postPage( "/dl/" + ID + "/free/captcha/" + System.currentTimeMillis(), "dl_free=1&recaptcha_response_field=" + Encoding.urlEncode(c) + "&recaptcha_challenge_field=" + rc.getChallenge()); url = br.getRegex("([a-zA-Z0-9/=]+)").getMatch(0); if ("0".equals(url)) { throw new PluginException(LinkStatus.ERROR_CAPTCHA); } url = Encoding.Base64Decode(url); if (url == null || !url.startsWith("http")) { url = null; } if (wait != null) { this.sleep(Integer.parseInt(wait) * 1000l, downloadLink); } } br.setFollowRedirects(true); /* Datei herunterladen */ if (url != null && url.trim().length() == 0) { throw new PluginException( LinkStatus.ERROR_TEMPORARILY_UNAVAILABLE, "ServerError", 5 * 60 * 1000l); } if (br.containsHTML(">Proxy\\-Download not supported for free access")) { throw new PluginException( LinkStatus.ERROR_TEMPORARILY_UNAVAILABLE, "Proxy download not supported for free access", 5 * 60 * 1000l); } if (url == null || !url.startsWith("http")) { logger.info("share-online.biz: Unknown error"); int timesFailed = downloadLink.getIntegerProperty("timesfailedshareonlinebiz_unknown", 0); if (timesFailed <= 2) { timesFailed++; downloadLink.setProperty("timesfailedshareonlinebiz_unknown", timesFailed); throw new PluginException(LinkStatus.ERROR_RETRY, "Unknown error"); } else { downloadLink.setProperty("timesfailedshareonlinebiz_unknown", Property.NULL); logger.info("share-online.biz: Unknown error - Plugin broken!"); throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT); } } dl = jd.plugins.BrowserAdapter.openDownload(br, downloadLink, url); if (dl.getConnection().isContentDisposition() || (dl.getConnection().getContentType() != null && dl.getConnection().getContentType().contains("octet-stream"))) { try { validateLastChallengeResponse(); } catch (final Throwable e) { } dl.startDownload(); } else { try { invalidateLastChallengeResponse(); } catch (final Throwable e) { } br.followConnection(); errorHandling(br, downloadLink, null, null); throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT); } }