diff --git a/pom.xml b/pom.xml index 0e4c77ad2..65e968f18 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.tonikelope MegaBasterd - 7.87 + 7.88 jar diff --git a/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java b/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java index e3caf19d3..edf3d8ace 100644 --- a/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java +++ b/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java @@ -156,7 +156,7 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable { SmartMegaProxyManager proxy_manager = MainPanel.getProxy_manager(); - if (MainPanel.isUse_smart_proxy() && proxy_manager.isForce_smart_proxy()) { + if (MainPanel.isUse_smart_proxy() && proxy_manager != null && proxy_manager.isForce_smart_proxy()) { String[] smart_proxy = proxy_manager.getProxy(_excluded_proxy_list); @@ -270,9 +270,9 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable { } } - if (_current_smart_proxy != null) { - con.setConnectTimeout(MainPanel.getProxy_manager().getProxy_timeout()); - con.setReadTimeout(MainPanel.getProxy_manager().getProxy_timeout() * 2); + if (_current_smart_proxy != null && proxy_manager != null) { + con.setConnectTimeout(proxy_manager.getProxy_timeout()); + con.setReadTimeout(proxy_manager.getProxy_timeout() * 2); } else { con.setConnectTimeout(Transference.HTTP_CONNECT_TIMEOUT); con.setReadTimeout(Transference.HTTP_READ_TIMEOUT); diff --git a/src/main/java/com/tonikelope/megabasterd/Download.java b/src/main/java/com/tonikelope/megabasterd/Download.java index d96247394..41a0d5e34 100644 --- a/src/main/java/com/tonikelope/megabasterd/Download.java +++ b/src/main/java/com/tonikelope/megabasterd/Download.java @@ -715,12 +715,6 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif if (!isExit() && !_thread_pool.isShutdown() && _status_error == null && progress < getFile_size() && progress <= last_progress) { stopDownloader("PROGRESS WATCHDOG TIMEOUT!"); - - if (MainPanel.isUse_smart_proxy()) { - String lista_proxy = DBTools.selectSettingValue("custom_proxy_list"); - String url_list = MiscTools.findFirstRegex("^#(http.+)$", lista_proxy.trim(), 1); - MainPanel.getProxy_manager().refreshProxyList(url_list); //Force SmartProxy proxy list refresh - } } LOG.log(Level.INFO, "{0} PROGRESS WATCHDOG BYE BYE!", Thread.currentThread().getName()); diff --git a/src/main/java/com/tonikelope/megabasterd/DownloadManager.java b/src/main/java/com/tonikelope/megabasterd/DownloadManager.java index 582cac13f..3ecc50588 100644 --- a/src/main/java/com/tonikelope/megabasterd/DownloadManager.java +++ b/src/main/java/com/tonikelope/megabasterd/DownloadManager.java @@ -37,21 +37,23 @@ public class DownloadManager extends TransferenceManager { ConcurrentLinkedQueue transference_running_list = getMain_panel().getDownload_manager().getTransference_running_list(); - transference_running_list.forEach((transference) -> { + if (!transference_running_list.isEmpty()) { + transference_running_list.forEach((transference) -> { - ArrayList chunkworkers = ((Download) transference).getChunkworkers(); + ArrayList chunkworkers = ((Download) transference).getChunkworkers(); + + chunkworkers.forEach((worker) -> { + worker.RESET_CURRENT_CHUNK(); + }); - chunkworkers.forEach((worker) -> { - worker.RESET_CURRENT_CHUNK(); }); - }); + MiscTools.GUIRun(() -> { + getMain_panel().getView().getForce_chunk_reset_button().setEnabled(true); + }); - MiscTools.GUIRun(() -> { - getMain_panel().getView().getForce_chunk_reset_button().setEnabled(true); - }); - - JOptionPane.showMessageDialog(getMain_panel().getView(), LabelTranslatorSingleton.getInstance().translate("DONE")); + JOptionPane.showMessageDialog(getMain_panel().getView(), LabelTranslatorSingleton.getInstance().translate("CURRENT DOWNLOAD CHUNKS RESET!")); + } }); } @@ -69,7 +71,9 @@ public class DownloadManager extends TransferenceManager { secureNotify(); } - public void copyAllLinksToClipboard() { + public int copyAllLinksToClipboard() { + + int total = 0; ArrayList links = new ArrayList<>(); @@ -82,6 +86,8 @@ public class DownloadManager extends TransferenceManager { out += String.join("\r\n", links); + total += links.size(); + links.clear(); out += "\r\n\r\n***WAITING DOWNLOADS***\r\n\r\n"; @@ -98,6 +104,8 @@ public class DownloadManager extends TransferenceManager { out += String.join("\r\n", links); + total += links.size(); + links.clear(); out += "\r\n\r\n***RUNNING DOWNLOADS***\r\n\r\n"; @@ -109,6 +117,8 @@ public class DownloadManager extends TransferenceManager { out += String.join("\r\n", links); + total += links.size(); + links.clear(); out += "\r\n\r\n***FINISHED DOWNLOADS***\r\n\r\n"; @@ -120,8 +130,12 @@ public class DownloadManager extends TransferenceManager { out += String.join("\r\n", links); + total += links.size(); + MiscTools.copyTextToClipboard(out); + return total; + } @Override diff --git a/src/main/java/com/tonikelope/megabasterd/MainPanel.java b/src/main/java/com/tonikelope/megabasterd/MainPanel.java index b60c5d6d2..fcf2f32f4 100644 --- a/src/main/java/com/tonikelope/megabasterd/MainPanel.java +++ b/src/main/java/com/tonikelope/megabasterd/MainPanel.java @@ -69,7 +69,7 @@ import javax.swing.UIManager; */ public final class MainPanel { - public static final String VERSION = "7.87"; + public static final String VERSION = "7.88"; public static final boolean FORCE_SMART_PROXY = false; //TRUE FOR DEBUGING SMART PROXY public static final int THROTTLE_SLICE_SIZE = 16 * 1024; public static final int DEFAULT_BYTE_BUFFER_SIZE = 16 * 1024; diff --git a/src/main/java/com/tonikelope/megabasterd/MainPanelView.form b/src/main/java/com/tonikelope/megabasterd/MainPanelView.form index 98ae84919..05f59f5fa 100644 --- a/src/main/java/com/tonikelope/megabasterd/MainPanelView.form +++ b/src/main/java/com/tonikelope/megabasterd/MainPanelView.form @@ -517,7 +517,7 @@ - + @@ -535,6 +535,7 @@ + diff --git a/src/main/java/com/tonikelope/megabasterd/MainPanelView.java b/src/main/java/com/tonikelope/megabasterd/MainPanelView.java index e3bd5fd09..6610d6f19 100644 --- a/src/main/java/com/tonikelope/megabasterd/MainPanelView.java +++ b/src/main/java/com/tonikelope/megabasterd/MainPanelView.java @@ -472,13 +472,11 @@ public final class MainPanelView extends javax.swing.JFrame { translateLabels(this); - for (JComponent c : new JComponent[]{unfreeze_transferences_button, global_speed_down_label, global_speed_up_label, down_remtime_label, up_remtime_label, close_all_finished_down_button, close_all_finished_up_button, pause_all_down_button, pause_all_up_button}) { + for (JComponent c : new JComponent[]{force_chunk_reset_button, unfreeze_transferences_button, global_speed_down_label, global_speed_up_label, down_remtime_label, up_remtime_label, close_all_finished_down_button, close_all_finished_up_button, pause_all_down_button, pause_all_up_button}) { c.setVisible(false); } - force_chunk_reset_button.setVisible(MainPanel.isUse_smart_proxy()); - clean_all_down_menu.setEnabled(false); clean_all_up_menu.setEnabled(false); @@ -674,7 +672,7 @@ public final class MainPanelView extends javax.swing.JFrame { jButton1.setFont(new java.awt.Font("Dialog", 1, 16)); // NOI18N jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/icons8-copy-to-clipboard-30.png"))); // NOI18N - jButton1.setText("COPY ALL"); + jButton1.setText("COPY ALL DOWNLOAD LINKS"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); @@ -685,6 +683,7 @@ public final class MainPanelView extends javax.swing.JFrame { force_chunk_reset_button.setFont(new java.awt.Font("Dialog", 1, 18)); // NOI18N force_chunk_reset_button.setForeground(new java.awt.Color(255, 255, 255)); force_chunk_reset_button.setText("FORCE ALL CURRENT CHUNKS RESET"); + force_chunk_reset_button.setDoubleBuffered(true); force_chunk_reset_button.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { force_chunk_reset_buttonActionPerformed(evt); @@ -1375,7 +1374,6 @@ public final class MainPanelView extends javax.swing.JFrame { MainPanel.setProxy_manager(new SmartMegaProxyManager(url_list, _main_panel)); } else { String lista_proxy = DBTools.selectSettingValue("custom_proxy_list"); - String url_list = MiscTools.findFirstRegex("^#(http.+)$", lista_proxy.trim(), 1); MainPanel.getProxy_manager().refreshProxyList(url_list); } @@ -1550,9 +1548,9 @@ public final class MainPanelView extends javax.swing.JFrame { private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed // TODO add your handling code here: - _main_panel.getDownload_manager().copyAllLinksToClipboard(); + int total = _main_panel.getDownload_manager().copyAllLinksToClipboard(); - JOptionPane.showMessageDialog(this, LabelTranslatorSingleton.getInstance().translate("ALL COPIED!")); + JOptionPane.showMessageDialog(this, LabelTranslatorSingleton.getInstance().translate(total > 0 ? "ALL DOWNLOAD LINKS COPIED!" : "NO DOWNLOAD LINKS TO COPY")); }//GEN-LAST:event_jButton1ActionPerformed private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed diff --git a/src/main/java/com/tonikelope/megabasterd/MegaAPI.java b/src/main/java/com/tonikelope/megabasterd/MegaAPI.java index c90f5ff58..5382c6397 100644 --- a/src/main/java/com/tonikelope/megabasterd/MegaAPI.java +++ b/src/main/java/com/tonikelope/megabasterd/MegaAPI.java @@ -163,7 +163,7 @@ public class MegaAPI implements Serializable { URL url_api = new URL(API_URL + "/cs?id=" + String.valueOf(_seqno) + (API_KEY != null ? "&ak=" + API_KEY : "")); - String res = _rawRequest(request, url_api); + String res = RAW_REQUEST(request, url_api); ObjectMapper objectMapper = new ObjectMapper(); @@ -199,7 +199,7 @@ public class MegaAPI implements Serializable { URL url_api = new URL(API_URL + "/cs?id=" + String.valueOf(_seqno) + (API_KEY != null ? "&ak=" + API_KEY : "")); - String res = _rawRequest(request, url_api); + String res = RAW_REQUEST(request, url_api); ObjectMapper objectMapper = new ObjectMapper(); @@ -217,7 +217,7 @@ public class MegaAPI implements Serializable { URL url_api = new URL(API_URL + "/cs?id=" + String.valueOf(_seqno) + (API_KEY != null ? "&ak=" + API_KEY : "")); - String res = _rawRequest(request, url_api); + String res = RAW_REQUEST(request, url_api); ObjectMapper objectMapper = new ObjectMapper(); @@ -287,7 +287,7 @@ public class MegaAPI implements Serializable { url_api = new URL(API_URL + "/cs?id=" + String.valueOf(_seqno) + (_sid != null ? "&sid=" + _sid : "") + (API_KEY != null ? "&ak=" + API_KEY : "")); - String res = _rawRequest(request, url_api); + String res = RAW_REQUEST(request, url_api); ObjectMapper objectMapper = new ObjectMapper(); @@ -331,7 +331,7 @@ public class MegaAPI implements Serializable { url_api = new URL(API_URL + "/cs?id=" + String.valueOf(_seqno) + (_sid != null ? "&sid=" + _sid : "") + (API_KEY != null ? "&ak=" + API_KEY : "")); - String res = _rawRequest(request, url_api); + String res = RAW_REQUEST(request, url_api); ObjectMapper objectMapper = new ObjectMapper(); @@ -365,7 +365,7 @@ public class MegaAPI implements Serializable { } - private String _rawRequest(String request, URL url_api) throws MegaAPIException { + private String RAW_REQUEST(String request, URL url_api) throws MegaAPIException { System.out.println(request); @@ -379,23 +379,13 @@ public class MegaAPI implements Serializable { ArrayList excluded_proxy_list = new ArrayList<>(); - SmartMegaProxyManager proxy_manager = MainPanel.getProxy_manager(); - - if (MainPanel.isUse_smart_proxy() && proxy_manager.isForce_smart_proxy()) { - - String[] smart_proxy = proxy_manager.getProxy(excluded_proxy_list); - - current_smart_proxy = smart_proxy[0]; - - smart_proxy_socks = smart_proxy[1].equals("socks"); - - } - do { + SmartMegaProxyManager proxy_manager = MainPanel.getProxy_manager(); + try { - if ((current_smart_proxy != null || http_error == 509) && MainPanel.isUse_smart_proxy() && !MainPanel.isUse_proxy()) { + if ((current_smart_proxy != null || http_error == 509) && MainPanel.isUse_smart_proxy() && proxy_manager != null && !MainPanel.isUse_proxy()) { if (current_smart_proxy != null && (http_error != 0 || empty_response)) { @@ -568,7 +558,7 @@ public class MegaAPI implements Serializable { url_api = new URL(API_URL + "/cs?id=" + String.valueOf(_seqno) + (_sid != null ? "&sid=" + _sid : "") + (API_KEY != null ? "&ak=" + API_KEY : "")); } - String data = _rawRequest(request, url_api); + String data = RAW_REQUEST(request, url_api); ObjectMapper objectMapper = new ObjectMapper(); @@ -607,7 +597,7 @@ public class MegaAPI implements Serializable { url_api = new URL(API_URL + "/cs?id=" + String.valueOf(_seqno) + (_sid != null ? "&sid=" + _sid : "") + (API_KEY != null ? "&ak=" + API_KEY : "")); } - String data = _rawRequest(request, url_api); + String data = RAW_REQUEST(request, url_api); ObjectMapper objectMapper = new ObjectMapper(); @@ -709,7 +699,7 @@ public class MegaAPI implements Serializable { URL url_api = new URL(API_URL + "/cs?id=" + String.valueOf(_seqno) + (_sid != null ? "&sid=" + _sid : "") + (API_KEY != null ? "&ak=" + API_KEY : "")); - String res = _rawRequest(request, url_api); + String res = RAW_REQUEST(request, url_api); ObjectMapper objectMapper = new ObjectMapper(); @@ -753,7 +743,7 @@ public class MegaAPI implements Serializable { System.out.println(request); URL url_api = new URL(API_URL + "/cs?id=" + String.valueOf(_seqno) + (_sid != null ? "&sid=" + _sid : "") + (API_KEY != null ? "&ak=" + API_KEY : "")); - String res = _rawRequest(request, url_api); + String res = RAW_REQUEST(request, url_api); System.out.println(res); @@ -814,7 +804,7 @@ public class MegaAPI implements Serializable { url_api = new URL(API_URL + "/cs?id=" + String.valueOf(_seqno) + (_sid != null ? "&sid=" + _sid : "") + (API_KEY != null ? "&ak=" + API_KEY : "")); - res = _rawRequest(request, url_api); + res = RAW_REQUEST(request, url_api); System.out.println(request); @@ -849,7 +839,7 @@ public class MegaAPI implements Serializable { String request = "[{\"a\":\"p\", \"t\":\"" + mega_parent + "\", \"n\":[{\"h\":\"" + completion_handle + "\", \"t\":0, \"a\":\"" + Bin2UrlBASE64(enc_att) + "\", \"k\":\"" + Bin2UrlBASE64(encryptKey(i32a2bin(fkey), master_key)) + "\"}], \"i\":\"" + _req_id + "\", \"cr\" : [ [\"" + root_node + "\"] , [\"" + completion_handle + "\"] , [0,0, \"" + Bin2UrlBASE64(encryptKey(i32a2bin(fkey), share_key)) + "\"]]}]"; - String res = _rawRequest(request, url_api); + String res = RAW_REQUEST(request, url_api); ObjectMapper objectMapper = new ObjectMapper(); @@ -906,7 +896,7 @@ public class MegaAPI implements Serializable { String request = "[{\"a\":\"p\", \"t\":\"" + parent_node + "\", \"n\":[{\"h\":\"xxxxxxxx\",\"t\":1,\"a\":\"" + Bin2UrlBASE64(enc_att) + "\",\"k\":\"" + Bin2UrlBASE64(enc_node_key) + "\"}],\"i\":\"" + _req_id + "\"}]"; - String res = _rawRequest(request, url_api); + String res = RAW_REQUEST(request, url_api); ObjectMapper objectMapper = new ObjectMapper(); @@ -936,7 +926,7 @@ public class MegaAPI implements Serializable { String request = "[{\"a\":\"p\", \"t\":\"" + parent_node + "\", \"n\":[{\"h\":\"xxxxxxxx\",\"t\":1,\"a\":\"" + Bin2UrlBASE64(enc_att) + "\",\"k\":\"" + Bin2UrlBASE64(enc_node_key) + "\"}],\"i\":\"" + _req_id + "\", \"cr\" : [ [\"" + root_node + "\"] , [\"xxxxxxxx\"] , [0,0, \"" + Bin2UrlBASE64(enc_node_key_s) + "\"]]}]"; - String res = _rawRequest(request, url_api); + String res = RAW_REQUEST(request, url_api); ObjectMapper objectMapper = new ObjectMapper(); @@ -964,7 +954,7 @@ public class MegaAPI implements Serializable { URL url_api = new URL(API_URL + "/cs?id=" + String.valueOf(_seqno) + (_sid != null ? "&sid=" + _sid : "") + (API_KEY != null ? "&ak=" + API_KEY : "")); - String res = _rawRequest(request, url_api); + String res = RAW_REQUEST(request, url_api); ObjectMapper objectMapper = new ObjectMapper(); @@ -995,7 +985,7 @@ public class MegaAPI implements Serializable { URL url_api = new URL(API_URL + "/cs?id=" + String.valueOf(_seqno) + (_sid != null ? "&sid=" + _sid : "") + (API_KEY != null ? "&ak=" + API_KEY : "")); - String res = _rawRequest(request, url_api); + String res = RAW_REQUEST(request, url_api); ObjectMapper objectMapper = new ObjectMapper(); @@ -1042,7 +1032,7 @@ public class MegaAPI implements Serializable { URL url_api = new URL(API_URL + "/cs?id=" + String.valueOf(_seqno) + (_sid != null ? "&sid=" + _sid : "") + (API_KEY != null ? "&ak=" + API_KEY : "")); - return _rawRequest(request, url_api); + return RAW_REQUEST(request, url_api); } catch (Exception ex) { LOG.log(Level.SEVERE, ex.getMessage()); @@ -1074,7 +1064,7 @@ public class MegaAPI implements Serializable { URL url_api = new URL(API_URL + "/cs?id=" + String.valueOf(_seqno) + (API_KEY != null ? "&ak=" + API_KEY : "") + "&n=" + folder_id); - String res = _rawRequest(request, url_api); + String res = RAW_REQUEST(request, url_api); if (res != null) { @@ -1218,7 +1208,7 @@ public class MegaAPI implements Serializable { URL url_api = new URL(API_URL + "/cs?id=" + String.valueOf(_seqno) + (API_KEY != null ? "&ak=" + API_KEY : "") + "&n=" + folder_id); - String res = _rawRequest(request, url_api); + String res = RAW_REQUEST(request, url_api); if (res != null) { diff --git a/src/main/java/com/tonikelope/megabasterd/MiscTools.java b/src/main/java/com/tonikelope/megabasterd/MiscTools.java index 66e9defd9..879b0e778 100644 --- a/src/main/java/com/tonikelope/megabasterd/MiscTools.java +++ b/src/main/java/com/tonikelope/megabasterd/MiscTools.java @@ -1003,31 +1003,31 @@ public class MiscTools { int http_status = 0, http_error = 0; - SmartMegaProxyManager proxy_manager = MainPanel.getProxy_manager(); - String current_smart_proxy = null; boolean smart_proxy_socks = false; ArrayList excluded_proxy_list = new ArrayList<>(); - if (MainPanel.isUse_smart_proxy() && proxy_manager.isForce_smart_proxy()) { - - String[] smart_proxy = proxy_manager.getProxy(excluded_proxy_list); - - current_smart_proxy = smart_proxy[0]; - - smart_proxy_socks = smart_proxy[1].equals("socks"); - - } - do { + SmartMegaProxyManager proxy_manager = MainPanel.getProxy_manager(); + + if (MainPanel.isUse_smart_proxy() && proxy_manager != null && proxy_manager.isForce_smart_proxy()) { + + String[] smart_proxy = proxy_manager.getProxy(excluded_proxy_list); + + current_smart_proxy = smart_proxy[0]; + + smart_proxy_socks = smart_proxy[1].equals("socks"); + + } + try { URL url = new URL(string_url + "/0-0"); - if ((current_smart_proxy != null || http_error == 509) && MainPanel.isUse_smart_proxy() && !MainPanel.isUse_proxy()) { + if ((current_smart_proxy != null || http_error == 509) && MainPanel.isUse_smart_proxy() && proxy_manager != null && !MainPanel.isUse_proxy()) { if (current_smart_proxy != null && http_error != 0) { @@ -1088,9 +1088,9 @@ public class MiscTools { } } - if (current_smart_proxy != null) { - con.setConnectTimeout(MainPanel.getProxy_manager().getProxy_timeout()); - con.setReadTimeout(MainPanel.getProxy_manager().getProxy_timeout() * 2); + if (current_smart_proxy != null && proxy_manager != null) { + con.setConnectTimeout(proxy_manager.getProxy_timeout()); + con.setReadTimeout(proxy_manager.getProxy_timeout() * 2); } con.setUseCaches(false); diff --git a/src/main/java/com/tonikelope/megabasterd/SmartMegaProxyManager.java b/src/main/java/com/tonikelope/megabasterd/SmartMegaProxyManager.java index 3fa90745e..05e84f223 100644 --- a/src/main/java/com/tonikelope/megabasterd/SmartMegaProxyManager.java +++ b/src/main/java/com/tonikelope/megabasterd/SmartMegaProxyManager.java @@ -9,6 +9,7 @@ */ package com.tonikelope.megabasterd; +import static com.tonikelope.megabasterd.MainPanel.THREAD_POOL; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; @@ -171,159 +172,166 @@ public final class SmartMegaProxyManager { refreshProxyList(); } - public synchronized void refreshProxyList() { + public void refreshProxyList() { - String data; + THREAD_POOL.execute(() -> { - HttpURLConnection con = null; + synchronized (this) { - try { + String data; - String custom_proxy_list = (_proxy_list_url == null ? DBTools.selectSettingValue("custom_proxy_list") : null); + HttpURLConnection con = null; - LinkedHashMap custom_clean_list = new LinkedHashMap<>(); + try { - HashMap custom_clean_list_auth = new HashMap<>(); + String custom_proxy_list = (_proxy_list_url == null ? DBTools.selectSettingValue("custom_proxy_list") : null); - if (custom_proxy_list != null) { + LinkedHashMap custom_clean_list = new LinkedHashMap<>(); - ArrayList custom_list = new ArrayList<>(Arrays.asList(custom_proxy_list.split("\\r?\\n"))); + HashMap custom_clean_list_auth = new HashMap<>(); - if (!custom_list.isEmpty()) { + if (custom_proxy_list != null) { - Long current_time = System.currentTimeMillis(); + ArrayList custom_list = new ArrayList<>(Arrays.asList(custom_proxy_list.split("\\r?\\n"))); - for (String proxy : custom_list) { + if (!custom_list.isEmpty()) { - boolean socks = false; + Long current_time = System.currentTimeMillis(); - if (proxy.trim().startsWith("*")) { - socks = true; + for (String proxy : custom_list) { - proxy = proxy.trim().substring(1); + boolean socks = false; + + if (proxy.trim().startsWith("*")) { + socks = true; + + proxy = proxy.trim().substring(1); + } + + if (proxy.trim().contains("@")) { + + String[] proxy_parts = proxy.trim().split("@"); + + custom_clean_list_auth.put(proxy_parts[0], proxy_parts[1]); + + Long[] proxy_data = new Long[]{current_time, socks ? 1L : -1L}; + + custom_clean_list.put(proxy_parts[0], proxy_data); + + } else if (proxy.trim().matches(".+?:[0-9]{1,5}")) { + + Long[] proxy_data = new Long[]{current_time, socks ? 1L : -1L}; + + custom_clean_list.put(proxy, proxy_data); + } + } } - if (proxy.trim().contains("@")) { + if (!custom_clean_list.isEmpty()) { - String[] proxy_parts = proxy.trim().split("@"); + _proxy_list.clear(); - custom_clean_list_auth.put(proxy_parts[0], proxy_parts[1]); - - Long[] proxy_data = new Long[]{current_time, socks ? 1L : -1L}; - - custom_clean_list.put(proxy_parts[0], proxy_data); - - } else if (proxy.trim().matches(".+?:[0-9]{1,5}")) { - - Long[] proxy_data = new Long[]{current_time, socks ? 1L : -1L}; - - custom_clean_list.put(proxy, proxy_data); - } - } - } - - if (!custom_clean_list.isEmpty()) { - - _proxy_list.clear(); - - _proxy_list.putAll(custom_clean_list); - } - - if (!custom_clean_list_auth.isEmpty()) { - - PROXY_LIST_AUTH.clear(); - - PROXY_LIST_AUTH.putAll(custom_clean_list_auth); - } - - } - - if (custom_clean_list.isEmpty() && _proxy_list_url != null && !"".equals(_proxy_list_url)) { - - URL url = new URL(this._proxy_list_url); - - con = (HttpURLConnection) url.openConnection(); - - con.setUseCaches(false); - - con.setRequestProperty("User-Agent", MainPanel.DEFAULT_USER_AGENT); - - try (InputStream is = con.getInputStream(); ByteArrayOutputStream byte_res = new ByteArrayOutputStream()) { - - byte[] buffer = new byte[MainPanel.DEFAULT_BYTE_BUFFER_SIZE]; - - int reads; - - while ((reads = is.read(buffer)) != -1) { - - byte_res.write(buffer, 0, reads); - } - - data = new String(byte_res.toByteArray(), "UTF-8"); - } - - String[] proxy_list = data.split("\n"); - - if (proxy_list.length > 0) { - - _proxy_list.clear(); - - PROXY_LIST_AUTH.clear(); - - Long current_time = System.currentTimeMillis(); - - for (String proxy : proxy_list) { - - boolean socks = false; - - if (proxy.trim().startsWith("*")) { - socks = true; - - proxy = proxy.trim().substring(1); + _proxy_list.putAll(custom_clean_list); } - if (proxy.trim().contains("@")) { + if (!custom_clean_list_auth.isEmpty()) { - String[] proxy_parts = proxy.trim().split("@"); + PROXY_LIST_AUTH.clear(); - PROXY_LIST_AUTH.put(proxy_parts[0], proxy_parts[1]); - - Long[] proxy_data = new Long[]{current_time, socks ? 1L : -1L}; - - _proxy_list.put(proxy_parts[0], proxy_data); - - } else if (proxy.trim().matches(".+?:[0-9]{1,5}")) { - Long[] proxy_data = new Long[]{current_time, socks ? 1L : -1L}; - _proxy_list.put(proxy, proxy_data); + PROXY_LIST_AUTH.putAll(custom_clean_list_auth); } } + + if (custom_clean_list.isEmpty() && _proxy_list_url != null && !"".equals(_proxy_list_url)) { + + URL url = new URL(this._proxy_list_url); + + con = (HttpURLConnection) url.openConnection(); + + con.setUseCaches(false); + + con.setRequestProperty("User-Agent", MainPanel.DEFAULT_USER_AGENT); + + try (InputStream is = con.getInputStream(); ByteArrayOutputStream byte_res = new ByteArrayOutputStream()) { + + byte[] buffer = new byte[MainPanel.DEFAULT_BYTE_BUFFER_SIZE]; + + int reads; + + while ((reads = is.read(buffer)) != -1) { + + byte_res.write(buffer, 0, reads); + } + + data = new String(byte_res.toByteArray(), "UTF-8"); + } + + String[] proxy_list = data.split("\n"); + + if (proxy_list.length > 0) { + + _proxy_list.clear(); + + PROXY_LIST_AUTH.clear(); + + Long current_time = System.currentTimeMillis(); + + for (String proxy : proxy_list) { + + boolean socks = false; + + if (proxy.trim().startsWith("*")) { + socks = true; + + proxy = proxy.trim().substring(1); + } + + if (proxy.trim().contains("@")) { + + String[] proxy_parts = proxy.trim().split("@"); + + PROXY_LIST_AUTH.put(proxy_parts[0], proxy_parts[1]); + + Long[] proxy_data = new Long[]{current_time, socks ? 1L : -1L}; + + _proxy_list.put(proxy_parts[0], proxy_data); + + } else if (proxy.trim().matches(".+?:[0-9]{1,5}")) { + Long[] proxy_data = new Long[]{current_time, socks ? 1L : -1L}; + _proxy_list.put(proxy, proxy_data); + } + + } + } + + _main_panel.getView().updateSmartProxyStatus("SmartProxy: ON (" + String.valueOf(getProxyCount()) + ")" + (this.isForce_smart_proxy() ? " F!" : "")); + + LOG.log(Level.INFO, "{0} Smart Proxy Manager: proxy list refreshed ({1})", new Object[]{Thread.currentThread().getName(), _proxy_list.size()}); + + } else if (!custom_clean_list.isEmpty()) { + + _main_panel.getView().updateSmartProxyStatus("SmartProxy: ON (" + String.valueOf(getProxyCount()) + ")" + (this.isForce_smart_proxy() ? " F!" : "")); + + LOG.log(Level.INFO, "{0} Smart Proxy Manager: proxy list refreshed ({1})", new Object[]{Thread.currentThread().getName(), _proxy_list.size()}); + } else { + _main_panel.getView().updateSmartProxyStatus("SmartProxy: ON (0 proxies!)" + (this.isForce_smart_proxy() ? " F!" : "")); + LOG.log(Level.INFO, "{0} Smart Proxy Manager: NO PROXYS"); + } + + } catch (MalformedURLException ex) { + LOG.log(Level.SEVERE, ex.getMessage()); + } catch (IOException ex) { + LOG.log(Level.SEVERE, ex.getMessage()); + } finally { + if (con != null) { + con.disconnect(); + } + } - - _main_panel.getView().updateSmartProxyStatus("SmartProxy: ON (" + String.valueOf(getProxyCount()) + ")"); - - LOG.log(Level.INFO, "{0} Smart Proxy Manager: proxy list refreshed ({1})", new Object[]{Thread.currentThread().getName(), _proxy_list.size()}); - - } else if (!custom_clean_list.isEmpty()) { - - _main_panel.getView().updateSmartProxyStatus("SmartProxy: ON (" + String.valueOf(getProxyCount()) + ")*"); - - LOG.log(Level.INFO, "{0} Smart Proxy Manager: proxy list refreshed ({1})", new Object[]{Thread.currentThread().getName(), _proxy_list.size()}); - } else { - _main_panel.getView().updateSmartProxyStatus("SmartProxy: ON (0)"); - LOG.log(Level.INFO, "{0} Smart Proxy Manager: NO PROXYS"); } + }); - } catch (MalformedURLException ex) { - LOG.log(Level.SEVERE, ex.getMessage()); - } catch (IOException ex) { - LOG.log(Level.SEVERE, ex.getMessage()); - } finally { - if (con != null) { - con.disconnect(); - } - - } } public static class SmartProxyAuthenticator extends Authenticator { diff --git a/src/main/java/com/tonikelope/megabasterd/StreamChunkDownloader.java b/src/main/java/com/tonikelope/megabasterd/StreamChunkDownloader.java index 12ce58a51..0fab68c4b 100644 --- a/src/main/java/com/tonikelope/megabasterd/StreamChunkDownloader.java +++ b/src/main/java/com/tonikelope/megabasterd/StreamChunkDownloader.java @@ -66,7 +66,7 @@ public class StreamChunkDownloader implements Runnable { ArrayList excluded_proxy_list = new ArrayList<>(); - if (proxy_manager.isForce_smart_proxy()) { + if (MainPanel.isUse_smart_proxy() && proxy_manager != null && proxy_manager.isForce_smart_proxy()) { String[] smart_proxy = proxy_manager.getProxy(excluded_proxy_list); @@ -164,9 +164,9 @@ public class StreamChunkDownloader implements Runnable { } } - if (current_smart_proxy != null) { - con.setConnectTimeout(MainPanel.getProxy_manager().getProxy_timeout()); - con.setReadTimeout(MainPanel.getProxy_manager().getProxy_timeout() * 2); + if (current_smart_proxy != null && proxy_manager != null) { + con.setConnectTimeout(proxy_manager.getProxy_timeout()); + con.setReadTimeout(proxy_manager.getProxy_timeout() * 2); } con.setUseCaches(false); diff --git a/src/main/java/com/tonikelope/megabasterd/TransferenceManager.java b/src/main/java/com/tonikelope/megabasterd/TransferenceManager.java index cd3dec6ab..3509485be 100644 --- a/src/main/java/com/tonikelope/megabasterd/TransferenceManager.java +++ b/src/main/java/com/tonikelope/megabasterd/TransferenceManager.java @@ -649,6 +649,12 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea private void _updateView() { MiscTools.GUIRun(() -> { + + if (this instanceof DownloadManager) { + + this._main_panel.getView().getForce_chunk_reset_button().setVisible(MainPanel.isUse_smart_proxy() && !getTransference_running_list().isEmpty()); + } + if (_paused_all) { _pause_all_button.setText(LabelTranslatorSingleton.getInstance().translate("RESUME ALL")); } else {