예제 #1
0
파일: Column.java 프로젝트: qpiny/abet
 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);
   }
 }