diff --git a/pom.xml b/pom.xml
index 06d43b26b..d657f47da 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.tonikelope
MegaBasterd
- 6.14
+ 6.15
jar
diff --git a/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java b/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java
index 2c6460434..f01e31312 100644
--- a/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java
+++ b/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java
@@ -2,6 +2,7 @@ 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;
@@ -20,7 +21,7 @@ import java.util.logging.Logger;
*/
public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
- public static final double SLOW_PROXY_PERC = 0.1;
+ public static final double SLOW_PROXY_PERC = 0.3;
private final int _id;
private final Download _download;
private volatile boolean _exit;
@@ -99,7 +100,7 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
try {
- int http_error = 0, conta_error = 0, http_status = -1;
+ int http_error = 0, http_status = -1;
boolean timeout = false, chunk_error = false, slow_proxy = false;
@@ -132,7 +133,7 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
proxy_manager.blockProxy(current_smart_proxy);
- Logger.getLogger(MiscTools.class.getName()).log(Level.WARNING, "{0}: excluding proxy -> {1}", new Object[]{Thread.currentThread().getName(), 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});
}
@@ -148,7 +149,7 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
con = (HttpURLConnection) url.openConnection(proxy);
- getDownload().getMain_panel().getView().setSmartProxy(true);
+ getDownload().getView().getSpeed_label().setForeground(new Color(255, 102, 0));
getDownload().enableProxyTurboMode();
@@ -157,8 +158,6 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
URL url = new URL(chunk_url);
con = (HttpURLConnection) url.openConnection();
-
- getDownload().getMain_panel().getView().setSmartProxy(false);
}
} else {
@@ -180,8 +179,6 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
}
current_smart_proxy = null;
-
- getDownload().getMain_panel().getView().setSmartProxy(false);
}
if (current_smart_proxy != null) {
@@ -196,12 +193,6 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
con.setRequestProperty("User-Agent", MainPanel.DEFAULT_USER_AGENT);
- if (getDownload().isError509()) {
- getDownload().getView().set509Error(false);
- }
-
- http_error = 0;
-
long chunk_reads = 0;
chunk_error = true;
@@ -222,12 +213,12 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
if (http_status != 200) {
- Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Failed : HTTP error code : {1}", new Object[]{Thread.currentThread().getName(), http_status});
+ Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Worker [{1}] Failed chunk download : HTTP error code : {2}", new Object[]{Thread.currentThread().getName(), _id, http_status});
http_error = http_status;
if (http_error == 509 && MainPanel.isUse_smart_proxy()) {
- getDownload().getView().set509Error(true);
+ getDownload().getView().set509Error();
}
} else {
@@ -248,7 +239,7 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
byte[] buffer = new byte[DEFAULT_BYTE_BUFFER_SIZE];
- while (!_exit && !slow_proxy && !_download.isStopped() && !_download.getChunkmanager().isExit() && chunk_reads < chunk_size && (reads = is.read(buffer, 0, Math.min((int) (chunk_size - chunk_reads), buffer.length))) != -1) {
+ while (!_exit && !_download.isStopped() && !_download.getChunkmanager().isExit() && chunk_reads < chunk_size && (reads = is.read(buffer, 0, Math.min((int) (chunk_size - chunk_reads), buffer.length))) != -1) {
tmp_chunk_file_os.write(buffer, 0, reads);
@@ -270,22 +261,6 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
}
- if (current_smart_proxy != null) {
-
- long avg_chunk_speed = _download.getMain_panel().getGlobal_dl_speed().getAvg_chunk_speed();
-
- if (avg_chunk_speed != -1) {
- //Proxy speed benchmark
- long chunk_speed = Math.round(chunk_reads / (((double) (System.currentTimeMillis() - init_chunk_time - paused)) / 1000));
-
- if (chunk_speed < Math.round(avg_chunk_speed * SLOW_PROXY_PERC)) {
-
- Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Worker WARNING -> PROXY {1} CHUNK DOWNLOAD SPEED: {2}/s IS VERY SLOW (average is {3}/s)", new Object[]{_id, current_smart_proxy, formatBytes(chunk_speed), formatBytes(avg_chunk_speed)});
-
- slow_proxy = true;
- }
- }
- }
}
finish_chunk_time = System.currentTimeMillis();
@@ -319,8 +294,6 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
tmp_chunk_file.renameTo(chunk_file);
}
- conta_error = 0;
-
chunk_error = false;
http_error = 0;
@@ -329,8 +302,21 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
//Update average chunk download speed using SmartProxy
long chunk_speed = Math.round(chunk_size / (((double) (finish_chunk_time - init_chunk_time - paused)) / 1000));
+
_download.getMain_panel().getGlobal_dl_speed().update_avg_chunk_speed(chunk_speed);
+ long avg_chunk_speed = _download.getMain_panel().getGlobal_dl_speed().getAvg_chunk_speed();
+
+ if (avg_chunk_speed != -1) {
+ //Proxy speed benchmark
+
+ 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)});
+
+ slow_proxy = true;
+ }
+ }
}
_download.getChunkmanager().secureNotify();
@@ -366,13 +352,16 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable {
_download.getProgress_meter().secureNotify();
}
- if (!_exit && !_download.isStopped() && !timeout && (http_error != 509 || !MainPanel.isUse_smart_proxy()) && http_error != 403) {
+ if (!_exit && !_download.isStopped() && !timeout && (http_error != 509 || current_smart_proxy != null) && http_error != 403) {
_error_wait = true;
_download.getView().updateSlotsStatus();
- Thread.sleep(getWaitTimeExpBackOff(++conta_error) * 1000);
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException excep) {
+ }
_error_wait = false;
diff --git a/src/main/java/com/tonikelope/megabasterd/ChunkDownloaderMono.java b/src/main/java/com/tonikelope/megabasterd/ChunkDownloaderMono.java
index fc3ff8b96..1014a03ab 100644
--- a/src/main/java/com/tonikelope/megabasterd/ChunkDownloaderMono.java
+++ b/src/main/java/com/tonikelope/megabasterd/ChunkDownloaderMono.java
@@ -5,7 +5,6 @@ import static com.tonikelope.megabasterd.CryptTools.genDecrypter;
import static com.tonikelope.megabasterd.CryptTools.initMEGALinkKey;
import static com.tonikelope.megabasterd.CryptTools.initMEGALinkKeyIV;
import static com.tonikelope.megabasterd.MainPanel.*;
-import static com.tonikelope.megabasterd.MiscTools.*;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
@@ -41,8 +40,6 @@ public class ChunkDownloaderMono extends ChunkDownloader {
byte[] byte_file_key = initMEGALinkKey(getDownload().getFile_key());
byte[] byte_iv = initMEGALinkKeyIV(getDownload().getFile_key());
- getDownload().getView().set509Error(false);
-
CipherInputStream cis = null;
while (!isExit() && !getDownload().isStopped()) {
@@ -99,10 +96,6 @@ public class ChunkDownloaderMono extends ChunkDownloader {
http_error = 0;
- if (getDownload().isError509()) {
- getDownload().getView().set509Error(false);
- }
-
if (http_status != 200) {
Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Failed : HTTP error code : {1}", new Object[]{Thread.currentThread().getName(), http_status});
@@ -111,7 +104,7 @@ public class ChunkDownloaderMono extends ChunkDownloader {
if (http_error == 509) {
- getDownload().getView().set509Error(true);
+ getDownload().getView().set509Error();
}
@@ -123,7 +116,10 @@ public class ChunkDownloaderMono extends ChunkDownloader {
setError_wait(true);
- Thread.sleep(getWaitTimeExpBackOff(conta_error) * 1000);
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException excep) {
+ }
setError_wait(false);
}
@@ -152,13 +148,6 @@ public class ChunkDownloaderMono extends ChunkDownloader {
secureWait();
- } else if (!getDownload().isPaused() && getDownload().getMain_panel().getDownload_manager().isPaused_all()) {
-
- getDownload().pause();
-
- getDownload().pause_worker_mono();
-
- secureWait();
}
}
@@ -178,7 +167,7 @@ public class ChunkDownloaderMono extends ChunkDownloader {
}
- } catch (IOException | InterruptedException ex) {
+ } catch (IOException ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
@@ -198,7 +187,10 @@ public class ChunkDownloaderMono extends ChunkDownloader {
setError_wait(true);
- Thread.sleep(getWaitTimeExpBackOff(++conta_error) * 1000);
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException excep) {
+ }
setError_wait(false);
}
diff --git a/src/main/java/com/tonikelope/megabasterd/DownloadView.java b/src/main/java/com/tonikelope/megabasterd/DownloadView.java
index 2aaaa8d38..6c2606652 100644
--- a/src/main/java/com/tonikelope/megabasterd/DownloadView.java
+++ b/src/main/java/com/tonikelope/megabasterd/DownloadView.java
@@ -621,11 +621,16 @@ public final class DownloadView extends javax.swing.JPanel implements Transferen
});
}
- public void set509Error(boolean error) {
+ public void set509Error() {
- _download.setError509(error);
+ if (!_download.isError509()) {
+
+ _download.setError509(true);
+
+ speed_label.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/icons8-error-40.png")));
+
+ }
- speed_label.setIcon(error ? new javax.swing.ImageIcon(getClass().getResource("/images/icons8-error-40.png")) : null);
}
// Variables declaration - do not modify//GEN-BEGIN:variables
diff --git a/src/main/java/com/tonikelope/megabasterd/MainPanel.java b/src/main/java/com/tonikelope/megabasterd/MainPanel.java
index cce0665ba..d1091e931 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.14";
+ public static final String VERSION = "6.15";
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;
@@ -61,7 +61,7 @@ public final class MainPanel {
public static Font DEFAULT_FONT = createAndRegisterFont("/fonts/Kalam-Light.ttf");
public static final float ZOOM_FACTOR = 1.0f;
public static final String DEFAULT_USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0";
- public static final String ICON_FILE = "/images/mbasterd_32.png";
+ public static final String ICON_FILE = "/images/pica_roja_big.png";
public static final ExecutorService THREAD_POOL = newCachedThreadPool();
private static Boolean _app_image;
private static String _proxy_host;
diff --git a/src/main/java/com/tonikelope/megabasterd/MainPanelView.form b/src/main/java/com/tonikelope/megabasterd/MainPanelView.form
index ece529882..3b00334a3 100644
--- a/src/main/java/com/tonikelope/megabasterd/MainPanelView.form
+++ b/src/main/java/com/tonikelope/megabasterd/MainPanelView.form
@@ -122,9 +122,6 @@
-
-
-
diff --git a/src/main/java/com/tonikelope/megabasterd/MainPanelView.java b/src/main/java/com/tonikelope/megabasterd/MainPanelView.java
index 37008a14e..ca0c7b5fc 100644
--- a/src/main/java/com/tonikelope/megabasterd/MainPanelView.java
+++ b/src/main/java/com/tonikelope/megabasterd/MainPanelView.java
@@ -199,34 +199,6 @@ public final class MainPanelView extends javax.swing.JFrame {
}
- public void setSmartProxy(boolean enabled) {
-
- if (enabled) {
- _smart_proxy_threads.put(Thread.currentThread(), true);
- } else {
- _smart_proxy_threads.remove(Thread.currentThread());
- }
-
- if (!_main_panel.isLimit_download_speed()) {
-
- swingInvoke(
- new Runnable() {
- @Override
- public void run() {
-
- if (_smart_proxy_threads.isEmpty()) {
- getGlobal_speed_down_label().setForeground(new Color(0, 128, 255));
- } else {
- getGlobal_speed_down_label().setForeground(new Color(255, 102, 0));
- }
- }
-
- });
-
- }
-
- }
-
public MainPanelView(MainPanel main_panel) {
_main_panel = main_panel;
@@ -553,7 +525,6 @@ public final class MainPanelView extends javax.swing.JFrame {
file_menu.add(jSeparator2);
hide_tray_menu.setFont(new java.awt.Font("Dialog", 0, 18)); // NOI18N
- hide_tray_menu.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/mbasterd_32.png"))); // NOI18N
hide_tray_menu.setText("Hide to tray");
hide_tray_menu.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
diff --git a/src/main/java/com/tonikelope/megabasterd/SmartMegaProxyManager.java b/src/main/java/com/tonikelope/megabasterd/SmartMegaProxyManager.java
index fcac635fc..0a390e88e 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 = 300;
+ public static final int BLOCK_TIME = 60;
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 be3dce0de..5c3c44759 100644
--- a/src/main/java/com/tonikelope/megabasterd/SpeedMeter.java
+++ b/src/main/java/com/tonikelope/megabasterd/SpeedMeter.java
@@ -55,20 +55,23 @@ public final class SpeedMeter implements Runnable {
public void update_avg_chunk_speed(long speed) {
- synchronized (this._chunk_speed_queue) {
+ synchronized (_chunk_speed_queue) {
this._chunk_speed_queue.add(speed);
- long acumulador = 0;
+ if (_chunk_speed_queue.size() == _chunk_speed_queue.maxSize()) {
- Iterator i = this._chunk_speed_queue.iterator();
+ long acumulador = 0;
- while (i.hasNext()) {
+ Iterator i = _chunk_speed_queue.iterator();
- acumulador += (long) i.next();
+ while (i.hasNext()) {
+
+ acumulador += (long) i.next();
+ }
+
+ _avg_chunk_speed = Math.round(((double) acumulador) / _chunk_speed_queue.size());
}
-
- this._avg_chunk_speed = Math.round(((double) acumulador) / this._chunk_speed_queue.size());
}
}
diff --git a/src/main/resources/images/made_in_spain.jpg b/src/main/resources/images/made_in_spain.jpg
deleted file mode 100644
index a805b55ab..000000000
Binary files a/src/main/resources/images/made_in_spain.jpg and /dev/null differ
diff --git a/src/main/resources/images/mbasterd_32.png b/src/main/resources/images/mbasterd_32.png
deleted file mode 100644
index b32aeeb28..000000000
Binary files a/src/main/resources/images/mbasterd_32.png and /dev/null differ
diff --git a/src/main/resources/images/mbasterd_logo_cabreado.png b/src/main/resources/images/mbasterd_logo_cabreado.png
deleted file mode 100644
index 506d5c8ec..000000000
Binary files a/src/main/resources/images/mbasterd_logo_cabreado.png and /dev/null differ
diff --git a/src/main/resources/images/mbasterd_med.png b/src/main/resources/images/mbasterd_med.png
deleted file mode 100644
index 07918a1c2..000000000
Binary files a/src/main/resources/images/mbasterd_med.png and /dev/null differ
diff --git a/src/main/resources/images/mbasterd_mini.png b/src/main/resources/images/mbasterd_mini.png
deleted file mode 100644
index 88557498b..000000000
Binary files a/src/main/resources/images/mbasterd_mini.png and /dev/null differ
diff --git a/src/main/resources/images/mbasterd_screen.png b/src/main/resources/images/mbasterd_screen.png
index 553bdd7d1..149783ef7 100644
Binary files a/src/main/resources/images/mbasterd_screen.png and b/src/main/resources/images/mbasterd_screen.png differ
diff --git a/src/main/resources/images/pica_roja.ico b/src/main/resources/images/pica_roja.ico
deleted file mode 100644
index 5a991707b..000000000
Binary files a/src/main/resources/images/pica_roja.ico and /dev/null differ