19 package org.sleuthkit.autopsy.recentactivity;
 
   21 import java.io.IOException;
 
   22 import java.util.Arrays;
 
   23 import java.util.List;
 
   25 import java.util.stream.Collectors;
 
   26 import java.util.stream.Stream;
 
   27 import org.apache.commons.lang.StringUtils;
 
   28 import org.openide.util.NbBundle.Messages;
 
   38     "DefaultPriorityDomainCategorizer_searchEngineCategory=Search Engine" 
   43     private static final List<String> GOOGLE_DOMAINS = Arrays.asList(
"google.com", 
"google.ad", 
"google.ae", 
"google.com.af", 
"google.com.ag", 
"google.com.ai", 
"google.al", 
"google.am", 
"google.co.ao", 
"google.com.ar", 
"google.as", 
"google.at", 
"google.com.au", 
"google.az", 
"google.ba", 
"google.com.bd", 
"google.be", 
"google.bf", 
"google.bg", 
"google.com.bh", 
"google.bi", 
"google.bj", 
"google.com.bn", 
"google.com.bo", 
"google.com.br", 
"google.bs", 
"google.bt", 
"google.co.bw", 
"google.by", 
"google.com.bz", 
"google.ca", 
"google.cd", 
"google.cf", 
"google.cg", 
"google.ch", 
"google.ci", 
"google.co.ck", 
"google.cl", 
"google.cm", 
"google.cn", 
"google.com.co", 
"google.co.cr", 
"google.com.cu", 
"google.cv", 
"google.com.cy", 
"google.cz", 
"google.de", 
"google.dj", 
"google.dk", 
"google.dm", 
"google.com.do", 
"google.dz", 
"google.com.ec", 
"google.ee", 
"google.com.eg", 
"google.es", 
"google.com.et", 
"google.fi", 
"google.com.fj", 
"google.fm", 
"google.fr", 
"google.ga", 
"google.ge", 
"google.gg", 
"google.com.gh", 
"google.com.gi", 
"google.gl", 
"google.gm", 
"google.gr", 
"google.com.gt", 
"google.gy", 
"google.com.hk", 
"google.hn", 
"google.hr", 
"google.ht", 
"google.hu", 
"google.co.id", 
"google.ie", 
"google.co.il", 
"google.im", 
"google.co.in", 
"google.iq", 
"google.is", 
"google.it", 
"google.je", 
"google.com.jm", 
"google.jo", 
"google.co.jp", 
"google.co.ke", 
"google.com.kh", 
"google.ki", 
"google.kg", 
"google.co.kr", 
"google.com.kw", 
"google.kz", 
"google.la", 
"google.com.lb", 
"google.li", 
"google.lk", 
"google.co.ls", 
"google.lt", 
"google.lu", 
"google.lv", 
"google.com.ly", 
"google.co.ma", 
"google.md", 
"google.me", 
"google.mg", 
"google.mk", 
"google.ml", 
"google.com.mm", 
"google.mn", 
"google.ms", 
"google.com.mt", 
"google.mu", 
"google.mv", 
"google.mw", 
"google.com.mx", 
"google.com.my", 
"google.co.mz", 
"google.com.na", 
"google.com.ng", 
"google.com.ni", 
"google.ne", 
"google.nl", 
"google.no", 
"google.com.np", 
"google.nr", 
"google.nu", 
"google.co.nz", 
"google.com.om", 
"google.com.pa", 
"google.com.pe", 
"google.com.pg", 
"google.com.ph", 
"google.com.pk", 
"google.pl", 
"google.pn", 
"google.com.pr", 
"google.ps", 
"google.pt", 
"google.com.py", 
"google.com.qa", 
"google.ro", 
"google.ru", 
"google.rw", 
"google.com.sa", 
"google.com.sb", 
"google.sc", 
"google.se", 
"google.com.sg", 
"google.sh", 
"google.si", 
"google.sk", 
"google.com.sl", 
"google.sn", 
"google.so", 
"google.sm", 
"google.sr", 
"google.st", 
"google.com.sv", 
"google.td", 
"google.tg", 
"google.co.th", 
"google.com.tj", 
"google.tl", 
"google.tm", 
"google.tn", 
"google.to", 
"google.com.tr", 
"google.tt", 
"google.com.tw", 
"google.co.tz", 
"google.com.ua", 
"google.co.ug", 
"google.co.uk", 
"google.com.uy", 
"google.co.uz", 
"google.com.vc", 
"google.co.ve", 
"google.vg", 
"google.co.vi", 
"google.com.vn", 
"google.vu", 
"google.ws", 
"google.rs", 
"google.co.za", 
"google.co.zm", 
"google.co.zw", 
"google.cat");
 
   46     private static final List<String> YAHOO_DOMAINS = Arrays.asList(
"espanol.yahoo.com", 
"au.yahoo.com", 
"be.yahoo.com", 
"fr-be.yahoo.com", 
"br.yahoo.com", 
"ca.yahoo.com", 
"espanol.yahoo.com", 
"espanol.yahoo.com", 
"de.yahoo.com", 
"es.yahoo.com", 
"espanol.yahoo.com", 
"fr.yahoo.com", 
"in.yahoo.com", 
"id.yahoo.com", 
"ie.yahoo.com", 
"it.yahoo.com", 
"en-maktoob.yahoo.com", 
"malaysia.yahoo.com", 
"espanol.yahoo.com", 
"nz.yahoo.com", 
"espanol.yahoo.com", 
"ph.yahoo.com", 
"qc.yahoo.com", 
"ro.yahoo.com", 
"sg.yahoo.com", 
"za.yahoo.com", 
"se.yahoo.com", 
"uk.yahoo.com", 
"yahoo.com", 
"espanol.yahoo.com", 
"vn.yahoo.com", 
"gr.yahoo.com", 
"maktoob.yahoo.com", 
"yahoo.com", 
"hk.yahoo.com", 
"tw.yahoo.com", 
"yahoo.co.jp");
 
   48     private static final List<String> OTHER_SEARCH_ENGINES = Arrays.asList(
 
   67     private static final String WWW_PREFIX = 
"www";
 
   69     private static final Map<String, String> DOMAIN_LOOKUP
 
   70             = Stream.of(GOOGLE_DOMAINS, YAHOO_DOMAINS, OTHER_SEARCH_ENGINES)
 
   71                     .flatMap((lst) -> lst.stream())
 
   72                     .collect(Collectors.toMap((k) -> k, (k) -> Bundle.DefaultPriorityDomainCategorizer_searchEngineCategory(), (v1, v2) -> v1));
 
   81         String hostToUse = StringUtils.isBlank(host) ? domain : host;
 
   83         if (StringUtils.isBlank(hostToUse)) {
 
   87         List<String> domainWords = Stream.of(hostToUse.toLowerCase().split(
"\\."))
 
   88                 .filter(StringUtils::isNotBlank)
 
   90                 .collect(Collectors.toList());
 
   92         String sanitizedDomain = domainWords.stream()
 
   94                 .skip(domainWords.size() > 0 && WWW_PREFIX.equals(domainWords.get(0)) ? 1 : 0)
 
   95                 .collect(Collectors.joining(
"."));
 
   97         String category = DOMAIN_LOOKUP.get(sanitizedDomain);
 
   98         return category == null ? null : 
new DomainCategory(sanitizedDomain, category);
 
  102     public void close() throws IOException {
 
DomainCategory getCategory(String domain, String host)