Autopsy 4.22.1
Graphical digital forensics platform for The Sleuth Kit and other tools.
CentralRepoPostgresSettingsUtil.java
Go to the documentation of this file.
1/*
2 *
3 * Autopsy Forensic Browser
4 *
5 * Copyright 2012-2020 Basis Technology Corp.
6 *
7 * Copyright 2012 42six Solutions.
8 * Contact: aebadirad <at> 42six <dot> com
9 * Project Contact/Architect: carrier <at> sleuthkit <dot> org
10 *
11 * Licensed under the Apache License, Version 2.0 (the "License");
12 * you may not use this file except in compliance with the License.
13 * You may obtain a copy of the License at
14 *
15 * http://www.apache.org/licenses/LICENSE-2.0
16 *
17 * Unless required by applicable law or agreed to in writing, software
18 * distributed under the License is distributed on an "AS IS" BASIS,
19 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20 * See the License for the specific language governing permissions and
21 * limitations under the License.
22 */
23package org.sleuthkit.autopsy.centralrepository.datamodel;
24
25import java.util.HashMap;
26import java.util.Map;
27import java.util.logging.Level;
28import org.sleuthkit.autopsy.centralrepository.CentralRepoSettings;
29import org.sleuthkit.autopsy.core.UserPreferences;
30import org.sleuthkit.autopsy.core.UserPreferencesException;
31import org.sleuthkit.autopsy.coreutils.Logger;
32import org.sleuthkit.autopsy.coreutils.ModuleSettings;
33import org.sleuthkit.autopsy.coreutils.TextConverter;
34import org.sleuthkit.autopsy.coreutils.TextConverterException;
35import org.sleuthkit.datamodel.CaseDbConnectionInfo;
36
41 private final static Logger LOGGER = Logger.getLogger(CentralRepoPostgresSettingsUtil.class.getName());
42
43 private static final String PASSWORD_KEY = "db.postgresql.password";
44 private static final String BULK_THRESHOLD_KEY = "db.postgresql.bulkThreshold";
45 private static final String PORT_KEY = "db.postgresql.port";
46 private static final String USER_KEY = "db.postgresql.user";
47 private static final String DBNAME_KEY = "db.postgresql.dbName";
48 private static final String HOST_KEY = "db.postgresql.host";
49
51
53
58 public static synchronized CentralRepoPostgresSettingsUtil getInstance() {
59 if (instance == null)
61
62 return instance;
63 }
64
66
75 private void setValOrLog(ValueSetter setter, String value) {
76 // ignore null values as they indicate a setting that is not set yet
77 if (value == null || value.isEmpty())
78 return;
79
80 try {
81 setter.set(value);
82 }
83 catch (CentralRepoException | NumberFormatException e) {
84 LOGGER.log(Level.WARNING, "There was an error in converting central repo postgres settings", e);
85 }
86 }
87
91 private interface ValueSetter {
92 void set(String value) throws CentralRepoException, NumberFormatException;
93 }
94
103
104 CaseDbConnectionInfo muConn;
105 try {
107 } catch (UserPreferencesException ex) {
108 LOGGER.log(Level.SEVERE, "Failed to import settings from multi-user settings.", ex);
109 return settings;
110 }
111
112 setValOrLog((v) -> settings.setHost(v), muConn.getHost());
113 setValOrLog((v) -> settings.setUserName(v), muConn.getUserName());
114 setValOrLog((v) -> settings.setPassword(v), muConn.getPassword());
115
116 setValOrLog((v) -> settings.setPort(Integer.parseInt(v)), muConn.getPort());
117
118 return settings;
119 }
120
121
130 Map<String, String> keyVals = ModuleSettings.getConfigSettings(MODULE_KEY);
131
132
133 setValOrLog((v) -> settings.setHost(v), keyVals.get(HOST_KEY));
134 setValOrLog((v) -> settings.setDbName(v), keyVals.get(DBNAME_KEY));
135 setValOrLog((v) -> settings.setUserName(v), keyVals.get(USER_KEY));
136
137 setValOrLog((v) -> settings.setPort(Integer.parseInt(v)), keyVals.get(PORT_KEY));
138 setValOrLog((v) -> settings.setBulkThreshold(Integer.parseInt(v)), keyVals.get((BULK_THRESHOLD_KEY)));
139
140 String passwordHex = keyVals.get(PASSWORD_KEY);
141 if (passwordHex != null) {
142 String password;
143 try {
144 password = TextConverter.convertHexTextToText(passwordHex);
145 } catch (TextConverterException ex) {
146 LOGGER.log(Level.WARNING, "Failed to convert password from hex text to text.", ex);
147 password = null;
148 }
149
150 final String finalPassword = password;
151 setValOrLog((v) -> settings.setPassword(v), finalPassword);
152 }
153
154 return settings;
155 }
156
162 Map<String, String> map = new HashMap<String, String>();
163 map.put(HOST_KEY, settings.getHost());
164 map.put(PORT_KEY, Integer.toString(settings.getPort()));
165 map.put(DBNAME_KEY, settings.getDbName());
166 map.put(BULK_THRESHOLD_KEY, Integer.toString(settings.getBulkThreshold()));
167 map.put(USER_KEY, settings.getUserName());
168 try {
169 map.put(PASSWORD_KEY, TextConverter.convertTextToHexText(settings.getPassword())); // NON-NLS
170 } catch (TextConverterException ex) {
171 LOGGER.log(Level.SEVERE, "Failed to convert password from text to hex text.", ex);
172 }
173
175 }
176
184 return saved.equals(settings);
185 }
186}
static CaseDbConnectionInfo getDatabaseConnectionInfo()
synchronized static Logger getLogger(String name)
Definition Logger.java:124
static synchronized void setConfigSettings(String moduleName, Map< String, String > settings)
static synchronized Map< String, String > getConfigSettings(String moduleName)
static String convertHexTextToText(String property)
static String convertTextToHexText(String property)

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