Autopsy 4.22.1
Graphical digital forensics platform for The Sleuth Kit and other tools.
IngestProfiles.java
Go to the documentation of this file.
1/*
2 * Autopsy Forensic Browser
3 *
4 * Copyright 2011-2019 Basis Technology Corp.
5 * Contact: carrier <at> sleuthkit <dot> org
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 */
19package org.sleuthkit.autopsy.ingest;
20
21import java.io.File;
22import java.io.IOException;
23import java.nio.file.Files;
24import java.nio.file.Paths;
25import java.util.ArrayList;
26import java.util.List;
27import java.util.logging.Level;
28import org.apache.commons.io.FileUtils;
29import org.apache.commons.io.FilenameUtils;
30import org.sleuthkit.autopsy.ingest.profile.IngestProfilePaths;
31import org.sleuthkit.autopsy.coreutils.Logger;
32import org.sleuthkit.autopsy.coreutils.ModuleSettings;
33import org.sleuthkit.autopsy.coreutils.PlatformUtil;
34
38public final class IngestProfiles {
39
40 private static final String PROFILE_NAME_KEY = "Profile_Name";
41 private static final String PROFILE_DESC_KEY = "Profile_Description";
42 private static final String PROFILE_FILTER_KEY = "Profile_Filter";
44 private static final Logger logger = Logger.getLogger(IngestProfiles.class.getName());
45
50 static String getIngestProfilePrefix() {
52 }
53
61 static String getExecutionContext(String profileName) {
62 return SETTINGS_FILE_PREFIX + profileName;
63 }
64
72 private static String getSanitizedProfile(String executionContext) {
73 return (executionContext != null && executionContext.startsWith(getIngestProfilePrefix()))
74 ? executionContext.substring(getIngestProfilePrefix().length())
75 : executionContext;
76 }
77
86 private static File getRootSettingsFile(String profileName) {
87 return Paths.get(
89 IngestJobSettings.getModuleSettingsResource(
90 getExecutionContext(getSanitizedProfile(profileName))) + ".properties"
91 ).toFile();
92 }
93
102 private static File getSettingsDirectory(String profileName) {
103 return IngestJobSettings.getSavedModuleSettingsFolder(getExecutionContext(getSanitizedProfile(profileName))).toFile();
104 }
105
111 public synchronized static List<IngestProfile> getIngestProfiles() {
112 File dir = new File(IngestJobSettings.getBaseSettingsPath());
113 // find all settings files for ingest profiles (starts with ingest profiles prefix)
114 File[] directoryListing = dir.listFiles((file) -> file.getName() != null && file.getName().startsWith(getIngestProfilePrefix()) && file.isFile());
115 List<IngestProfile> profileList = new ArrayList<>();
116 if (directoryListing != null) {
117 for (File child : directoryListing) {
118 String resourceName = FilenameUtils.removeExtension(child.getName());
119 String profileName = getSanitizedProfile(resourceName);
120 String moduleSettingsResource = IngestJobSettings.getModuleSettingsResource(resourceName);
121 String desc = ModuleSettings.getConfigSetting(moduleSettingsResource, PROFILE_DESC_KEY);
122 String fileIngestFilter = ModuleSettings.getConfigSetting(moduleSettingsResource, PROFILE_FILTER_KEY);
123 profileList.add(new IngestProfile(profileName, desc, fileIngestFilter));
124 }
125 }
126 return profileList;
127 }
128
132 synchronized static void setProfiles(List<IngestProfile> profiles) {
133 for (IngestProfile profile : profiles) {
134 IngestProfile.saveProfile(profile);
135 }
136 }
137
143 public static final class IngestProfile {
144
145 private final String name;
146 private final String description;
147 private final String fileIngestFilter;
148
156 IngestProfile(String name, String desc, String selectedFilter) {
157 this.name = name;
158 this.description = desc;
159 this.fileIngestFilter = selectedFilter;
160 }
161
167 @Override
168 public String toString() {
169 return getName();
170 }
171
177 String getName() {
178 return name;
179 }
180
186 public String getDescription() {
187 return description;
188 }
189
195 public String getFileIngestFilter() {
196 return fileIngestFilter;
197 }
198
204 synchronized static void deleteProfile(IngestProfile selectedProfile) {
205 deleteProfile(selectedProfile.getName());
206 }
207
213 synchronized static void deleteProfile(String profileName) {
214 try {
215 File rootSettingsFile = getRootSettingsFile(profileName);
216 File settingsDirectory = getSettingsDirectory(profileName);
217 Files.deleteIfExists(rootSettingsFile.toPath());
218 FileUtils.deleteDirectory(settingsDirectory);
219 } catch (IOException ex) {
220 logger.log(Level.WARNING, "Error deleting directory for profile " + profileName, ex);
221 }
222 }
223
230 synchronized static void renameProfile(String oldName, String newName) {
231 if (!oldName.equals(newName)) { //if renameProfile was called with the new name being the same as the old name, it is complete already
232 File oldRootSettings = getRootSettingsFile(oldName);
233 File newRootSettings = getRootSettingsFile(newName);
234 oldRootSettings.renameTo(newRootSettings);
235
236 File oldSettingsFolder = getSettingsDirectory(oldName);
237 File newSettingsFolder = getSettingsDirectory(newName);
238 oldSettingsFolder.renameTo(newSettingsFolder);
239 }
240 }
241
247 synchronized static void saveProfile(IngestProfile profile) {
248 String context = IngestJobSettings.getModuleSettingsResource(getExecutionContext(profile.getName()));
249 ModuleSettings.setConfigSetting(context, PROFILE_NAME_KEY, profile.getName());
250 ModuleSettings.setConfigSetting(context, PROFILE_DESC_KEY, profile.getDescription());
251 ModuleSettings.setConfigSetting(context, PROFILE_FILTER_KEY, profile.getFileIngestFilter());
252 }
253 }
254}
synchronized static Logger getLogger(String name)
Definition Logger.java:124
static synchronized String getConfigSetting(String moduleName, String settingName)
static File getRootSettingsFile(String profileName)
static File getSettingsDirectory(String profileName)
static String getSanitizedProfile(String executionContext)
static synchronized List< IngestProfile > getIngestProfiles()

Copyright © 2012-2024 Sleuth Kit Labs. Generated on:
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.