Go to the documentation of this file.
19package org.sleuthkit.autopsy.recentactivity;
21import java.io.BufferedReader;
22import java.io.IOException;
23import java.io.InputStream;
24import java.io.InputStreamReader;
25import java.nio.charset.StandardCharsets;
26import java.util.Arrays;
27import java.util.HashMap;
30import java.util.logging.Level;
31import org.apache.commons.lang.StringUtils;
32import org.sleuthkit.autopsy.coreutils.Logger;
33import org.sleuthkit.autopsy.url.analytics.DomainCategorizer;
34import org.sleuthkit.autopsy.url.analytics.DomainCategorizerException;
35import org.sleuthkit.autopsy.url.analytics.DomainCategory;
56@SuppressWarnings(
"try")
71 private static Map<String, String>
loadMapping() throws IOException {
72 try (InputStream is = DomainCategoryRunner.class.getResourceAsStream(
DOMAIN_TYPE_CSV);
73 InputStreamReader isReader =
new InputStreamReader(is, StandardCharsets.UTF_8);
74 BufferedReader reader =
new BufferedReader(isReader)) {
76 Map<String, String>
mapping =
new HashMap<>();
78 while (reader.ready()) {
79 String line = reader.readLine();
80 if (!StringUtils.isBlank(line) && !line.startsWith(
COMMENT_PREFIX)) {
98 private static void addItem(Map<String, String>
mapping, String line,
int lineNumber) {
100 if (StringUtils.isBlank(line)) {
106 if (csvItems.length < 2) {
107 logger.log(Level.WARNING, String.format(
"Unable to properly parse line of \"%s\" at line %d", line, lineNumber));
112 String domainTypeStr = csvItems[1].trim();
113 if (StringUtils.isBlank(domainTypeStr)) {
114 logger.log(Level.WARNING, String.format(
"No category specified for this line: \"%s\" at line %d", line, lineNumber));
119 String hostSuffix = csvItems[0];
120 if (StringUtils.isBlank(hostSuffix)) {
121 logger.log(Level.WARNING, String.format(
"Could not determine host suffix for this line: \"%s\" at line %d", line, lineNumber));
125 mapping.put(hostSuffix.toLowerCase(), domainTypeStr);
139 }
catch (IOException ex) {
150 return this.mapping !=
null;
160 String hostToUse = StringUtils.isBlank(host) ? domain : host;
162 if (StringUtils.isBlank(hostToUse)) {
168 List<String> tokens = Arrays.asList(hostToUse.split(
"\\."));
169 for (
int i = 0; i < tokens.size(); i++) {
170 String searchString = String.join(
".", tokens.subList(i, tokens.size()));
171 String category =
mapping.get(searchString);
172 if (StringUtils.isNotBlank(category)) {
181 public synchronized void close() throws Exception {
synchronized static Logger getLogger(String name)
static final String CSV_DELIMITER
static final String COMMENT_PREFIX
synchronized void close()
static Map< String, String > loadMapping()
static void addItem(Map< String, String > mapping, String line, int lineNumber)
static final Logger logger
Map< String, String > mapping
static final String DOMAIN_TYPE_CSV
synchronized boolean isInitialized()
synchronized void initialize()
synchronized DomainCategory getCategory(String domain, String host)
Copyright © 2012-2024 Sleuth Kit Labs. Generated on:
This work is licensed under a
Creative Commons Attribution-Share Alike 3.0 United States License.