diff --git a/nbproject/project.properties b/nbproject/project.properties index 835084d05..f8bc3acbb 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -93,7 +93,7 @@ run.classpath=\ # Space-separated list of JVM arguments used when running the project. # You may also define separate properties like run-sys-prop.name=value instead of -Dname=value. # To set system properties for unit tests define test-sys-prop.name=value: -run.jvmargs=-splash:src/megabasterd/dot_com.png +run.jvmargs=-splash:src/megabasterd/dot_com.png -Djava.util.logging.ConsoleHandler.level=INFO run.test.classpath=\ ${javac.test.classpath}:\ ${build.test.classes.dir} diff --git a/src/megabasterd/AboutDialog.java b/src/megabasterd/AboutDialog.java index 3fda6ab7c..4ad7a8a90 100644 --- a/src/megabasterd/AboutDialog.java +++ b/src/megabasterd/AboutDialog.java @@ -2,9 +2,8 @@ package megabasterd; import java.awt.Dialog; import javax.swing.JOptionPane; -import static megabasterd.MainPanel.THREAD_POOL; -import static megabasterd.MainPanel.VERSION; -import static megabasterd.MiscTools.swingReflectionInvoke; +import static megabasterd.MainPanel.*; +import static megabasterd.MiscTools.*; /** * @@ -176,7 +175,7 @@ public final class AboutDialog extends javax.swing.JDialog { private void mcdown_url_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mcdown_url_buttonActionPerformed - MiscTools.copyTextToClipboard(MEGA_URL); + copyTextToClipboard(MEGA_URL); JOptionPane.showMessageDialog(this, "MEGA URL was copied to clipboard!"); }//GEN-LAST:event_mcdown_url_buttonActionPerformed @@ -193,7 +192,7 @@ public final class AboutDialog extends javax.swing.JDialog { @Override public void run() { - String new_version = MiscTools.checkNewVersion("lYsRWaQB", "uVhntmyKcVECRaOxAbcL4A"); + String new_version = checkNewVersion("lYsRWaQB", "uVhntmyKcVECRaOxAbcL4A"); if (new_version != null) { @@ -215,26 +214,26 @@ public final class AboutDialog extends javax.swing.JDialog { private void pica_roja_labelMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_pica_roja_labelMouseReleased - MiscTools.openBrowserURL(TONIKELOPE_URL); + openBrowserURL(TONIKELOPE_URL); }//GEN-LAST:event_pica_roja_labelMouseReleased private void author_webpage_labelMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_author_webpage_labelMouseReleased - MiscTools.openBrowserURL(TONIKELOPE_URL); + openBrowserURL(TONIKELOPE_URL); }//GEN-LAST:event_author_webpage_labelMouseReleased private void mc_logo_labelMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_mc_logo_labelMouseReleased - MiscTools.openBrowserURL(MEGACRYPTER_URL); + openBrowserURL(MEGACRYPTER_URL); }//GEN-LAST:event_mc_logo_labelMouseReleased private void made_in_spain_labelMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_made_in_spain_labelMouseReleased - MiscTools.openBrowserURL(SPAIN_URL); + openBrowserURL(SPAIN_URL); }//GEN-LAST:event_made_in_spain_labelMouseReleased private void title_labelMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_title_labelMouseReleased - MiscTools.openBrowserURL(MEGABASTERD_GITHUB_URL); + openBrowserURL(MEGABASTERD_GITHUB_URL); }//GEN-LAST:event_title_labelMouseReleased // Variables declaration - do not modify//GEN-BEGIN:variables diff --git a/src/megabasterd/Chunk.java b/src/megabasterd/Chunk.java index a305ab4e3..c9a442161 100644 --- a/src/megabasterd/Chunk.java +++ b/src/megabasterd/Chunk.java @@ -17,10 +17,6 @@ public final class Chunk { private final String _url; private final int _size_multi; - public int getSize_multi() { - return _size_multi; - } - public Chunk(long id, long file_size, String file_url) throws ChunkInvalidException { _size_multi = 1; @@ -75,6 +71,10 @@ public final class Chunk { _data_os = new ByteArrayOutputStream((int) _size); } + public int getSize_multi() { + return _size_multi; + } + public long getOffset() { return _offset; } diff --git a/src/megabasterd/ChunkDownloader.java b/src/megabasterd/ChunkDownloader.java index 1bc808e67..137a94591 100644 --- a/src/megabasterd/ChunkDownloader.java +++ b/src/megabasterd/ChunkDownloader.java @@ -6,9 +6,8 @@ import java.net.URI; import java.net.URISyntaxException; import java.util.logging.Level; import java.util.logging.Logger; -import static java.util.logging.Logger.getLogger; -import static megabasterd.MainPanel.THROTTLE_SLICE_SIZE; -import static megabasterd.MiscTools.getWaitTimeExpBackOff; +import static megabasterd.MainPanel.*; +import static megabasterd.MiscTools.*; import org.apache.http.HttpStatus; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; @@ -80,7 +79,7 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable { _secure_notify_lock.wait(); } catch (InterruptedException ex) { _exit = true; - getLogger(ChunkDownloader.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } @@ -96,9 +95,9 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable { InputStream is; boolean error; - System.out.println("Worker [" + _id + "]: let's do some work!"); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Worker [{1}]: let''s do some work!", new Object[]{Thread.currentThread().getName(), _id}); - try (CloseableHttpClient httpclient = MiscTools.getApacheKissHttpClient()) { + try (CloseableHttpClient httpclient = getApacheKissHttpClient()) { conta_error = 0; error = false; @@ -124,7 +123,7 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable { http_status = httpresponse.getStatusLine().getStatusCode(); if (http_status != HttpStatus.SC_OK) { - System.out.println("Failed : HTTP error code : " + http_status); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Failed : HTTP error code : {1}", new Object[]{Thread.currentThread().getName(), http_status}); error = true; @@ -184,7 +183,7 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable { } else if (!error) { - System.out.println("Worker [" + _id + "] has downloaded chunk [" + chunk.getId() + "]!"); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Worker [{1}] has downloaded chunk [{2}]!", new Object[]{Thread.currentThread().getName(), _id, chunk.getId()}); _download.getChunkwriter().getChunk_queue().put(chunk.getId(), chunk); @@ -208,10 +207,10 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable { _download.getProgress_meter().secureNotify(); } - getLogger(ChunkDownloader.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } catch (InterruptedException ex) { - getLogger(ChunkDownloader.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } @@ -220,16 +219,16 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable { } catch (IOException ex) { _download.emergencyStopDownloader(ex.getMessage()); - getLogger(ChunkDownloader.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } catch (URISyntaxException ex) { - Logger.getLogger(ChunkDownloader.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } _download.stopThisSlot(this); _download.getChunkwriter().secureNotify(); - System.out.println("Worker [" + _id + "]: bye bye"); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Worker [{1}]: bye bye", new Object[]{Thread.currentThread().getName(), _id}); } } diff --git a/src/megabasterd/ChunkDownloaderMono.java b/src/megabasterd/ChunkDownloaderMono.java index b7376165d..b5ff3b076 100644 --- a/src/megabasterd/ChunkDownloaderMono.java +++ b/src/megabasterd/ChunkDownloaderMono.java @@ -6,9 +6,8 @@ import java.net.URI; import java.net.URISyntaxException; import java.util.logging.Level; import java.util.logging.Logger; -import static java.util.logging.Logger.getLogger; -import static megabasterd.MainPanel.THROTTLE_SLICE_SIZE; -import static megabasterd.MiscTools.getWaitTimeExpBackOff; +import static megabasterd.MainPanel.*; +import static megabasterd.MiscTools.*; import org.apache.http.HttpStatus; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; @@ -33,9 +32,9 @@ public class ChunkDownloaderMono extends ChunkDownloader { HttpGet httpget = null; CloseableHttpResponse httpresponse = null; - System.out.println("Worker [" + getId() + "]: let's do some work!"); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Worker [{1}]: let''s do some work!", new Object[]{Thread.currentThread().getName(), getId()}); - try (CloseableHttpClient httpclient = MiscTools.getApacheKissHttpClient()) { + try (CloseableHttpClient httpclient = getApacheKissHttpClient()) { conta_error = 0; error = false; @@ -69,7 +68,7 @@ public class ChunkDownloaderMono extends ChunkDownloader { if (http_status != HttpStatus.SC_OK) { - System.out.println("Failed : HTTP error code : " + http_status); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Failed : HTTP error code : {1}", new Object[]{Thread.currentThread().getName(), http_status}); error = true; @@ -159,10 +158,10 @@ public class ChunkDownloaderMono extends ChunkDownloader { getDownload().getProgress_meter().secureNotify(); } - getLogger(ChunkDownloaderMono.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } catch (InterruptedException ex) { - getLogger(ChunkDownloaderMono.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } } @@ -171,21 +170,19 @@ public class ChunkDownloaderMono extends ChunkDownloader { } catch (IOException ex) { - getLogger(ChunkDownloaderMono.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); getDownload().emergencyStopDownloader(ex.getMessage()); - } catch (URISyntaxException ex) { - Logger.getLogger(ChunkDownloaderMono.class.getName()).log(Level.SEVERE, null, ex); - } catch (InterruptedException ex) { - Logger.getLogger(ChunkDownloaderMono.class.getName()).log(Level.SEVERE, null, ex); + } catch (URISyntaxException | InterruptedException ex) { + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } getDownload().stopThisSlot(this); getDownload().getChunkwriter().secureNotify(); - System.out.println("Worker [" + getId() + "]: bye bye"); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Worker [{1}]: bye bye", new Object[]{Thread.currentThread().getName(), getId()}); } } diff --git a/src/megabasterd/ChunkUploader.java b/src/megabasterd/ChunkUploader.java index 8e6a349ea..3f606e92d 100644 --- a/src/megabasterd/ChunkUploader.java +++ b/src/megabasterd/ChunkUploader.java @@ -18,11 +18,11 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; import java.util.logging.Level; import java.util.logging.Logger; -import static java.util.logging.Logger.getLogger; import javax.crypto.CipherInputStream; import javax.crypto.NoSuchPaddingException; -import static megabasterd.MainPanel.THREAD_POOL; -import static megabasterd.MiscTools.getWaitTimeExpBackOff; +import static megabasterd.MainPanel.*; +import static megabasterd.MiscTools.*; +import static megabasterd.CryptTools.*; import org.apache.http.HttpStatus; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; @@ -79,7 +79,7 @@ public class ChunkUploader implements Runnable, SecureSingleThreadNotifiable { _secure_notify_lock.wait(); } catch (InterruptedException ex) { _exit = true; - getLogger(ChunkUploader.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } @@ -99,13 +99,13 @@ public class ChunkUploader implements Runnable, SecureSingleThreadNotifiable { return _upload; } - public void setError_wait(boolean _error_wait) { - this._error_wait = _error_wait; + public void setError_wait(boolean error_wait) { + _error_wait = error_wait; } @Override public void run() { - System.out.println("ChunkUploader " + getId() + " hello! " + getUpload().getFile_name()); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} ChunkUploader {1} hello! {2}", new Object[]{Thread.currentThread().getName(), getId(), getUpload().getFile_name()}); String worker_url = _upload.getUl_url(); Chunk chunk; @@ -113,7 +113,7 @@ public class ChunkUploader implements Runnable, SecureSingleThreadNotifiable { boolean error; OutputStream out; - try (final CloseableHttpClient httpclient = MiscTools.getApacheKissHttpClient(); RandomAccessFile f = new RandomAccessFile(_upload.getFile_name(), "r");) { + try (final CloseableHttpClient httpclient = getApacheKissHttpClient(); RandomAccessFile f = new RandomAccessFile(_upload.getFile_name(), "r");) { conta_error = 0; @@ -148,7 +148,7 @@ public class ChunkUploader implements Runnable, SecureSingleThreadNotifiable { final FutureTask futureTask; - try (CipherInputStream cis = new CipherInputStream(chunk.getInputStream(), CryptTools.genCrypter("AES", "AES/CTR/NoPadding", _upload.getByte_file_key(), CryptTools.forwardMEGALinkKeyIV(_upload.getByte_file_iv(), chunk.getOffset())))) { + try (CipherInputStream cis = new CipherInputStream(chunk.getInputStream(), genCrypter("AES", "AES/CTR/NoPadding", _upload.getByte_file_key(), forwardMEGALinkKeyIV(_upload.getByte_file_iv(), chunk.getOffset())))) { final PipedInputStream pipein = new PipedInputStream(); final PipedOutputStream pipeout = new PipedOutputStream(pipein); @@ -161,10 +161,12 @@ public class ChunkUploader implements Runnable, SecureSingleThreadNotifiable { return httpclient.execute(httppost); } }); + THREAD_POOL.execute(futureTask); out = new ThrottledOutputStream(pipeout, _upload.getMain_panel().getStream_supervisor()); - System.out.println(" Subiendo chunk " + chunk.getId() + " desde worker " + _id + "..."); - System.out.println(chunk.getUrl()); + + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Uploading chunk {1} from worker {2}...", new Object[]{Thread.currentThread().getName(), chunk.getId(), _id}); + while (!_exit && !_upload.isStopped() && (reads = cis.read(buffer)) != -1) { out.write(buffer, 0, reads); @@ -200,7 +202,7 @@ public class ChunkUploader implements Runnable, SecureSingleThreadNotifiable { } if (httpresponse != null && (http_status = httpresponse.getStatusLine().getStatusCode()) != HttpStatus.SC_OK) { - System.out.println("Failed : HTTP error code : " + http_status); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Failed : HTTP error code : {1}", new Object[]{Thread.currentThread().getName(), http_status}); error = true; @@ -235,13 +237,13 @@ public class ChunkUploader implements Runnable, SecureSingleThreadNotifiable { if (MegaAPI.checkMEGAError(response) != 0) { - System.out.println("UPLOAD FAILED! (MEGA ERROR: " + MegaAPI.checkMEGAError(response) + ")"); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} UPLOAD FAILED! (MEGA ERROR: {1})", new Object[]{Thread.currentThread().getName(), MegaAPI.checkMEGAError(response)}); error = true; } else { - System.out.println("Completion handle -> " + response); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Completion handle -> {1}", new Object[]{Thread.currentThread().getName(), response}); _upload.setCompletion_handle(response); } @@ -272,7 +274,7 @@ public class ChunkUploader implements Runnable, SecureSingleThreadNotifiable { } else if (!error) { - System.out.println(" Worker " + _id + " ha subido chunk " + chunk.getId()); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Worker {1} has uploaded chunk {2}", new Object[]{Thread.currentThread().getName(), _id, chunk.getId()}); _upload.getMac_generator().getChunk_queue().put(chunk.getId(), chunk); @@ -316,10 +318,10 @@ public class ChunkUploader implements Runnable, SecureSingleThreadNotifiable { _upload.getProgress_meter().secureNotify(); } - getLogger(ChunkUploader.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | InvalidAlgorithmParameterException ex) { - getLogger(ChunkUploader.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } finally { @@ -337,16 +339,16 @@ public class ChunkUploader implements Runnable, SecureSingleThreadNotifiable { _upload.emergencyStopUploader(ex.getMessage()); - getLogger(ChunkUploader.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } catch (URISyntaxException ex) { - Logger.getLogger(ChunkUploader.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } _upload.stopThisSlot(this); _upload.getMac_generator().secureNotify(); - System.out.println("ChunkUploader " + _id + " bye bye..."); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} ChunkUploader {1} bye bye...", new Object[]{Thread.currentThread().getName(), _id}); } } diff --git a/src/megabasterd/ChunkUploaderMono.java b/src/megabasterd/ChunkUploaderMono.java index a1864e38e..13fa48f3b 100644 --- a/src/megabasterd/ChunkUploaderMono.java +++ b/src/megabasterd/ChunkUploaderMono.java @@ -23,11 +23,11 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; import java.util.logging.Level; import java.util.logging.Logger; -import static java.util.logging.Logger.getLogger; import javax.crypto.CipherInputStream; import javax.crypto.NoSuchPaddingException; -import static megabasterd.MainPanel.THREAD_POOL; -import static megabasterd.MiscTools.getWaitTimeExpBackOff; +import static megabasterd.MainPanel.*; +import static megabasterd.MiscTools.*; +import static megabasterd.CryptTools.*; import org.apache.http.HttpStatus; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; @@ -46,14 +46,14 @@ public class ChunkUploaderMono extends ChunkUploader { @Override public void run() { - System.out.println("ChunkUploaderMONO " + getId() + " hello! " + getUpload().getFile_name()); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} ChunkUploaderMONO {1} hello! {2}", new Object[]{Thread.currentThread().getName(), getId(), getUpload().getFile_name()}); String worker_url = getUpload().getUl_url(); Chunk chunk; int reads, conta_error, re, http_status, tot_bytes_up = -1; boolean error = false; - try (CloseableHttpClient httpclient = MiscTools.getApacheKissHttpClient(); RandomAccessFile f = new RandomAccessFile(getUpload().getFile_name(), "r");) { + try (CloseableHttpClient httpclient = getApacheKissHttpClient(); RandomAccessFile f = new RandomAccessFile(getUpload().getFile_name(), "r");) { conta_error = 0; @@ -113,9 +113,9 @@ public class ChunkUploaderMono extends ChunkUploader { if (!isExit() && !getUpload().isStopped()) { - try (CipherInputStream cis = new CipherInputStream(chunk.getInputStream(), CryptTools.genCrypter("AES", "AES/CTR/NoPadding", getUpload().getByte_file_key(), CryptTools.forwardMEGALinkKeyIV(getUpload().getByte_file_iv(), chunk.getOffset())))) { + try (CipherInputStream cis = new CipherInputStream(chunk.getInputStream(), genCrypter("AES", "AES/CTR/NoPadding", getUpload().getByte_file_key(), forwardMEGALinkKeyIV(getUpload().getByte_file_iv(), chunk.getOffset())))) { - System.out.println(" Subiendo chunk " + chunk.getId() + " desde worker " + getId() + "..."); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Uploading chunk {1} from worker {2}...", new Object[]{Thread.currentThread().getName(), chunk.getId(), getId()}); while (!isExit() && !getUpload().isStopped() && (reads = cis.read(buffer)) != -1 && out != null) { out.write(buffer, 0, reads); @@ -165,9 +165,9 @@ public class ChunkUploaderMono extends ChunkUploader { } else if (!error) { - System.out.println(" Worker " + getId() + " ha subido chunk " + chunk.getId()); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Worker {1} has uploaded chunk {2}", new Object[]{Thread.currentThread().getName(), getId(), chunk.getId()}); - System.out.println(chunk.getOffset() + " " + tot_bytes_up + " " + getUpload().getFile_size()); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} {1} {2}", new Object[]{chunk.getOffset(), tot_bytes_up, getUpload().getFile_size()}); if (chunk.getOffset() + tot_bytes_up < getUpload().getFile_size()) { @@ -198,10 +198,10 @@ public class ChunkUploaderMono extends ChunkUploader { getUpload().getProgress_meter().secureNotify(); } - getLogger(ChunkUploader.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | InvalidAlgorithmParameterException | InterruptedException ex) { - getLogger(ChunkUploader.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } @@ -236,7 +236,7 @@ public class ChunkUploaderMono extends ChunkUploader { } else { - System.out.println("Completion handle -> " + response); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Completion handle -> {1}", new Object[]{Thread.currentThread().getName(), response}); getUpload().setCompletion_handle(response); @@ -294,17 +294,17 @@ public class ChunkUploaderMono extends ChunkUploader { getUpload().emergencyStopUploader(ex.getMessage()); - getLogger(ChunkUploader.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } catch (URISyntaxException ex) { - Logger.getLogger(ChunkUploaderMono.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } getUpload().stopThisSlot(this); getUpload().getMac_generator().secureNotify(); - System.out.println("ChunkUploaderMONO " + getId() + " bye bye..."); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} ChunkUploaderMONO {1} bye bye...", new Object[]{Thread.currentThread().getName(), getId()}); } } diff --git a/src/megabasterd/ChunkWriter.java b/src/megabasterd/ChunkWriter.java index 85d8374b9..0d343dc68 100644 --- a/src/megabasterd/ChunkWriter.java +++ b/src/megabasterd/ChunkWriter.java @@ -1,10 +1,16 @@ package megabasterd; +import java.io.IOException; +import java.security.InvalidAlgorithmParameterException; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.logging.Level; -import static java.util.logging.Logger.getLogger; +import java.util.logging.Logger; import javax.crypto.CipherInputStream; +import javax.crypto.NoSuchPaddingException; +import static megabasterd.CryptTools.*; public final class ChunkWriter implements Runnable, SecureSingleThreadNotifiable { @@ -26,8 +32,8 @@ public final class ChunkWriter implements Runnable, SecureSingleThreadNotifiable _download = downloader; _secure_notify_lock = new Object(); _file_size = _download.getFile_size(); - _byte_file_key = CryptTools.initMEGALinkKey(_download.getFile_key()); - _byte_iv = CryptTools.initMEGALinkKeyIV(_download.getFile_key()); + _byte_file_key = initMEGALinkKey(_download.getFile_key()); + _byte_iv = initMEGALinkKeyIV(_download.getFile_key()); _chunk_queue = new ConcurrentHashMap(); _rejectedChunkIds = new ConcurrentLinkedQueue<>(); @@ -66,7 +72,7 @@ public final class ChunkWriter implements Runnable, SecureSingleThreadNotifiable _secure_notify_lock.wait(); } catch (InterruptedException ex) { _exit = true; - getLogger(ChunkWriter.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } @@ -106,17 +112,19 @@ public final class ChunkWriter implements Runnable, SecureSingleThreadNotifiable try { - System.out.println("Filewriter: let's do some work!"); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Filewriter: let''s do some work!", Thread.currentThread().getName()); if (_file_size > 0) { while (!_exit && (!_download.isStopped() || !_download.getChunkworkers().isEmpty()) && _bytes_written < _file_size) { while (_chunk_queue.containsKey(_last_chunk_id_written + 1)) { current_chunk = _chunk_queue.get(_last_chunk_id_written + 1); - try (CipherInputStream cis = new CipherInputStream(current_chunk.getInputStream(), CryptTools.genDecrypter("AES", "AES/CTR/NoPadding", _byte_file_key, CryptTools.forwardMEGALinkKeyIV(_byte_iv, _bytes_written)))) { + try (CipherInputStream cis = new CipherInputStream(current_chunk.getInputStream(), genDecrypter("AES", "AES/CTR/NoPadding", _byte_file_key, forwardMEGALinkKeyIV(_byte_iv, _bytes_written)))) { while ((reads = cis.read(buffer)) != -1) { _download.getOutput_stream().write(buffer, 0, reads); } + } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | InvalidAlgorithmParameterException ex) { + Logger.getLogger(ChunkWriter.class.getName()).log(Level.SEVERE, null, ex); } _bytes_written += current_chunk.getSize(); @@ -129,17 +137,16 @@ public final class ChunkWriter implements Runnable, SecureSingleThreadNotifiable if (!_exit && (!_download.isStopped() || !_download.getChunkworkers().isEmpty()) && _bytes_written < _file_size) { - System.out.println("Filewriter waiting for chunk [" + (_last_chunk_id_written + 1) + "]..."); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Filewriter waiting for chunk [{1}{2}]...", new Object[]{Thread.currentThread().getName(), _last_chunk_id_written, 1}); secureWait(); } } } - } catch (Exception ex) { - - System.out.println(ex.getMessage()); + } catch (IOException ex) { + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); _download.emergencyStopDownloader(ex.getMessage()); } @@ -147,7 +154,7 @@ public final class ChunkWriter implements Runnable, SecureSingleThreadNotifiable _download.secureNotify(); - System.out.println("Filewriter: bye bye" + _download.getFile().getName()); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Filewriter: bye bye{1}", new Object[]{Thread.currentThread().getName(), _download.getFile().getName()}); } private long calculateLastWrittenChunk(long temp_file_size) { diff --git a/src/megabasterd/ClipboardSpy.java b/src/megabasterd/ClipboardSpy.java index 73900532a..49e6c0719 100644 --- a/src/megabasterd/ClipboardSpy.java +++ b/src/megabasterd/ClipboardSpy.java @@ -6,8 +6,9 @@ import java.awt.datatransfer.ClipboardOwner; import java.awt.datatransfer.Transferable; import static java.lang.Thread.sleep; import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.logging.Level; import static java.util.logging.Level.SEVERE; -import static java.util.logging.Logger.getLogger; +import java.util.logging.Logger; public final class ClipboardSpy implements Runnable, ClipboardOwner, SecureSingleThreadNotifiable, ClipboardChangeObservable { @@ -51,10 +52,10 @@ public final class ClipboardSpy implements Runnable, ClipboardOwner, SecureSingl gainOwnership(_contents); - System.out.println("Spying clipboard ON..."); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Monitoring clipboard ON...", Thread.currentThread().getName()); } else { - System.out.println("Spying clipboard OFF..."); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Monitoring clipboard OFF...", Thread.currentThread().getName()); } } @@ -77,7 +78,7 @@ public final class ClipboardSpy implements Runnable, ClipboardOwner, SecureSingl try { _secure_notify_lock.wait(); } catch (InterruptedException ex) { - getLogger(ClipboardSpy.class.getName()).log(SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(SEVERE, null, ex); } } @@ -124,7 +125,7 @@ public final class ClipboardSpy implements Runnable, ClipboardOwner, SecureSingl try { sleep(SLEEP); } catch (InterruptedException ex1) { - getLogger(ClipboardSpy.class.getName()).log(SEVERE, null, ex1); + Logger.getLogger(getClass().getName()).log(SEVERE, null, ex1); } } @@ -151,7 +152,7 @@ public final class ClipboardSpy implements Runnable, ClipboardOwner, SecureSingl try { sleep(SLEEP); } catch (InterruptedException ex1) { - getLogger(ClipboardSpy.class.getName()).log(SEVERE, null, ex1); + Logger.getLogger(getClass().getName()).log(SEVERE, null, ex1); } } diff --git a/src/megabasterd/ContextMenuMouseListener.java b/src/megabasterd/ContextMenuMouseListener.java index 5710bd3c4..7aa43418a 100644 --- a/src/megabasterd/ContextMenuMouseListener.java +++ b/src/megabasterd/ContextMenuMouseListener.java @@ -90,7 +90,7 @@ public final class ContextMenuMouseListener extends MouseAdapter { public void mouseClicked(MouseEvent e) { if (e.getModifiers() == InputEvent.BUTTON3_MASK) { if (!(e.getSource() instanceof JTextComponent)) { - System.out.println(e.getSource().getClass()); + return; } diff --git a/src/megabasterd/CryptTools.java b/src/megabasterd/CryptTools.java index 3db879ab3..3081eb17a 100644 --- a/src/megabasterd/CryptTools.java +++ b/src/megabasterd/CryptTools.java @@ -30,17 +30,7 @@ import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.SecretKeySpec; import javax.swing.JOptionPane; -import static megabasterd.MiscTools.BASE642Bin; -import static megabasterd.MiscTools.Bin2UrlBASE64; -import static megabasterd.MiscTools.UrlBASE642Bin; -import static megabasterd.MiscTools.bin2i32a; -import static megabasterd.MiscTools.findFirstRegex; -import static megabasterd.MiscTools.getApacheKissHttpClient; -import static megabasterd.MiscTools.hex2bin; -import static megabasterd.MiscTools.i32a2bin; -import static megabasterd.MiscTools.long2bytearray; -import static megabasterd.MiscTools.recReverseArray; -import static megabasterd.MiscTools.swingReflectionInvokeAndWait; +import static megabasterd.MiscTools.*; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; @@ -480,7 +470,7 @@ public final class CryptTools { dec_pass = (String) res_map.get("d"); - byte[] pass_dec_byte = MiscTools.BASE642Bin(dec_pass); + byte[] pass_dec_byte = BASE642Bin(dec_pass); byte[] key = Arrays.copyOfRange(pass_dec_byte, 0, 16); @@ -508,7 +498,7 @@ public final class CryptTools { } } catch (Exception ex) { - Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(CryptTools.class.getName()).log(Level.SEVERE, null, ex); JOptionPane.showMessageDialog(main_panel.getView(), ex.getMessage(), "ELC ERROR", JOptionPane.ERROR_MESSAGE); } } @@ -575,20 +565,20 @@ public final class CryptTools { out.write(buffer, 0, reads); } - enc_dlc_key = MiscTools.findFirstRegex("< *rc *>(.+)< */ *rc *>", new String(out.toByteArray()), 1); + enc_dlc_key = findFirstRegex("< *rc *>(.+)< */ *rc *>", new String(out.toByteArray()), 1); } - String dec_dlc_key = new String(CryptTools.aes_ecb_decrypt(MiscTools.BASE642Bin(enc_dlc_key), MiscTools.hex2bin(dlc_master_key))).trim(); + String dec_dlc_key = new String(CryptTools.aes_ecb_decrypt(BASE642Bin(enc_dlc_key), hex2bin(dlc_master_key))).trim(); - String dec_dlc_data = new String(CryptTools.aes_cbc_decrypt(MiscTools.BASE642Bin(enc_dlc_data), MiscTools.BASE642Bin(dec_dlc_key), MiscTools.BASE642Bin(dec_dlc_key))).trim(); + String dec_dlc_data = new String(CryptTools.aes_cbc_decrypt(BASE642Bin(enc_dlc_data), BASE642Bin(dec_dlc_key), BASE642Bin(dec_dlc_key))).trim(); - String dec_dlc_data_file = MiscTools.findFirstRegex("< *file *>(.+)< */ *file *>", new String(MiscTools.BASE642Bin(dec_dlc_data)), 1); + String dec_dlc_data_file = findFirstRegex("< *file *>(.+)< */ *file *>", new String(BASE642Bin(dec_dlc_data)), 1); - ArrayList urls = MiscTools.findAllRegex("< *url *>(.+)< */ *url *>", dec_dlc_data_file, 1); + ArrayList urls = findAllRegex("< *url *>(.+)< */ *url *>", dec_dlc_data_file, 1); for (String s : urls) { - links.add(new String(MiscTools.BASE642Bin(s))); + links.add(new String(BASE642Bin(s))); } } } catch (Exception ex) { diff --git a/src/megabasterd/DBTools.java b/src/megabasterd/DBTools.java index 4a069cc95..1e31dd832 100644 --- a/src/megabasterd/DBTools.java +++ b/src/megabasterd/DBTools.java @@ -8,7 +8,7 @@ import java.sql.Statement; import java.util.ArrayList; import java.util.HashMap; import java.util.logging.Level; -import static java.util.logging.Logger.getLogger; +import java.util.logging.Logger; /** * @@ -150,7 +150,7 @@ public final class DBTools { value = res.getString(1); } } catch (SQLException ex) { - getLogger(DBTools.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(DBTools.class.getName()).log(Level.SEVERE, null, ex); } return value; diff --git a/src/megabasterd/Download.java b/src/megabasterd/Download.java index 21c96622b..1baacb818 100644 --- a/src/megabasterd/Download.java +++ b/src/megabasterd/Download.java @@ -26,28 +26,16 @@ import static java.util.concurrent.Executors.newCachedThreadPool; import java.util.concurrent.TimeUnit; import java.util.logging.Level; import static java.util.logging.Level.SEVERE; -import static java.util.logging.Logger.getLogger; +import java.util.logging.Logger; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; -import static megabasterd.CryptTools.genCrypter; -import static megabasterd.DBTools.deleteDownload; -import static megabasterd.DBTools.insertDownload; -import static megabasterd.DBTools.selectSettingValueFromDB; -import static megabasterd.MainPanel.THREAD_POOL; -import static megabasterd.MiscTools.UrlBASE642Bin; -import static megabasterd.MiscTools.bin2i32a; -import static megabasterd.MiscTools.checkMegaDownloadUrl; -import static megabasterd.MiscTools.findFirstRegex; -import static megabasterd.MiscTools.formatBytes; -import static megabasterd.MiscTools.getWaitTimeExpBackOff; -import static megabasterd.MiscTools.i32a2bin; -import static megabasterd.MiscTools.swingReflectionInvoke; -import static megabasterd.MiscTools.swingReflectionInvokeAndWait; -import static megabasterd.MiscTools.swingReflectionInvokeAndWaitForReturn; -import static megabasterd.MiscTools.truncateText; -import static megabasterd.Transference.MAX_WAIT_WORKERS_SHUTDOWN; +import static megabasterd.MiscTools.*; +import static megabasterd.CryptTools.*; +import static megabasterd.DBTools.*; +import static megabasterd.MainPanel.*; +import static megabasterd.Transference.*; /** * @@ -514,7 +502,7 @@ public final class Download implements Transference, Runnable, SecureSingleThrea _thread_pool.shutdown(); - System.out.println("Chunkdownloaders finished!"); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Chunkdownloaders finished!", Thread.currentThread().getName()); getProgress_meter().setExit(true); @@ -522,22 +510,22 @@ public final class Download implements Transference, Runnable, SecureSingleThrea try { - System.out.println("Esperando a que todos los hilos terminen..."); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Waiting all threads to finish...", Thread.currentThread().getName()); _thread_pool.awaitTermination(MAX_WAIT_WORKERS_SHUTDOWN, TimeUnit.SECONDS); } catch (InterruptedException ex) { - getLogger(Upload.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } if (!_thread_pool.isTerminated()) { - System.out.println("Cerrando thread pool a lo mecagüen..."); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Closing thread pool ''mecag\u00fcen'' style...", Thread.currentThread().getName()); _thread_pool.shutdownNow(); } - System.out.println("Downloader thread pool finished!"); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Downloader thread pool finished!", Thread.currentThread().getName()); getMain_panel().getGlobal_dl_speed().detachTransference(this); @@ -697,10 +685,10 @@ public final class Download implements Transference, Runnable, SecureSingleThrea _status_error = true; - System.out.println(ex.getMessage()); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } catch (Exception ex) { - System.out.println(ex.getMessage()); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } if (!_exit) { @@ -710,7 +698,7 @@ public final class Download implements Transference, Runnable, SecureSingleThrea try { deleteDownload(_url); } catch (SQLException ex) { - getLogger(Download.class.getName()).log(SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(SEVERE, null, ex); } } @@ -732,7 +720,7 @@ public final class Download implements Transference, Runnable, SecureSingleThrea swingReflectionInvoke("setVisible", getView().getRestart_button(), true); } - System.out.println(_file_name + " Downloader: bye bye"); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0}{1} Downloader: bye bye", new Object[]{Thread.currentThread().getName(), _file_name}); } public void provisionIt(boolean retry) throws MegaAPIException, MegaCrypterAPIException { @@ -776,7 +764,7 @@ public final class Download implements Transference, Runnable, SecureSingleThrea } catch (SQLException ex) { - getLogger(Download.class.getName()).log(SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(SEVERE, null, ex); exit_message = "Error registering download (file " + _download_path + "/" + _file_name + " already downloading or megabasterd.db file is corrupted :()"; } @@ -804,7 +792,7 @@ public final class Download implements Transference, Runnable, SecureSingleThrea throw ex; - } catch (Exception ex) { + } catch (NumberFormatException ex) { exit_message = ex.getMessage(); } @@ -891,7 +879,7 @@ public final class Download implements Transference, Runnable, SecureSingleThrea download_url = _ma.getMegaFileDownloadUrl(_url); } else { - download_url = MegaCrypterAPI.getMegaFileDownloadUrl(_url, _file_pass, _file_noexpire, _ma.getSid(), this.getMain_panel().getMega_proxy_server() != null ? (this.getMain_panel().getMega_proxy_server().getPort() + ":" + MiscTools.Bin2BASE64(("megacrypter:" + this.getMain_panel().getMega_proxy_server().getPassword()).getBytes())) : null); + download_url = MegaCrypterAPI.getMegaFileDownloadUrl(_url, _file_pass, _file_noexpire, _ma.getSid(), getMain_panel().getMega_proxy_server() != null ? (getMain_panel().getMega_proxy_server().getPort() + ":" + Bin2BASE64(("megacrypter:" + getMain_panel().getMega_proxy_server().getPassword()).getBytes())) : null); } if (checkMegaDownloadUrl(download_url)) { @@ -939,7 +927,7 @@ public final class Download implements Transference, Runnable, SecureSingleThrea _thread_pool.execute(c); } catch (java.util.concurrent.RejectedExecutionException e) { - System.out.println(e.getMessage()); + Logger.getLogger(getClass().getName()).log(Level.INFO, e.getMessage()); } } } @@ -1111,7 +1099,7 @@ public final class Download implements Transference, Runnable, SecureSingleThrea try { deleteDownload(_url); } catch (SQLException ex) { - getLogger(Download.class.getName()).log(SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(SEVERE, null, ex); } getMain_panel().getDownload_manager().getTransference_running_list().remove(this); @@ -1129,11 +1117,11 @@ public final class Download implements Transference, Runnable, SecureSingleThrea if (isRetrying_request()) { - getView().stop("Retrying cancelled! " + MiscTools.truncateText(_url, 80)); + getView().stop("Retrying cancelled! " + truncateText(_url, 80)); } else if (isChecking_cbc()) { - getView().stop("Verification cancelled! " + MiscTools.truncateText(_file_name, 80)); + getView().stop("Verification cancelled! " + truncateText(_file_name, 80)); } else { @@ -1194,7 +1182,7 @@ public final class Download implements Transference, Runnable, SecureSingleThrea file_info = _ma.getMegaFileMetadata(link); } else { - file_info = MegaCrypterAPI.getMegaFileMetadata(link, panel, this.getMain_panel().getMega_proxy_server() != null ? (this.getMain_panel().getMega_proxy_server().getPort() + ":" + MiscTools.Bin2BASE64(("megacrypter:" + this.getMain_panel().getMega_proxy_server().getPassword()).getBytes())) : null); + file_info = MegaCrypterAPI.getMegaFileMetadata(link, panel, getMain_panel().getMega_proxy_server() != null ? (getMain_panel().getMega_proxy_server().getPort() + ":" + Bin2BASE64(("megacrypter:" + getMain_panel().getMega_proxy_server().getPassword()).getBytes())) : null); } } catch (MegaAPIException | MegaCrypterAPIException ex) { @@ -1207,31 +1195,31 @@ public final class Download implements Transference, Runnable, SecureSingleThrea switch (error_code) { case -2: - emergencyStopDownloader("Mega link is not valid! " + MiscTools.truncateText(link, 80)); + emergencyStopDownloader("Mega link is not valid! " + truncateText(link, 80)); break; case -14: - emergencyStopDownloader("Mega link is not valid! " + MiscTools.truncateText(link, 80)); + emergencyStopDownloader("Mega link is not valid! " + truncateText(link, 80)); break; case 22: - emergencyStopDownloader("MegaCrypter link is not valid! " + MiscTools.truncateText(link, 80)); + emergencyStopDownloader("MegaCrypter link is not valid! " + truncateText(link, 80)); break; case 23: - emergencyStopDownloader("MegaCrypter link is blocked! " + MiscTools.truncateText(link, 80)); + emergencyStopDownloader("MegaCrypter link is blocked! " + truncateText(link, 80)); break; case 24: - emergencyStopDownloader("MegaCrypter link has expired! " + MiscTools.truncateText(link, 80)); + emergencyStopDownloader("MegaCrypter link has expired! " + truncateText(link, 80)); break; case 25: - emergencyStopDownloader("MegaCrypter link pass error! " + MiscTools.truncateText(link, 80)); + emergencyStopDownloader("MegaCrypter link pass error! " + truncateText(link, 80)); break; default: - emergencyStopDownloader("MEGA/MC API FATAL ERROR: " + ex.getMessage() + " " + MiscTools.truncateText(link, 80)); + emergencyStopDownloader("MEGA/MC API FATAL ERROR: " + ex.getMessage() + " " + truncateText(link, 80)); break; } @@ -1267,7 +1255,7 @@ public final class Download implements Transference, Runnable, SecureSingleThrea } catch (Exception ex) { if (!(ex instanceof MegaAPIException || ex instanceof MegaCrypterAPIException)) { - emergencyStopDownloader("Mega link is not valid! " + MiscTools.truncateText(link, 80)); + emergencyStopDownloader("Mega link is not valid! " + truncateText(link, 80)); } } @@ -1297,7 +1285,7 @@ public final class Download implements Transference, Runnable, SecureSingleThrea dl_url = _ma.getMegaFileDownloadUrl(link); } else { - dl_url = MegaCrypterAPI.getMegaFileDownloadUrl(link, _file_pass, _file_noexpire, _ma.getSid(), this.getMain_panel().getMega_proxy_server() != null ? (this.getMain_panel().getMega_proxy_server().getPort() + ":" + MiscTools.Bin2BASE64(("megacrypter:" + this.getMain_panel().getMega_proxy_server().getPassword()).getBytes())) : null); + dl_url = MegaCrypterAPI.getMegaFileDownloadUrl(link, _file_pass, _file_noexpire, _ma.getSid(), getMain_panel().getMega_proxy_server() != null ? (getMain_panel().getMega_proxy_server().getPort() + ":" + Bin2BASE64(("megacrypter:" + getMain_panel().getMega_proxy_server().getPassword()).getBytes())) : null); } } catch (MegaAPIException | MegaCrypterAPIException ex) { @@ -1307,19 +1295,19 @@ public final class Download implements Transference, Runnable, SecureSingleThrea switch (error_code) { case 22: - emergencyStopDownloader("MegaCrypter link is not valid! " + MiscTools.truncateText(link, 80)); + emergencyStopDownloader("MegaCrypter link is not valid! " + truncateText(link, 80)); break; case 23: - emergencyStopDownloader("MegaCrypter link is blocked! " + MiscTools.truncateText(link, 80)); + emergencyStopDownloader("MegaCrypter link is blocked! " + truncateText(link, 80)); break; case 24: - emergencyStopDownloader("MegaCrypter link has expired! " + MiscTools.truncateText(link, 80)); + emergencyStopDownloader("MegaCrypter link has expired! " + truncateText(link, 80)); break; case 25: - emergencyStopDownloader("MegaCrypter link pass error! " + MiscTools.truncateText(link, 80)); + emergencyStopDownloader("MegaCrypter link pass error! " + truncateText(link, 80)); break; default: @@ -1394,7 +1382,7 @@ public final class Download implements Transference, Runnable, SecureSingleThrea _secure_notify_lock.wait(); } catch (InterruptedException ex) { _exit = true; - getLogger(Download.class.getName()).log(SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(SEVERE, null, ex); } } diff --git a/src/megabasterd/DownloadManager.java b/src/megabasterd/DownloadManager.java index 3da7bc71e..e21ad28d6 100644 --- a/src/megabasterd/DownloadManager.java +++ b/src/megabasterd/DownloadManager.java @@ -3,10 +3,11 @@ package megabasterd; import java.awt.Component; import java.sql.SQLException; import java.util.ArrayList; +import java.util.logging.Level; import static java.util.logging.Level.SEVERE; -import static java.util.logging.Logger.getLogger; -import static megabasterd.DBTools.deleteDownloads; -import static megabasterd.MainPanel.THREAD_POOL; +import java.util.logging.Logger; +import static megabasterd.DBTools.*; +import static megabasterd.MainPanel.*; public final class DownloadManager extends TransferenceManager { @@ -41,7 +42,7 @@ public final class DownloadManager extends TransferenceManager { try { deleteDownloads(delete_down.toArray(new String[delete_down.size()])); } catch (SQLException ex) { - getLogger(DownloadManager.class.getName()).log(SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(SEVERE, null, ex); } secureNotify(); @@ -59,7 +60,7 @@ public final class DownloadManager extends TransferenceManager { } catch (MegaAPIException | MegaCrypterAPIException ex) { - System.out.println("Provision failed! Retrying in separated thread..."); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Provision failed! Retrying in separated thread...", Thread.currentThread().getName()); THREAD_POOL.execute(new Runnable() { @Override @@ -71,7 +72,7 @@ public final class DownloadManager extends TransferenceManager { } catch (MegaAPIException | MegaCrypterAPIException ex1) { - getLogger(DownloadManager.class.getName()).log(SEVERE, null, ex1); + Logger.getLogger(getClass().getName()).log(SEVERE, null, ex1); } secureNotify(); diff --git a/src/megabasterd/DownloadView.java b/src/megabasterd/DownloadView.java index 2377a41c2..116c5be0b 100644 --- a/src/megabasterd/DownloadView.java +++ b/src/megabasterd/DownloadView.java @@ -11,9 +11,8 @@ import javax.swing.JOptionPane; import javax.swing.JProgressBar; import javax.swing.JSpinner; import javax.swing.SpinnerNumberModel; -import static megabasterd.MainPanel.THREAD_POOL; -import static megabasterd.MiscTools.swingReflectionInvoke; -import static megabasterd.MiscTools.swingReflectionInvokeAndWait; +import static megabasterd.MainPanel.*; +import static megabasterd.MiscTools.*; public final class DownloadView extends javax.swing.JPanel implements TransferenceView { @@ -230,7 +229,7 @@ public final class DownloadView extends javax.swing.JPanel implements Transferen }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); - this.setLayout(layout); + setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() @@ -327,7 +326,7 @@ public final class DownloadView extends javax.swing.JPanel implements Transferen private void copy_link_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_copy_link_buttonActionPerformed - MiscTools.copyTextToClipboard(_download.getUrl()); + copyTextToClipboard(_download.getUrl()); JOptionPane.showMessageDialog(_download.getMain_panel().getView(), "Link was copied to clipboard!"); }//GEN-LAST:event_copy_link_buttonActionPerformed diff --git a/src/megabasterd/FileGrabberDialog.java b/src/megabasterd/FileGrabberDialog.java index 8b6e67a99..6387e927b 100644 --- a/src/megabasterd/FileGrabberDialog.java +++ b/src/megabasterd/FileGrabberDialog.java @@ -5,8 +5,6 @@ import java.awt.Dialog; import java.io.File; import java.util.ArrayList; import java.util.Enumeration; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.swing.JComboBox; import javax.swing.JFileChooser; import javax.swing.JTextField; @@ -14,15 +12,8 @@ import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeModel; import javax.swing.tree.TreeNode; -import static megabasterd.MainPanel.THREAD_POOL; -import static megabasterd.MiscTools.deleteAllExceptSelectedTreeItems; -import static megabasterd.MiscTools.deleteSelectedTreeItems; -import static megabasterd.MiscTools.formatBytes; -import static megabasterd.MiscTools.genID; -import static megabasterd.MiscTools.sortTree; -import static megabasterd.MiscTools.swingReflectionInvoke; -import static megabasterd.MiscTools.swingReflectionInvokeAndWait; -import static megabasterd.MiscTools.swingReflectionInvokeAndWaitForReturn; +import static megabasterd.MainPanel.*; +import static megabasterd.MiscTools.*; /** * @@ -36,7 +27,7 @@ public final class FileGrabberDialog extends javax.swing.JDialog { private long _total_space; private volatile String _last_selected_account; private final MainPanel _main_panel; - private boolean _remember_master_pass; + private final boolean _remember_master_pass; public boolean isUpload() { return _upload; @@ -351,8 +342,6 @@ public final class FileGrabberDialog extends javax.swing.JDialog { _base_path = files_selected[0].getParentFile().getAbsolutePath(); - System.out.println(_base_path); - dir_name_textfield.setText(files_selected[0].getParentFile().getName() + "_" + genID(10)); dir_name_textfield.setEnabled(true); @@ -436,8 +425,6 @@ public final class FileGrabberDialog extends javax.swing.JDialog { _base_path = filechooser.getSelectedFile().getAbsolutePath(); - System.out.println(_base_path); - dir_name_textfield.setText(filechooser.getSelectedFile().getName() + "_" + genID(10)); dir_name_textfield.setEnabled(true); @@ -496,7 +483,7 @@ public final class FileGrabberDialog extends javax.swing.JDialog { _upload = true; - this.setVisible(false); + setVisible(false); }//GEN-LAST:event_dance_buttonActionPerformed private void account_comboboxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_account_comboboxItemStateChanged @@ -533,9 +520,9 @@ public final class FileGrabberDialog extends javax.swing.JDialog { MegaAPI ma = null; try { - ma = MiscTools.checkMegaAccountLoginAndShowMasterPassDialog(_main_panel, tthis, email); + ma = checkMegaAccountLoginAndShowMasterPassDialog(_main_panel, tthis, email); } catch (Exception ex) { - Logger.getLogger(FileGrabberDialog.class.getName()).log(Level.SEVERE, null, ex); + } Long[] quota = null; diff --git a/src/megabasterd/FolderLinkDialog.java b/src/megabasterd/FolderLinkDialog.java index 28709d434..2f0c48134 100644 --- a/src/megabasterd/FolderLinkDialog.java +++ b/src/megabasterd/FolderLinkDialog.java @@ -1,24 +1,18 @@ package megabasterd; import java.util.ArrayList; +import java.util.Collections; import java.util.Enumeration; import java.util.HashMap; import java.util.List; import java.util.Map; import static java.util.logging.Level.SEVERE; -import static java.util.logging.Logger.getLogger; +import java.util.logging.Logger; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeModel; import javax.swing.tree.TreeNode; -import static megabasterd.MainPanel.THREAD_POOL; -import static megabasterd.MiscTools.deleteAllExceptSelectedTreeItems; -import static megabasterd.MiscTools.deleteSelectedTreeItems; -import static megabasterd.MiscTools.findFirstRegex; -import static megabasterd.MiscTools.formatBytes; -import static megabasterd.MiscTools.sortTree; -import static megabasterd.MiscTools.swingReflectionInvoke; -import static megabasterd.MiscTools.swingReflectionInvokeAndWait; -import static megabasterd.MiscTools.swingReflectionInvokeAndWaitForReturn; +import static megabasterd.MainPanel.*; +import static megabasterd.MiscTools.*; /** * @@ -26,7 +20,7 @@ import static megabasterd.MiscTools.swingReflectionInvokeAndWaitForReturn; */ public final class FolderLinkDialog extends javax.swing.JDialog { - private String _link; + private final String _link; private boolean _download; @@ -37,7 +31,7 @@ public final class FolderLinkDialog extends javax.swing.JDialog { private boolean _mega_error; public List getDownload_links() { - return _download_links; + return Collections.unmodifiableList(_download_links); } public boolean isDownload() { @@ -247,7 +241,7 @@ public final class FolderLinkDialog extends javax.swing.JDialog { _download = true; - this.setVisible(false); + setVisible(false); }//GEN-LAST:event_dance_buttonActionPerformed private void skip_rest_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_skip_rest_buttonActionPerformed @@ -376,7 +370,7 @@ public final class FolderLinkDialog extends javax.swing.JDialog { } catch (Exception ex) { - getLogger(FolderLinkDialog.class.getName()).log(SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(SEVERE, null, ex); _mega_error = true; } @@ -418,7 +412,7 @@ public final class FolderLinkDialog extends javax.swing.JDialog { download_link.put("url", url); - download_link.put("filename", MiscTools.cleanFilePath(path)); + download_link.put("filename", cleanFilePath(path)); download_link.put("filekey", ((Map) node.getUserObject()).get("key")); diff --git a/src/megabasterd/GetMasterPasswordDialog.java b/src/megabasterd/GetMasterPasswordDialog.java index a851e2132..66012bbbd 100644 --- a/src/megabasterd/GetMasterPasswordDialog.java +++ b/src/megabasterd/GetMasterPasswordDialog.java @@ -8,10 +8,8 @@ import java.util.logging.Logger; import javax.swing.JCheckBox; import javax.swing.JOptionPane; import javax.swing.JPasswordField; -import static megabasterd.MainPanel.THREAD_POOL; -import static megabasterd.MiscTools.Bin2BASE64; -import static megabasterd.MiscTools.HashBin; -import static megabasterd.MiscTools.swingReflectionInvoke; +import static megabasterd.MainPanel.*; +import static megabasterd.MiscTools.*; /** * @@ -182,7 +180,7 @@ public class GetMasterPasswordDialog extends javax.swing.JDialog { private void cancel_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancel_buttonActionPerformed - this.setVisible(false); + setVisible(false); }//GEN-LAST:event_cancel_buttonActionPerformed private void ok_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ok_buttonActionPerformed @@ -196,7 +194,7 @@ public class GetMasterPasswordDialog extends javax.swing.JDialog { @Override public void run() { try { - byte[] pass = CryptTools.PBKDF2HMACSHA256(new String(current_pass_textfield.getPassword()), MiscTools.BASE642Bin(_salt), CryptTools.PBKDF2_ITERATIONS); + byte[] pass = CryptTools.PBKDF2HMACSHA256(new String(current_pass_textfield.getPassword()), BASE642Bin(_salt), CryptTools.PBKDF2_ITERATIONS); String pass_hash = Bin2BASE64(HashBin("SHA-1", pass)); @@ -222,7 +220,7 @@ public class GetMasterPasswordDialog extends javax.swing.JDialog { } } catch (Exception ex) { - Logger.getLogger(GetMasterPasswordDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } }); diff --git a/src/megabasterd/GlobalSpeedMeter.java b/src/megabasterd/GlobalSpeedMeter.java index 7267cd1b7..db1337e6d 100644 --- a/src/megabasterd/GlobalSpeedMeter.java +++ b/src/megabasterd/GlobalSpeedMeter.java @@ -7,8 +7,7 @@ import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JLabel; -import static megabasterd.MiscTools.formatBytes; -import static megabasterd.MiscTools.swingReflectionInvoke; +import static megabasterd.MiscTools.*; public final class GlobalSpeedMeter implements Runnable { @@ -165,7 +164,7 @@ public final class GlobalSpeedMeter implements Runnable { Thread.sleep(SLEEP); } catch (InterruptedException ex) { - Logger.getLogger(GlobalSpeedMeter.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } while (true); diff --git a/src/megabasterd/KissVideoStreamServer.java b/src/megabasterd/KissVideoStreamServer.java index 028060d6f..b38a8ac3e 100644 --- a/src/megabasterd/KissVideoStreamServer.java +++ b/src/megabasterd/KissVideoStreamServer.java @@ -20,16 +20,11 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Level; import static java.util.logging.Level.SEVERE; import java.util.logging.Logger; -import static java.util.logging.Logger.getLogger; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.crypto.CipherInputStream; -import static megabasterd.MainPanel.STREAMER_PORT; -import static megabasterd.MainPanel.THREAD_POOL; -import static megabasterd.MiscTools.checkMegaDownloadUrl; -import static megabasterd.MiscTools.findFirstRegex; -import static megabasterd.MiscTools.getWaitTimeExpBackOff; -import static megabasterd.MiscTools.swingReflectionInvoke; +import static megabasterd.MainPanel.*; +import static megabasterd.MiscTools.*; import org.apache.http.HttpStatus; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; @@ -93,7 +88,7 @@ public final class KissVideoStreamServer implements HttpHandler, SecureSingleThr try { _secure_notify_lock.wait(); } catch (InterruptedException ex) { - getLogger(Download.class.getName()).log(SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(SEVERE, null, ex); } } @@ -179,7 +174,7 @@ public final class KissVideoStreamServer implements HttpHandler, SecureSingleThr } else { - file_info = MegaCrypterAPI.getMegaFileMetadata(link, panel, this.getMain_panel().getMega_proxy_server() != null ? (this.getMain_panel().getMega_proxy_server().getPort() + ":" + MiscTools.Bin2BASE64(("megacrypter:" + this.getMain_panel().getMega_proxy_server().getPassword()).getBytes())) : null); + file_info = MegaCrypterAPI.getMegaFileMetadata(link, panel, getMain_panel().getMega_proxy_server() != null ? (getMain_panel().getMega_proxy_server().getPort() + ":" + Bin2BASE64(("megacrypter:" + getMain_panel().getMega_proxy_server().getPassword()).getBytes())) : null); } @@ -238,7 +233,7 @@ public final class KissVideoStreamServer implements HttpHandler, SecureSingleThr MegaAPI ma = null; - if (mega_account == null || (ma = MiscTools.checkMegaAccountLoginAndShowMasterPassDialog(_main_panel, _main_panel.getView(), mega_account)) == null) { + if (mega_account == null || (ma = checkMegaAccountLoginAndShowMasterPassDialog(_main_panel, _main_panel.getView(), mega_account)) == null) { ma = new MegaAPI(); } @@ -247,7 +242,7 @@ public final class KissVideoStreamServer implements HttpHandler, SecureSingleThr dl_url = ma.getMegaFileDownloadUrl(link); } else { - dl_url = MegaCrypterAPI.getMegaFileDownloadUrl(link, pass_hash, noexpire_token, ma.getSid(), this.getMain_panel().getMega_proxy_server() != null ? (this.getMain_panel().getMega_proxy_server().getPort() + ":" + MiscTools.Bin2BASE64(("megacrypter:" + this.getMain_panel().getMega_proxy_server().getPassword()).getBytes())) : null); + dl_url = MegaCrypterAPI.getMegaFileDownloadUrl(link, pass_hash, noexpire_token, ma.getSid(), getMain_panel().getMega_proxy_server() != null ? (getMain_panel().getMega_proxy_server().getPort() + ":" + Bin2BASE64(("megacrypter:" + getMain_panel().getMega_proxy_server().getPassword()).getBytes())) : null); } } catch (MegaAPIException | MegaCrypterAPIException e) { error = true; @@ -277,7 +272,7 @@ public final class KissVideoStreamServer implements HttpHandler, SecureSingleThr } } } catch (Exception ex) { - Logger.getLogger(KissVideoStreamServer.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } while (error); @@ -286,7 +281,7 @@ public final class KissVideoStreamServer implements HttpHandler, SecureSingleThr } private long[] parseRangeHeader(String header) { - System.out.println(header); + Pattern pattern = Pattern.compile("bytes *\\= *([0-9]+) *\\- *([0-9]+)?"); Matcher matcher = pattern.matcher(header); @@ -324,7 +319,7 @@ public final class KissVideoStreamServer implements HttpHandler, SecureSingleThr HttpGet httpget; - try (CloseableHttpClient httpclient = MiscTools.getApacheKissHttpClient()) { + try (CloseableHttpClient httpclient = getApacheKissHttpClient()) { Headers reqheaders = xchg.getRequestHeaders(); @@ -336,7 +331,7 @@ public final class KissVideoStreamServer implements HttpHandler, SecureSingleThr String link; - String[] url_parts = new String(MiscTools.UrlBASE642Bin(url_path.substring(url_path.indexOf("/video/") + 7))).split("\\|"); + String[] url_parts = new String(UrlBASE642Bin(url_path.substring(url_path.indexOf("/video/") + 7))).split("\\|"); mega_account = url_parts[0]; @@ -344,9 +339,9 @@ public final class KissVideoStreamServer implements HttpHandler, SecureSingleThr mega_account = null; } - link = new String(url_parts[1]); + link = url_parts[1]; - System.out.println(link + " " + mega_account); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} {1} {2}", new Object[]{Thread.currentThread().getName(), link, mega_account}); HashMap cache_info, file_info; @@ -521,11 +516,11 @@ public final class KissVideoStreamServer implements HttpHandler, SecureSingleThr } catch (Exception ex) { if (!(ex instanceof IOException)) { - Logger.getLogger(KissVideoStreamServer.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } finally { - System.out.println("KissVideoStreamerHandle: bye bye"); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} KissVideoStreamerHandle: bye bye", Thread.currentThread().getName()); xchg.close(); diff --git a/src/megabasterd/LinkGrabberDialog.java b/src/megabasterd/LinkGrabberDialog.java index fff95d052..c811c80f8 100644 --- a/src/megabasterd/LinkGrabberDialog.java +++ b/src/megabasterd/LinkGrabberDialog.java @@ -14,12 +14,8 @@ import javax.swing.JComboBox; import javax.swing.JFileChooser; import javax.swing.JTextArea; import javax.swing.filechooser.FileNameExtensionFilter; -import static megabasterd.MainPanel.THREAD_POOL; -import static megabasterd.MiscTools.extractMegaLinksFromString; -import static megabasterd.MiscTools.extractStringFromClipboardContents; -import static megabasterd.MiscTools.swingReflectionInvoke; -import static megabasterd.MiscTools.swingReflectionInvokeAndWait; -import static megabasterd.MiscTools.truncateText; +import static megabasterd.MainPanel.*; +import static megabasterd.MiscTools.*; public final class LinkGrabberDialog extends javax.swing.JDialog implements ClipboardChangeObserver { @@ -225,7 +221,7 @@ public final class LinkGrabberDialog extends javax.swing.JDialog implements Clip _download = true; - this.setVisible(false); + setVisible(false); }//GEN-LAST:event_dance_buttonActionPerformed private void change_dir_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_change_dir_buttonActionPerformed @@ -296,7 +292,7 @@ public final class LinkGrabberDialog extends javax.swing.JDialog implements Clip String link = i.next(); - if (MiscTools.findFirstRegex("(?:https?|mega)://[^/]*/(#.*?)?!.+![^\r\n]+", link, 0) == null) { + if (findFirstRegex("(?:https?|mega)://[^/]*/(#.*?)?!.+![^\r\n]+", link, 0) == null) { i.remove(); } @@ -318,9 +314,9 @@ public final class LinkGrabberDialog extends javax.swing.JDialog implements Clip } } catch (FileNotFoundException ex) { - Logger.getLogger(LinkGrabberDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { - Logger.getLogger(LinkGrabberDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } swingReflectionInvoke("setText", dlc_button, "Load DLC container"); @@ -366,16 +362,16 @@ public final class LinkGrabberDialog extends javax.swing.JDialog implements Clip public void run() { try { - MiscTools.checkMegaAccountLoginAndShowMasterPassDialog(_main_panel, tthis, email); + checkMegaAccountLoginAndShowMasterPassDialog(_main_panel, tthis, email); } catch (Exception ex) { _last_selected_account = ""; swingReflectionInvoke("setSelectedIndex", use_mega_account_down_combobox, 1); } - swingReflectionInvokeAndWait("setEnabled", ((LinkGrabberDialog) tthis).getUse_mega_account_down_combobox(), true); + swingReflectionInvokeAndWait("setEnabled", tthis.getUse_mega_account_down_combobox(), true); - swingReflectionInvokeAndWait("setEnabled", ((LinkGrabberDialog) tthis).getDance_button(), true); + swingReflectionInvokeAndWait("setEnabled", tthis.getDance_button(), true); } }); } diff --git a/src/megabasterd/MainPanel.java b/src/megabasterd/MainPanel.java index 1aa45254d..335ef6627 100644 --- a/src/megabasterd/MainPanel.java +++ b/src/megabasterd/MainPanel.java @@ -29,25 +29,13 @@ import static java.util.concurrent.Executors.newCachedThreadPool; import java.util.logging.Level; import static java.util.logging.Level.SEVERE; import java.util.logging.Logger; -import static java.util.logging.Logger.getLogger; import javax.swing.JOptionPane; import static javax.swing.JOptionPane.QUESTION_MESSAGE; import static javax.swing.JOptionPane.YES_NO_CANCEL_OPTION; import static javax.swing.JOptionPane.showOptionDialog; -import static megabasterd.DBTools.deleteUpload; -import static megabasterd.DBTools.selectDownloads; -import static megabasterd.DBTools.selectELCAccounts; -import static megabasterd.DBTools.selectMegaAccounts; -import static megabasterd.DBTools.selectSettingValueFromDB; -import static megabasterd.DBTools.selectUploads; -import static megabasterd.DBTools.setupSqliteTables; -import static megabasterd.MiscTools.BASE642Bin; -import static megabasterd.MiscTools.bin2i32a; -import static megabasterd.MiscTools.setNimbusLookAndFeel; -import static megabasterd.MiscTools.swingReflectionInvoke; -import static megabasterd.MiscTools.swingReflectionInvokeAndWaitForReturn; -import static megabasterd.Transference.LIMIT_TRANSFERENCE_SPEED_DEFAULT; -import static megabasterd.Transference.MAX_TRANSFERENCE_SPEED_DEFAULT; +import static megabasterd.DBTools.*; +import static megabasterd.MiscTools.*; +import static megabasterd.Transference.*; import org.apache.http.auth.Credentials; import org.apache.http.auth.UsernamePasswordCredentials; @@ -57,7 +45,7 @@ import org.apache.http.auth.UsernamePasswordCredentials; */ public final class MainPanel { - public static final String VERSION = "2.25"; + public static final String VERSION = "2.26"; 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; @@ -67,6 +55,10 @@ public final class MainPanel { public static final String ICON_FILE = "mbasterd_mini.png"; public static final String ICON_FILE_MED = "mbasterd_med.png"; public static final ExecutorService THREAD_POOL = newCachedThreadPool(); + private static String _proxy_host; + private static int _proxy_port; + private static Credentials _proxy_credentials; + private static boolean _use_proxy; public static void main(String args[]) { @@ -75,7 +67,7 @@ public final class MainPanel { if (args.length > 0) { try { - System.out.println("Waiting " + args[0] + " seconds before start..."); + Logger.getLogger(MainPanel.class.getName()).log(Level.INFO, "{0} Waiting {1} seconds before start...", new Object[]{Thread.currentThread().getName(), args[0]}); Thread.sleep(Long.parseLong(args[0]) * 1000); } catch (InterruptedException ex) { Logger.getLogger(MainPanel.class.getName()).log(Level.SEVERE, null, ex); @@ -92,6 +84,22 @@ public final class MainPanel { }); } + public static boolean isUse_proxy() { + return _use_proxy; + } + + public static String getProxy_host() { + return _proxy_host; + } + + public static int getProxy_port() { + return _proxy_port; + } + + public static Credentials getProxy_credentials() { + return _proxy_credentials; + } + private volatile MainPanelView _view = null; //lazy init private final GlobalSpeedMeter _global_dl_speed, _global_up_speed; private final DownloadManager _download_manager; @@ -111,10 +119,6 @@ public final class MainPanel { private String _master_pass_hash; private String _master_pass_salt; private boolean _restart; - private static String _proxy_host; - private static int _proxy_port; - private static Credentials _proxy_credentials; - private static boolean _use_proxy; private MegaProxyServer _mega_proxy_server; private int _megacrypter_reverse_port; private boolean _megacrypter_reverse; @@ -131,7 +135,7 @@ public final class MainPanel { trayIcon(); } catch (AWTException ex) { - getLogger(MainPanelView.class.getName()).log(SEVERE, null, ex); + Logger.getLogger(MainPanel.class.getName()).log(SEVERE, null, ex); } try { @@ -139,7 +143,7 @@ public final class MainPanel { setupSqliteTables(); } catch (SQLException ex) { - getLogger(MainPanel.class.getName()).log(SEVERE, null, ex); + Logger.getLogger(MainPanel.class.getName()).log(SEVERE, null, ex); } _restart = false; @@ -185,14 +189,14 @@ public final class MainPanel { try { _streamserver.start(STREAMER_PORT, "/video"); } catch (IOException ex) { - getLogger(MainPanel.class.getName()).log(SEVERE, null, ex); + Logger.getLogger(MainPanel.class.getName()).log(SEVERE, null, ex); } THREAD_POOL.execute(new Runnable() { @Override public void run() { - String new_version = MiscTools.checkNewVersion("lYsRWaQB", "uVhntmyKcVECRaOxAbcL4A"); + String new_version = checkNewVersion("lYsRWaQB", "uVhntmyKcVECRaOxAbcL4A"); if (new_version != null) { @@ -202,7 +206,7 @@ public final class MainPanel { }); if (_megacrypter_reverse) { - _mega_proxy_server = new MegaProxyServer(UUID.randomUUID().toString(), this._megacrypter_reverse_port); + _mega_proxy_server = new MegaProxyServer(UUID.randomUUID().toString(), _megacrypter_reverse_port); _mega_proxy_server.start(); } else { _mega_proxy_server = null; @@ -221,8 +225,8 @@ public final class MainPanel { return _megacrypter_reverse_port; } - public void setMega_proxy_server(MegaProxyServer _mega_proxy_server) { - this._mega_proxy_server = _mega_proxy_server; + public void setMega_proxy_server(MegaProxyServer mega_proxy_server) { + _mega_proxy_server = mega_proxy_server; } public boolean isUse_mega_account_down() { @@ -237,24 +241,8 @@ public final class MainPanel { return _restart; } - public void setRestart(boolean _restart) { - this._restart = _restart; - } - - public static boolean isUse_proxy() { - return _use_proxy; - } - - public static String getProxy_host() { - return _proxy_host; - } - - public static int getProxy_port() { - return _proxy_port; - } - - public static Credentials getProxy_credentials() { - return _proxy_credentials; + public void setRestart(boolean restart) { + _restart = restart; } public HashMap getElc_accounts() { @@ -500,7 +488,7 @@ public final class MainPanel { _mega_accounts = selectMegaAccounts(); _elc_accounts = selectELCAccounts(); } catch (SQLException ex) { - getLogger(MainPanel.class.getName()).log(SEVERE, null, ex); + Logger.getLogger(MainPanel.class.getName()).log(SEVERE, null, ex); } _mega_account_down = DBTools.selectSettingValueFromDB("mega_account_down"); @@ -517,11 +505,11 @@ public final class MainPanel { try { - _master_pass_salt = MiscTools.Bin2BASE64(MiscTools.genRandomByteArray(CryptTools.PBKDF2_SALT_BYTE_LENGTH)); + _master_pass_salt = Bin2BASE64(genRandomByteArray(CryptTools.PBKDF2_SALT_BYTE_LENGTH)); DBTools.insertSettingValueInDB("master_pass_salt", _master_pass_salt); - } catch (Exception ex) { + } catch (SQLException ex) { Logger.getLogger(MainPanel.class.getName()).log(Level.SEVERE, null, ex); } } @@ -650,7 +638,7 @@ public final class MainPanel { swingReflectionInvoke("setVisible", getView(), true); } catch (IOException ex) { - getLogger(MainPanel.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(MainPanel.class.getName()).log(Level.SEVERE, null, ex); } } @@ -669,7 +657,7 @@ public final class MainPanel { } catch (IOException ex1) { - getLogger(MainPanel.class.getName()).log(Level.SEVERE, null, ex1); + Logger.getLogger(MainPanel.class.getName()).log(Level.SEVERE, null, ex1); } } @@ -696,14 +684,14 @@ public final class MainPanel { ArrayList> res = selectDownloads(); for (HashMap o : res) { - System.out.println(o); + try { String email = (String) o.get("email"); MegaAPI ma; - if (!tthis.isUse_mega_account_down() || _mega_accounts.get(email) == null || (ma = MiscTools.checkMegaAccountLoginAndShowMasterPassDialog(tthis, getView(), email)) == null) { + if (!tthis.isUse_mega_account_down() || _mega_accounts.get(email) == null || (ma = checkMegaAccountLoginAndShowMasterPassDialog(tthis, getView(), email)) == null) { ma = new MegaAPI(); } @@ -721,7 +709,7 @@ public final class MainPanel { } catch (SQLException ex) { - getLogger(MainPanelView.class.getName()).log(SEVERE, null, ex); + Logger.getLogger(MainPanel.class.getName()).log(SEVERE, null, ex); } if (conta_downloads > 0) { @@ -835,7 +823,7 @@ public final class MainPanel { if (_mega_accounts.get(email) != null) { - if ((ma = MiscTools.checkMegaAccountLoginAndShowMasterPassDialog(tthis, getView(), email)) == null) { + if ((ma = checkMegaAccountLoginAndShowMasterPassDialog(tthis, getView(), email)) == null) { ma = new MegaAPI(); } @@ -851,7 +839,7 @@ public final class MainPanel { } } catch (Exception ex) { - getLogger(MainPanelView.class.getName()).log(SEVERE, null, ex); + Logger.getLogger(MainPanel.class.getName()).log(SEVERE, null, ex); } } @@ -865,8 +853,8 @@ public final class MainPanel { swingReflectionInvoke("setText", getView().getStatus_up_label(), ""); - } catch (Exception ex) { - getLogger(MainPanel.class.getName()).log(SEVERE, null, ex); + } catch (SQLException ex) { + Logger.getLogger(MainPanel.class.getName()).log(SEVERE, null, ex); } } diff --git a/src/megabasterd/MainPanelView.java b/src/megabasterd/MainPanelView.java index 2b3d39068..e3a9f8244 100644 --- a/src/megabasterd/MainPanelView.java +++ b/src/megabasterd/MainPanelView.java @@ -15,7 +15,6 @@ import java.util.UUID; import java.util.logging.Level; import static java.util.logging.Level.SEVERE; import java.util.logging.Logger; -import static java.util.logging.Logger.getLogger; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JLabel; @@ -25,17 +24,10 @@ import static javax.swing.JOptionPane.YES_NO_CANCEL_OPTION; import static javax.swing.JOptionPane.showOptionDialog; import javax.swing.JPanel; import javax.swing.JTabbedPane; -import static megabasterd.CryptTools.decryptMegaDownloaderLink; -import static megabasterd.DBTools.deleteELCAccount; -import static megabasterd.DBTools.deleteMegaAccount; -import static megabasterd.MainPanel.ICON_FILE_MED; -import static megabasterd.MainPanel.VERSION; -import static megabasterd.MiscTools.findAllRegex; -import static megabasterd.MiscTools.findFirstRegex; -import static megabasterd.MiscTools.genID; -import static megabasterd.MiscTools.i32a2bin; -import static megabasterd.MiscTools.swingReflectionInvoke; -import static megabasterd.MiscTools.swingReflectionInvokeAndWait; +import static megabasterd.CryptTools.*; +import static megabasterd.DBTools.*; +import static megabasterd.MainPanel.*; +import static megabasterd.MiscTools.*; public final class MainPanelView extends javax.swing.JFrame { @@ -519,7 +511,7 @@ public final class MainPanelView extends javax.swing.JFrame { urls.add(decryptMegaDownloaderLink(link)); } catch (Exception ex) { - getLogger(MainPanelView.class.getName()).log(SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(SEVERE, null, ex); } } @@ -532,7 +524,7 @@ public final class MainPanelView extends javax.swing.JFrame { urls.addAll(CryptTools.decryptELC(link, getMain_panel())); } catch (Exception ex) { - getLogger(MainPanelView.class.getName()).log(SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(SEVERE, null, ex); } } @@ -544,7 +536,7 @@ public final class MainPanelView extends javax.swing.JFrame { for (String link : links) { - if (MiscTools.findFirstRegex("(?:https?|mega)://[^/]*/(#.*?)?!.+![^\r\n]+", link, 0) != null) { + if (findFirstRegex("(?:https?|mega)://[^/]*/(#.*?)?!.+![^\r\n]+", link, 0) != null) { urls.add(link); } @@ -640,7 +632,7 @@ public final class MainPanelView extends javax.swing.JFrame { try { deleteMegaAccount(email); } catch (SQLException ex) { - getLogger(MainPanelView.class.getName()).log(SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(SEVERE, null, ex); } _main_panel.getMega_accounts().remove(email); @@ -653,7 +645,7 @@ public final class MainPanelView extends javax.swing.JFrame { try { deleteELCAccount(host); } catch (SQLException ex) { - getLogger(MainPanelView.class.getName()).log(SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(SEVERE, null, ex); } _main_panel.getElc_accounts().remove(host); @@ -699,7 +691,7 @@ public final class MainPanelView extends javax.swing.JFrame { if (_main_panel.isRestart()) { - MiscTools.restartApplication(1); + restartApplication(1); } if (_main_panel.isMegacrypter_reverse()) { @@ -718,7 +710,7 @@ public final class MainPanelView extends javax.swing.JFrame { _main_panel.getMega_proxy_server().start(); } catch (IOException ex) { - Logger.getLogger(MainPanelView.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } @@ -729,7 +721,7 @@ public final class MainPanelView extends javax.swing.JFrame { try { _main_panel.getMega_proxy_server().stopServer(); } catch (IOException ex) { - Logger.getLogger(MainPanelView.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } @@ -846,7 +838,7 @@ public final class MainPanelView extends javax.swing.JFrame { String parent_node = (String) ((Map) ((List) res.get("f")).get(0)).get("h"); - System.out.println("Dir " + parent_node + " created"); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Dir {1} created", new Object[]{Thread.currentThread().getName(), parent_node}); ma.shareFolder(parent_node, parent_key, share_key); @@ -861,8 +853,6 @@ public final class MainPanelView extends javax.swing.JFrame { String[] dirs = file_path.split("/"); - System.out.println(file_path); - MegaDirNode current_node = file_paths; String file_parent = current_node.getNode_id(); @@ -903,7 +893,7 @@ public final class MainPanelView extends javax.swing.JFrame { } catch (Exception ex) { - getLogger(MainPanelView.class.getName()).log(SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(SEVERE, null, ex); } } diff --git a/src/megabasterd/MegaAPI.java b/src/megabasterd/MegaAPI.java index fd94665f6..f4100bccf 100644 --- a/src/megabasterd/MegaAPI.java +++ b/src/megabasterd/MegaAPI.java @@ -14,18 +14,9 @@ import java.util.List; import java.util.Random; import java.util.logging.Level; import java.util.logging.Logger; -import static java.util.logging.Logger.getLogger; import javax.crypto.Cipher; -import static megabasterd.MiscTools.Bin2UrlBASE64; -import static megabasterd.MiscTools.UrlBASE642Bin; -import static megabasterd.MiscTools.bin2i32a; -import static megabasterd.MiscTools.cleanFilename; -import static megabasterd.MiscTools.findFirstRegex; -import static megabasterd.MiscTools.genID; -import static megabasterd.MiscTools.genRandomByteArray; -import static megabasterd.MiscTools.getWaitTimeExpBackOff; -import static megabasterd.MiscTools.i32a2bin; -import static megabasterd.MiscTools.mpi2big; +import static megabasterd.MiscTools.*; +import static megabasterd.CryptTools.*; import org.apache.http.HttpStatus; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; @@ -151,7 +142,7 @@ public final class MegaAPI { _rsa_priv_key = _extractRSAPrivKey(privk_byte); - byte[] raw_sid = CryptTools.rsaDecrypt(mpi2big(UrlBASE642Bin(csid)), _rsa_priv_key[0], _rsa_priv_key[1], _rsa_priv_key[2]); + byte[] raw_sid = rsaDecrypt(mpi2big(UrlBASE642Bin(csid)), _rsa_priv_key[0], _rsa_priv_key[1], _rsa_priv_key[2]); _sid = Bin2UrlBASE64(Arrays.copyOfRange(raw_sid, 0, 43)); } @@ -163,9 +154,9 @@ public final class MegaAPI { _email = email; - _password_aes = CryptTools.MEGAPrepareMasterKey(bin2i32a(password.getBytes())); + _password_aes = MEGAPrepareMasterKey(bin2i32a(password.getBytes())); - _user_hash = CryptTools.MEGAUserHash(email.toLowerCase().getBytes(), _password_aes); + _user_hash = MEGAUserHash(email.toLowerCase().getBytes(), _password_aes); _realLogin(); } @@ -220,7 +211,7 @@ public final class MegaAPI { } catch (Exception ex) { - getLogger(MegaAPI.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } return quota; @@ -238,8 +229,6 @@ public final class MegaAPI { String res = _rawRequest(request, url_api); - System.out.println(res); - ObjectMapper objectMapper = new ObjectMapper(); HashMap[] res_map = objectMapper.readValue(res, HashMap[].class); @@ -267,7 +256,7 @@ public final class MegaAPI { } } catch (IOException | MegaAPIException ex) { - getLogger(MegaAPI.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } @@ -276,7 +265,7 @@ public final class MegaAPI { String response = null; - try (CloseableHttpClient httpclient = MiscTools.getApacheKissHttpClient()) { + try (CloseableHttpClient httpclient = getApacheKissHttpClient()) { int error, conta_error = 0; @@ -296,8 +285,10 @@ public final class MegaAPI { try (CloseableHttpResponse httpresponse = httpclient.execute(httppost)) { if (httpresponse.getStatusLine().getStatusCode() != HttpStatus.SC_OK) { - System.out.println(request + " " + url_api.toString()); - System.out.println("Failed : HTTP error code : " + httpresponse.getStatusLine().getStatusCode()); + + Logger.getLogger(getClass().getName()).log(Level.WARNING, "{0} {1} {2}", new Object[]{Thread.currentThread().getName(), request, url_api.toString()}); + + Logger.getLogger(getClass().getName()).log(Level.WARNING, "{0} Failed : HTTP error code : {1}", new Object[]{Thread.currentThread().getName(), httpresponse.getStatusLine().getStatusCode()}); if (httpresponse.getStatusLine().getStatusCode() == 509) { @@ -333,7 +324,7 @@ public final class MegaAPI { } } catch (IOException | URISyntaxException ex) { - Logger.getLogger(MegaAPI.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } if (error != 0) { @@ -343,12 +334,12 @@ public final class MegaAPI { throw new MegaAPIException(String.valueOf(error)); } - System.out.println("MegaAPI ERROR " + String.valueOf(error) + " Waiting for retry..."); + Logger.getLogger(getClass().getName()).log(Level.WARNING, "{0} MegaAPI ERROR {1} Waiting for retry...", new Object[]{Thread.currentThread().getName(), String.valueOf(error)}); try { Thread.sleep(getWaitTimeExpBackOff(conta_error++) * 1000); } catch (InterruptedException ex) { - Logger.getLogger(MegaAPI.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } else { @@ -435,7 +426,7 @@ public final class MegaAPI { String[] file_data = null; - HashMap att_map = _decAttr(at, CryptTools.initMEGALinkKey(file_key)); + HashMap att_map = _decAttr(at, initMEGALinkKey(file_key)); if (att_map != null) { @@ -463,10 +454,10 @@ public final class MegaAPI { try { - ret = CryptTools.aes_cbc_encrypt(new_attr_byte, key, CryptTools.AES_ZERO_IV); + ret = aes_cbc_encrypt(new_attr_byte, key, AES_ZERO_IV); } catch (Exception ex) { - getLogger(MegaAPI.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } return ret; @@ -476,11 +467,11 @@ public final class MegaAPI { HashMap res_map = null; - byte[] decrypted_at = null; + byte[] decrypted_at; try { - Cipher decrypter = CryptTools.genDecrypter("AES", "AES/CBC/NoPadding", key, CryptTools.AES_ZERO_IV); + Cipher decrypter = genDecrypter("AES", "AES/CBC/NoPadding", key, AES_ZERO_IV); decrypted_at = decrypter.doFinal(UrlBASE642Bin(encAttr)); @@ -491,7 +482,7 @@ public final class MegaAPI { res_map = objectMapper.readValue(att, HashMap.class); } catch (Exception ex) { - getLogger(MegaAPI.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } @@ -519,7 +510,7 @@ public final class MegaAPI { ul_url = (String) res_map[0].get("p"); } catch (Exception ex) { - getLogger(MegaAPI.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } return ul_url; @@ -544,7 +535,7 @@ public final class MegaAPI { res_map = objectMapper.readValue(res, HashMap[].class); } catch (Exception ex) { - getLogger(MegaAPI.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } return res_map[0]; @@ -552,12 +543,12 @@ public final class MegaAPI { public byte[] encryptKey(byte[] a, byte[] key) throws Exception { - return CryptTools.aes_ecb_encrypt(a, key); + return aes_ecb_encrypt(a, key); } public byte[] decryptKey(byte[] a, byte[] key) throws Exception { - return CryptTools.aes_ecb_decrypt(a, key); + return aes_ecb_decrypt(a, key); } private BigInteger[] _extractRSAPrivKey(byte[] rsa_data) { @@ -592,14 +583,12 @@ public final class MegaAPI { String res = _rawRequest(request, url_api); - System.out.println(res); - ObjectMapper objectMapper = new ObjectMapper(); res_map = objectMapper.readValue(res, HashMap[].class); } catch (Exception ex) { - getLogger(MegaAPI.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } return res_map[0]; @@ -624,14 +613,12 @@ public final class MegaAPI { String res = _rawRequest(request, url_api); - System.out.println(res); - ObjectMapper objectMapper = new ObjectMapper(); res_map = objectMapper.readValue(res, HashMap[].class); } catch (Exception ex) { - getLogger(MegaAPI.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } return res_map[0]; @@ -654,8 +641,6 @@ public final class MegaAPI { String res = _rawRequest(request, url_api); - System.out.println(res); - ObjectMapper objectMapper = new ObjectMapper(); res_map = objectMapper.readValue(res, List.class); @@ -665,7 +650,7 @@ public final class MegaAPI { public_link = "https://mega.nz/#!" + file_id + "!" + Bin2UrlBASE64(node_key); } catch (Exception ex) { - getLogger(MegaAPI.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } return public_link; @@ -687,8 +672,6 @@ public final class MegaAPI { String res = _rawRequest(request, url_api); - System.out.println(res); - ObjectMapper objectMapper = new ObjectMapper(); res_map = objectMapper.readValue(res, List.class); @@ -698,7 +681,7 @@ public final class MegaAPI { public_link = "https://mega.nz/#F!" + folder_id + "!" + Bin2UrlBASE64(node_key); } catch (Exception ex) { - getLogger(MegaAPI.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } return public_link; @@ -719,7 +702,7 @@ public final class MegaAPI { return genRandomByteArray(16); } - public void shareFolder(String node, byte[] node_key, byte[] share_key) { + public String shareFolder(String node, byte[] node_key, byte[] share_key) { try { @@ -731,17 +714,15 @@ public final class MegaAPI { String request = "[{\"a\":\"s2\",\"n\":\"" + node + "\",\"s\":[{\"u\":\"EXP\",\"r\":0}],\"i\":\"" + _req_id + "\",\"ok\":\"" + ok + "\",\"ha\":\"" + ha + "\",\"cr\":[[\"" + node + "\"],[\"" + node + "\"],[0,0,\"" + enc_nk + "\"]]}]"; - 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); - - System.out.println(res); + return _rawRequest(request, url_api); } catch (Exception ex) { - getLogger(MegaAPI.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } + + return null; } public String cryptoHandleauth(String h) { @@ -753,7 +734,7 @@ public final class MegaAPI { ch = Bin2UrlBASE64(encryptKey((h + h).getBytes(), i32a2bin(getMaster_key()))); } catch (Exception ex) { - getLogger(MegaAPI.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } return ch; @@ -769,8 +750,6 @@ public final class MegaAPI { String res = _rawRequest(request, url_api); - System.out.println(res); - ObjectMapper objectMapper = new ObjectMapper(); HashMap[] res_map = objectMapper.readValue(res, HashMap[].class); @@ -838,7 +817,7 @@ public final class MegaAPI { } } catch (Exception ex) { - getLogger(MegaAPI.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } return null; diff --git a/src/megabasterd/MegaCrypterAPI.java b/src/megabasterd/MegaCrypterAPI.java index 174fd0fb1..48eaf8c9f 100644 --- a/src/megabasterd/MegaCrypterAPI.java +++ b/src/megabasterd/MegaCrypterAPI.java @@ -15,12 +15,8 @@ import java.util.logging.Level; import java.util.logging.Logger; import javax.crypto.Cipher; import javax.swing.JOptionPane; -import static megabasterd.MiscTools.BASE642Bin; -import static megabasterd.MiscTools.Bin2BASE64; -import static megabasterd.MiscTools.Bin2UrlBASE64; -import static megabasterd.MiscTools.cleanFilePath; -import static megabasterd.MiscTools.cleanFilename; -import static megabasterd.MiscTools.findFirstRegex; +import static megabasterd.MiscTools.*; +import static megabasterd.CryptTools.*; import org.apache.http.HttpStatus; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; @@ -41,7 +37,7 @@ public final class MegaCrypterAPI { String response = null; - try (CloseableHttpClient httpclient = MiscTools.getApacheKissHttpClient()) { + try (CloseableHttpClient httpclient = getApacheKissHttpClient()) { HttpPost httppost; @@ -57,7 +53,7 @@ public final class MegaCrypterAPI { try (CloseableHttpResponse httpresponse = httpclient.execute(httppost)) { if (httpresponse.getStatusLine().getStatusCode() != HttpStatus.SC_OK) { - System.out.println("Failed : HTTP error code : " + httpresponse.getStatusLine().getStatusCode()); + Logger.getLogger(MegaCrypterAPI.class.getName()).log(Level.INFO, "{0} Failed : HTTP error code : {1}", new Object[]{Thread.currentThread().getName(), httpresponse.getStatusLine().getStatusCode()}); } else { @@ -102,8 +98,6 @@ public final class MegaCrypterAPI { public static String getMegaFileDownloadUrl(String link, String pass_hash, String noexpire_token, String sid, String reverse) throws IOException, MegaCrypterAPIException { String request = "{\"m\":\"dl\", \"link\": \"" + link + "\"" + (noexpire_token != null ? ", \"noexpire\": \"" + noexpire_token + "\"" : "") + (sid != null ? ", \"sid\": \"" + sid + "\"" : "") + (reverse != null ? ", \"reverse\": \"" + reverse + "\"" : "") + "}"; - System.out.println(request); - URL url_api = new URL(findFirstRegex("https?://[^/]+", link, 0) + "/api"); String res = MegaCrypterAPI._rawRequest(request, url_api); @@ -120,7 +114,7 @@ public final class MegaCrypterAPI { byte[] iv = BASE642Bin(pass); - Cipher decrypter = CryptTools.genDecrypter("AES", "AES/CBC/PKCS5Padding", BASE642Bin(pass_hash), iv); + Cipher decrypter = genDecrypter("AES", "AES/CBC/PKCS5Padding", BASE642Bin(pass_hash), iv); byte[] decrypted_url = decrypter.doFinal(BASE642Bin(dl_url)); @@ -136,7 +130,7 @@ public final class MegaCrypterAPI { public static String[] getMegaFileMetadata(String link, MainPanelView panel, String reverse) throws MegaCrypterAPIException, MalformedURLException, IOException { String request = "{\"m\":\"info\", \"link\": \"" + link + "\"" + (reverse != null ? ", \"reverse\": \"" + reverse + "\"" : "") + "}"; - System.out.println(request); + URL url_api = new URL(findFirstRegex("https?://[^/]+", link, 0) + "/api"); String res = MegaCrypterAPI._rawRequest(request, url_api); @@ -201,10 +195,6 @@ public final class MegaCrypterAPI { pass = (String) pass_val; } - System.out.println("PASS: " + pass); - - System.out.println(noexpire_token); - if (pass != null) { String[] pass_items = pass.split("#"); @@ -244,9 +234,9 @@ public final class MegaCrypterAPI { try { - info_key = CryptTools.PBKDF2HMACSHA256(password, salt, (int) Math.pow(2, iterations)); + info_key = PBKDF2HMACSHA256(password, salt, (int) Math.pow(2, iterations)); - decrypter = CryptTools.genDecrypter("AES", "AES/CBC/PKCS5Padding", info_key, iv); + decrypter = genDecrypter("AES", "AES/CBC/PKCS5Padding", info_key, iv); bad_pass = !Arrays.equals(info_key, decrypter.doFinal(key_check)); @@ -272,13 +262,13 @@ public final class MegaCrypterAPI { try { - decrypter = CryptTools.genDecrypter("AES", "AES/CBC/PKCS5Padding", info_key, iv); + decrypter = genDecrypter("AES", "AES/CBC/PKCS5Padding", info_key, iv); byte[] decrypted_key = decrypter.doFinal(BASE642Bin(fkey)); fkey = Bin2UrlBASE64(decrypted_key); - decrypter = CryptTools.genDecrypter("AES", "AES/CBC/PKCS5Padding", info_key, iv); + decrypter = genDecrypter("AES", "AES/CBC/PKCS5Padding", info_key, iv); byte[] decrypted_name = decrypter.doFinal(BASE642Bin(fname)); diff --git a/src/megabasterd/MegaMutableTreeNode.java b/src/megabasterd/MegaMutableTreeNode.java index 7c9b900c1..335b11142 100644 --- a/src/megabasterd/MegaMutableTreeNode.java +++ b/src/megabasterd/MegaMutableTreeNode.java @@ -2,7 +2,7 @@ package megabasterd; import java.util.HashMap; import javax.swing.tree.DefaultMutableTreeNode; -import static megabasterd.MiscTools.formatBytes; +import static megabasterd.MiscTools.*; /** * diff --git a/src/megabasterd/MegaProxyServer.java b/src/megabasterd/MegaProxyServer.java index a8f48cdb0..6400b44a0 100644 --- a/src/megabasterd/MegaProxyServer.java +++ b/src/megabasterd/MegaProxyServer.java @@ -7,24 +7,17 @@ import java.util.logging.Level; import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; +import static megabasterd.MiscTools.*; /** * Thanks to -> https://stackoverflow.com/users/6477541/sarvesh-agarwal */ public class MegaProxyServer extends Thread { - private String _password; - private int _port; + private final String _password; + private final int _port; private ServerSocket _serverSocket; - public String getPassword() { - return _password; - } - - public int getPort() { - return _port; - } - public MegaProxyServer(String password, int port) { super("Server Thread"); @@ -33,9 +26,17 @@ public class MegaProxyServer extends Thread { } + public String getPassword() { + return _password; + } + + public int getPort() { + return _port; + } + public synchronized void stopServer() throws IOException { - this._serverSocket.close(); + _serverSocket.close(); } @Override @@ -50,21 +51,22 @@ public class MegaProxyServer extends Thread { try { while ((socket = _serverSocket.accept()) != null) { - (new Handler(socket, this._password)).start(); + (new Handler(socket, _password)).start(); } } catch (IOException e) { - e.printStackTrace(); // TODO: implement catch + // TODO: implement catch + } } catch (IOException ex) { - Logger.getLogger(MegaProxyServer.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } finally { if (!_serverSocket.isClosed()) { try { _serverSocket.close(); } catch (IOException ex) { - Logger.getLogger(MegaProxyServer.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } } @@ -75,127 +77,6 @@ public class MegaProxyServer extends Thread { public static final Pattern CONNECT_PATTERN = Pattern.compile("CONNECT (.*mega(?:\\.co)?\\.nz):(443) HTTP/(1\\.[01])", Pattern.CASE_INSENSITIVE); public static final Pattern AUTH_PATTERN = Pattern.compile("Proxy-Authorization: Basic +(.+)", Pattern.CASE_INSENSITIVE); - private final Socket clientSocket; - private boolean previousWasR = false; - private String _password; - - public Handler(Socket clientSocket, String password) { - this.clientSocket = clientSocket; - this._password = password; - } - - @Override - public void run() { - try { - String request = readLine(clientSocket); - System.out.println(request); - Matcher matcher = CONNECT_PATTERN.matcher(request); - boolean auth_ok = false; - - OutputStreamWriter outputStreamWriter = new OutputStreamWriter(clientSocket.getOutputStream(), "UTF-8"); - - if (matcher.matches()) { - - String header; - String proxy_auth = null; - - do { - header = readLine(clientSocket); - - Matcher matcher_auth = AUTH_PATTERN.matcher(header); - - if (matcher_auth.matches()) { - - proxy_auth = new String(MiscTools.BASE642Bin(matcher_auth.group(1).trim())); - - System.out.println(proxy_auth); - } - - } while (!"".equals(header)); - - if (proxy_auth != null && proxy_auth.equals("megacrypter:" + this._password)) { - final Socket forwardSocket; - - try { - forwardSocket = new Socket(matcher.group(1), Integer.parseInt(matcher.group(2))); - System.out.println(forwardSocket); - } catch (IOException | NumberFormatException e) { - e.printStackTrace(); // TODO: implement catch - outputStreamWriter.write("HTTP/" + matcher.group(3) + " 502 Bad Gateway\r\n"); - outputStreamWriter.write("Proxy-agent: MegaBasterd/0.1\r\n"); - outputStreamWriter.write("\r\n"); - outputStreamWriter.flush(); - return; - } - try { - outputStreamWriter.write("HTTP/" + matcher.group(3) + " 200 Connection established\r\n"); - outputStreamWriter.write("Proxy-agent: MegaBasterd/0.1\r\n"); - outputStreamWriter.write("\r\n"); - outputStreamWriter.flush(); - - Thread remoteToClient = new Thread() { - @Override - public void run() { - forwardData(forwardSocket, clientSocket); - } - }; - remoteToClient.start(); - try { - if (previousWasR) { - int read = clientSocket.getInputStream().read(); - if (read != -1) { - if (read != '\n') { - forwardSocket.getOutputStream().write(read); - } - forwardData(clientSocket, forwardSocket); - } else { - if (!forwardSocket.isOutputShutdown()) { - forwardSocket.shutdownOutput(); - } - if (!clientSocket.isInputShutdown()) { - clientSocket.shutdownInput(); - } - } - } else { - forwardData(clientSocket, forwardSocket); - } - } finally { - try { - remoteToClient.join(); - } catch (InterruptedException e) { - e.printStackTrace(); // TODO: implement catch - } - } - } finally { - forwardSocket.close(); - } - - } else { - outputStreamWriter.write("HTTP/1.1 403 Unauthorized\r\n"); - outputStreamWriter.write("Proxy-agent: MegaBasterd/0.1\r\n"); - outputStreamWriter.write("\r\n"); - outputStreamWriter.flush(); - return; - } - - } else { - outputStreamWriter.write("HTTP/1.1 403 Unauthorized\r\n"); - outputStreamWriter.write("Proxy-agent: MegaBasterd/0.1\r\n"); - outputStreamWriter.write("\r\n"); - outputStreamWriter.flush(); - return; - } - } catch (IOException e) { - e.printStackTrace(); // TODO: implement catch - } finally { - try { - clientSocket.close(); - } catch (IOException e) { - e.printStackTrace(); // TODO: implement catch - } - } - } - private static void forwardData(Socket inputSocket, Socket outputSocket) { try { InputStream inputStream = inputSocket.getInputStream(); @@ -224,7 +105,132 @@ public class MegaProxyServer extends Thread { } } } catch (IOException e) { - e.printStackTrace(); // TODO: implement catch + // TODO: implement catch + + } + } + + private final Socket _clientSocket; + private boolean _previousWasR = false; + private final String _password; + + public Handler(Socket clientSocket, String password) { + _clientSocket = clientSocket; + _password = password; + } + + @Override + public void run() { + try { + String request = readLine(_clientSocket); + + Matcher matcher = CONNECT_PATTERN.matcher(request); + + OutputStreamWriter outputStreamWriter = new OutputStreamWriter(_clientSocket.getOutputStream(), "UTF-8"); + + if (matcher.matches()) { + + String header; + String proxy_auth = null; + + do { + header = readLine(_clientSocket); + + Matcher matcher_auth = AUTH_PATTERN.matcher(header); + + if (matcher_auth.matches()) { + + proxy_auth = new String(BASE642Bin(matcher_auth.group(1).trim())); + + } + + } while (!"".equals(header)); + + if (proxy_auth != null && proxy_auth.equals("megacrypter:" + _password)) { + final Socket forwardSocket; + + try { + forwardSocket = new Socket(matcher.group(1), Integer.parseInt(matcher.group(2))); + + } catch (IOException | NumberFormatException e) { // TODO: implement catch + // TODO: implement catch + outputStreamWriter.write("HTTP/" + matcher.group(3) + " 502 Bad Gateway\r\n"); + outputStreamWriter.write("Proxy-agent: MegaBasterd/0.1\r\n"); + outputStreamWriter.write("\r\n"); + outputStreamWriter.flush(); + return; + } + try { + outputStreamWriter.write("HTTP/" + matcher.group(3) + " 200 Connection established\r\n"); + outputStreamWriter.write("Proxy-agent: MegaBasterd/0.1\r\n"); + outputStreamWriter.write("\r\n"); + outputStreamWriter.flush(); + + Thread remoteToClient = new Thread() { + @Override + public void run() { + forwardData(forwardSocket, _clientSocket); + } + }; + remoteToClient.start(); + try { + if (_previousWasR) { + int read = _clientSocket.getInputStream().read(); + if (read != -1) { + if (read != '\n') { + forwardSocket.getOutputStream().write(read); + } + forwardData(_clientSocket, forwardSocket); + } else { + if (!forwardSocket.isOutputShutdown()) { + forwardSocket.shutdownOutput(); + } + if (!_clientSocket.isInputShutdown()) { + _clientSocket.shutdownInput(); + } + } + } else { + forwardData(_clientSocket, forwardSocket); + } + } finally { + try { + remoteToClient.join(); + } catch (InterruptedException e) { + // TODO: implement catch + + } + } + } finally { + forwardSocket.close(); + } + + } else { + outputStreamWriter.write("HTTP/1.1 403 Unauthorized\r\n"); + outputStreamWriter.write("Proxy-agent: MegaBasterd/0.1\r\n"); + outputStreamWriter.write("\r\n"); + outputStreamWriter.flush(); + + } + + } else { + outputStreamWriter.write("HTTP/1.1 403 Unauthorized\r\n"); + outputStreamWriter.write("Proxy-agent: MegaBasterd/0.1\r\n"); + outputStreamWriter.write("\r\n"); + outputStreamWriter.flush(); + + } + + } catch (IOException e) { + // TODO: implement catch + + } finally { + + try { + _clientSocket.close(); + } catch (IOException e) { + // TODO: implement catch + + } } } @@ -233,14 +239,14 @@ public class MegaProxyServer extends Thread { int next; readerLoop: while ((next = socket.getInputStream().read()) != -1) { - if (previousWasR && next == '\n') { - previousWasR = false; + if (_previousWasR && next == '\n') { + _previousWasR = false; continue; } - previousWasR = false; + _previousWasR = false; switch (next) { case '\r': - previousWasR = true; + _previousWasR = true; break readerLoop; case '\n': break readerLoop; diff --git a/src/megabasterd/MiscTools.java b/src/megabasterd/MiscTools.java index 34bcd727c..53aa96ff6 100644 --- a/src/megabasterd/MiscTools.java +++ b/src/megabasterd/MiscTools.java @@ -44,7 +44,6 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; import java.util.logging.Level; import java.util.logging.Logger; -import static java.util.logging.Logger.getLogger; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.swing.JTree; @@ -83,7 +82,7 @@ public final class MiscTools { public static final int EXP_BACKOFF_BASE = 2; public static final int EXP_BACKOFF_SECS_RETRY = 1; public static final int EXP_BACKOFF_MAX_WAIT_TIME = 64; - public static final Object _password_lock = new Object(); + public static final Object PASS_LOCK = new Object(); private static final ConcurrentHashMap REFLECTION_METHOD_CACHE = new ConcurrentHashMap<>(); @@ -117,7 +116,7 @@ public final class MiscTools { ge.registerFont(font); } catch (FontFormatException | IOException ex) { - getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); } return font; @@ -396,9 +395,9 @@ public final class MiscTools { } catch (SecurityException | IllegalArgumentException | NoSuchMethodException ex) { - getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); - System.out.println("REFLECTION METHOD NOT FOUND -> " + method_name + "#" + obj.getClass().toString() + "#" + String.valueOf(params.length)); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} REFLECTION METHOD NOT FOUND -> {1}#{2}#{3}", new Object[]{Thread.currentThread().getName(), method_name, obj.getClass().toString(), String.valueOf(params.length)}); } } @@ -478,9 +477,9 @@ public final class MiscTools { } } catch (SecurityException | IllegalArgumentException | NoSuchMethodException ex) { - getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); - System.out.println("REFLECTION METHOD NOT FOUND -> " + method_name + "#" + obj.getClass().toString() + "#" + String.valueOf(params.length)); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} REFLECTION METHOD NOT FOUND -> {1}#{2}#{3}", new Object[]{Thread.currentThread().getName(), method_name, obj.getClass().toString(), String.valueOf(params.length)}); } } @@ -507,7 +506,7 @@ public final class MiscTools { SwingUtilities.invokeAndWait(r); } catch (InterruptedException | InvocationTargetException ex) { - getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); } } @@ -525,7 +524,7 @@ public final class MiscTools { try { ret = c.call(); } catch (Exception ex) { - getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); } } else { @@ -537,7 +536,7 @@ public final class MiscTools { try { ret = futureTask.get(); } catch (InterruptedException | ExecutionException ex) { - getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); } } @@ -567,7 +566,7 @@ public final class MiscTools { String response = null; - try (CloseableHttpClient httpclient = MiscTools.getApacheKissHttpClient()) { + try (CloseableHttpClient httpclient = getApacheKissHttpClient()) { HttpGet httpget = new HttpGet(new URI("http://tinyurl.com/api-create.php?url=" + URLEncoder.encode(link.trim(), "UTF-8"))); @@ -750,7 +749,7 @@ public final class MiscTools { ((MutableTreeNode) new_root).setUserObject(((DefaultMutableTreeNode) tree_model.getRoot()).getUserObject()); } catch (InstantiationException | IllegalAccessException ex) { - getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); } for (TreePath path : paths) { @@ -779,7 +778,7 @@ public final class MiscTools { ((MutableTreeNode) node).setUserObject(((DefaultMutableTreeNode) path_element).getUserObject()); } catch (InstantiationException | IllegalAccessException ex) { - getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); } } @@ -920,7 +919,7 @@ public final class MiscTools { boolean url_ok = false; - try (CloseableHttpClient httpclient = MiscTools.getApacheKissHttpClient()) { + try (CloseableHttpClient httpclient = getApacheKissHttpClient()) { HttpGet httpget = new HttpGet(new URI(string_url + "/0-0")); @@ -932,16 +931,13 @@ public final class MiscTools { } catch (MalformedURLException ex) { Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException | URISyntaxException ex) { - System.out.println(ex.getMessage()); + Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); } return url_ok; } - private MiscTools() { - } - public static String checkNewVersion(String folder_node, String folder_key) { String new_version = null; @@ -957,7 +953,7 @@ public final class MiscTools { HashMap current_node = (HashMap) o; - new_version = MiscTools.findFirstRegex("([0-9\\.]+)\\.run", (String) current_node.get("name"), 1); + new_version = findFirstRegex("([0-9\\.]+)\\.run", (String) current_node.get("name"), 1); if (new_version != null && Double.parseDouble(new_version) > Double.parseDouble(VERSION)) { @@ -971,7 +967,7 @@ public final class MiscTools { } } catch (Exception ex) { - getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); } return new_version; @@ -1072,7 +1068,7 @@ public final class MiscTools { cmd.append("-cp ").append(ManagementFactory.getRuntimeMXBean().getClassPath()).append(" "); - cmd.append(MainPanel.class.getName()).append(" "); + cmd.append(MiscTools.class.getName()).append(" "); cmd.append(String.valueOf(delay)); @@ -1098,7 +1094,7 @@ public final class MiscTools { ma = new MegaAPI(); String password_aes, user_hash; - synchronized (_password_lock) { + synchronized (PASS_LOCK) { if (main_panel.getMaster_pass_hash() != null) { @@ -1162,4 +1158,7 @@ public final class MiscTools { } + private MiscTools() { + } + } diff --git a/src/megabasterd/ProgressMeter.java b/src/megabasterd/ProgressMeter.java index 36b7167ad..4aef640c9 100644 --- a/src/megabasterd/ProgressMeter.java +++ b/src/megabasterd/ProgressMeter.java @@ -1,7 +1,8 @@ package megabasterd; +import java.util.logging.Level; import static java.util.logging.Level.SEVERE; -import static java.util.logging.Logger.getLogger; +import java.util.logging.Logger; public final class ProgressMeter implements Runnable, SecureSingleThreadNotifiable { @@ -43,7 +44,7 @@ public final class ProgressMeter implements Runnable, SecureSingleThreadNotifiab _secure_notify_lock.wait(); } catch (InterruptedException ex) { _exit = true; - getLogger(ProgressMeter.class.getName()).log(SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(SEVERE, null, ex); } } @@ -53,7 +54,7 @@ public final class ProgressMeter implements Runnable, SecureSingleThreadNotifiab @Override public void run() { - System.out.println("ProgressMeter hello!"); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} ProgressMeter hello!", Thread.currentThread().getName()); while (!_exit || !_transference.getPartialProgress().isEmpty()) { Integer reads; diff --git a/src/megabasterd/SetMasterPasswordDialog.java b/src/megabasterd/SetMasterPasswordDialog.java index 2ae720253..e365ac32a 100644 --- a/src/megabasterd/SetMasterPasswordDialog.java +++ b/src/megabasterd/SetMasterPasswordDialog.java @@ -6,10 +6,8 @@ import java.util.Arrays; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JOptionPane; -import static megabasterd.MainPanel.THREAD_POOL; -import static megabasterd.MiscTools.Bin2BASE64; -import static megabasterd.MiscTools.HashBin; -import static megabasterd.MiscTools.swingReflectionInvoke; +import static megabasterd.MainPanel.*; +import static megabasterd.MiscTools.*; /** * @@ -214,7 +212,7 @@ public class SetMasterPasswordDialog extends javax.swing.JDialog { if (new_pass_textfield.getPassword().length > 0) { - _new_pass = CryptTools.PBKDF2HMACSHA256(new String(new_pass_textfield.getPassword()), MiscTools.BASE642Bin(_salt), CryptTools.PBKDF2_ITERATIONS); + _new_pass = CryptTools.PBKDF2HMACSHA256(new String(new_pass_textfield.getPassword()), BASE642Bin(_salt), CryptTools.PBKDF2_ITERATIONS); _new_pass_hash = Bin2BASE64(HashBin("SHA-1", _new_pass)); } @@ -237,7 +235,7 @@ public class SetMasterPasswordDialog extends javax.swing.JDialog { } } catch (Exception ex) { - Logger.getLogger(SetMasterPasswordDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } }); diff --git a/src/megabasterd/SettingsDialog.java b/src/megabasterd/SettingsDialog.java index 636f1f8c6..d5c838d80 100644 --- a/src/megabasterd/SettingsDialog.java +++ b/src/megabasterd/SettingsDialog.java @@ -8,13 +8,13 @@ import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.sql.SQLException; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; -import static java.util.logging.Logger.getLogger; import javax.crypto.BadPaddingException; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; @@ -25,15 +25,9 @@ import static javax.swing.JOptionPane.showOptionDialog; import javax.swing.JSpinner; import javax.swing.SpinnerNumberModel; import javax.swing.table.DefaultTableModel; -import static megabasterd.DBTools.insertSettingValueInDB; -import static megabasterd.MainPanel.THREAD_POOL; -import static megabasterd.MiscTools.BASE642Bin; -import static megabasterd.MiscTools.Bin2BASE64; -import static megabasterd.MiscTools.i32a2bin; -import static megabasterd.MiscTools.swingReflectionInvoke; -import static megabasterd.MiscTools.swingReflectionInvokeAndWait; -import static megabasterd.MiscTools.swingReflectionInvokeAndWaitForReturn; -import static megabasterd.MiscTools.truncateText; +import static megabasterd.DBTools.*; +import static megabasterd.MainPanel.*; +import static megabasterd.MiscTools.*; public final class SettingsDialog extends javax.swing.JDialog { @@ -49,11 +43,11 @@ public final class SettingsDialog extends javax.swing.JDialog { } public Set getDeleted_mega_accounts() { - return _deleted_mega_accounts; + return Collections.unmodifiableSet(_deleted_mega_accounts); } public Set getDeleted_elc_accounts() { - return _deleted_elc_accounts; + return Collections.unmodifiableSet(_deleted_elc_accounts); } public boolean isRemember_master_pass() { @@ -321,9 +315,9 @@ public final class SettingsDialog extends javax.swing.JDialog { pass = new String(CryptTools.aes_cbc_decrypt_pkcs7(BASE642Bin((String) data.get("password")), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV)); } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | InvalidAlgorithmParameterException | IllegalBlockSizeException | BadPaddingException ex) { - Logger.getLogger(SettingsDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } catch (Exception ex) { - Logger.getLogger(SettingsDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } String[] new_row_data = {(String) pair.getKey(), pass}; @@ -344,9 +338,9 @@ public final class SettingsDialog extends javax.swing.JDialog { apikey = new String(CryptTools.aes_cbc_decrypt_pkcs7(BASE642Bin((String) data.get("apikey")), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV)); } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | InvalidAlgorithmParameterException | IllegalBlockSizeException | BadPaddingException ex) { - Logger.getLogger(SettingsDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } catch (Exception ex) { - Logger.getLogger(SettingsDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } String[] new_row_data = {(String) pair.getKey(), user, apikey}; @@ -1238,7 +1232,7 @@ public final class SettingsDialog extends javax.swing.JDialog { private void cancel_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancel_buttonActionPerformed - this.setVisible(false); + setVisible(false); }//GEN-LAST:event_cancel_buttonActionPerformed private void ok_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ok_buttonActionPerformed @@ -1380,7 +1374,7 @@ public final class SettingsDialog extends javax.swing.JDialog { apikey = new String(CryptTools.aes_cbc_decrypt_pkcs7(BASE642Bin(apikey), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV)); } catch (Exception ex) { - Logger.getLogger(SettingsDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } @@ -1462,7 +1456,7 @@ public final class SettingsDialog extends javax.swing.JDialog { password_aes = Bin2BASE64(CryptTools.aes_cbc_encrypt_pkcs7(i32a2bin(ma.getPassword_aes()), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV)); - user_hash = Bin2BASE64(CryptTools.aes_cbc_encrypt_pkcs7(MiscTools.UrlBASE642Bin(ma.getUser_hash()), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV)); + user_hash = Bin2BASE64(CryptTools.aes_cbc_encrypt_pkcs7(UrlBASE642Bin(ma.getUser_hash()), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV)); } DBTools.insertMegaAccount(email, password, password_aes, user_hash); @@ -1470,7 +1464,7 @@ public final class SettingsDialog extends javax.swing.JDialog { } catch (Exception ex) { email_error.add(email); - getLogger(SettingsDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } else { @@ -1486,7 +1480,7 @@ public final class SettingsDialog extends javax.swing.JDialog { password = new String(CryptTools.aes_cbc_decrypt_pkcs7(BASE642Bin(password), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV)); } catch (Exception ex) { - Logger.getLogger(SettingsDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } @@ -1509,7 +1503,7 @@ public final class SettingsDialog extends javax.swing.JDialog { password_aes = Bin2BASE64(CryptTools.aes_cbc_encrypt_pkcs7(i32a2bin(ma.getPassword_aes()), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV)); - user_hash = Bin2BASE64(CryptTools.aes_cbc_encrypt_pkcs7(MiscTools.UrlBASE642Bin(ma.getUser_hash()), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV)); + user_hash = Bin2BASE64(CryptTools.aes_cbc_encrypt_pkcs7(UrlBASE642Bin(ma.getUser_hash()), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV)); } DBTools.insertMegaAccount(email, password, password_aes, user_hash); @@ -1517,7 +1511,7 @@ public final class SettingsDialog extends javax.swing.JDialog { } catch (Exception ex) { email_error.add(email); - getLogger(SettingsDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } @@ -1561,15 +1555,15 @@ public final class SettingsDialog extends javax.swing.JDialog { } else { - this.setVisible(false); + setVisible(false); } } catch (SQLException ex) { - getLogger(SettingsDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | InvalidAlgorithmParameterException | IllegalBlockSizeException | BadPaddingException ex) { - Logger.getLogger(SettingsDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } catch (Exception ex) { - Logger.getLogger(SettingsDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } }//GEN-LAST:event_ok_buttonActionPerformed @@ -1763,7 +1757,7 @@ public final class SettingsDialog extends javax.swing.JDialog { } } catch (Exception ex) { - Logger.getLogger(SettingsDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } @@ -1838,9 +1832,9 @@ public final class SettingsDialog extends javax.swing.JDialog { pass = new String(CryptTools.aes_cbc_decrypt_pkcs7(BASE642Bin((String) data.get("password")), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV)); } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | InvalidAlgorithmParameterException | IllegalBlockSizeException | BadPaddingException ex) { - Logger.getLogger(SettingsDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } catch (Exception ex) { - Logger.getLogger(SettingsDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } String[] new_row_data = {(String) pair.getKey(), pass}; @@ -1861,9 +1855,9 @@ public final class SettingsDialog extends javax.swing.JDialog { apikey = new String(CryptTools.aes_cbc_decrypt_pkcs7(BASE642Bin((String) data.get("apikey")), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV)); } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | InvalidAlgorithmParameterException | IllegalBlockSizeException | BadPaddingException ex) { - Logger.getLogger(SettingsDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } catch (Exception ex) { - Logger.getLogger(SettingsDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } String[] new_row_data = {(String) pair.getKey(), user, apikey}; @@ -1930,7 +1924,7 @@ public final class SettingsDialog extends javax.swing.JDialog { try { DBTools.deleteMegaAccount((String) pair.getKey()); } catch (SQLException ex) { - Logger.getLogger(SettingsDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } @@ -1939,7 +1933,7 @@ public final class SettingsDialog extends javax.swing.JDialog { try { DBTools.deleteELCAccount((String) pair.getKey()); } catch (SQLException ex) { - Logger.getLogger(SettingsDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } @@ -1958,7 +1952,7 @@ public final class SettingsDialog extends javax.swing.JDialog { _main_panel.getElc_accounts().clear(); } catch (SQLException ex) { - Logger.getLogger(SettingsDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } diff --git a/src/megabasterd/SqliteSingleton.java b/src/megabasterd/SqliteSingleton.java index 7eb400939..4e1c45929 100644 --- a/src/megabasterd/SqliteSingleton.java +++ b/src/megabasterd/SqliteSingleton.java @@ -5,7 +5,7 @@ import java.sql.DriverManager; import java.sql.SQLException; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Level; -import static java.util.logging.Logger.getLogger; +import java.util.logging.Logger; /** * @@ -17,12 +17,11 @@ public final class SqliteSingleton { public static final int VALIDATION_TIMEOUT = 15; - private final ConcurrentHashMap _connections_map; - public static SqliteSingleton getInstance() { return LazyHolder.INSTANCE; } + private final ConcurrentHashMap _connections_map; private SqliteSingleton() { @@ -45,7 +44,7 @@ public final class SqliteSingleton { } } catch (ClassNotFoundException | SQLException ex) { - getLogger(SqliteSingleton.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } return conn; diff --git a/src/megabasterd/StreamChunkDownloader.java b/src/megabasterd/StreamChunkDownloader.java index 7d97de9a3..f13d7a625 100644 --- a/src/megabasterd/StreamChunkDownloader.java +++ b/src/megabasterd/StreamChunkDownloader.java @@ -11,8 +11,8 @@ import java.net.URI; import java.net.URISyntaxException; import java.util.logging.Level; import java.util.logging.Logger; -import static java.util.logging.Logger.getLogger; -import static megabasterd.MainPanel.THROTTLE_SLICE_SIZE; +import static megabasterd.MainPanel.*; +import static megabasterd.MiscTools.*; import org.apache.http.HttpStatus; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; @@ -34,16 +34,16 @@ public class StreamChunkDownloader implements Runnable { _exit = false; } - public void setExit(boolean _exit) { - this._exit = _exit; + public void setExit(boolean exit) { + _exit = exit; } @Override public void run() { - System.out.println(Thread.currentThread().getName() + " Worker [" + _id + "]: let's do some work!"); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Worker [{1}]: let''s do some work!", new Object[]{Thread.currentThread().getName(), _id}); - try (CloseableHttpClient httpclient = MiscTools.getApacheKissHttpClient()) { + try (CloseableHttpClient httpclient = getApacheKissHttpClient()) { String url = _chunkwriter.getUrl(); @@ -55,7 +55,7 @@ public class StreamChunkDownloader implements Runnable { while (!_exit && !_chunkwriter.isExit() && _chunkwriter.getChunk_queue().size() >= StreamChunkWriter.BUFFER_CHUNKS_SIZE) { - System.out.println(Thread.currentThread().getName() + " Worker [" + _id + "]: El búffer de chunks está lleno. Me duermo."); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Worker [{1}]: Chunk buffer is full. I pause myself.", new Object[]{Thread.currentThread().getName(), _id}); _chunkwriter.secureWait(); } @@ -77,7 +77,7 @@ public class StreamChunkDownloader implements Runnable { StreamChunk chunk_stream = new StreamChunk(offset, _chunkwriter.calculateChunkSize(offset), url); - System.out.println(Thread.currentThread().getName() + " Worker [" + _id + "]: offset: " + offset + " size: " + chunk_stream.getSize()); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Worker [{1}]: offset: {2} size: {3}", new Object[]{Thread.currentThread().getName(), _id, offset, chunk_stream.getSize()}); HttpGet httpget = new HttpGet(new URI(chunk_stream.getUrl())); @@ -93,7 +93,7 @@ public class StreamChunkDownloader implements Runnable { if (http_status != HttpStatus.SC_OK) { - System.out.println("Failed : HTTP error code : " + http_status); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Failed : HTTP error code : {1}", new Object[]{Thread.currentThread().getName(), http_status}); error = true; @@ -118,7 +118,7 @@ public class StreamChunkDownloader implements Runnable { if (!error) { - System.out.println(Thread.currentThread().getName() + " Worker [" + _id + "] has downloaded chunk [" + chunk_stream.getOffset() + "]!"); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Worker [{1}] has downloaded chunk [{2}]!", new Object[]{Thread.currentThread().getName(), _id, chunk_stream.getOffset()}); _chunkwriter.getChunk_queue().put(chunk_stream.getOffset(), chunk_stream); @@ -131,7 +131,7 @@ public class StreamChunkDownloader implements Runnable { error = true; - getLogger(ChunkDownloader.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } else { @@ -141,16 +141,14 @@ public class StreamChunkDownloader implements Runnable { } } catch (IOException | URISyntaxException ex) { - getLogger(ChunkDownloader.class.getName()).log(Level.SEVERE, null, ex); - } catch (ChunkInvalidException ex) { - Logger.getLogger(StreamChunkDownloader.class.getName()).log(Level.SEVERE, null, ex); - } catch (InterruptedException ex) { - Logger.getLogger(StreamChunkDownloader.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); + } catch (ChunkInvalidException | InterruptedException ex) { + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } _chunkwriter.secureNotifyAll(); - System.out.println(Thread.currentThread().getName() + " Worker [" + _id + "]: bye bye"); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Worker [{1}]: bye bye", new Object[]{Thread.currentThread().getName(), _id}); } } diff --git a/src/megabasterd/StreamChunkWriter.java b/src/megabasterd/StreamChunkWriter.java index c1962677d..aa097c21b 100644 --- a/src/megabasterd/StreamChunkWriter.java +++ b/src/megabasterd/StreamChunkWriter.java @@ -2,13 +2,13 @@ package megabasterd; import java.io.IOException; import java.io.InputStream; -import java.util.concurrent.ConcurrentHashMap; import java.io.PipedOutputStream; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Level; import java.util.logging.Logger; -import static java.util.logging.Logger.getLogger; +import static megabasterd.MiscTools.*; /** * @@ -54,7 +54,7 @@ public class StreamChunkWriter implements Runnable, SecureMultiThreadNotifiable public String getUrl() throws IOException, InterruptedException { - if (!MiscTools.checkMegaDownloadUrl(_url)) { + if (!checkMegaDownloadUrl(_url)) { _url = _server.getMegaFileDownloadUrl(_link, (String) _file_info.get("pass_hash"), (String) _file_info.get("noexpiretoken"), _mega_account); _file_info.put("url", _url); @@ -77,7 +77,7 @@ public class StreamChunkWriter implements Runnable, SecureMultiThreadNotifiable try { - System.out.println("StreamChunkWriter: let's do some work! Start: " + _start_offset + " End: " + _end_offset); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} StreamChunkWriter: let''s do some work! Start: {1} End: {2}", new Object[]{Thread.currentThread().getName(), _start_offset, _end_offset}); while (!_exit && _bytes_written < _end_offset) { @@ -102,13 +102,13 @@ public class StreamChunkWriter implements Runnable, SecureMultiThreadNotifiable secureNotifyAll(); - System.out.println(Thread.currentThread().getName() + " StreamChunkWriter ha escrito " + (_bytes_written) + " / " + _end_offset + " ..."); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} StreamChunkWriter ha escrito {1} / {2} ...", new Object[]{Thread.currentThread().getName(), _bytes_written, _end_offset}); } if (!_exit && _bytes_written < _end_offset) { - System.out.println(Thread.currentThread().getName() + " StreamChunkWriter waiting for offset " + _bytes_written + "..."); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} StreamChunkWriter waiting for offset {1}...", new Object[]{Thread.currentThread().getName(), _bytes_written}); secureWait(); } @@ -116,20 +116,20 @@ public class StreamChunkWriter implements Runnable, SecureMultiThreadNotifiable } catch (Exception ex) { - System.out.println(ex.getMessage()); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } try { _pipeos.close(); } catch (IOException ex) { - Logger.getLogger(StreamChunkWriter.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } _exit = true; secureNotifyAll(); - System.out.println(Thread.currentThread().getName() + " StreamChunkWriter: bye bye"); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} StreamChunkWriter: bye bye", Thread.currentThread().getName()); } public long nextOffset() { @@ -149,8 +149,8 @@ public class StreamChunkWriter implements Runnable, SecureMultiThreadNotifiable return offset <= _end_offset ? (Math.min(CHUNK_SIZE, _end_offset - offset + 1)) : -1; } - public void setExit(boolean _exit) { - this._exit = _exit; + public void setExit(boolean exit) { + _exit = exit; } @Override @@ -170,7 +170,7 @@ public class StreamChunkWriter implements Runnable, SecureMultiThreadNotifiable try { _secure_notify_lock.wait(); } catch (InterruptedException ex) { - getLogger(StreamThrottlerSupervisor.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } diff --git a/src/megabasterd/StreamThrottlerSupervisor.java b/src/megabasterd/StreamThrottlerSupervisor.java index 76cd5df5c..a7dc833b0 100644 --- a/src/megabasterd/StreamThrottlerSupervisor.java +++ b/src/megabasterd/StreamThrottlerSupervisor.java @@ -7,7 +7,6 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.logging.Level; import java.util.logging.Logger; -import static java.util.logging.Logger.getLogger; /** * @@ -98,7 +97,7 @@ public final class StreamThrottlerSupervisor implements Runnable, SecureMultiThr try { _secure_notify_lock.wait(); } catch (InterruptedException ex) { - getLogger(StreamThrottlerSupervisor.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } @@ -173,7 +172,7 @@ public final class StreamThrottlerSupervisor implements Runnable, SecureMultiThr try { _timer_lock.wait(); } catch (InterruptedException ex) { - Logger.getLogger(StreamThrottlerSupervisor.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } } diff --git a/src/megabasterd/StreamerDialog.java b/src/megabasterd/StreamerDialog.java index a31694f01..9329d60c4 100644 --- a/src/megabasterd/StreamerDialog.java +++ b/src/megabasterd/StreamerDialog.java @@ -5,17 +5,12 @@ import java.awt.event.WindowEvent; import static java.awt.event.WindowEvent.WINDOW_CLOSING; import java.util.HashSet; import java.util.logging.Level; -import static java.util.logging.Logger.getLogger; +import java.util.logging.Logger; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JOptionPane; -import static megabasterd.MainPanel.THREAD_POOL; -import static megabasterd.MiscTools.extractFirstMegaLinkFromString; -import static megabasterd.MiscTools.extractStringFromClipboardContents; -import static megabasterd.MiscTools.findFirstRegex; -import static megabasterd.MiscTools.swingReflectionInvoke; -import static megabasterd.MiscTools.swingReflectionInvokeAndWait; -import static megabasterd.MiscTools.swingReflectionInvokeAndWaitForReturn; +import static megabasterd.MainPanel.*; +import static megabasterd.MiscTools.*; /** * @@ -183,11 +178,11 @@ public final class StreamerDialog extends javax.swing.JDialog implements Clipboa try { - if (MiscTools.findFirstRegex("://enc", link, 0) != null) { + if (findFirstRegex("://enc", link, 0) != null) { link = CryptTools.decryptMegaDownloaderLink(link); - } else if (MiscTools.findFirstRegex("://elc", link, 0) != null) { + } else if (findFirstRegex("://elc", link, 0) != null) { HashSet links = CryptTools.decryptELC(link, ((MainPanelView) tthis.getParent()).getMain_panel()); @@ -201,14 +196,14 @@ public final class StreamerDialog extends javax.swing.JDialog implements Clipboa error = true; - getLogger(StreamerDialog.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } String data; if (findFirstRegex("://mega(\\.co)?\\.nz/#[^fF]", link, 0) != null || findFirstRegex("https?://[^/]+/![^!]+![0-9a-fA-F]+", link, 0) != null) { - data = MiscTools.Bin2UrlBASE64(((_last_selected_account != null ? _last_selected_account : "") + "|" + link).getBytes()); + data = Bin2UrlBASE64(((_last_selected_account != null ? _last_selected_account : "") + "|" + link).getBytes()); stream_link = "http://localhost:1337/video/" + data; @@ -235,8 +230,8 @@ public final class StreamerDialog extends javax.swing.JDialog implements Clipboa } else { _mainPanelView.getMain_panel().getClipboardspy().detachObserver((ClipboardChangeObserver) tthis); - MiscTools.copyTextToClipboard(stream_link); - JOptionPane.showMessageDialog(tthis, "Streaming link was copied to clipboard!\n(Remember to keep MegaBasterd running in background while playing)"); + copyTextToClipboard(stream_link); + JOptionPane.showMessageDialog(tthis, "Streaming link was copied to clipboard!\nRemember to keep MegaBasterd running in background while playing content. (I recommend to use MPLAYER)"); dispose(); getParent().dispatchEvent(new WindowEvent(tthis, WINDOW_CLOSING)); } @@ -265,16 +260,16 @@ public final class StreamerDialog extends javax.swing.JDialog implements Clipboa public void run() { try { - MiscTools.checkMegaAccountLoginAndShowMasterPassDialog(_main_panel, tthis, email); + checkMegaAccountLoginAndShowMasterPassDialog(_main_panel, tthis, email); } catch (Exception ex) { _last_selected_account = ""; swingReflectionInvoke("setSelectedIndex", use_mega_account_down_combobox, 1); } - swingReflectionInvokeAndWait("setEnabled", ((StreamerDialog) tthis).getUse_mega_account_down_combobox(), true); + swingReflectionInvokeAndWait("setEnabled", tthis.getUse_mega_account_down_combobox(), true); - swingReflectionInvokeAndWaitForReturn("setEnabled", ((StreamerDialog) tthis).getDance_button(), true); + swingReflectionInvokeAndWaitForReturn("setEnabled", tthis.getDance_button(), true); } }); } diff --git a/src/megabasterd/TransferenceManager.java b/src/megabasterd/TransferenceManager.java index 1e722133b..12a01a407 100644 --- a/src/megabasterd/TransferenceManager.java +++ b/src/megabasterd/TransferenceManager.java @@ -6,11 +6,10 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.logging.Level; -import static java.util.logging.Logger.getLogger; +import java.util.logging.Logger; import javax.swing.JPanel; -import static megabasterd.MainPanel.THREAD_POOL; -import static megabasterd.MiscTools.swingReflectionInvoke; -import static megabasterd.MiscTools.swingReflectionInvokeAndWaitForReturn; +import static megabasterd.MainPanel.*; +import static megabasterd.MiscTools.*; /** * @@ -121,8 +120,8 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea } } - public void setMax_running_trans(int _max_running_trans) { - this._max_running_trans = _max_running_trans; + public void setMax_running_trans(int max_running_trans) { + _max_running_trans = max_running_trans; } @Override @@ -144,7 +143,7 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea try { _secure_notify_lock.wait(); } catch (InterruptedException ex) { - getLogger(TransferenceManager.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } diff --git a/src/megabasterd/Upload.java b/src/megabasterd/Upload.java index e871df726..8a844cbf7 100644 --- a/src/megabasterd/Upload.java +++ b/src/megabasterd/Upload.java @@ -14,18 +14,9 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.logging.Level; -import static java.util.logging.Logger.getLogger; -import static megabasterd.MainPanel.THREAD_POOL; -import static megabasterd.MiscTools.BASE642Bin; -import static megabasterd.MiscTools.Bin2BASE64; -import static megabasterd.MiscTools.HashString; -import static megabasterd.MiscTools.bin2i32a; -import static megabasterd.MiscTools.formatBytes; -import static megabasterd.MiscTools.i32a2bin; -import static megabasterd.MiscTools.swingReflectionInvoke; -import static megabasterd.MiscTools.swingReflectionInvokeAndWait; -import static megabasterd.MiscTools.swingReflectionInvokeAndWaitForReturn; -import static megabasterd.MiscTools.truncateText; +import java.util.logging.Logger; +import static megabasterd.MainPanel.*; +import static megabasterd.MiscTools.*; /** * @@ -340,7 +331,7 @@ public final class Upload implements Transference, Runnable, SecureSingleThreadN _secure_notify_lock.wait(); } catch (InterruptedException ex) { _exit = true; - getLogger(Upload.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } @@ -413,7 +404,7 @@ public final class Upload implements Transference, Runnable, SecureSingleThreadN } } catch (Exception ex) { - getLogger(Upload.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } @@ -578,12 +569,12 @@ public final class Upload implements Transference, Runnable, SecureSingleThreadN try { - System.out.println("Lanzando chunkuploader desde startslot()..."); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Starting chunkuploader from startslot()...", Thread.currentThread().getName()); _thread_pool.execute(c); } catch (java.util.concurrent.RejectedExecutionException e) { - System.out.println(e.getMessage()); + Logger.getLogger(getClass().getName()).log(Level.INFO, e.getMessage()); } } @@ -640,7 +631,7 @@ public final class Upload implements Transference, Runnable, SecureSingleThreadN @Override public void run() { - System.out.println("Uploader hello!"); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Uploader hello!", Thread.currentThread().getName()); swingReflectionInvoke("setVisible", getView().getClose_button(), false); @@ -655,7 +646,7 @@ public final class Upload implements Transference, Runnable, SecureSingleThreadN DBTools.updateUploadUrl(_file_name, _ma.getEmail(), _ul_url); } catch (SQLException ex) { - getLogger(Upload.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } @@ -699,7 +690,7 @@ public final class Upload implements Transference, Runnable, SecureSingleThreadN _chunkworkers.add(c); - System.out.println("Lanzando chunkuploader" + t + " ..."); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Starting chunkuploader{1} ...", new Object[]{Thread.currentThread().getName(), t}); _thread_pool.execute(c); } @@ -736,11 +727,9 @@ public final class Upload implements Transference, Runnable, SecureSingleThreadN secureWait(); - System.out.println("Uploader llamando a shutdown del pool..."); - _thread_pool.shutdown(); - System.out.println("Chunkuploaders finished!"); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Chunkuploaders finished!", Thread.currentThread().getName()); getProgress_meter().setExit(true); @@ -748,22 +737,22 @@ public final class Upload implements Transference, Runnable, SecureSingleThreadN try { - System.out.println("Esperando a que todos los hilos terminen..."); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0}Waiting for all threads to finish...", Thread.currentThread().getName()); _thread_pool.awaitTermination(MAX_WAIT_WORKERS_SHUTDOWN, TimeUnit.SECONDS); } catch (InterruptedException ex) { - getLogger(Upload.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } if (!_thread_pool.isTerminated()) { - System.out.println("Cerrando thread pool a lo mecagüen..."); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Closing thread pool in ''mecag\u00fcen'' style...", Thread.currentThread().getName()); _thread_pool.shutdownNow(); } - System.out.println("Uploader thread pool finished!"); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Uploader thread pool finished!", Thread.currentThread().getName()); getMain_panel().getGlobal_up_speed().detachTransference(this); @@ -787,8 +776,6 @@ public final class Upload implements Transference, Runnable, SecureSingleThreadN upload_res = _ma.finishUploadFile(f.getName(), ul_key, node_key, _file_meta_mac, _completion_handle, _parent_node, i32a2bin(_ma.getMaster_key()), _root_node, _share_key); - System.out.println(upload_res); - List files = (List) upload_res.get("f"); _fid = (String) ((Map) files.get(0)).get("h"); @@ -802,7 +789,7 @@ public final class Upload implements Transference, Runnable, SecureSingleThreadN swingReflectionInvoke("setEnabled", getView().getFile_link_button(), true); } catch (Exception ex) { - getLogger(Upload.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } printStatusOK(_exit_message); @@ -879,7 +866,7 @@ public final class Upload implements Transference, Runnable, SecureSingleThreadN try { DBTools.deleteUpload(_file_name, _ma.getEmail()); } catch (SQLException ex) { - getLogger(Upload.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } @@ -901,7 +888,7 @@ public final class Upload implements Transference, Runnable, SecureSingleThreadN swingReflectionInvoke("setVisible", getView().getRestart_button(), true); } - System.out.println("Uploader BYE BYE"); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Uploader BYE BYE", Thread.currentThread().getName()); } public void pause_worker() { @@ -988,7 +975,7 @@ public final class Upload implements Transference, Runnable, SecureSingleThreadN try { DBTools.deleteUpload(_file_name, _ma.getEmail()); } catch (SQLException ex) { - getLogger(Upload.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } getMain_panel().getUpload_manager().getTransference_running_list().remove(this); diff --git a/src/megabasterd/UploadMACGenerator.java b/src/megabasterd/UploadMACGenerator.java index 278735640..6faa195e2 100644 --- a/src/megabasterd/UploadMACGenerator.java +++ b/src/megabasterd/UploadMACGenerator.java @@ -6,16 +6,12 @@ import java.io.IOException; import java.io.InputStream; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Level; -import static java.util.logging.Logger.getLogger; +import java.util.logging.Logger; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; -import static megabasterd.CryptTools.genCrypter; -import static megabasterd.MiscTools.Bin2BASE64; -import static megabasterd.MiscTools.HashString; -import static megabasterd.MiscTools.bin2i32a; -import static megabasterd.MiscTools.i32a2bin; -import static megabasterd.MiscTools.swingReflectionInvokeAndWait; +import static megabasterd.CryptTools.*; +import static megabasterd.MiscTools.*; /** * @@ -61,7 +57,7 @@ public final class UploadMACGenerator implements Runnable, SecureSingleThreadNot _secure_notify_lock.wait(); } catch (InterruptedException ex) { _exit = true; - getLogger(UploadMACGenerator.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } @@ -157,7 +153,7 @@ public final class UploadMACGenerator implements Runnable, SecureSingleThreadNot file_mac = bin2i32a(cryptor.doFinal(i32a2bin(file_mac))); } catch (IOException | IllegalBlockSizeException | BadPaddingException ex) { - getLogger(UploadMACGenerator.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } _bytes_read += chunk.getSize(); @@ -173,7 +169,7 @@ public final class UploadMACGenerator implements Runnable, SecureSingleThreadNot temp_file_data = (String.valueOf(_bytes_read) + "|" + Bin2BASE64(i32a2bin(file_mac))); - System.out.println("Macgenerator -> " + temp_file_data + " " + _upload.calculateLastUploadedChunk(_bytes_read) + " " + _last_chunk_id_read); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Macgenerator -> {1} {2} {3}", new Object[]{Thread.currentThread().getName(), temp_file_data, _upload.calculateLastUploadedChunk(_bytes_read), _last_chunk_id_read}); temp_file_out = new FileOutputStream(temp_file); @@ -185,7 +181,7 @@ public final class UploadMACGenerator implements Runnable, SecureSingleThreadNot } if (!_exit && (!_upload.isStopped() || !_upload.getChunkworkers().isEmpty()) && (_bytes_read < _upload.getFile_size() || (_upload.getFile_size() == 0 && _last_chunk_id_read < 1))) { - System.out.println(_bytes_read + "/" + _upload.getFile_size() + " METAMAC wait..."); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} {1}/{2} METAMAC wait...", new Object[]{Thread.currentThread().getName(), _bytes_read, _upload.getFile_size()}); secureWait(); } } @@ -201,10 +197,10 @@ public final class UploadMACGenerator implements Runnable, SecureSingleThreadNot _upload.secureNotify(); - System.out.println("MAC GENERATOR BYE BYE..."); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} MAC GENERATOR BYE BYE...", Thread.currentThread().getName()); } catch (Exception ex) { - getLogger(UploadMACGenerator.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } diff --git a/src/megabasterd/UploadManager.java b/src/megabasterd/UploadManager.java index e950b52b9..184e9f614 100644 --- a/src/megabasterd/UploadManager.java +++ b/src/megabasterd/UploadManager.java @@ -7,8 +7,8 @@ import java.security.NoSuchAlgorithmException; import java.sql.SQLException; import java.util.ArrayList; import static java.util.logging.Level.SEVERE; -import static java.util.logging.Logger.getLogger; -import static megabasterd.MiscTools.HashString; +import java.util.logging.Logger; +import static megabasterd.MiscTools.*; /** * @@ -89,7 +89,7 @@ public final class UploadManager extends TransferenceManager { } } catch (UnsupportedEncodingException | NoSuchAlgorithmException ex) { - getLogger(UploadManager.class.getName()).log(SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(SEVERE, null, ex); } } } @@ -97,7 +97,7 @@ public final class UploadManager extends TransferenceManager { try { DBTools.deleteUploads(delete_up.toArray(new String[delete_up.size()][])); } catch (SQLException ex) { - getLogger(UploadManager.class.getName()).log(SEVERE, null, ex); + Logger.getLogger(getClass().getName()).log(SEVERE, null, ex); } secureNotify(); diff --git a/src/megabasterd/UploadView.java b/src/megabasterd/UploadView.java index 1022e4f9f..56b1fc235 100644 --- a/src/megabasterd/UploadView.java +++ b/src/megabasterd/UploadView.java @@ -7,11 +7,9 @@ import javax.swing.JOptionPane; import javax.swing.JProgressBar; import javax.swing.JSpinner; import javax.swing.SpinnerNumberModel; -import static megabasterd.MainPanel.THREAD_POOL; -import static megabasterd.MiscTools.swingReflectionInvoke; -import static megabasterd.MiscTools.swingReflectionInvokeAndWait; -import static megabasterd.Transference.MAX_WORKERS; -import static megabasterd.Transference.MIN_WORKERS; +import static megabasterd.MainPanel.*; +import static megabasterd.MiscTools.*; +import static megabasterd.Transference.*; /** * @@ -213,7 +211,7 @@ public final class UploadView extends javax.swing.JPanel implements Transference }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); - this.setLayout(layout); + setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() @@ -329,7 +327,7 @@ public final class UploadView extends javax.swing.JPanel implements Transference folder_link_button.setText("Please wait..."); - MiscTools.copyTextToClipboard(_upload.getFolder_link()); + copyTextToClipboard(_upload.getFolder_link()); folder_link_button.setText("Copy folder link"); @@ -344,7 +342,7 @@ public final class UploadView extends javax.swing.JPanel implements Transference file_link_button.setText("Please wait..."); - MiscTools.copyTextToClipboard(_upload.getFile_link()); + copyTextToClipboard(_upload.getFile_link()); file_link_button.setText("Copy file link");