diff --git a/pom.xml b/pom.xml
index d657f47da..789ea73f5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.tonikelope
MegaBasterd
- 6.15
+ 6.16
jar
diff --git a/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java b/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java
index f01e31312..c5f4f408e 100644
--- a/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java
+++ b/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java
@@ -2,7 +2,6 @@ package com.tonikelope.megabasterd;
import static com.tonikelope.megabasterd.MainPanel.*;
import static com.tonikelope.megabasterd.MiscTools.*;
-import java.awt.Color;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
@@ -28,6 +27,7 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
private final Object _secure_notify_lock;
private volatile boolean _error_wait;
private boolean _notified;
+ private String _current_smart_proxy;
public ChunkDownloader(int id, Download download) {
_notified = false;
@@ -35,10 +35,15 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
_secure_notify_lock = new Object();
_id = id;
_download = download;
+ _current_smart_proxy = null;
_error_wait = false;
}
+ public String getCurrent_smart_proxy() {
+ return _current_smart_proxy;
+ }
+
public void setExit(boolean exit) {
_exit = exit;
}
@@ -104,7 +109,7 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
boolean timeout = false, chunk_error = false, slow_proxy = false;
- String worker_url = null, current_smart_proxy = null;
+ String worker_url = null;
long init_chunk_time = -1, finish_chunk_time = -1, pause_init_time, paused = 0L;
@@ -127,21 +132,21 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
String chunk_url = ChunkManager.genChunkUrl(worker_url, _download.getFile_size(), chunk_offset, chunk_size);
- if ((http_error == 509 || slow_proxy || (chunk_error && current_smart_proxy != null)) && MainPanel.isUse_smart_proxy() && !MainPanel.isUse_proxy()) {
+ if ((http_error == 509 || slow_proxy || (chunk_error && _current_smart_proxy != null)) && MainPanel.isUse_smart_proxy() && !MainPanel.isUse_proxy()) {
- if (current_smart_proxy != null) {
+ if (_current_smart_proxy != null) {
- proxy_manager.blockProxy(current_smart_proxy);
+ proxy_manager.blockProxy(_current_smart_proxy);
- Logger.getLogger(MiscTools.class.getName()).log(Level.WARNING, "{0}: worker {1} excluding proxy -> {2}", new Object[]{Thread.currentThread().getName(), _id, current_smart_proxy});
+ Logger.getLogger(MiscTools.class.getName()).log(Level.WARNING, "{0}: worker {1} excluding proxy -> {2}", new Object[]{Thread.currentThread().getName(), _id, _current_smart_proxy});
}
- current_smart_proxy = proxy_manager.getFastestProxy();
+ _current_smart_proxy = proxy_manager.getFastestProxy();
- if (current_smart_proxy != null) {
+ if (_current_smart_proxy != null) {
- String[] proxy_info = current_smart_proxy.split(":");
+ String[] proxy_info = _current_smart_proxy.split(":");
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxy_info[0], Integer.parseInt(proxy_info[1])));
@@ -149,8 +154,6 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
con = (HttpURLConnection) url.openConnection(proxy);
- getDownload().getView().getSpeed_label().setForeground(new Color(255, 102, 0));
-
getDownload().enableProxyTurboMode();
} else {
@@ -166,6 +169,8 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
if (MainPanel.isUse_proxy()) {
+ _current_smart_proxy = null;
+
con = (HttpURLConnection) url.openConnection(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(MainPanel.getProxy_host(), MainPanel.getProxy_port())));
if (MainPanel.getProxy_user() != null && !"".equals(MainPanel.getProxy_user())) {
@@ -175,13 +180,22 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
} else {
- con = (HttpURLConnection) url.openConnection();
- }
+ if (_current_smart_proxy != null) {
- current_smart_proxy = null;
+ String[] proxy_info = _current_smart_proxy.split(":");
+
+ Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxy_info[0], Integer.parseInt(proxy_info[1])));
+
+ con = (HttpURLConnection) url.openConnection(proxy);
+
+ } else {
+ con = (HttpURLConnection) url.openConnection();
+ }
+
+ }
}
- if (current_smart_proxy != null) {
+ if (_current_smart_proxy != null) {
con.setConnectTimeout(Download.HTTP_PROXY_TIMEOUT);
con.setReadTimeout(Download.HTTP_PROXY_TIMEOUT);
} else {
@@ -217,10 +231,6 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
http_error = http_status;
- if (http_error == 509 && MainPanel.isUse_smart_proxy()) {
- getDownload().getView().set509Error();
- }
-
} else {
chunk_file = new File(_download.getChunkmanager().getChunks_dir() + "/" + new File(_download.getFile_name()).getName() + ".chunk" + chunk_id);
@@ -298,7 +308,7 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
http_error = 0;
- if (current_smart_proxy != null) {
+ if (_current_smart_proxy != null) {
//Update average chunk download speed using SmartProxy
long chunk_speed = Math.round(chunk_size / (((double) (finish_chunk_time - init_chunk_time - paused)) / 1000));
@@ -312,7 +322,7 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
if (chunk_speed < Math.round(avg_chunk_speed * SLOW_PROXY_PERC)) {
- Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Worker [{1}] WARNING -> PROXY {2} CHUNK DOWNLOAD SPEED: {3}/s SEEMS TO BE SLOW (average is {4}/s)", new Object[]{Thread.currentThread().getName(), _id, current_smart_proxy, formatBytes(chunk_speed), formatBytes(avg_chunk_speed)});
+ Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Worker [{1}] WARNING -> PROXY {2} CHUNK DOWNLOAD SPEED: {3}/s SEEMS TO BE SLOW (average is {4}/s)", new Object[]{Thread.currentThread().getName(), _id, _current_smart_proxy, formatBytes(chunk_speed), formatBytes(avg_chunk_speed)});
slow_proxy = true;
}
@@ -352,7 +362,7 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
_download.getProgress_meter().secureNotify();
}
- if (!_exit && !_download.isStopped() && !timeout && (http_error != 509 || current_smart_proxy != null) && http_error != 403) {
+ if (!_exit && !_download.isStopped() && !timeout && (http_error != 509 || _current_smart_proxy != null) && http_error != 403) {
_error_wait = true;
diff --git a/src/main/java/com/tonikelope/megabasterd/ChunkDownloaderMono.java b/src/main/java/com/tonikelope/megabasterd/ChunkDownloaderMono.java
index 1014a03ab..2abb24c27 100644
--- a/src/main/java/com/tonikelope/megabasterd/ChunkDownloaderMono.java
+++ b/src/main/java/com/tonikelope/megabasterd/ChunkDownloaderMono.java
@@ -102,12 +102,6 @@ public class ChunkDownloaderMono extends ChunkDownloader {
http_error = http_status;
- if (http_error == 509) {
-
- getDownload().getView().set509Error();
-
- }
-
getDownload().rejectChunkId(chunk_id);
conta_error++;
diff --git a/src/main/java/com/tonikelope/megabasterd/Download.java b/src/main/java/com/tonikelope/megabasterd/Download.java
index 01221d79d..0d261d093 100644
--- a/src/main/java/com/tonikelope/megabasterd/Download.java
+++ b/src/main/java/com/tonikelope/megabasterd/Download.java
@@ -4,6 +4,7 @@ import static com.tonikelope.megabasterd.CryptTools.*;
import static com.tonikelope.megabasterd.DBTools.*;
import static com.tonikelope.megabasterd.MainPanel.*;
import static com.tonikelope.megabasterd.MiscTools.*;
+import java.awt.Color;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
@@ -92,8 +93,6 @@ public final class Download implements Transference, Runnable, SecureSingleThrea
private long _last_chunk_id_dispatched;
private final MegaAPI _ma;
private volatile boolean _canceled;
- private volatile boolean _error509;
- private volatile boolean _turbo_proxy_mode;
public Download(MainPanel main_panel, MegaAPI ma, String url, String download_path, String file_name, String file_key, Long file_size, String file_pass, String file_noexpire, boolean use_slots, boolean restart, String custom_chunks_dir) {
@@ -121,8 +120,6 @@ public final class Download implements Transference, Runnable, SecureSingleThrea
_file_pass = file_pass;
_file_noexpire = file_noexpire;
_use_slots = use_slots;
- _error509 = false;
- _turbo_proxy_mode = false;
_restart = restart;
_secure_notify_lock = new Object();
_workers_lock = new Object();
@@ -207,9 +204,7 @@ public final class Download implements Transference, Runnable, SecureSingleThrea
synchronized (_turbo_proxy_lock) {
- if (!_turbo_proxy_mode) {
-
- _turbo_proxy_mode = true;
+ if (getChunkworkers().size() < Transference.MAX_WORKERS) {
Download tthis = this;
@@ -220,6 +215,8 @@ public final class Download implements Transference, Runnable, SecureSingleThrea
synchronized (_workers_lock) {
+ getView().getSpeed_label().setForeground(Color.BLACK);
+
getView().getSlots_spinner().setEnabled(false);
for (int t = getChunkworkers().size(); t <= Transference.MAX_WORKERS; t++) {
@@ -245,14 +242,6 @@ public final class Download implements Transference, Runnable, SecureSingleThrea
return _rejectedChunkIds;
}
- public boolean isError509() {
- return _error509;
- }
-
- public void setError509(boolean error509) {
- _error509 = error509;
- }
-
public Object getWorkers_lock() {
return _workers_lock;
}
diff --git a/src/main/java/com/tonikelope/megabasterd/DownloadView.java b/src/main/java/com/tonikelope/megabasterd/DownloadView.java
index 6c2606652..c973d7abd 100644
--- a/src/main/java/com/tonikelope/megabasterd/DownloadView.java
+++ b/src/main/java/com/tonikelope/megabasterd/DownloadView.java
@@ -621,18 +621,6 @@ public final class DownloadView extends javax.swing.JPanel implements Transferen
});
}
- public void set509Error() {
-
- if (!_download.isError509()) {
-
- _download.setError509(true);
-
- speed_label.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/icons8-error-40.png")));
-
- }
-
- }
-
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton close_button;
private javax.swing.JButton copy_link_button;
diff --git a/src/main/java/com/tonikelope/megabasterd/MainPanel.java b/src/main/java/com/tonikelope/megabasterd/MainPanel.java
index d1091e931..9b6f8ebe2 100644
--- a/src/main/java/com/tonikelope/megabasterd/MainPanel.java
+++ b/src/main/java/com/tonikelope/megabasterd/MainPanel.java
@@ -50,7 +50,7 @@ import javax.swing.UIManager;
*/
public final class MainPanel {
- public static final String VERSION = "6.15";
+ public static final String VERSION = "6.16";
public static final int THROTTLE_SLICE_SIZE = 16 * 1024;
public static final int DEFAULT_BYTE_BUFFER_SIZE = 16 * 1024;
public static final int STREAMER_PORT = 1337;
diff --git a/src/main/java/com/tonikelope/megabasterd/SmartMegaProxyManager.java b/src/main/java/com/tonikelope/megabasterd/SmartMegaProxyManager.java
index 0a390e88e..b2de2767f 100644
--- a/src/main/java/com/tonikelope/megabasterd/SmartMegaProxyManager.java
+++ b/src/main/java/com/tonikelope/megabasterd/SmartMegaProxyManager.java
@@ -19,7 +19,7 @@ import java.util.logging.Logger;
public final class SmartMegaProxyManager {
public static String DEFAULT_SMART_PROXY_URL = "https://raw.githubusercontent.com/tonikelope/megabasterd/proxy_list/proxy_list.txt";
- public static final int BLOCK_TIME = 60;
+ public static final int BLOCK_TIME = 120;
private volatile String _proxy_list_url;
private final LinkedHashMap _proxy_list;
private final MainPanel _main_panel;
diff --git a/src/main/java/com/tonikelope/megabasterd/SpeedMeter.java b/src/main/java/com/tonikelope/megabasterd/SpeedMeter.java
index 5c3c44759..94f6543e9 100644
--- a/src/main/java/com/tonikelope/megabasterd/SpeedMeter.java
+++ b/src/main/java/com/tonikelope/megabasterd/SpeedMeter.java
@@ -139,7 +139,7 @@ public final class SpeedMeter implements Runnable {
no_data_count = 0;
- } else if (transference instanceof Download && ((Download) transference).isError509()) {
+ } else if (transference instanceof Download) {
sp = -1;
@@ -193,13 +193,10 @@ public final class SpeedMeter implements Runnable {
trans_info.getKey().getView().updateSpeed(formatBytes(trans_sp) + "/s", true);
- } else if (trans_sp == 0) {
+ } else {
trans_info.getKey().getView().updateSpeed("------", true);
- } else {
-
- trans_info.getKey().getView().updateSpeed("BANDWIDTH LIMIT ERROR!", true);
}
}
diff --git a/src/main/java/com/tonikelope/megabasterd/StreamChunkDownloader.java b/src/main/java/com/tonikelope/megabasterd/StreamChunkDownloader.java
index 9f6fda47a..3613d9501 100644
--- a/src/main/java/com/tonikelope/megabasterd/StreamChunkDownloader.java
+++ b/src/main/java/com/tonikelope/megabasterd/StreamChunkDownloader.java
@@ -112,7 +112,17 @@ public class StreamChunkDownloader implements Runnable {
}
} else {
- con = (HttpURLConnection) chunk_url.openConnection();
+ if (current_smart_proxy != null) {
+
+ String[] proxy_info = current_smart_proxy.split(":");
+
+ Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxy_info[0], Integer.parseInt(proxy_info[1])));
+
+ con = (HttpURLConnection) chunk_url.openConnection(proxy);
+
+ } else {
+ con = (HttpURLConnection) chunk_url.openConnection();
+ }
}
}
diff --git a/src/main/resources/images/mbasterd_screen.png b/src/main/resources/images/mbasterd_screen.png
index 149783ef7..738148eac 100644
Binary files a/src/main/resources/images/mbasterd_screen.png and b/src/main/resources/images/mbasterd_screen.png differ