diff --git a/BUILDING.txt b/BUILDING.txt index a77d6c8add..8b09ad5d3f 100644 --- a/BUILDING.txt +++ b/BUILDING.txt @@ -1,4 +1,4 @@ - Last Updated: 1 February 2019 + Last Updated: 5 August 2020 This file outlines what it takes to build Autopsy from source. @@ -15,14 +15,13 @@ STEPS: that we use, you'll need 1.8.0_66 or greater. You can now use 32-bit or 64-bit, but special work is needed to get The Sleuth Kit to compile as 64-bit. -Autopsy has been used and tested with Oracle JavaSE and the included JavaFX support -(http://www.oracle.com/technetwork/java/javase/downloads/index.html). +Autopsy has been used and tested with the following OpenJDK build +(https://github.com/ojdkbuild/ojdkbuild/releases/tag/java-1.8.0-openjdk-1.8.0.222-1.b10). -OpenJDK and OpenJFX might work, but they are not fully tested with Autopsy. 1b) Ensure that JDK_HOME is set to the root JDK directory. -1c) (optional) Download and install Netbeans IDE (http://netbeans.org/) +1c) (optional) Download and install Netbeans IDE (https://netbeans.apache.org/download/index.html) Note: Netbeans IDE is not required to build and run Autopsy, but it is a recommended IDE to use for development of Autopsy modules. diff --git a/Core/nbproject/project.xml b/Core/nbproject/project.xml index 3b6c247424..19c863e6b7 100644 --- a/Core/nbproject/project.xml +++ b/Core/nbproject/project.xml @@ -6,24 +6,6 @@ org.sleuthkit.autopsy.core - - org.jdesktop.beansbinding - - - - 1 - 1.27.1.121 - - - - org.jdesktop.layout - - - - 1 - 1.33.1 - - org.netbeans.api.progress @@ -581,6 +563,14 @@ ext/sleuthkit-caseuco-4.10.0.jar release\modules\ext\sleuthkit-caseuco-4.10.0.jar + + ext/sleuthkit-4.10.0.jar + release/modules/ext/sleuthkit-4.10.0.jar + + + ext/sleuthkit-caseuco-4.10.0.jar + release/modules/ext/sleuthkit-caseuco-4.10.0.jar + ext/gax-1.44.0.jar release\modules\ext\gax-1.44.0.jar diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties index 5a218ba942..0016a075ee 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties @@ -18,19 +18,18 @@ PersonaDetailsPanel.nameLbl.text=Name: AddAliasDialog.accountsLbl.text=Account: AddAliasDialog.okBtn.text=OK AddAliasDialog.cancelBtn.text=Cancel -PersonaDetailsPanel.casesLbl.text=Cases found in: +PersonaDetailsPanel.casesLbl.text=Cases found in PersonaDetailsPanel.deleteAliasBtn.text=Delete PersonaDetailsPanel.addAliasBtn.text=Add -PersonaDetailsPanel.aliasesLabel.text=Aliases: +PersonaDetailsPanel.aliasesLabel.text=Aliases PersonaDetailsPanel.deleteMetadataBtn.text=Delete PersonaDetailsPanel.addMetadataBtn.text=Add -PersonaDetailsPanel.metadataLabel.text=Metadata: +PersonaDetailsPanel.metadataLabel.text=Metadata PersonaDetailsPanel.deleteAccountBtn.text=Delete PersonaDetailsPanel.addAccountBtn.text=Add -PersonaDetailsPanel.accountsLbl.text=Accounts: +PersonaDetailsPanel.accountsLbl.text=Accounts PersonaDetailsPanel.commentField.text= PersonaDetailsPanel.commentLbl.text=Comment: -PersonaDetailsPanel.nameField.text= PersonaDetailsPanel.nameLbl.text=Name: PersonaDetailsPanel.examinerLbl.text=Created by: PersonaDetailsPanel.examinerField.text= @@ -81,3 +80,4 @@ CreatePersonaAccountDialog.identiferLbl.text=Identifier: CreatePersonaAccountDialog.okBtn.text=OK PersonasTopComponent.introText.text=Personas represent an online identity. They span cases and are stored in the Central Repository based on accounts that were found in artifacts. You can create, edit, and delete personas here. PersonasTopComponent.cbFilterByKeyword.text=Filter personas by keyword +PersonaDetailsPanel.nameField.text= diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties-MERGED index e8a7f9718a..a4a041c429 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle.properties-MERGED @@ -52,19 +52,18 @@ PersonaDetailsPanel.nameLbl.text=Name: AddAliasDialog.accountsLbl.text=Account: AddAliasDialog.okBtn.text=OK AddAliasDialog.cancelBtn.text=Cancel -PersonaDetailsPanel.casesLbl.text=Cases found in: +PersonaDetailsPanel.casesLbl.text=Cases found in PersonaDetailsPanel.deleteAliasBtn.text=Delete PersonaDetailsPanel.addAliasBtn.text=Add -PersonaDetailsPanel.aliasesLabel.text=Aliases: +PersonaDetailsPanel.aliasesLabel.text=Aliases PersonaDetailsPanel.deleteMetadataBtn.text=Delete PersonaDetailsPanel.addMetadataBtn.text=Add -PersonaDetailsPanel.metadataLabel.text=Metadata: +PersonaDetailsPanel.metadataLabel.text=Metadata PersonaDetailsPanel.deleteAccountBtn.text=Delete PersonaDetailsPanel.addAccountBtn.text=Add -PersonaDetailsPanel.accountsLbl.text=Accounts: +PersonaDetailsPanel.accountsLbl.text=Accounts PersonaDetailsPanel.commentField.text= PersonaDetailsPanel.commentLbl.text=Comment: -PersonaDetailsPanel.nameField.text= PersonaDetailsPanel.nameLbl.text=Name: PersonaDetailsPanel.examinerLbl.text=Created by: PersonaDetailsPanel.examinerField.text= @@ -127,6 +126,7 @@ CreatePersonaAccountDialog.identiferLbl.text=Identifier: CreatePersonaAccountDialog.okBtn.text=OK PersonasTopComponent.introText.text=Personas represent an online identity. They span cases and are stored in the Central Repository based on accounts that were found in artifacts. You can create, edit, and delete personas here. PersonasTopComponent.cbFilterByKeyword.text=Filter personas by keyword +PersonaDetailsPanel.nameField.text= PersonasTopComponent_delete_confirmation_msg=Are you sure you want to delete this persona? PersonasTopComponent_delete_confirmation_Title=Are you sure? PersonasTopComponent_delete_exception_msg=Failed to delete persona. diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonaDetailsDialog.form b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonaDetailsDialog.form index 296ad79921..70a0422367 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonaDetailsDialog.form +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonaDetailsDialog.form @@ -3,7 +3,6 @@
- @@ -24,26 +23,21 @@ - + + + - - - - - - - - - + + - - - + + + @@ -84,7 +78,18 @@ - - + + + + + + + + + + + + + diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonaDetailsDialog.java b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonaDetailsDialog.java index 187e553a8f..94061921c1 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonaDetailsDialog.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonaDetailsDialog.java @@ -87,10 +87,10 @@ public class PersonaDetailsDialog extends JDialog { cancelBtn = new javax.swing.JButton(); okBtn = new javax.swing.JButton(); + jScrollPane1 = new javax.swing.JScrollPane(); pdp = new org.sleuthkit.autopsy.centralrepository.persona.PersonaDetailsPanel(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); - setResizable(false); org.openide.awt.Mnemonics.setLocalizedText(cancelBtn, org.openide.util.NbBundle.getMessage(PersonaDetailsDialog.class, "PersonaDetailsDialog.cancelBtn.text")); // NOI18N cancelBtn.setMaximumSize(new java.awt.Dimension(79, 23)); @@ -109,20 +109,20 @@ public class PersonaDetailsDialog extends JDialog { } }); + jScrollPane1.setBorder(null); + jScrollPane1.setViewportView(pdp); + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(pdp, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 660, Short.MAX_VALUE) - .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() - .addGap(0, 0, Short.MAX_VALUE) - .addComponent(okBtn) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cancelBtn, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGroup(layout.createSequentialGroup() + .addContainerGap(470, Short.MAX_VALUE) + .addComponent(okBtn) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cancelBtn, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) + .addComponent(jScrollPane1) ); layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {cancelBtn, okBtn}); @@ -130,8 +130,8 @@ public class PersonaDetailsDialog extends JDialog { layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(pdp, javax.swing.GroupLayout.PREFERRED_SIZE, 564, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap() + .addComponent(jScrollPane1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(okBtn) @@ -165,6 +165,7 @@ public class PersonaDetailsDialog extends JDialog { // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton cancelBtn; + private javax.swing.JScrollPane jScrollPane1; private javax.swing.JButton okBtn; private org.sleuthkit.autopsy.centralrepository.persona.PersonaDetailsPanel pdp; // End of variables declaration//GEN-END:variables diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonaDetailsPanel.form b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonaDetailsPanel.form index ded4f0f448..ad0a16878f 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonaDetailsPanel.form +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonaDetailsPanel.form @@ -45,7 +45,7 @@ - + @@ -61,53 +61,18 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -117,6 +82,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -125,7 +130,12 @@ - + + + + + + @@ -137,12 +147,7 @@ - - - - - - + @@ -152,7 +157,7 @@ - + @@ -162,7 +167,7 @@ - + @@ -172,7 +177,7 @@ - + @@ -229,6 +234,11 @@ + + + + + @@ -244,6 +254,11 @@ + + + + + @@ -291,6 +306,11 @@ + + + + + @@ -338,6 +358,11 @@ + + + + + @@ -385,6 +410,11 @@ + + + + + diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonaDetailsPanel.java b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonaDetailsPanel.java index edcb36c353..bc4f6ec9c3 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonaDetailsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/PersonaDetailsPanel.java @@ -399,11 +399,13 @@ public final class PersonaDetailsPanel extends javax.swing.JPanel { commentField.setEditable(false); commentField.setText(org.openide.util.NbBundle.getMessage(PersonaDetailsPanel.class, "PersonaDetailsPanel.commentField.text")); // NOI18N + nameLbl.setFont(nameLbl.getFont().deriveFont(nameLbl.getFont().getStyle() | java.awt.Font.BOLD)); org.openide.awt.Mnemonics.setLocalizedText(nameLbl, org.openide.util.NbBundle.getMessage(PersonaDetailsPanel.class, "PersonaDetailsPanel.nameLbl.text")); // NOI18N nameField.setEditable(false); nameField.setText(org.openide.util.NbBundle.getMessage(PersonaDetailsPanel.class, "PersonaDetailsPanel.nameField.text")); // NOI18N + accountsLbl.setFont(accountsLbl.getFont().deriveFont(accountsLbl.getFont().getStyle() | java.awt.Font.BOLD)); org.openide.awt.Mnemonics.setLocalizedText(accountsLbl, org.openide.util.NbBundle.getMessage(PersonaDetailsPanel.class, "PersonaDetailsPanel.accountsLbl.text")); // NOI18N accountsTable.setModel(new javax.swing.table.DefaultTableModel( @@ -428,6 +430,7 @@ public final class PersonaDetailsPanel extends javax.swing.JPanel { org.openide.awt.Mnemonics.setLocalizedText(deleteAccountBtn, org.openide.util.NbBundle.getMessage(PersonaDetailsPanel.class, "PersonaDetailsPanel.deleteAccountBtn.text")); // NOI18N deleteAccountBtn.setEnabled(false); + metadataLabel.setFont(metadataLabel.getFont().deriveFont(metadataLabel.getFont().getStyle() | java.awt.Font.BOLD)); org.openide.awt.Mnemonics.setLocalizedText(metadataLabel, org.openide.util.NbBundle.getMessage(PersonaDetailsPanel.class, "PersonaDetailsPanel.metadataLabel.text")); // NOI18N metadataTable.setModel(new javax.swing.table.DefaultTableModel( @@ -452,6 +455,7 @@ public final class PersonaDetailsPanel extends javax.swing.JPanel { org.openide.awt.Mnemonics.setLocalizedText(deleteMetadataBtn, org.openide.util.NbBundle.getMessage(PersonaDetailsPanel.class, "PersonaDetailsPanel.deleteMetadataBtn.text")); // NOI18N deleteMetadataBtn.setEnabled(false); + aliasesLabel.setFont(aliasesLabel.getFont().deriveFont(aliasesLabel.getFont().getStyle() | java.awt.Font.BOLD)); org.openide.awt.Mnemonics.setLocalizedText(aliasesLabel, org.openide.util.NbBundle.getMessage(PersonaDetailsPanel.class, "PersonaDetailsPanel.aliasesLabel.text")); // NOI18N aliasesTable.setModel(new javax.swing.table.DefaultTableModel( @@ -476,6 +480,7 @@ public final class PersonaDetailsPanel extends javax.swing.JPanel { org.openide.awt.Mnemonics.setLocalizedText(deleteAliasBtn, org.openide.util.NbBundle.getMessage(PersonaDetailsPanel.class, "PersonaDetailsPanel.deleteAliasBtn.text")); // NOI18N deleteAliasBtn.setEnabled(false); + casesLbl.setFont(casesLbl.getFont().deriveFont(casesLbl.getFont().getStyle() | java.awt.Font.BOLD)); org.openide.awt.Mnemonics.setLocalizedText(casesLbl, org.openide.util.NbBundle.getMessage(PersonaDetailsPanel.class, "PersonaDetailsPanel.casesLbl.text")); // NOI18N casesTable.setModel(new javax.swing.table.DefaultTableModel( @@ -498,43 +503,14 @@ public final class PersonaDetailsPanel extends javax.swing.JPanel { .addGroup(detailsPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(detailsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(accountsTablePane, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 605, Short.MAX_VALUE) .addComponent(accountsLbl, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(metadataLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(metadataTablePane, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(aliasesLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(aliasesTablePane) .addComponent(casesLbl, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(casesTablePane) - .addGroup(detailsPanelLayout.createSequentialGroup() - .addComponent(commentLbl) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(commentField)) .addGroup(detailsPanelLayout.createSequentialGroup() .addComponent(nameLbl) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(nameField)) - .addGroup(detailsPanelLayout.createSequentialGroup() - .addGroup(detailsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(detailsPanelLayout.createSequentialGroup() - .addComponent(addAccountBtn) - .addGap(18, 18, 18) - .addComponent(editAccountBtn) - .addGap(18, 18, 18) - .addComponent(deleteAccountBtn)) - .addGroup(detailsPanelLayout.createSequentialGroup() - .addComponent(addMetadataBtn) - .addGap(18, 18, 18) - .addComponent(editMetadataBtn) - .addGap(18, 18, 18) - .addComponent(deleteMetadataBtn)) - .addGroup(detailsPanelLayout.createSequentialGroup() - .addComponent(addAliasBtn) - .addGap(18, 18, 18) - .addComponent(editAliasBtn) - .addGap(18, 18, 18) - .addComponent(deleteAliasBtn))) - .addGap(0, 0, Short.MAX_VALUE)) .addGroup(detailsPanelLayout.createSequentialGroup() .addComponent(examinerLbl) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) @@ -542,13 +518,49 @@ public final class PersonaDetailsPanel extends javax.swing.JPanel { .addGap(18, 18, 18) .addComponent(creationDateLbl) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(creationDateField))) + .addComponent(creationDateField)) + .addGroup(detailsPanelLayout.createSequentialGroup() + .addComponent(commentLbl) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(commentField)) + .addGroup(detailsPanelLayout.createSequentialGroup() + .addGap(10, 10, 10) + .addGroup(detailsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(aliasesTablePane, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 595, Short.MAX_VALUE) + .addComponent(metadataTablePane, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(accountsTablePane, javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(detailsPanelLayout.createSequentialGroup() + .addGroup(detailsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(detailsPanelLayout.createSequentialGroup() + .addComponent(addAliasBtn) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(editAliasBtn) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(deleteAliasBtn)) + .addGroup(detailsPanelLayout.createSequentialGroup() + .addComponent(addMetadataBtn) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(editMetadataBtn) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(deleteMetadataBtn)) + .addGroup(detailsPanelLayout.createSequentialGroup() + .addComponent(addAccountBtn) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(editAccountBtn) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(deleteAccountBtn))) + .addGap(0, 0, Short.MAX_VALUE)) + .addComponent(casesTablePane)))) .addContainerGap()) ); detailsPanelLayout.setVerticalGroup( detailsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(detailsPanelLayout.createSequentialGroup() - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addContainerGap() + .addGroup(detailsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(nameLbl) + .addComponent(nameField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(18, 18, 18) .addGroup(detailsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(examinerLbl) .addComponent(examinerField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) @@ -558,11 +570,7 @@ public final class PersonaDetailsPanel extends javax.swing.JPanel { .addGroup(detailsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(commentField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(commentLbl)) - .addGap(20, 20, 20) - .addGroup(detailsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(nameLbl) - .addComponent(nameField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGap(18, 18, 18) .addComponent(accountsLbl) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(accountsTablePane, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE) @@ -571,7 +579,7 @@ public final class PersonaDetailsPanel extends javax.swing.JPanel { .addComponent(addAccountBtn) .addComponent(deleteAccountBtn) .addComponent(editAccountBtn)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(metadataLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(metadataTablePane, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE) @@ -580,7 +588,7 @@ public final class PersonaDetailsPanel extends javax.swing.JPanel { .addComponent(addMetadataBtn) .addComponent(deleteMetadataBtn) .addComponent(editMetadataBtn)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(aliasesLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(aliasesTablePane, javax.swing.GroupLayout.PREFERRED_SIZE, 74, javax.swing.GroupLayout.PREFERRED_SIZE) @@ -589,7 +597,7 @@ public final class PersonaDetailsPanel extends javax.swing.JPanel { .addComponent(addAliasBtn) .addComponent(deleteAliasBtn) .addComponent(editAliasBtn)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(casesLbl) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(casesTablePane, javax.swing.GroupLayout.PREFERRED_SIZE, 63, javax.swing.GroupLayout.PREFERRED_SIZE) @@ -606,7 +614,7 @@ public final class PersonaDetailsPanel extends javax.swing.JPanel { ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 521, Short.MAX_VALUE) + .addGap(0, 583, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(detailsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) diff --git a/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineIngestManager.java b/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineIngestManager.java index 442c27acc8..edbcd7a76f 100755 --- a/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineIngestManager.java +++ b/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineIngestManager.java @@ -141,7 +141,7 @@ public class CommandLineIngestManager extends CommandLineManager{ if (commands == null || commands.isEmpty()) { LOGGER.log(Level.SEVERE, "No command line commands specified"); - System.err.println("No command line commands specified"); + System.out.println("No command line commands specified"); return; } @@ -169,7 +169,7 @@ public class CommandLineIngestManager extends CommandLineManager{ } catch (CaseActionException ex) { String baseCaseName = command.getInputs().get(CommandLineCommand.InputType.CASE_NAME.name()); LOGGER.log(Level.SEVERE, "Error creating or opening case " + baseCaseName, ex); - System.err.println("Error creating or opening case " + baseCaseName); + System.out.println("Error creating or opening case " + baseCaseName); // Do not process any other commands return; } @@ -195,7 +195,7 @@ public class CommandLineIngestManager extends CommandLineManager{ } catch (InterruptedException | AutoIngestDataSourceProcessor.AutoIngestDataSourceProcessorException | CaseActionException ex) { String dataSourcePath = command.getInputs().get(CommandLineCommand.InputType.DATA_SOURCE_PATH.name()); LOGGER.log(Level.SEVERE, "Error adding data source " + dataSourcePath, ex); - System.err.println("Error adding data source " + dataSourcePath); + System.out.println("Error adding data source " + dataSourcePath); // Do not process any other commands return; } @@ -224,7 +224,7 @@ public class CommandLineIngestManager extends CommandLineManager{ content = Case.getCurrentCaseThrows().getSleuthkitCase().getContentById(dataSourceObjId); } catch (TskCoreException ex) { LOGGER.log(Level.SEVERE, "Exception while trying to find data source with object ID " + dataSourceId, ex); - System.err.println("Exception while trying to find data source with object ID " + dataSourceId); + System.out.println("Exception while trying to find data source with object ID " + dataSourceId); // Do not process any other commands return; } @@ -249,7 +249,7 @@ public class CommandLineIngestManager extends CommandLineManager{ } catch (InterruptedException | CaseActionException ex) { String dataSourcePath = command.getInputs().get(CommandLineCommand.InputType.DATA_SOURCE_PATH.name()); LOGGER.log(Level.SEVERE, "Error running ingest on data source " + dataSourcePath, ex); - System.err.println("Error running ingest on data source " + dataSourcePath); + System.out.println("Error running ingest on data source " + dataSourcePath); // Do not process any other commands return; } @@ -272,7 +272,7 @@ public class CommandLineIngestManager extends CommandLineManager{ } catch (CaseActionException ex) { String caseDirPath = command.getInputs().get(CommandLineCommand.InputType.CASE_FOLDER_PATH.name()); LOGGER.log(Level.SEVERE, "Error opening case in case directory: " + caseDirPath, ex); - System.err.println("Error opening case in case directory: " + caseDirPath); + System.out.println("Error opening case in case directory: " + caseDirPath); // Do not process any other commands return; } @@ -302,7 +302,7 @@ public class CommandLineIngestManager extends CommandLineManager{ } catch (CaseActionException ex) { String caseDirPath = command.getInputs().get(CommandLineCommand.InputType.CASE_FOLDER_PATH.name()); LOGGER.log(Level.SEVERE, "Error opening case in case directory: " + caseDirPath, ex); - System.err.println("Error opening case in case directory: " + caseDirPath); + System.out.println("Error opening case in case directory: " + caseDirPath); // Do not process any other commands return; } @@ -320,14 +320,14 @@ public class CommandLineIngestManager extends CommandLineManager{ * logged. */ LOGGER.log(Level.SEVERE, "Unexpected error", ex); - System.err.println("Unexpected error. Exiting..."); + System.out.println("Unexpected error. Exiting..."); } finally { try { Case.closeCurrentCase(); } catch (CaseActionException ex) { LOGGER.log(Level.WARNING, "Exception while closing case", ex); - System.err.println("Exception while closing case"); + System.out.println("Exception while closing case"); } } @@ -507,7 +507,7 @@ public class CommandLineIngestManager extends CommandLineManager{ if (selectedProfile == null) { // unable to find the user specified profile LOGGER.log(Level.SEVERE, "Unable to find ingest profile: {0}. Ingest cancelled!", ingestProfileName); - System.err.println("Unable to find ingest profile: " + ingestProfileName + ". Ingest cancelled!"); + System.out.println("Unable to find ingest profile: " + ingestProfileName + ". Ingest cancelled!"); return; } @@ -516,7 +516,7 @@ public class CommandLineIngestManager extends CommandLineManager{ if (selectedFileSet == null) { // unable to find the user specified profile LOGGER.log(Level.SEVERE, "Unable to find file filter {0} for ingest profile: {1}. Ingest cancelled!", new Object[]{selectedProfile.getFileIngestFilter(), ingestProfileName}); - System.err.println("Unable to find file filter " + selectedProfile.getFileIngestFilter() + " for ingest profile: " + ingestProfileName + ". Ingest cancelled!"); + System.out.println("Unable to find file filter " + selectedProfile.getFileIngestFilter() + " for ingest profile: " + ingestProfileName + ". Ingest cancelled!"); return; } } diff --git a/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineOpenCaseManager.java b/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineOpenCaseManager.java index d990f2a1cf..d0a10b7ebb 100755 --- a/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineOpenCaseManager.java +++ b/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineOpenCaseManager.java @@ -68,7 +68,7 @@ public class CommandLineOpenCaseManager extends CommandLineManager { if (casePath == null || casePath.isEmpty()) { LOGGER.log(Level.SEVERE, "No command line commands specified"); - System.err.println("No command line commands specified"); + System.out.println("No command line commands specified"); return; } @@ -77,7 +77,7 @@ public class CommandLineOpenCaseManager extends CommandLineManager { LOGGER.log(Level.INFO, "Opening case at " + casePath); } catch (CaseActionException ex) { LOGGER.log(Level.SEVERE, "Error opening case from command line ", ex); - System.err.println("Error opening case "); + System.out.println("Error opening case "); } } diff --git a/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineOptionProcessor.java b/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineOptionProcessor.java index 361a32a6ac..5a6f8596b0 100755 --- a/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineOptionProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/commandlineingest/CommandLineOptionProcessor.java @@ -90,7 +90,7 @@ public class CommandLineOptionProcessor extends OptionProcessor { || values.containsKey(generateReportsOption))) { // not running from command line logger.log(Level.INFO, "No command line commands passed in as inputs. Not running from command line."); //NON-NLS - System.err.println("No command line commands passed in as inputs. Not running from command line."); + System.out.println("No command line commands passed in as inputs. Not running from command line."); return; } @@ -101,14 +101,14 @@ public class CommandLineOptionProcessor extends OptionProcessor { argDirs = values.get(caseNameOption); if (argDirs.length < 1) { logger.log(Level.SEVERE, "Missing argument 'caseName'"); - System.err.println("Missing argument 'caseName'"); + System.out.println("Missing argument 'caseName'"); return; } inputCaseName = argDirs[0]; if (inputCaseName == null || inputCaseName.isEmpty()) { logger.log(Level.SEVERE, "'caseName' argument is empty"); - System.err.println("'caseName' argument is empty"); + System.out.println("'caseName' argument is empty"); return; } } @@ -119,26 +119,26 @@ public class CommandLineOptionProcessor extends OptionProcessor { if (argDirs.length < 1) { logger.log(Level.SEVERE, "Missing argument 'caseType'"); - System.err.println("Missing argument 'caseType'"); + System.out.println("Missing argument 'caseType'"); return; } caseType = argDirs[0]; if (caseType == null || caseType.isEmpty()) { logger.log(Level.SEVERE, "'caseType' argument is empty"); - System.err.println("'caseType' argument is empty"); + System.out.println("'caseType' argument is empty"); return; } if (!caseType.equalsIgnoreCase(CASETYPE_MULTI) && !caseType.equalsIgnoreCase(CASETYPE_SINGLE)) { logger.log(Level.SEVERE, "'caseType' argument is invalid"); - System.err.println("'caseType' argument is invalid"); + System.out.println("'caseType' argument is invalid"); return; } if (caseType.equalsIgnoreCase(CASETYPE_MULTI) && !FeatureAccessUtils.canCreateMultiUserCases()) { logger.log(Level.SEVERE, "Unable to create multi user case."); - System.err.println("Unable to create multi user case. Confirm that multi user settings are configured correctly."); + System.out.println("Unable to create multi user case. Confirm that multi user settings are configured correctly."); return; } } @@ -148,20 +148,20 @@ public class CommandLineOptionProcessor extends OptionProcessor { argDirs = values.get(caseBaseDirOption); if (argDirs.length < 1) { logger.log(Level.SEVERE, "Missing argument 'caseBaseDir'"); - System.err.println("Missing argument 'caseBaseDir'"); + System.out.println("Missing argument 'caseBaseDir'"); return; } caseBaseDir = argDirs[0]; if (caseBaseDir == null || caseBaseDir.isEmpty()) { - logger.log(Level.SEVERE, "Missing argument 'caseBaseDir'"); - System.err.println("Missing argument 'caseBaseDir'"); + logger.log(Level.SEVERE, "Missing argument 'caseBaseDir' option"); + System.out.println("Missing argument 'caseBaseDir' option"); return; } if (!(new File(caseBaseDir).exists()) || !(new File(caseBaseDir).isDirectory())) { - logger.log(Level.SEVERE, "''caseBaseDir'' {0} directory doesn''t exist or is not a directory", caseBaseDir); - System.err.println("'caseBaseDir' directory doesn't exist or is not a directory: " + caseBaseDir); + logger.log(Level.SEVERE, "'caseBaseDir' {0} directory doesn''t exist or is not a directory", caseBaseDir); + System.out.println("'caseBaseDir' directory doesn't exist or is not a directory: " + caseBaseDir); return; } } @@ -172,7 +172,7 @@ public class CommandLineOptionProcessor extends OptionProcessor { argDirs = values.get(dataSourcePathOption); if (argDirs.length < 1) { logger.log(Level.SEVERE, "Missing argument 'dataSourcePath'"); - System.err.println("Missing argument 'dataSourcePath'"); + System.out.println("Missing argument 'dataSourcePath'"); return; } dataSourcePath = argDirs[0]; @@ -180,13 +180,13 @@ public class CommandLineOptionProcessor extends OptionProcessor { // verify inputs if (dataSourcePath == null || dataSourcePath.isEmpty()) { logger.log(Level.SEVERE, "Missing argument 'dataSourcePath'"); - System.err.println("Missing argument 'dataSourcePath'"); + System.out.println("Missing argument 'dataSourcePath'"); return; } if (!(new File(dataSourcePath).exists())) { logger.log(Level.SEVERE, "Input data source file {0} doesn''t exist", dataSourcePath); - System.err.println("Input data source file " + dataSourcePath + " doesn't exist"); + System.out.println("Input data source file " + dataSourcePath + " doesn't exist"); return; } } @@ -197,7 +197,7 @@ public class CommandLineOptionProcessor extends OptionProcessor { argDirs = values.get(dataSourceObjectIdOption); if (argDirs.length < 1) { logger.log(Level.SEVERE, "Missing argument 'dataSourceObjectIdOption'"); - System.err.println("Missing argument 'dataSourceObjectIdOption'"); + System.out.println("Missing argument 'dataSourceObjectIdOption'"); return; } dataSourceId = argDirs[0]; @@ -205,7 +205,7 @@ public class CommandLineOptionProcessor extends OptionProcessor { // verify inputs if (dataSourceId == null || dataSourceId.isEmpty()) { logger.log(Level.SEVERE, "Input data source id is empty"); - System.err.println("Input data source id is empty"); + System.out.println("Input data source id is empty"); return; } } @@ -215,22 +215,22 @@ public class CommandLineOptionProcessor extends OptionProcessor { argDirs = values.get(caseDirOption); if (argDirs.length < 1) { - logger.log(Level.SEVERE, "Missing argument 'caseDirOption'"); - System.err.println("Missing argument 'caseDirOption'"); + logger.log(Level.SEVERE, "Argument missing from 'caseDir' option"); + System.out.println("Argument missing from 'caseDir' option"); return; } caseDir = argDirs[0]; // verify inputs if (caseDir == null || caseDir.isEmpty()) { - logger.log(Level.SEVERE, "Missing argument 'caseDirOption'"); - System.err.println("Missing argument 'caseDirOption'"); + logger.log(Level.SEVERE, "Argument missing from 'caseDir'"); + System.out.println("Argument missing from 'caseDir'"); return; } if (!(new File(caseDir).exists()) || !(new File(caseDir).isDirectory())) { - logger.log(Level.SEVERE, "Case directory {0} doesn''t exist or is not a directory", caseDir); - System.err.println("Case directory " + caseDir + " doesn't exist or is not a directory"); + logger.log(Level.SEVERE, "Case directory {0} does not exist or is not a directory", caseDir); + System.out.println("Case directory " + caseDir + " does not exist or is not a directory"); return; } } @@ -240,8 +240,8 @@ public class CommandLineOptionProcessor extends OptionProcessor { argDirs = values.get(ingestProfileOption); if (argDirs.length < 1) { - logger.log(Level.SEVERE, "Missing argument 'ingestProfile'"); - System.err.println("Missing argument 'ingestProfile'"); + logger.log(Level.SEVERE, "Argument missing from 'ingestProfile' option"); + System.out.println("Argument missing from 'ingestProfile' option"); return; } ingestProfile = argDirs[0]; @@ -249,7 +249,7 @@ public class CommandLineOptionProcessor extends OptionProcessor { // verify inputs if (ingestProfile == null || ingestProfile.isEmpty()) { logger.log(Level.SEVERE, "Missing argument 'ingestProfile'"); - System.err.println("Missing argument 'ingestProfile'"); + System.out.println("Missing argument 'ingestProfile'"); return; } } @@ -269,7 +269,7 @@ public class CommandLineOptionProcessor extends OptionProcessor { // 'caseBaseDir' must always be specified for "CREATE_CASE" command if (caseBaseDir.isEmpty()) { logger.log(Level.SEVERE, "'caseBaseDir' argument is empty"); - System.err.println("'caseBaseDir' argument is empty"); + System.out.println("'caseBaseDir' argument is empty"); runFromCommandLine = false; return; } @@ -289,7 +289,7 @@ public class CommandLineOptionProcessor extends OptionProcessor { if (!values.containsKey(createCaseCommandOption) && caseDir.isEmpty()) { // new case is not being created during this run, so 'caseDir' should have been specified logger.log(Level.SEVERE, "'caseDir' argument is empty"); - System.err.println("'caseDir' argument is empty"); + System.out.println("'caseDir' argument is empty"); runFromCommandLine = false; return; } @@ -297,7 +297,7 @@ public class CommandLineOptionProcessor extends OptionProcessor { // 'dataSourcePath' must always be specified for "ADD_DATA_SOURCE" command if (dataSourcePath.isEmpty()) { logger.log(Level.SEVERE, "'dataSourcePath' argument is empty"); - System.err.println("'dataSourcePath' argument is empty"); + System.out.println("'dataSourcePath' argument is empty"); runFromCommandLine = false; return; } @@ -316,7 +316,7 @@ public class CommandLineOptionProcessor extends OptionProcessor { if (!values.containsKey(createCaseCommandOption) && caseDir.isEmpty()) { // new case is not being created during this run, so 'caseDir' should have been specified logger.log(Level.SEVERE, "'caseDir' argument is empty"); - System.err.println("'caseDir' argument is empty"); + System.out.println("'caseDir' argument is empty"); runFromCommandLine = false; return; } @@ -325,7 +325,7 @@ public class CommandLineOptionProcessor extends OptionProcessor { if (!values.containsKey(addDataSourceCommandOption) && dataSourceId.isEmpty()) { // data source is not being added during this run, so 'dataSourceId' should have been specified logger.log(Level.SEVERE, "'dataSourceId' argument is empty"); - System.err.println("'dataSourceId' argument is empty"); + System.out.println("'dataSourceId' argument is empty"); runFromCommandLine = false; return; } @@ -345,7 +345,7 @@ public class CommandLineOptionProcessor extends OptionProcessor { if (!values.containsKey(createCaseCommandOption) && caseDir.isEmpty()) { // new case is not being created during this run, so 'caseDir' should have been specified logger.log(Level.SEVERE, "'caseDir' argument is empty"); - System.err.println("'caseDir' argument is empty"); + System.out.println("'caseDir' argument is empty"); runFromCommandLine = false; return; } @@ -364,7 +364,7 @@ public class CommandLineOptionProcessor extends OptionProcessor { if (!values.containsKey(createCaseCommandOption) && caseDir.isEmpty()) { // new case is not being created during this run, so 'caseDir' should have been specified logger.log(Level.SEVERE, "'caseDir' argument is empty"); - System.err.println("'caseDir' argument is empty"); + System.out.println("'caseDir' argument is empty"); runFromCommandLine = false; return; } @@ -379,7 +379,7 @@ public class CommandLineOptionProcessor extends OptionProcessor { // something is not right. if (reportProfile != null && reportProfile.isEmpty()) { logger.log(Level.SEVERE, "'generateReports' argument is empty"); - System.err.println("'generateReports' argument is empty"); + System.out.println("'generateReports' argument is empty"); runFromCommandLine = false; return; } diff --git a/Core/src/org/sleuthkit/autopsy/core/Installer.java b/Core/src/org/sleuthkit/autopsy/core/Installer.java index d527f48244..0612729b61 100644 --- a/Core/src/org/sleuthkit/autopsy/core/Installer.java +++ b/Core/src/org/sleuthkit/autopsy/core/Installer.java @@ -164,50 +164,23 @@ public class Installer extends ModuleInstall { } catch (UnsatisfiedLinkError e) { logger.log(Level.SEVERE, "Error loading VHDI library, ", e); //NON-NLS } + + // Only attempt to load OpenSSL if we're in 64 bit mode + if(System.getProperty("sun.arch.data.model").contains("64")) { + // libcrypto must be loaded before libssl to make sure it's the correct version + try { + System.loadLibrary("libcrypto-1_1-x64"); //NON-NLS + logger.log(Level.INFO, "Crypto library loaded"); //NON-NLS + } catch (UnsatisfiedLinkError e) { + logger.log(Level.SEVERE, "Error loading Crypto library, ", e); //NON-NLS + } - /* - * PostgreSQL - */ - try { - System.loadLibrary("msvcr120"); //NON-NLS - logger.log(Level.INFO, "MSVCR 120 library loaded"); //NON-NLS - } catch (UnsatisfiedLinkError e) { - logger.log(Level.SEVERE, "Error loading MSVCR120 library, ", e); //NON-NLS - } - - try { - System.loadLibrary("libeay32"); //NON-NLS - logger.log(Level.INFO, "LIBEAY32 library loaded"); //NON-NLS - } catch (UnsatisfiedLinkError e) { - logger.log(Level.SEVERE, "Error loading LIBEAY32 library, ", e); //NON-NLS - } - - try { - System.loadLibrary("ssleay32"); //NON-NLS - logger.log(Level.INFO, "SSLEAY32 library loaded"); //NON-NLS - } catch (UnsatisfiedLinkError e) { - logger.log(Level.SEVERE, "Error loading SSLEAY32 library, ", e); //NON-NLS - } - - try { - System.loadLibrary("libiconv-2"); //NON-NLS - logger.log(Level.INFO, "libiconv-2 library loaded"); //NON-NLS - } catch (UnsatisfiedLinkError e) { - logger.log(Level.SEVERE, "Error loading libiconv-2 library, ", e); //NON-NLS - } - - try { - System.loadLibrary("libintl-8"); //NON-NLS - logger.log(Level.INFO, "libintl-8 library loaded"); //NON-NLS - } catch (UnsatisfiedLinkError e) { - logger.log(Level.SEVERE, "Error loading libintl-8 library, ", e); //NON-NLS - } - - try { - System.loadLibrary("libpq"); //NON-NLS - logger.log(Level.INFO, "LIBPQ library loaded"); //NON-NLS - } catch (UnsatisfiedLinkError e) { - logger.log(Level.SEVERE, "Error loading LIBPQ library, ", e); //NON-NLS + try { + System.loadLibrary("libssl-1_1-x64"); //NON-NLS + logger.log(Level.INFO, "OpenSSL library loaded"); //NON-NLS + } catch (UnsatisfiedLinkError e) { + logger.log(Level.SEVERE, "Error loading OpenSSL library, ", e); //NON-NLS + } } } } diff --git a/Core/src/org/sleuthkit/autopsy/report/infrastructure/ReportVisualPanel1.java b/Core/src/org/sleuthkit/autopsy/report/infrastructure/ReportVisualPanel1.java index 79680178e1..e98f0b7984 100644 --- a/Core/src/org/sleuthkit/autopsy/report/infrastructure/ReportVisualPanel1.java +++ b/Core/src/org/sleuthkit/autopsy/report/infrastructure/ReportVisualPanel1.java @@ -59,11 +59,13 @@ final class ReportVisualPanel1 extends JPanel implements ListSelectionListener { private PortableCaseReportModule portableCaseModule; private Map moduleConfigs; private Integer selectedIndex; + private final boolean displayCaseSpecificData; /** * Creates new form ReportVisualPanel1 */ - public ReportVisualPanel1(ReportWizardPanel1 wizPanel, Map moduleConfigs) { + ReportVisualPanel1(ReportWizardPanel1 wizPanel, Map moduleConfigs, boolean displayCaseSpecificData) { + this.displayCaseSpecificData = displayCaseSpecificData; this.wizPanel = wizPanel; this.moduleConfigs = moduleConfigs; initComponents(); @@ -371,7 +373,7 @@ final class ReportVisualPanel1 extends JPanel implements ListSelectionListener { // General modules that support data source selection will be presented // a data source selection panel, so they should not be finished immediately. - boolean generalModuleSelected = (module instanceof GeneralReportModule) && !((GeneralReportModule)module).supportsDataSourceSelection(); + boolean generalModuleSelected = (module instanceof GeneralReportModule) && (!((GeneralReportModule)module).supportsDataSourceSelection() || !displayCaseSpecificData); wizPanel.setNext(!generalModuleSelected); wizPanel.setFinish(generalModuleSelected); diff --git a/Core/src/org/sleuthkit/autopsy/report/infrastructure/ReportWizardIterator.java b/Core/src/org/sleuthkit/autopsy/report/infrastructure/ReportWizardIterator.java index 59e66a36a2..92de2926bc 100644 --- a/Core/src/org/sleuthkit/autopsy/report/infrastructure/ReportWizardIterator.java +++ b/Core/src/org/sleuthkit/autopsy/report/infrastructure/ReportWizardIterator.java @@ -72,12 +72,12 @@ final class ReportWizardIterator implements WizardDescriptor.Iterator moduleConfigs; private final JButton nextButton; private final JButton finishButton; + private final boolean displayCaseSpecificData; - ReportWizardPanel1(Map moduleConfigs) { + ReportWizardPanel1(Map moduleConfigs, boolean displayCaseSpecificData) { this.moduleConfigs = moduleConfigs; + this.displayCaseSpecificData = displayCaseSpecificData; nextButton = new JButton(NbBundle.getMessage(this.getClass(), "ReportWizardPanel1.nextButton.text")); finishButton = new JButton(NbBundle.getMessage(this.getClass(), "ReportWizardPanel1.finishButton.text")); finishButton.setEnabled(false); @@ -63,7 +65,7 @@ class ReportWizardPanel1 implements WizardDescriptor.FinishablePanel - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build.xml b/build.xml index 740f8b82ad..a7c64ef4ba 100644 --- a/build.xml +++ b/build.xml @@ -4,11 +4,11 @@ Builds the module suite Autopsy 4. - + - + diff --git a/docs/doxygen-user/images/Personas/persona_edit.png b/docs/doxygen-user/images/Personas/persona_edit.png index 1dc07c01d8..2f2bde865f 100644 Binary files a/docs/doxygen-user/images/Personas/persona_edit.png and b/docs/doxygen-user/images/Personas/persona_edit.png differ diff --git a/docs/doxygen-user/images/Personas/personas_create.png b/docs/doxygen-user/images/Personas/personas_create.png index bacfb9e7c6..5da750d572 100644 Binary files a/docs/doxygen-user/images/Personas/personas_create.png and b/docs/doxygen-user/images/Personas/personas_create.png differ diff --git a/docs/doxygen-user/images/Personas/personas_main.png b/docs/doxygen-user/images/Personas/personas_main.png index 071ba57227..b5aa67bd5b 100644 Binary files a/docs/doxygen-user/images/Personas/personas_main.png and b/docs/doxygen-user/images/Personas/personas_main.png differ diff --git a/docs/doxygen-user/personas.dox b/docs/doxygen-user/personas.dox index 839df4b828..a443955445 100644 --- a/docs/doxygen-user/personas.dox +++ b/docs/doxygen-user/personas.dox @@ -37,10 +37,10 @@ By default, when the Personas Editor is launched, all the personas in the Centra To create a new persona, click the "New Persona" button. A "Create Persona" dialog box will pop up. The following is a description of each field:
    +
  • Name: The name of the persona
  • Created by: Will be automatically filled in with the current user
  • Created on: Will be automatically filled in after saving the persona
  • Comment: A description of the persona -
  • Name: The name of the persona
  • Accounts: At least one account belonging to the persona
  • Metadata: (Optional) Name/value pairs of data related to the persona
  • Aliases: (Optional) Any aliases for this persona diff --git a/nbproject/platform.properties b/nbproject/platform.properties index b03c3b5199..7a61a6e1b6 100644 --- a/nbproject/platform.properties +++ b/nbproject/platform.properties @@ -1,136 +1,341 @@ branding.token=autopsy # Version of platform that is automatically downloaded # IMPORTANT: autopsy/build.xml has a netbeans-plat-version property that MUST be kept in sync (manually) -netbeans-plat-version=8.2 +netbeans-plat-version=11.3 suite.dir=${basedir} + +nbplatform.active=download nbplatform.active.dir=${suite.dir}/netbeans-plat/${netbeans-plat-version} harness.dir=${nbplatform.active.dir}/harness -bootstrap.url=http://bits.netbeans.org/dev/nbms-and-javadoc/lastSuccessfulBuild/artifact/nbbuild/netbeans/harness/tasks.jar +bootstrap.url=https://netbeans-vm.apache.org/uc/${netbeans-plat-version}/tasks.jar # Where we get the platform from. To see what versions are available, open URL in browser up to the .../updates part of the URL -autoupdate.catalog.url=https://updates.netbeans.org/netbeans/updates/${netbeans-plat-version}/uc/final/distribution/catalog.xml.gz +autoupdate.catalog.url=https://netbeans-vm.apache.org/uc/${netbeans-plat-version}/updates.xml.gz cluster.path=\ ${nbplatform.active.dir}/harness:\ ${nbplatform.active.dir}/java:\ ${nbplatform.active.dir}/platform:\ ${nbplatform.active.dir}/cluster disabled.modules=\ - org.netbeans.modules.hudson.ant,\ - org.netbeans.libs.cglib,\ - org.netbeans.modules.maven.graph,\ - org.netbeans.modules.java.hints.declarative.test,\ - org.netbeans.libs.javacapi,\ - org.netbeans.modules.nashorn.execution,\ - org.netbeans.modules.java.metrics,\ - org.netbeans.modules.debugger.jpda.js,\ - org.netbeans.api.java,\ - org.netbeans.modules.debugger.jpda.ant,\ - org.netbeans.modules.java.source.ant,\ - org.netbeans.modules.maven.refactoring,\ - org.netbeans.modules.ant.debugger,\ - org.netbeans.modules.hibernatelib,\ - org.netbeans.modules.hibernate,\ - org.netbeans.lib.nbjavac,\ - org.netbeans.modules.debugger.jpda.kit,\ - org.netbeans.modules.maven.persistence,\ - org.netbeans.modules.javaee.injection,\ - org.netbeans.modules.maven,\ - org.netbeans.modules.performance,\ - org.netbeans.spi.java.hints,\ - org.netbeans.modules.spellchecker.bindings.java,\ - org.netbeans.modules.java.j2seproject,\ - org.netbeans.modules.javawebstart,\ - org.netbeans.modules.debugger.jpda,\ - org.netbeans.modules.ant.grammar,\ - org.netbeans.modules.maven.checkstyle,\ - org.netbeans.modules.java.source.queries,\ - org.netbeans.modules.refactoring.java,\ - org.netbeans.modules.java.examples,\ - org.netbeans.modules.j2ee.jpa.verification,\ - org.netbeans.modules.j2ee.jpa.refactoring,\ - org.netbeans.modules.j2ee.metadata.model.support,\ - org.netbeans.modules.classfile,\ - org.netbeans.modules.maven.coverage,\ - org.netbeans.modules.debugger.jpda.ui,\ - org.netbeans.modules.java.guards,\ - org.netbeans.modules.xml.jaxb,\ - org.netbeans.modules.java.preprocessorbridge,\ - org.netbeans.modules.debugger.jpda.jsui,\ + org.eclipse.core.contenttype,\ + org.eclipse.core.jobs,\ + org.eclipse.core.net,\ + org.eclipse.core.runtime,\ + org.eclipse.core.runtime.compatibility.auth,\ + org.eclipse.equinox.app,\ + org.eclipse.equinox.common,\ + org.eclipse.equinox.preferences,\ + org.eclipse.equinox.registry,\ + org.eclipse.equinox.security,\ + org.eclipse.jgit,\ + org.eclipse.jgit.java7,\ + org.eclipse.mylyn.bugzilla.core,\ + org.eclipse.mylyn.commons.core,\ + org.eclipse.mylyn.commons.net,\ + org.eclipse.mylyn.commons.repositories.core,\ + org.eclipse.mylyn.commons.xmlrpc,\ + org.eclipse.mylyn.tasks.core,\ + org.eclipse.mylyn.wikitext.confluence.core,\ + org.eclipse.mylyn.wikitext.core,\ + org.eclipse.mylyn.wikitext.markdown.core,\ + org.eclipse.mylyn.wikitext.textile.core,\ + org.netbeans.api.debugger,\ org.netbeans.api.debugger.jpda,\ - org.netbeans.modules.ant.freeform,\ - org.netbeans.modules.java.sourceui,\ - org.netbeans.modules.projectimport.eclipse.j2se,\ - org.netbeans.modules.form,\ - org.netbeans.modules.junit,\ - org.netbeans.modules.j2ee.persistence.kit,\ - org.netbeans.modules.j2ee.metadata,\ - org.netbeans.modules.java.j2seplatform,\ - org.netbeans.modules.javadoc,\ - org.netbeans.modules.debugger.jpda.projects,\ - org.netbeans.modules.java.source,\ - org.netbeans.modules.maven.spring,\ - org.netbeans.modules.maven.search,\ - org.netbeans.modules.java.debug,\ - org.netbeans.modules.maven.grammar,\ - org.netbeans.modules.java.kit,\ - org.netbeans.modules.testng,\ - org.netbeans.modules.spring.beans,\ - org.netbeans.modules.websvc.saas.codegen.java,\ - org.netbeans.modules.java.editor.lib,\ - org.netbeans.modules.java.testrunner,\ - org.netbeans.modules.java.source.queriesimpl,\ - org.netbeans.modules.maven.junit,\ - org.netbeans.modules.maven.hints,\ - org.netbeans.modules.xml.tools.java,\ - org.netbeans.modules.j2ee.persistenceapi,\ - org.netbeans.modules.java.j2seprofiles,\ - org.netbeans.modules.form.kit,\ - org.netbeans.modules.projectimport.eclipse.core,\ - org.netbeans.modules.form.refactoring,\ - org.apache.tools.ant.module,\ - org.netbeans.modules.testng.maven,\ - org.netbeans.modules.java.hints.test,\ - org.netbeans.modules.i18n.form,\ - org.netbeans.modules.maven.kit,\ - org.netbeans.modules.beans,\ - org.netbeans.modules.java.platform,\ - org.netbeans.modules.java.hints.legacy.spi,\ - org.netbeans.modules.java.lexer,\ - org.netbeans.modules.java.hints,\ - org.netbeans.modules.java.j2seembedded,\ - org.netbeans.modules.java.hints.ui,\ - org.netbeans.modules.java.editor,\ - org.netbeans.modules.websvc.jaxws21,\ - org.netbeans.modules.hudson.maven,\ - org.netbeans.modules.java.j2sedeploy,\ - org.netbeans.libs.javacimpl,\ - org.netbeans.modules.java.helpset,\ - org.netbeans.modules.i18n,\ - org.netbeans.modules.dbschema,\ + org.netbeans.api.htmlui,\ + org.netbeans.api.java,\ org.netbeans.api.maven,\ - org.netbeans.modules.findbugs.installer,\ - org.netbeans.modules.j2ee.eclipselinkmodelgen,\ - org.netbeans.modules.form.nb,\ - org.netbeans.modules.debugger.jpda.visual,\ - org.netbeans.modules.form.j2ee,\ - org.netbeans.modules.java.project,\ - org.netbeans.modules.java.api.common,\ - org.netbeans.modules.j2ee.persistence,\ - org.netbeans.modules.java.freeform,\ - org.netbeans.modules.whitelist,\ + org.netbeans.core.browser,\ + org.netbeans.core.browser.webview,\ + org.netbeans.core.multitabs,\ + org.netbeans.core.multitabs.project,\ + org.netbeans.core.nativeaccess,\ + org.netbeans.core.netigso,\ + org.netbeans.core.network,\ + org.netbeans.core.osgi,\ + org.netbeans.html.ko4j,\ + org.netbeans.html.xhr4j,\ + org.netbeans.lib.terminalemulator,\ + org.netbeans.lib.uihandler,\ + org.netbeans.libs.antlr3.runtime,\ + org.netbeans.libs.bytelist,\ + org.netbeans.libs.cglib,\ + org.netbeans.libs.commons_compress,\ + org.netbeans.libs.commons_net,\ + org.netbeans.libs.felix,\ + org.netbeans.libs.git,\ + org.netbeans.libs.graalsdk,\ + org.netbeans.libs.ini4j,\ + org.netbeans.libs.javafx,\ + org.netbeans.libs.jaxb,\ + org.netbeans.libs.jna,\ + org.netbeans.libs.jna.platform,\ + org.netbeans.libs.jsch.agentproxy,\ + org.netbeans.libs.json_simple,\ + org.netbeans.libs.jsr223,\ + org.netbeans.libs.junit5,\ + org.netbeans.libs.jvyamlb,\ + org.netbeans.libs.osgi,\ + org.netbeans.libs.smack,\ org.netbeans.libs.springframework,\ - org.netbeans.modules.maven.embedder,\ - org.netbeans.modules.ant.kit,\ - org.netbeans.modules.java.hints.declarative,\ - org.netbeans.modules.testng.ant,\ - org.netbeans.modules.form.binding,\ + org.netbeans.libs.svnClientAdapter,\ + org.netbeans.libs.svnClientAdapter.javahl,\ + org.netbeans.libs.testng,\ + org.netbeans.libs.xerces,\ org.netbeans.modules.ant.browsetask,\ + org.netbeans.modules.ant.debugger,\ + org.netbeans.modules.ant.freeform,\ + org.netbeans.modules.ant.grammar,\ + org.netbeans.modules.ant.kit,\ + org.netbeans.modules.beans,\ + org.netbeans.modules.bugtracking,\ + org.netbeans.modules.bugtracking.bridge,\ + org.netbeans.modules.bugtracking.commons,\ + org.netbeans.modules.bugzilla,\ + org.netbeans.modules.core.kit,\ + org.netbeans.modules.css.editor,\ + org.netbeans.modules.css.lib,\ + org.netbeans.modules.css.model,\ + org.netbeans.modules.css.prep,\ + org.netbeans.modules.css.visual,\ + org.netbeans.modules.db,\ + org.netbeans.modules.db.core,\ + org.netbeans.modules.db.dataview,\ + org.netbeans.modules.db.drivers,\ + org.netbeans.modules.db.kit,\ + org.netbeans.modules.db.metadata.model,\ + org.netbeans.modules.db.mysql,\ + org.netbeans.modules.db.sql.editor,\ + org.netbeans.modules.db.sql.visualeditor,\ + org.netbeans.modules.dbapi,\ + org.netbeans.modules.dbschema,\ + org.netbeans.modules.debugger.jpda,\ + org.netbeans.modules.debugger.jpda.ant,\ + org.netbeans.modules.debugger.jpda.js,\ + org.netbeans.modules.debugger.jpda.jsui,\ + org.netbeans.modules.debugger.jpda.kit,\ + org.netbeans.modules.debugger.jpda.projects,\ + org.netbeans.modules.debugger.jpda.projectsui,\ + org.netbeans.modules.debugger.jpda.truffle,\ + org.netbeans.modules.debugger.jpda.trufflenode,\ + org.netbeans.modules.debugger.jpda.ui,\ + org.netbeans.modules.debugger.jpda.visual,\ + org.netbeans.modules.derby,\ + org.netbeans.modules.dlight.nativeexecution,\ + org.netbeans.modules.dlight.nativeexecution.nb,\ + org.netbeans.modules.dlight.terminal,\ + org.netbeans.modules.docker.api,\ + org.netbeans.modules.docker.editor,\ + org.netbeans.modules.docker.ui,\ + org.netbeans.modules.editor.bookmarks,\ + org.netbeans.modules.editor.htmlui,\ + org.netbeans.modules.editor.kit,\ + org.netbeans.modules.editor.macros,\ + org.netbeans.modules.editor.structure,\ + org.netbeans.modules.extexecution.impl,\ + org.netbeans.modules.extexecution.process,\ + org.netbeans.modules.extexecution.process.jdk9,\ + org.netbeans.modules.findbugs.installer,\ + org.netbeans.modules.form,\ + org.netbeans.modules.form.kit,\ + org.netbeans.modules.form.nb,\ + org.netbeans.modules.form.refactoring,\ + org.netbeans.modules.git,\ + org.netbeans.modules.gsf.codecoverage,\ + org.netbeans.modules.html,\ + org.netbeans.modules.html.custom,\ + org.netbeans.modules.html.editor,\ + org.netbeans.modules.html.editor.lib,\ + org.netbeans.modules.html.lexer,\ + org.netbeans.modules.html.parser,\ + org.netbeans.modules.html.validation,\ + org.netbeans.modules.hudson,\ + org.netbeans.modules.hudson.ant,\ + org.netbeans.modules.hudson.git,\ + org.netbeans.modules.hudson.maven,\ + org.netbeans.modules.hudson.mercurial,\ + org.netbeans.modules.hudson.subversion,\ + org.netbeans.modules.hudson.tasklist,\ + org.netbeans.modules.hudson.ui,\ + org.netbeans.modules.i18n,\ + org.netbeans.modules.i18n.form,\ + org.netbeans.modules.ide.kit,\ org.netbeans.modules.j2ee.core.utilities,\ - org.netbeans.modules.performance.java,\ - org.netbeans.modules.websvc.jaxws21api,\ - org.netbeans.modules.maven.repository,\ org.netbeans.modules.j2ee.eclipselink,\ - org.netbeans.modules.maven.model,\ - org.netbeans.modules.hibernate4lib,\ + org.netbeans.modules.j2ee.eclipselinkmodelgen,\ + org.netbeans.modules.j2ee.jpa.refactoring,\ + org.netbeans.modules.j2ee.jpa.verification,\ + org.netbeans.modules.j2ee.metadata,\ + org.netbeans.modules.j2ee.metadata.model.support,\ + org.netbeans.modules.j2ee.persistence,\ + org.netbeans.modules.j2ee.persistence.kit,\ + org.netbeans.modules.j2ee.persistenceapi,\ + org.netbeans.modules.java.api.common,\ + org.netbeans.modules.java.completion,\ + org.netbeans.modules.java.debug,\ + org.netbeans.modules.java.editor,\ + org.netbeans.modules.java.editor.base,\ + org.netbeans.modules.java.editor.lib,\ + org.netbeans.modules.java.examples,\ + org.netbeans.modules.java.freeform,\ + org.netbeans.modules.java.graph,\ + org.netbeans.modules.java.hints,\ + org.netbeans.modules.java.hints.declarative,\ + org.netbeans.modules.java.hints.declarative.test,\ + org.netbeans.modules.java.hints.legacy.spi,\ + org.netbeans.modules.java.hints.test,\ + org.netbeans.modules.java.hints.ui,\ + org.netbeans.modules.java.j2sedeploy,\ + org.netbeans.modules.java.j2seembedded,\ + org.netbeans.modules.java.j2semodule,\ + org.netbeans.modules.java.j2seplatform,\ + org.netbeans.modules.java.j2seprofiles,\ + org.netbeans.modules.java.j2seproject,\ + org.netbeans.modules.java.kit,\ + org.netbeans.modules.java.lexer,\ + org.netbeans.modules.java.lsp.server,\ + org.netbeans.modules.java.metrics,\ + org.netbeans.modules.java.module.graph,\ org.netbeans.modules.java.navigation,\ + org.netbeans.modules.java.openjdk.project,\ + org.netbeans.modules.java.platform,\ + org.netbeans.modules.java.project.ui,\ + org.netbeans.modules.java.preprocessorbridge,\ + org.netbeans.modules.java.project,\ + org.netbeans.modules.java.source,\ + org.netbeans.modules.java.source.ant,\ + org.netbeans.modules.java.source.base,\ + org.netbeans.modules.java.source.compat8,\ + org.netbeans.modules.java.source.nbjavac,\ + org.netbeans.modules.java.sourceui,\ + org.netbeans.modules.java.testrunner,\ + org.netbeans.modules.java.testrunner.ant,\ + org.netbeans.modules.java.testrunner.ui,\ + org.netbeans.modules.javadoc,\ + org.netbeans.modules.javaee.injection,\ + org.netbeans.modules.javascript2.debug,\ + org.netbeans.modules.javascript2.debug.ui,\ + org.netbeans.modules.javawebstart,\ + org.netbeans.modules.jellytools.ide,\ + org.netbeans.modules.jshell.support,\ + org.netbeans.modules.junit,\ + org.netbeans.modules.junit.ant,\ + org.netbeans.modules.junit.ant.ui,\ + org.netbeans.modules.junit.ui,\ + org.netbeans.modules.junitlib,\ + org.netbeans.modules.keyring.fallback,\ + org.netbeans.modules.keyring.impl,\ + org.netbeans.modules.kotlin.editor,\ + org.netbeans.modules.languages,\ + org.netbeans.modules.languages.diff,\ + org.netbeans.modules.languages.manifest,\ + org.netbeans.modules.languages.yaml,\ + org.netbeans.modules.localhistory,\ + org.netbeans.modules.localtasks,\ + org.netbeans.modules.lsp.client,\ + org.netbeans.modules.masterfs.linux,\ + org.netbeans.modules.masterfs.macosx,\ + org.netbeans.modules.masterfs.windows,\ + org.netbeans.modules.maven,\ + org.netbeans.modules.maven.checkstyle,\ + org.netbeans.modules.maven.coverage,\ + org.netbeans.modules.maven.embedder,\ + org.netbeans.modules.maven.grammar,\ + org.netbeans.modules.maven.graph,\ + org.netbeans.modules.maven.hints,\ + org.netbeans.modules.maven.htmlui,\ org.netbeans.modules.maven.indexer,\ - org.netbeans.modules.maven.osgi + org.netbeans.modules.maven.indexer.ui,\ + org.netbeans.modules.maven.junit,\ + org.netbeans.modules.maven.junit.ui,\ + org.netbeans.modules.maven.kit,\ + org.netbeans.modules.maven.model,\ + org.netbeans.modules.maven.osgi,\ + org.netbeans.modules.maven.persistence,\ + org.netbeans.modules.maven.refactoring,\ + org.netbeans.modules.maven.repository,\ + org.netbeans.modules.maven.search,\ + org.netbeans.modules.maven.spring,\ + org.netbeans.modules.mercurial,\ + org.netbeans.modules.mylyn.util,\ + org.netbeans.modules.nashorn.execution,\ + org.netbeans.modules.netbinox,\ + org.netbeans.modules.notifications,\ + org.netbeans.modules.performance,\ + org.netbeans.modules.performance.java,\ + org.netbeans.modules.project.ant.compat8,\ + org.netbeans.modules.projectimport.eclipse.core,\ + org.netbeans.modules.projectimport.eclipse.j2se,\ + org.netbeans.modules.properties,\ + org.netbeans.modules.properties.syntax,\ + org.netbeans.modules.refactoring.java,\ + org.netbeans.modules.schema2beans,\ + org.netbeans.modules.selenium2,\ + org.netbeans.modules.selenium2.java,\ + org.netbeans.modules.selenium2.maven,\ + org.netbeans.modules.selenium2.server,\ + org.netbeans.modules.server,\ + org.netbeans.modules.spellchecker,\ + org.netbeans.modules.spellchecker.apimodule,\ + org.netbeans.modules.spellchecker.bindings.htmlxml,\ + org.netbeans.modules.spellchecker.bindings.java,\ + org.netbeans.modules.spellchecker.bindings.properties,\ + org.netbeans.modules.spellchecker.dictionary_en,\ + org.netbeans.modules.spellchecker.kit,\ + org.netbeans.modules.spring.beans,\ + org.netbeans.modules.subversion,\ + org.netbeans.modules.swing.validation,\ + org.netbeans.modules.target.iterator,\ + org.netbeans.modules.tasklist.kit,\ + org.netbeans.modules.tasklist.projectint,\ + org.netbeans.modules.tasklist.todo,\ + org.netbeans.modules.tasklist.ui,\ + org.netbeans.modules.team.commons,\ + org.netbeans.modules.team.ide,\ + org.netbeans.modules.templatesui,\ + org.netbeans.modules.terminal,\ + org.netbeans.modules.terminal.nb,\ + org.netbeans.modules.testng,\ + org.netbeans.modules.testng.ant,\ + org.netbeans.modules.testng.maven,\ + org.netbeans.modules.testng.ui,\ + org.netbeans.modules.textmate.lexer,\ + org.netbeans.modules.uihandler,\ + org.netbeans.modules.usersguide,\ + org.netbeans.modules.versioning,\ + org.netbeans.modules.versioning.core,\ + org.netbeans.modules.versioning.indexingbridge,\ + org.netbeans.modules.versioning.masterfs,\ + org.netbeans.modules.versioning.system.cvss.installer,\ + org.netbeans.modules.versioning.ui,\ + org.netbeans.modules.versioning.util,\ + org.netbeans.modules.web.browser.api,\ + org.netbeans.modules.web.common,\ + org.netbeans.modules.web.common.ui,\ + org.netbeans.modules.web.indent,\ + org.netbeans.modules.web.webkit.debugging,\ + org.netbeans.modules.websvc.jaxws21,\ + org.netbeans.modules.websvc.jaxws21api,\ + org.netbeans.modules.websvc.saas.codegen.java,\ + org.netbeans.modules.whitelist,\ + org.netbeans.modules.xml,\ + org.netbeans.modules.xml.axi,\ + org.netbeans.modules.xml.jaxb,\ + org.netbeans.modules.xml.jaxb.api,\ + org.netbeans.modules.xml.multiview,\ + org.netbeans.modules.xml.retriever,\ + org.netbeans.modules.xml.schema.completion,\ + org.netbeans.modules.xml.schema.model,\ + org.netbeans.modules.xml.tax,\ + org.netbeans.modules.xml.text,\ + org.netbeans.modules.xml.text.obsolete90,\ + org.netbeans.modules.xml.tools,\ + org.netbeans.modules.xml.tools.java,\ + org.netbeans.modules.xml.wsdl.model,\ + org.netbeans.modules.xsl,\ + org.netbeans.spi.debugger.jpda.ui,\ + org.netbeans.spi.debugger.ui,\ + org.netbeans.spi.java.hints,\ + org.openide.compat,\ + org.openide.execution.compat8,\ + org.openide.options,\ + org.openide.util.enumerations,\ + org.openidex.util \ No newline at end of file diff --git a/thirdparty/junit/11.3/junit.zip b/thirdparty/junit/11.3/junit.zip new file mode 100644 index 0000000000..db1b83aea2 Binary files /dev/null and b/thirdparty/junit/11.3/junit.zip differ