updates for some initial debugging

This commit is contained in:
Greg DiCristofaro 2020-02-27 17:28:13 -05:00
parent 097aa7075a
commit 13719c3e70
3 changed files with 77 additions and 26 deletions

View File

@ -391,7 +391,7 @@ public class CentralRepoDbManager {
dbSettingsSqlite.setDbName(SqliteCentralRepoSettings.DEFAULT_DBNAME); dbSettingsSqlite.setDbName(SqliteCentralRepoSettings.DEFAULT_DBNAME);
dbSettingsSqlite.setDbDirectory(databasePath.getPath()); dbSettingsSqlite.setDbDirectory(databasePath.getPath());
} }
else { else if (selectedDbChoice != CentralRepoDbChoice.POSTGRESQL_MULTIUSER) {
throw new IllegalStateException("Central Repo has an unknown selected platform: " + selectedDbChoice); throw new IllegalStateException("Central Repo has an unknown selected platform: " + selectedDbChoice);
} }

View File

@ -19,6 +19,7 @@
package org.sleuthkit.autopsy.centralrepository.optionspanel; package org.sleuthkit.autopsy.centralrepository.optionspanel;
import java.awt.Color; import java.awt.Color;
import java.awt.Component;
import java.awt.Cursor; import java.awt.Cursor;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@ -29,12 +30,14 @@ import java.util.logging.Level;
import javax.swing.JDialog; import javax.swing.JDialog;
import javax.swing.JFileChooser; import javax.swing.JFileChooser;
import javax.swing.JFrame; import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
import javax.swing.JTextField; import javax.swing.JTextField;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener; import javax.swing.event.DocumentListener;
import javax.swing.filechooser.FileFilter; import javax.swing.filechooser.FileFilter;
import javax.swing.plaf.basic.BasicComboBoxRenderer;
import org.netbeans.spi.options.OptionsPanelController; import org.netbeans.spi.options.OptionsPanelController;
import org.openide.util.NbBundle; import org.openide.util.NbBundle;
import org.openide.util.NbBundle.Messages; import org.openide.util.NbBundle.Messages;
@ -49,6 +52,7 @@ import org.sleuthkit.autopsy.centralrepository.datamodel.DatabaseTestResult;
import org.sleuthkit.autopsy.centralrepository.datamodel.SqliteCentralRepoSettings; import org.sleuthkit.autopsy.centralrepository.datamodel.SqliteCentralRepoSettings;
import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepository; import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepository;
import org.sleuthkit.autopsy.centralrepository.datamodel.RdbmsCentralRepoFactory; import org.sleuthkit.autopsy.centralrepository.datamodel.RdbmsCentralRepoFactory;
import org.sleuthkit.autopsy.core.UserPreferences;
/** /**
* Configuration dialog for Central Repository database settings. * Configuration dialog for Central Repository database settings.
@ -59,11 +63,38 @@ public class EamDbSettingsDialog extends JDialog {
private static final Logger logger = Logger.getLogger(EamDbSettingsDialog.class.getName()); private static final Logger logger = Logger.getLogger(EamDbSettingsDialog.class.getName());
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private static final DbChoiceRenderer DB_CHOICE_RENDERER = new DbChoiceRenderer();
private static boolean isDbChoiceSelectable(CentralRepoDbChoice item) {
if (item == CentralRepoDbChoice.POSTGRESQL_MULTIUSER && !UserPreferences.getIsMultiUserModeEnabled()) {
return false;
}
else {
return true;
}
}
private static class DbChoiceRenderer extends BasicComboBoxRenderer {
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
CentralRepoDbChoice item = (CentralRepoDbChoice) value;
// disable cell if it is the db connection from multi user settings
// and that option is not enabled in multi user settings
setText(item.getTitle());
setEnabled(isDbChoiceSelectable(item));
return this;
}
}
private final Collection<JTextField> textBoxes; private final Collection<JTextField> textBoxes;
private final TextBoxChangedListener textBoxChangedListener; private final TextBoxChangedListener textBoxChangedListener;
private final CentralRepoDbManager manager = new CentralRepoDbManager(); private final CentralRepoDbManager manager = new CentralRepoDbManager();
/** /**
* Creates new form EamDbSettingsDialog * Creates new form EamDbSettingsDialog
*/ */
@ -98,19 +129,24 @@ public class EamDbSettingsDialog extends JDialog {
} }
}); });
setSelectedChoice(manager); setupDbChoice();
customizeComponents(); customizeComponents();
valid(); valid();
display(); display();
} }
private void setSelectedChoice(CentralRepoDbManager manager) {
private void setupDbChoice() {
// setup initially selected item
CentralRepoDbChoice toSelect = CentralRepoDbChoice toSelect =
(Arrays.asList(CentralRepoDbChoice.DB_CHOICES).contains(manager.getSelectedDbChoice())) ? (Arrays.asList(CentralRepoDbChoice.DB_CHOICES).contains(manager.getSelectedDbChoice())) ?
manager.getSelectedDbChoice() : manager.getSelectedDbChoice() :
CentralRepoDbChoice.DB_CHOICES[0]; CentralRepoDbChoice.DB_CHOICES[0];
cbDatabaseType.setSelectedItem(toSelect); cbDatabaseType.setSelectedItem(toSelect);
// set the renderer so item is unselectable if inappropriate
cbDatabaseType.setRenderer(DB_CHOICE_RENDERER);
} }
@ -436,7 +472,7 @@ public class EamDbSettingsDialog extends JDialog {
updateSqliteFields(false); updateSqliteFields(false);
} }
displayDatabaseSettings(CentralRepoDbChoice.POSTGRESQL_CUSTOM.equals(manager.getSelectedDbChoice())); displayDatabaseSettings(manager.getSelectedDbChoice());
} }
private void display() { private void display() {
@ -511,7 +547,14 @@ public class EamDbSettingsDialog extends JDialog {
private void cbDatabaseTypeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbDatabaseTypeActionPerformed private void cbDatabaseTypeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbDatabaseTypeActionPerformed
manager.setSelctedDbChoice((CentralRepoDbChoice) cbDatabaseType.getSelectedItem()); CentralRepoDbChoice selectedItem = (CentralRepoDbChoice) cbDatabaseType.getSelectedItem();
if (isDbChoiceSelectable(selectedItem)) {
manager.setSelctedDbChoice(selectedItem);
}
else {
cbDatabaseType.setSelectedItem(manager.getSelectedDbChoice());
}
customizeComponents(); customizeComponents();
}//GEN-LAST:event_cbDatabaseTypeActionPerformed }//GEN-LAST:event_cbDatabaseTypeActionPerformed
@ -520,13 +563,17 @@ public class EamDbSettingsDialog extends JDialog {
dataBaseFileTextArea.setCaretPosition(dataBaseFileTextArea.getText().length()); dataBaseFileTextArea.setCaretPosition(dataBaseFileTextArea.getText().length());
} }
private void displayDatabaseSettings(boolean isPostgres) { private void displayDatabaseSettings(CentralRepoDbChoice choice) {
lbDatabasePath.setVisible(!isPostgres); boolean isSqlite = choice == CentralRepoDbChoice.SQLITE;
tfDatabasePath.setVisible(!isPostgres); boolean isPostgres = choice == CentralRepoDbChoice.POSTGRESQL_CUSTOM;
lbDatabaseDesc.setVisible(!isPostgres);
dataBaseFileTextArea.setVisible(!isPostgres); lbDatabasePath.setVisible(isSqlite);
lbSingleUserSqLite.setVisible(!isPostgres); tfDatabasePath.setVisible(isSqlite);
bnDatabasePathFileOpen.setVisible(!isPostgres); lbDatabaseDesc.setVisible(isSqlite);
dataBaseFileTextArea.setVisible(isSqlite);
lbSingleUserSqLite.setVisible(isSqlite);
bnDatabasePathFileOpen.setVisible(isSqlite);
lbHostName.setVisible(isPostgres); lbHostName.setVisible(isPostgres);
tbDbHostname.setVisible(isPostgres); tbDbHostname.setVisible(isPostgres);
lbPort.setVisible(isPostgres); lbPort.setVisible(isPostgres);

View File

@ -113,6 +113,7 @@ public final class GlobalSettingsPanel extends IngestModuleGlobalSettingsPanel i
boolean crMultiUser = CentralRepoDbManager.getSavedDbChoice() == CentralRepoDbChoice.POSTGRESQL_MULTIUSER; boolean crMultiUser = CentralRepoDbManager.getSavedDbChoice() == CentralRepoDbChoice.POSTGRESQL_MULTIUSER;
if (!muPreviouslySelected && muCurrentlySelected) { if (!muPreviouslySelected && muCurrentlySelected) {
SwingUtilities.invokeLater(() -> {
if (JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(parent, if (JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(parent,
NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.onMultiUserChange.enable.description"), NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.onMultiUserChange.enable.description"),
NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.onMultiUserChange.enable.title"), NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.onMultiUserChange.enable.title"),
@ -122,21 +123,24 @@ public final class GlobalSettingsPanel extends IngestModuleGlobalSettingsPanel i
CentralRepoDbManager.saveDbChoice(CentralRepoDbChoice.POSTGRESQL_MULTIUSER); CentralRepoDbManager.saveDbChoice(CentralRepoDbChoice.POSTGRESQL_MULTIUSER);
updateDatabase(parent); updateDatabase(parent);
} }
});
} }
// moving from selected to not selected && 'PostgreSQL using multi-user settings' is selected // moving from selected to not selected && 'PostgreSQL using multi-user settings' is selected
else if (muPreviouslySelected && !muCurrentlySelected && crMultiUser) { else if (muPreviouslySelected && !muCurrentlySelected && crMultiUser) {
if (JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(parent, SwingUtilities.invokeLater(() -> {
NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.onMultiUserChange.disabledMu.description"), if (JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(parent,
NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.onMultiUserChange.disabledMu.title"), NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.onMultiUserChange.disabledMu.description"),
JOptionPane.YES_NO_OPTION)) { NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.onMultiUserChange.disabledMu.title"),
JOptionPane.YES_NO_OPTION)) {
// present user with central repository choice
invokeCrChoice(parent); // present user with central repository choice
} invokeCrChoice(parent);
else { }
// disable central repository else {
CentralRepoDbManager.saveDbChoice(CentralRepoDbChoice.DISABLED); // disable central repository
} CentralRepoDbManager.saveDbChoice(CentralRepoDbChoice.DISABLED);
}
});
} }
// changing multi-user settings connection && 'PostgreSQL using multi-user settings' is selected // changing multi-user settings connection && 'PostgreSQL using multi-user settings' is selected
else if (muPreviouslySelected && muCurrentlySelected && crMultiUser) { else if (muPreviouslySelected && muCurrentlySelected && crMultiUser) {