-Cleaning...
This commit is contained in:
tonikelope 2017-10-29 16:52:15 +01:00
parent 82b84af50c
commit 1a0470c023
41 changed files with 604 additions and 736 deletions

View File

@ -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}

View File

@ -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

View File

@ -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;
}

View File

@ -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});
}
}

View File

@ -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()});
}
}

View File

@ -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<CloseableHttpResponse> 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});
}
}

View File

@ -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()});
}
}

View File

@ -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) {

View File

@ -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);
}
}

View File

@ -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;
}

View File

@ -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<String> urls = MiscTools.findAllRegex("< *url *>(.+)< */ *url *>", dec_dlc_data_file, 1);
ArrayList<String> 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) {

View File

@ -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;

View File

@ -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);
}
}

View File

@ -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();

View File

@ -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

View File

@ -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;

View File

@ -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<HashMap> 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<String, Object>) node.getUserObject()).get("key"));

View File

@ -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);
}
}
});

View File

@ -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);

View File

@ -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();

View File

@ -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);
}
});
}

View File

@ -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<String, Object> 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<HashMap<String, Object>> res = selectDownloads();
for (HashMap<String, Object> 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);
}
}

View File

@ -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);
}
}

View File

@ -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;

View File

@ -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));

View File

@ -2,7 +2,7 @@ package megabasterd;
import java.util.HashMap;
import javax.swing.tree.DefaultMutableTreeNode;
import static megabasterd.MiscTools.formatBytes;
import static megabasterd.MiscTools.*;
/**
*

View File

@ -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;

View File

@ -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<String, Method> 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<String, Object> current_node = (HashMap<String, Object>) 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() {
}
}

View File

@ -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;

View File

@ -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);
}
}
});

View File

@ -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<String> getDeleted_mega_accounts() {
return _deleted_mega_accounts;
return Collections.unmodifiableSet(_deleted_mega_accounts);
}
public Set<String> 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);
}
}

View File

@ -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<Thread, Connection> _connections_map;
public static SqliteSingleton getInstance() {
return LazyHolder.INSTANCE;
}
private final ConcurrentHashMap<Thread, Connection> _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;

View File

@ -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});
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}
}

View File

@ -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);
}
});
}

View File

@ -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);
}
}

View File

@ -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<String, Object>) 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);

View File

@ -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);
}
}

View File

@ -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();

View File

@ -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");