From 98af706ff3a5c104aa332025f067e8d858009de2 Mon Sep 17 00:00:00 2001 From: tonikelope Date: Thu, 12 Oct 2023 17:44:03 +0200 Subject: [PATCH] 7.81b Public folder link optional --- .../megabasterd/ChunkDownloader.java | 1 + .../com/tonikelope/megabasterd/Download.java | 4 -- .../megabasterd/FileGrabberDialog.form | 1 - .../megabasterd/FileGrabberDialog.java | 5 +- .../com/tonikelope/megabasterd/MainPanel.java | 2 +- .../tonikelope/megabasterd/MainPanelView.java | 4 +- .../com/tonikelope/megabasterd/MegaAPI.java | 1 - .../megabasterd/SettingsDialog.java | 4 ++ .../tonikelope/megabasterd/Transference.java | 2 +- .../tonikelope/megabasterd/UploadView.form | 47 +++++++++++-- .../tonikelope/megabasterd/UploadView.java | 66 +++++++++++++++++-- 11 files changed, 115 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java b/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java index b874f4ed2..3eb4064a7 100644 --- a/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java +++ b/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java @@ -31,6 +31,7 @@ import java.util.logging.Logger; */ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable { + public static final double SLOW_PROXY_PERC = 0.5; private static final Logger LOG = Logger.getLogger(ChunkDownloader.class.getName()); private final int _id; private final Download _download; diff --git a/src/main/java/com/tonikelope/megabasterd/Download.java b/src/main/java/com/tonikelope/megabasterd/Download.java index 0b61d56be..0946b13fc 100644 --- a/src/main/java/com/tonikelope/megabasterd/Download.java +++ b/src/main/java/com/tonikelope/megabasterd/Download.java @@ -1512,10 +1512,6 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif error_code = ex.getCode(); - if (error_code == -11) { - _status_error = "ERROR: MEGA LINK BLOCKED/DELETED!"; - } - if (Arrays.asList(FATAL_API_ERROR_CODES).contains(error_code)) { _auto_retry_on_error = Arrays.asList(FATAL_API_ERROR_CODES_WITH_RETRY).contains(error_code); diff --git a/src/main/java/com/tonikelope/megabasterd/FileGrabberDialog.form b/src/main/java/com/tonikelope/megabasterd/FileGrabberDialog.form index b3c8000ff..ffc10c15c 100644 --- a/src/main/java/com/tonikelope/megabasterd/FileGrabberDialog.form +++ b/src/main/java/com/tonikelope/megabasterd/FileGrabberDialog.form @@ -285,7 +285,6 @@ - diff --git a/src/main/java/com/tonikelope/megabasterd/FileGrabberDialog.java b/src/main/java/com/tonikelope/megabasterd/FileGrabberDialog.java index 89dbb20b7..960ec8e95 100644 --- a/src/main/java/com/tonikelope/megabasterd/FileGrabberDialog.java +++ b/src/main/java/com/tonikelope/megabasterd/FileGrabberDialog.java @@ -109,6 +109,10 @@ public class FileGrabberDialog extends javax.swing.JDialog { MiscTools.GUIRunAndWait(() -> { initComponents(); + String upload_log_string = DBTools.selectSettingValue("upload_log"); + + upload_log_checkbox.setSelected("yes".equals(upload_log_string)); + updateFonts(this, GUI_FONT, _main_panel.getZoom_factor()); updateTitledBorderFont(((javax.swing.border.TitledBorder) jPanel1.getBorder()), GUI_FONT, _main_panel.getZoom_factor()); @@ -340,7 +344,6 @@ public class FileGrabberDialog extends javax.swing.JDialog { }); upload_log_checkbox.setFont(new java.awt.Font("Dialog", 1, 14)); // NOI18N - upload_log_checkbox.setSelected(true); upload_log_checkbox.setText("Enable log file"); upload_log_checkbox.setDoubleBuffered(true); upload_log_checkbox.setEnabled(false); diff --git a/src/main/java/com/tonikelope/megabasterd/MainPanel.java b/src/main/java/com/tonikelope/megabasterd/MainPanel.java index cf022923c..2ff896254 100644 --- a/src/main/java/com/tonikelope/megabasterd/MainPanel.java +++ b/src/main/java/com/tonikelope/megabasterd/MainPanel.java @@ -1122,7 +1122,7 @@ public final class MainPanel { upload.getView().printStatusNormal("Stopping upload safely before exit MegaBasterd, please wait..."); upload.getView().getSlots_spinner().setEnabled(false); upload.getView().getPause_button().setEnabled(false); - + upload.getView().getFolder_link_button().setEnabled(false); upload.getView().getFile_link_button().setEnabled(false); upload.getView().getFile_size_label().setEnabled(false); upload.getView().getFile_name_label().setEnabled(false); diff --git a/src/main/java/com/tonikelope/megabasterd/MainPanelView.java b/src/main/java/com/tonikelope/megabasterd/MainPanelView.java index 1e08b74bd..2eaa545ba 100644 --- a/src/main/java/com/tonikelope/megabasterd/MainPanelView.java +++ b/src/main/java/com/tonikelope/megabasterd/MainPanelView.java @@ -286,7 +286,7 @@ public final class MainPanelView extends javax.swing.JFrame { fr.write("***** MegaBasterd UPLOAD LOG FILE *****\n\n"); fr.write(MiscTools.getFechaHoraActual() + "\n\n"); fr.write(ma.getEmail() + "\n\n"); - fr.write(dir_name + "\n\n"); + fr.write(dir_name + " " + folder_link + "\n\n"); fr.close(); } catch (IOException ex) { Logger.getLogger(Upload.class.getName()).log(Level.SEVERE, ex.getMessage()); @@ -464,8 +464,6 @@ public final class MainPanelView extends javax.swing.JFrame { initComponents(); - unfreeze_transferences_button.setBackground(Color.WHITE); - updateFonts(this, GUI_FONT, _main_panel.getZoom_factor()); translateLabels(this); diff --git a/src/main/java/com/tonikelope/megabasterd/MegaAPI.java b/src/main/java/com/tonikelope/megabasterd/MegaAPI.java index a422760db..e6ce99697 100644 --- a/src/main/java/com/tonikelope/megabasterd/MegaAPI.java +++ b/src/main/java/com/tonikelope/megabasterd/MegaAPI.java @@ -1031,7 +1031,6 @@ public class MegaAPI implements Serializable { return genRandomByteArray(16); } - //OJO A ESTO, HAY QUE ACTUALIZAR ESTO CON EL ANILLO DE CLAVES Y LA ACTUALIZACIÓN DE SEGURIDAD DE MEGA de 2023 (PENDIENTE) public String shareFolder(String node, byte[] node_key, byte[] share_key) { try { diff --git a/src/main/java/com/tonikelope/megabasterd/SettingsDialog.java b/src/main/java/com/tonikelope/megabasterd/SettingsDialog.java index 5415682bd..6d465ce64 100644 --- a/src/main/java/com/tonikelope/megabasterd/SettingsDialog.java +++ b/src/main/java/com/tonikelope/megabasterd/SettingsDialog.java @@ -3098,6 +3098,10 @@ public class SettingsDialog extends javax.swing.JDialog { this.upload_public_folder_checkbox.setBackground(this.upload_public_folder_checkbox.isSelected() ? java.awt.Color.RED : null); this.public_folder_panel.setVisible(this.upload_public_folder_checkbox.isSelected()); + + revalidate(); + + repaint(); }//GEN-LAST:event_upload_public_folder_checkboxActionPerformed diff --git a/src/main/java/com/tonikelope/megabasterd/Transference.java b/src/main/java/com/tonikelope/megabasterd/Transference.java index 3e08c003e..134dfd578 100644 --- a/src/main/java/com/tonikelope/megabasterd/Transference.java +++ b/src/main/java/com/tonikelope/megabasterd/Transference.java @@ -25,7 +25,7 @@ public interface Transference { int HTTP_READ_TIMEOUT = 60000; int MAX_SIM_TRANSFERENCES = 50; int SIM_TRANSFERENCES_DEFAULT = 4; - int PROGRESS_WATCHDOG_TIMEOUT = 300; + int PROGRESS_WATCHDOG_TIMEOUT = 600; boolean LIMIT_TRANSFERENCE_SPEED_DEFAULT = false; int MAX_TRANSFERENCE_SPEED_DEFAULT = 5; int MAX_WAIT_WORKERS_SHUTDOWN = 15; diff --git a/src/main/java/com/tonikelope/megabasterd/UploadView.form b/src/main/java/com/tonikelope/megabasterd/UploadView.form index 91d7d8b5f..015b6986d 100644 --- a/src/main/java/com/tonikelope/megabasterd/UploadView.form +++ b/src/main/java/com/tonikelope/megabasterd/UploadView.form @@ -31,7 +31,11 @@ - + + + + + @@ -64,7 +68,7 @@ - + @@ -102,9 +106,13 @@ - - - + + + + + + + @@ -277,6 +285,20 @@ + + + + + + + + + + + + + + @@ -358,5 +380,20 @@ + + + + + + + + + + + + + + + diff --git a/src/main/java/com/tonikelope/megabasterd/UploadView.java b/src/main/java/com/tonikelope/megabasterd/UploadView.java index 74abe42f2..ee0950e4a 100644 --- a/src/main/java/com/tonikelope/megabasterd/UploadView.java +++ b/src/main/java/com/tonikelope/megabasterd/UploadView.java @@ -93,6 +93,14 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { return file_link_button; } + public JButton getFolder_link_button() { + return folder_link_button; + } + + public JButton getOpen_browser_button() { + return open_browser_button; + } + public JLabel getStatus_label() { return status_label; } @@ -162,12 +170,14 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { restart_button = new javax.swing.JButton(); file_size_label = new javax.swing.JLabel(); slot_status_label = new javax.swing.JLabel(); + folder_link_button = new javax.swing.JButton(); file_link_button = new javax.swing.JButton(); queue_up_button = new javax.swing.JButton(); queue_down_button = new javax.swing.JButton(); cbc_label = new javax.swing.JLabel(); queue_top_button = new javax.swing.JButton(); queue_bottom_button = new javax.swing.JButton(); + open_browser_button = new javax.swing.JButton(); setBorder(new javax.swing.border.LineBorder(new java.awt.Color(153, 204, 255), 3, true)); @@ -253,6 +263,15 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { slot_status_label.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); slot_status_label.setDoubleBuffered(true); + folder_link_button.setFont(new java.awt.Font("Dialog", 1, 16)); // NOI18N + folder_link_button.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/icons8-copy-to-clipboard-30.png"))); // NOI18N + folder_link_button.setText("Copy folder link"); + folder_link_button.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + folder_link_buttonActionPerformed(evt); + } + }); + file_link_button.setFont(new java.awt.Font("Dialog", 1, 16)); // NOI18N file_link_button.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/icons8-copy-to-clipboard-30.png"))); // NOI18N file_link_button.setText("Copy file link"); @@ -302,6 +321,16 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { } }); + open_browser_button.setFont(new java.awt.Font("Dialog", 1, 16)); // NOI18N + open_browser_button.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/icons8-export-30.png"))); // NOI18N + open_browser_button.setText("Open folder in browser"); + open_browser_button.setDoubleBuffered(true); + open_browser_button.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + open_browser_buttonActionPerformed(evt); + } + }); + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( @@ -312,7 +341,11 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { .addComponent(progress_pbar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addComponent(file_size_label, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(open_browser_button) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(folder_link_button) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(file_link_button)) .addGroup(layout.createSequentialGroup() .addComponent(file_name_label, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) @@ -340,7 +373,7 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { .addComponent(queue_bottom_button) .addGap(0, 0, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() - .addComponent(status_label, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(status_label, javax.swing.GroupLayout.DEFAULT_SIZE, 446, Short.MAX_VALUE) .addGap(18, 18, 18) .addComponent(cbc_label))) .addGap(18, 18, 18) @@ -369,9 +402,12 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { .addComponent(file_name_label) .addComponent(slot_status_label)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(file_link_button) - .addComponent(file_size_label)) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(open_browser_button) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(folder_link_button) + .addComponent(file_link_button) + .addComponent(file_size_label))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(progress_pbar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) @@ -432,6 +468,19 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { }); } + private void folder_link_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_folder_link_buttonActionPerformed + + folder_link_button.setEnabled(false); + + folder_link_button.setText(LabelTranslatorSingleton.getInstance().translate("Please wait...")); + + copyTextToClipboard(_upload.getFolder_link()); + + folder_link_button.setText(LabelTranslatorSingleton.getInstance().translate("Copy folder link")); + + folder_link_button.setEnabled(true); + }//GEN-LAST:event_folder_link_buttonActionPerformed + private void file_link_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_file_link_buttonActionPerformed file_link_button.setEnabled(false); @@ -497,6 +546,11 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { }); }//GEN-LAST:event_queue_bottom_buttonActionPerformed + private void open_browser_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_open_browser_buttonActionPerformed + // TODO add your handling code here: + MiscTools.openBrowserURL(_upload.getFolder_link()); + }//GEN-LAST:event_open_browser_buttonActionPerformed + public void updateCBC(String status) { MiscTools.GUIRunAndWait(() -> { @@ -648,6 +702,8 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { private javax.swing.JButton file_link_button; private javax.swing.JLabel file_name_label; private javax.swing.JLabel file_size_label; + private javax.swing.JButton folder_link_button; + private javax.swing.JButton open_browser_button; private javax.swing.JButton pause_button; private javax.swing.JProgressBar progress_pbar; private javax.swing.JButton queue_bottom_button;