mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-06 21:00:22 +00:00
handle merge conflict from cr dialog PR
This commit is contained in:
commit
c2fde5564c
@ -0,0 +1,119 @@
|
|||||||
|
/*
|
||||||
|
* Autopsy Forensic Browser
|
||||||
|
*
|
||||||
|
* Copyright 2017-2020 Basis Technology Corp.
|
||||||
|
* Contact: carrier <at> sleuthkit <dot> org
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.sleuthkit.autopsy.centralrepository.eventlisteners;
|
||||||
|
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
|
import javax.swing.SwingUtilities;
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
|
import org.sleuthkit.autopsy.centralrepository.CentralRepoSettings;
|
||||||
|
import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepoDbChoice;
|
||||||
|
import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepoDbManager;
|
||||||
|
import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepoException;
|
||||||
|
import org.sleuthkit.autopsy.core.RuntimeProperties;
|
||||||
|
import org.sleuthkit.autopsy.core.UserPreferences;
|
||||||
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
|
import org.sleuthkit.autopsy.coreutils.ModuleSettings;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Runs the default setup for central repository and notifies the user if a)
|
||||||
|
* running with GUI and b) first launch.
|
||||||
|
*/
|
||||||
|
public class CRDefaultSetupAction {
|
||||||
|
|
||||||
|
private static final Logger logger = Logger.getLogger(CRDefaultSetupAction.class.getName());
|
||||||
|
private static final CRDefaultSetupAction INSTANCE = new CRDefaultSetupAction();
|
||||||
|
|
||||||
|
public static CRDefaultSetupAction getInstance() {
|
||||||
|
return INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private CRDefaultSetupAction() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the central repository has been set up and configured. If not,
|
||||||
|
* does the set up unconditionally.
|
||||||
|
*
|
||||||
|
* @return Returns true if first run and a default CR was setup.
|
||||||
|
*/
|
||||||
|
public boolean setupDefaultCentralRepository() {
|
||||||
|
Map<String, String> centralRepoSettings = ModuleSettings.getConfigSettings(CentralRepoSettings.getInstance().getModuleSettingsKey());
|
||||||
|
String initializedStr = centralRepoSettings.get("initialized");
|
||||||
|
|
||||||
|
// check to see if the repo has been initialized asking to setup cr
|
||||||
|
boolean initialized = Boolean.parseBoolean(initializedStr);
|
||||||
|
|
||||||
|
// if it hasn't received that flag, check for a previous install where cr is already setup
|
||||||
|
if (!initialized) {
|
||||||
|
boolean prevRepo = Boolean.parseBoolean(centralRepoSettings.get("db.useCentralRepo"));
|
||||||
|
// if it has been previously set up and is in use, mark as previously initialized and save the settings
|
||||||
|
if (prevRepo) {
|
||||||
|
initialized = true;
|
||||||
|
ModuleSettings.setConfigSetting(CentralRepoSettings.getInstance().getModuleSettingsKey(), "initialized", "true");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (initialized) {
|
||||||
|
return false; // Nothing to do
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
CentralRepoDbManager manager = new CentralRepoDbManager();
|
||||||
|
if (UserPreferences.getIsMultiUserModeEnabled()) {
|
||||||
|
// Set up using existing multi-user settings.
|
||||||
|
manager.setupPostgresDb(CentralRepoDbChoice.POSTGRESQL_MULTIUSER);
|
||||||
|
} else {
|
||||||
|
manager.setupDefaultSqliteDb();
|
||||||
|
}
|
||||||
|
} catch (CentralRepoException ex) {
|
||||||
|
logger.log(Level.SEVERE, "There was an error while initializing the central repository database", ex);
|
||||||
|
|
||||||
|
doMessageBoxIfRunningInGUI(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
ModuleSettings.setConfigSetting(CentralRepoSettings.getInstance().getModuleSettingsKey(), "initialized", "true");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display a central repository exception in a message box if running with a
|
||||||
|
* GUI.
|
||||||
|
*
|
||||||
|
* @param ex The exception.
|
||||||
|
*/
|
||||||
|
@NbBundle.Messages({"Installer.centralRepoUpgradeFailed.title=Central repository disabled"})
|
||||||
|
private void doMessageBoxIfRunningInGUI(CentralRepoException ex) {
|
||||||
|
if (RuntimeProperties.runningWithGUI()) {
|
||||||
|
try {
|
||||||
|
SwingUtilities.invokeAndWait(() -> {
|
||||||
|
JOptionPane.showMessageDialog(null,
|
||||||
|
ex.getUserMessage(),
|
||||||
|
NbBundle.getMessage(this.getClass(), "Installer.centralRepoUpgradeFailed.title"),
|
||||||
|
JOptionPane.ERROR_MESSAGE);
|
||||||
|
});
|
||||||
|
} catch (InterruptedException | InvocationTargetException e) {
|
||||||
|
logger.log(Level.WARNING, e.getMessage(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -33,7 +33,7 @@ public class CentralRepositoryNotificationDialog {
|
|||||||
* This dialog should display iff the mode is RELEASE and the
|
* This dialog should display iff the mode is RELEASE and the
|
||||||
* application is running with a GUI.
|
* application is running with a GUI.
|
||||||
*/
|
*/
|
||||||
static boolean shouldDisplay() {
|
public static boolean shouldDisplay() {
|
||||||
return Version.getBuildType() == Version.Type.RELEASE
|
return Version.getBuildType() == Version.Type.RELEASE
|
||||||
&& RuntimeProperties.runningWithGUI();
|
&& RuntimeProperties.runningWithGUI();
|
||||||
}
|
}
|
||||||
@ -50,7 +50,7 @@ public class CentralRepositoryNotificationDialog {
|
|||||||
"CentralRepositoryNotificationDialog.bulletThree=Create personas that group accounts",
|
"CentralRepositoryNotificationDialog.bulletThree=Create personas that group accounts",
|
||||||
"CentralRepositoryNotificationDialog.finalRemarks=To limit what is stored, use the Central Repository options panel."
|
"CentralRepositoryNotificationDialog.finalRemarks=To limit what is stored, use the Central Repository options panel."
|
||||||
})
|
})
|
||||||
static void display() {
|
public static void display() {
|
||||||
assert shouldDisplay();
|
assert shouldDisplay();
|
||||||
|
|
||||||
MessageNotifyUtil.Message.info(
|
MessageNotifyUtil.Message.info(
|
||||||
|
@ -20,21 +20,12 @@ package org.sleuthkit.autopsy.centralrepository.eventlisteners;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import javax.swing.JOptionPane;
|
|
||||||
import javax.swing.SwingUtilities;
|
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
import org.openide.modules.ModuleInstall;
|
import org.openide.modules.ModuleInstall;
|
||||||
import org.openide.util.NbBundle;
|
|
||||||
import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepoDbChoice;
|
|
||||||
import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepoDbManager;
|
|
||||||
import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepoException;
|
|
||||||
import org.sleuthkit.autopsy.centralrepository.CentralRepoSettings;
|
import org.sleuthkit.autopsy.centralrepository.CentralRepoSettings;
|
||||||
import org.sleuthkit.autopsy.core.RuntimeProperties;
|
|
||||||
import org.sleuthkit.autopsy.core.UserPreferences;
|
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import org.sleuthkit.autopsy.coreutils.ModuleSettings;
|
import org.sleuthkit.autopsy.coreutils.ModuleSettings;
|
||||||
import org.sleuthkit.autopsy.coreutils.PlatformUtil;
|
import org.sleuthkit.autopsy.coreutils.PlatformUtil;
|
||||||
@ -90,7 +81,6 @@ public class Installer extends ModuleInstall {
|
|||||||
public void restored() {
|
public void restored() {
|
||||||
// must happen first to move any legacy settings that exist.
|
// must happen first to move any legacy settings that exist.
|
||||||
upgradeSettingsPath();
|
upgradeSettingsPath();
|
||||||
setupDefaultCentralRepository();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -151,76 +141,6 @@ public class Installer extends ModuleInstall {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if the central repository has been set up and configured. If not,
|
|
||||||
* does the set up unconditionally. If the application is running with a
|
|
||||||
* GUI, a notification will be displayed to the user if the mode is RELEASE
|
|
||||||
* (in other words, developers are exempt from seeing the notification).
|
|
||||||
*/
|
|
||||||
private void setupDefaultCentralRepository() {
|
|
||||||
Map<String, String> centralRepoSettings = ModuleSettings.getConfigSettings(CentralRepoSettings.getInstance().getModuleSettingsKey());
|
|
||||||
String initializedStr = centralRepoSettings.get("initialized");
|
|
||||||
|
|
||||||
// check to see if the repo has been initialized asking to setup cr
|
|
||||||
boolean initialized = Boolean.parseBoolean(initializedStr);
|
|
||||||
|
|
||||||
// if it hasn't received that flag, check for a previous install where cr is already setup
|
|
||||||
if (!initialized) {
|
|
||||||
boolean prevRepo = Boolean.parseBoolean(centralRepoSettings.get("db.useCentralRepo"));
|
|
||||||
// if it has been previously set up and is in use, mark as previously initialized and save the settings
|
|
||||||
if (prevRepo) {
|
|
||||||
initialized = true;
|
|
||||||
ModuleSettings.setConfigSetting(CentralRepoSettings.getInstance().getModuleSettingsKey(), "initialized", "true");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(initialized) {
|
|
||||||
return; // Nothing to do
|
|
||||||
}
|
|
||||||
|
|
||||||
if (CentralRepositoryNotificationDialog.shouldDisplay()) {
|
|
||||||
CentralRepositoryNotificationDialog.display();
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
CentralRepoDbManager manager = new CentralRepoDbManager();
|
|
||||||
if (UserPreferences.getIsMultiUserModeEnabled()) {
|
|
||||||
// Set up using existing multi-user settings.
|
|
||||||
manager.setupPostgresDb(CentralRepoDbChoice.POSTGRESQL_MULTIUSER);
|
|
||||||
} else {
|
|
||||||
manager.setupDefaultSqliteDb();
|
|
||||||
}
|
|
||||||
} catch (CentralRepoException ex) {
|
|
||||||
logger.log(Level.SEVERE, "There was an error while initializing the central repository database", ex);
|
|
||||||
|
|
||||||
doMessageBoxIfRunningInGUI(ex);
|
|
||||||
}
|
|
||||||
|
|
||||||
ModuleSettings.setConfigSetting(CentralRepoSettings.getInstance().getModuleSettingsKey(), "initialized", "true");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Display a central repository exception in a message box if running with a
|
|
||||||
* GUI.
|
|
||||||
*
|
|
||||||
* @param ex The exception.
|
|
||||||
*/
|
|
||||||
@NbBundle.Messages({"Installer.centralRepoUpgradeFailed.title=Central repository disabled"})
|
|
||||||
private void doMessageBoxIfRunningInGUI(CentralRepoException ex) {
|
|
||||||
if (RuntimeProperties.runningWithGUI()) {
|
|
||||||
try {
|
|
||||||
SwingUtilities.invokeAndWait(() -> {
|
|
||||||
JOptionPane.showMessageDialog(null,
|
|
||||||
ex.getUserMessage(),
|
|
||||||
NbBundle.getMessage(this.getClass(), "Installer.centralRepoUpgradeFailed.title"),
|
|
||||||
JOptionPane.ERROR_MESSAGE);
|
|
||||||
});
|
|
||||||
} catch (InterruptedException | InvocationTargetException e) {
|
|
||||||
logger.log(Level.WARNING, e.getMessage(), e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uninstalled() {
|
public void uninstalled() {
|
||||||
/*
|
/*
|
||||||
|
@ -44,6 +44,8 @@ import org.openide.util.Lookup;
|
|||||||
import org.openide.windows.WindowManager;
|
import org.openide.windows.WindowManager;
|
||||||
import org.sleuthkit.autopsy.casemodule.StartupWindowProvider;
|
import org.sleuthkit.autopsy.casemodule.StartupWindowProvider;
|
||||||
import org.sleuthkit.autopsy.commandlineingest.CommandLineIngestManager;
|
import org.sleuthkit.autopsy.commandlineingest.CommandLineIngestManager;
|
||||||
|
import org.sleuthkit.autopsy.centralrepository.eventlisteners.CRDefaultSetupAction;
|
||||||
|
import org.sleuthkit.autopsy.centralrepository.eventlisteners.CentralRepositoryNotificationDialog;
|
||||||
import org.sleuthkit.autopsy.commandlineingest.CommandLineOptionProcessor;
|
import org.sleuthkit.autopsy.commandlineingest.CommandLineOptionProcessor;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import org.sleuthkit.autopsy.coreutils.ModuleSettings;
|
import org.sleuthkit.autopsy.coreutils.ModuleSettings;
|
||||||
@ -93,6 +95,12 @@ public class Installer extends ModuleInstall {
|
|||||||
|
|
||||||
final CommandLineOptionProcessor finalprocessor = processor;
|
final CommandLineOptionProcessor finalprocessor = processor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Runs central repo default setup. Triggered here to track if this is
|
||||||
|
* first time setup in order to show CR notification dialog prior to any
|
||||||
|
* startup window.
|
||||||
|
*/
|
||||||
|
final boolean crFirstTimeSetup = CRDefaultSetupAction.getInstance().setupDefaultCentralRepository();
|
||||||
|
|
||||||
// When the --nogui flag is supplied invokeWhenUIReady happens a lot sooner
|
// When the --nogui flag is supplied invokeWhenUIReady happens a lot sooner
|
||||||
// than it would when running wiht the gui. Makes sense. That means that
|
// than it would when running wiht the gui. Makes sense. That means that
|
||||||
@ -120,13 +128,13 @@ public class Installer extends ModuleInstall {
|
|||||||
} else {
|
} else {
|
||||||
WindowManager.getDefault().invokeWhenUIReady(() -> {
|
WindowManager.getDefault().invokeWhenUIReady(() -> {
|
||||||
if(WindowManager.getDefault().getMainWindow().isVisible() || finalprocessor == null || finalprocessor.getState() == CommandLineOptionProcessor.ProcessState.COMPLETED) {
|
if(WindowManager.getDefault().getMainWindow().isVisible() || finalprocessor == null || finalprocessor.getState() == CommandLineOptionProcessor.ProcessState.COMPLETED) {
|
||||||
StartupWindowProvider.getInstance().open();
|
showStartupWindows(crFirstTimeSetup);
|
||||||
} else {
|
} else {
|
||||||
finalprocessor.addPropertyChangeListener(new PropertyChangeListener(){
|
finalprocessor.addPropertyChangeListener(new PropertyChangeListener(){
|
||||||
@Override
|
@Override
|
||||||
public void propertyChange(PropertyChangeEvent evt) {
|
public void propertyChange(PropertyChangeEvent evt) {
|
||||||
if(evt.getPropertyName().equals(CommandLineOptionProcessor.PROCESSING_COMPLETED)) {
|
if(evt.getPropertyName().equals(CommandLineOptionProcessor.PROCESSING_COMPLETED)) {
|
||||||
StartupWindowProvider.getInstance().open();
|
showStartupWindows(crFirstTimeSetup);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -135,6 +143,18 @@ public class Installer extends ModuleInstall {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show startup window(s) in sequence.
|
||||||
|
* @param crFirstTimeSetup If true, attempts to show the central repo notification dialog
|
||||||
|
*/
|
||||||
|
private void showStartupWindows(boolean crFirstTimeSetup) {
|
||||||
|
if (crFirstTimeSetup && CentralRepositoryNotificationDialog.shouldDisplay()) {
|
||||||
|
CentralRepositoryNotificationDialog.display();
|
||||||
|
}
|
||||||
|
|
||||||
|
StartupWindowProvider.getInstance().open();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uninstalled() {
|
public void uninstalled() {
|
||||||
super.uninstalled();
|
super.uninstalled();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user