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 {