diff --git a/Core/ivy.xml b/Core/ivy.xml index 36245ce14d..92be3f86e6 100644 --- a/Core/ivy.xml +++ b/Core/ivy.xml @@ -46,6 +46,9 @@ + + + diff --git a/Core/nbproject/project.properties b/Core/nbproject/project.properties index 8d9c857fba..37d8de5814 100644 --- a/Core/nbproject/project.properties +++ b/Core/nbproject/project.properties @@ -1,118 +1,141 @@ -file.reference.activemq-all-5.11.1.jar=release\\modules\\ext\\activemq-all-5.11.1.jar -file.reference.animal-sniffer-annotations-1.17.jar=release\\modules\\ext\\animal-sniffer-annotations-1.17.jar -file.reference.api-common-1.7.0.jar=release\\modules\\ext\\api-common-1.7.0.jar -file.reference.batik-awt-util-1.6.jar=release\\modules\\ext\\batik-awt-util-1.6.jar -file.reference.batik-dom-1.6.jar=release\\modules\\ext\\batik-dom-1.6.jar -file.reference.batik-svg-dom-1.6.jar=release\\modules\\ext\\batik-svg-dom-1.6.jar -file.reference.batik-svggen-1.6.jar=release\\modules\\ext\\batik-svggen-1.6.jar -file.reference.batik-util-1.6.jar=release\\modules\\ext\\batik-util-1.6.jar -file.reference.batik-xml-1.6.jar=release\\modules\\ext\\batik-xml-1.6.jar -file.reference.bcpkix-jdk15on-1.54.jar=release\\modules\\ext\\bcpkix-jdk15on-1.54.jar -file.reference.bcprov-ext-jdk15on-1.54.jar=release\\modules\\ext\\bcprov-ext-jdk15on-1.54.jar -file.reference.bcprov-jdk15on-1.52.jar=release\\modules\\ext\\bcprov-jdk15on-1.52.jar -file.reference.bcprov-jdk15on-1.54.jar=release\\modules\\ext\\bcprov-jdk15on-1.54.jar -file.reference.c3p0-0.9.5.jar=release\\modules\\ext\\c3p0-0.9.5.jar -file.reference.checker-compat-qual-2.5.3.jar=release\\modules\\ext\\checker-compat-qual-2.5.3.jar -file.reference.commons-beanutils-1.9.2.jar=release\\modules\\ext\\commons-beanutils-1.9.2.jar +file.reference.activemq-all-5.11.1.jar=release/modules/ext/activemq-all-5.11.1.jar +file.reference.apache-mime4j-core-0.8.2.jar=release\\modules\\ext\\apache-mime4j-core-0.8.2.jar +file.reference.apache-mime4j-dom-0.8.2.jar=release\\modules\\ext\\apache-mime4j-dom-0.8.2.jar +file.reference.asm-7.0.jar=release\\modules\\ext\\asm-7.0.jar +file.reference.batik-awt-util-1.6.jar=release/modules/ext/batik-awt-util-1.6.jar +file.reference.batik-dom-1.6.jar=release/modules/ext/batik-dom-1.6.jar +file.reference.batik-svg-dom-1.6.jar=release/modules/ext/batik-svg-dom-1.6.jar +file.reference.batik-svggen-1.6.jar=release/modules/ext/batik-svggen-1.6.jar +file.reference.batik-util-1.6.jar=release/modules/ext/batik-util-1.6.jar +file.reference.batik-xml-1.6.jar=release/modules/ext/batik-xml-1.6.jar +file.reference.bcmail-jdk15on-1.60.jar=release\\modules\\ext\\bcmail-jdk15on-1.60.jar +file.reference.bcpkix-jdk15on-1.60.jar=release\\modules\\ext\\bcpkix-jdk15on-1.60.jar +file.reference.bcprov-ext-jdk15on-1.54.jar=release/modules/ext/bcprov-ext-jdk15on-1.54.jar +file.reference.bcprov-jdk15on-1.60.jar=release\\modules\\ext\\bcprov-jdk15on-1.60.jar +file.reference.boilerpipe-1.1.0.jar=release\\modules\\ext\\boilerpipe-1.1.0.jar +file.reference.byte-buddy-1.10.13.jar=release\\modules\\ext\\byte-buddy-1.10.13.jar +file.reference.byte-buddy-agent-1.10.13.jar=release\\modules\\ext\\byte-buddy-agent-1.10.13.jar +file.reference.c3p0-0.9.5.jar=release/modules/ext/c3p0-0.9.5.jar +file.reference.cdm-4.5.5.jar=release\\modules\\ext\\cdm-4.5.5.jar file.reference.commons-codec-1.11.jar=release\\modules\\ext\\commons-codec-1.11.jar -file.reference.commons-collections-3.2.2.jar=release\\modules\\ext\\commons-collections-3.2.2.jar -file.reference.commons-dbcp2-2.1.1.jar=release\\modules\\ext\\commons-dbcp2-2.1.1.jar -file.reference.commons-digester-1.8.1.jar=release\\modules\\ext\\commons-digester-1.8.1.jar -file.reference.commons-lang-2.6.jar=release\\modules\\ext\\commons-lang-2.6.jar -file.reference.commons-lang3-3.5.jar=release\\modules\\ext\\commons-lang3-3.5.jar -file.reference.commons-logging-1.2.jar=release\\modules\\ext\\commons-logging-1.2.jar -file.reference.commons-pool2-2.4.2.jar=release\\modules\\ext\\commons-pool2-2.4.2.jar -file.reference.commons-validator-1.6.jar=release\\modules\\ext\\commons-validator-1.6.jar -file.reference.curator-client-2.8.0.jar=release\\modules\\ext\\curator-client-2.8.0.jar -file.reference.curator-framework-2.8.0.jar=release\\modules\\ext\\curator-framework-2.8.0.jar -file.reference.curator-recipes-2.8.0.jar=release\\modules\\ext\\curator-recipes-2.8.0.jar -file.reference.DatCon.jar=release\\modules\\ext\\DatCon.jar -file.reference.decodetect-core-0.3.jar=release\\modules\\ext\\decodetect-core-0.3.jar -file.reference.error_prone_annotations-2.3.2.jar=release\\modules\\ext\\error_prone_annotations-2.3.2.jar -file.reference.failureaccess-1.0.1.jar=release\\modules\\ext\\failureaccess-1.0.1.jar -file.reference.gax-1.44.0.jar=release\\modules\\ext\\gax-1.44.0.jar -file.reference.gax-grpc-1.44.0.jar=release\\modules\\ext\\gax-grpc-1.44.0.jar -file.reference.gax-httpjson-0.61.0.jar=release\\modules\\ext\\gax-httpjson-0.61.0.jar -file.reference.google-api-client-1.27.0.jar=release\\modules\\ext\\google-api-client-1.27.0.jar -file.reference.google-api-services-translate-v2-rev20170525-1.27.0.jar=release\\modules\\ext\\google-api-services-translate-v2-rev20170525-1.27.0.jar -file.reference.google-auth-library-credentials-0.15.0.jar=release\\modules\\ext\\google-auth-library-credentials-0.15.0.jar -file.reference.google-auth-library-oauth2-http-0.15.0.jar=release\\modules\\ext\\google-auth-library-oauth2-http-0.15.0.jar -file.reference.google-cloud-core-1.70.0.jar=release\\modules\\ext\\google-cloud-core-1.70.0.jar -file.reference.google-cloud-core-grpc-1.70.0.jar=release\\modules\\ext\\google-cloud-core-grpc-1.70.0.jar -file.reference.google-cloud-core-http-1.70.0.jar=release\\modules\\ext\\google-cloud-core-http-1.70.0.jar -file.reference.google-cloud-translate-1.70.0.jar=release\\modules\\ext\\google-cloud-translate-1.70.0.jar -file.reference.google-http-client-1.29.0.jar=release\\modules\\ext\\google-http-client-1.29.0.jar -file.reference.google-http-client-appengine-1.29.0.jar=release\\modules\\ext\\google-http-client-appengine-1.29.0.jar -file.reference.google-http-client-jackson2-1.29.0.jar=release\\modules\\ext\\google-http-client-jackson2-1.29.0.jar -file.reference.google-oauth-client-1.28.0.jar=release\\modules\\ext\\google-oauth-client-1.28.0.jar -file.reference.grpc-alts-1.19.0.jar=release\\modules\\ext\\grpc-alts-1.19.0.jar -file.reference.grpc-auth-1.19.0.jar=release\\modules\\ext\\grpc-auth-1.19.0.jar -file.reference.grpc-context-1.19.0.jar=release\\modules\\ext\\grpc-context-1.19.0.jar -file.reference.grpc-core-1.19.0.jar=release\\modules\\ext\\grpc-core-1.19.0.jar -file.reference.grpc-grpclb-1.19.0.jar=release\\modules\\ext\\grpc-grpclb-1.19.0.jar -file.reference.grpc-netty-shaded-1.19.0.jar=release\\modules\\ext\\grpc-netty-shaded-1.19.0.jar -file.reference.grpc-protobuf-1.19.0.jar=release\\modules\\ext\\grpc-protobuf-1.19.0.jar -file.reference.grpc-protobuf-lite-1.19.0.jar=release\\modules\\ext\\grpc-protobuf-lite-1.19.0.jar -file.reference.grpc-stub-1.19.0.jar=release\\modules\\ext\\grpc-stub-1.19.0.jar -file.reference.gson-2.7.jar=release\\modules\\ext\\gson-2.7.jar -file.reference.guava-27.1-android.jar=release\\modules\\ext\\guava-27.1-android.jar -file.reference.httpclient-4.5.5.jar=release\\modules\\ext\\httpclient-4.5.5.jar -file.reference.httpcore-4.4.9.jar=release\\modules\\ext\\httpcore-4.4.9.jar -file.reference.icepdf-core-6.2.2.jar=release\\modules\\ext\\icepdf-core-6.2.2.jar -file.reference.icepdf-viewer-6.2.2.jar=release\\modules\\ext\\icepdf-viewer-6.2.2.jar -file.reference.j2objc-annotations-1.1.jar=release\\modules\\ext\\j2objc-annotations-1.1.jar +file.reference.commons-collections4-4.2.jar=release\\modules\\ext\\commons-collections4-4.2.jar +file.reference.commons-csv-1.6.jar=release\\modules\\ext\\commons-csv-1.6.jar +file.reference.commons-dbcp2-2.1.1.jar=release/modules/ext/commons-dbcp2-2.1.1.jar +file.reference.commons-exec-1.3.jar=release\\modules\\ext\\commons-exec-1.3.jar +file.reference.commons-io-2.6.jar=release\\modules\\ext\\commons-io-2.6.jar +file.reference.commons-lang3-3.8.1.jar=release\\modules\\ext\\commons-lang3-3.8.1.jar +file.reference.commons-pool2-2.4.2.jar=release/modules/ext/commons-pool2-2.4.2.jar +file.reference.cxf-rt-rs-client-3.3.0.jar=release\\modules\\ext\\cxf-rt-rs-client-3.3.0.jar +file.reference.DatCon.jar=release/modules/ext/DatCon.jar +file.reference.dec-0.1.2.jar=release\\modules\\ext\\dec-0.1.2.jar +file.reference.decodetect-core-0.3.jar=release/modules/ext/decodetect-core-0.3.jar +file.reference.fontbox-2.0.13.jar=release\\modules\\ext\\fontbox-2.0.13.jar +file.reference.geoapi-3.0.1.jar=release\\modules\\ext\\geoapi-3.0.1.jar +file.reference.grib-4.5.5.jar=release\\modules\\ext\\grib-4.5.5.jar +file.reference.httpclient-4.5.6.jar=release\\modules\\ext\\httpclient-4.5.6.jar +file.reference.httpmime-4.5.6.jar=release\\modules\\ext\\httpmime-4.5.6.jar +file.reference.httpservices-4.5.5.jar=release\\modules\\ext\\httpservices-4.5.5.jar +file.reference.icepdf-core-6.2.2.jar=release/modules/ext/icepdf-core-6.2.2.jar +file.reference.icepdf-viewer-6.2.2.jar=release/modules/ext/icepdf-viewer-6.2.2.jar +file.reference.isoparser-1.1.22.jar=release\\modules\\ext\\isoparser-1.1.22.jar file.reference.jackcess-2.2.0.jar=release\\modules\\ext\\jackcess-2.2.0.jar file.reference.jackcess-encrypt-2.1.4.jar=release\\modules\\ext\\jackcess-encrypt-2.1.4.jar -file.reference.jackson-annotations-2.9.0.jar=release\\modules\\ext\\jackson-annotations-2.9.0.jar +file.reference.jackson-annotations-2.9.7.jar=release\\modules\\ext\\jackson-annotations-2.9.7.jar file.reference.jackson-core-2.9.7.jar=release\\modules\\ext\\jackson-core-2.9.7.jar file.reference.jackson-databind-2.9.7.jar=release\\modules\\ext\\jackson-databind-2.9.7.jar -file.reference.jai_core-1.1.3.jar=release\\modules\\ext\\jai_core-1.1.3.jar -file.reference.jai_imageio-1.1.jar=release\\modules\\ext\\jai_imageio-1.1.jar +file.reference.jai-imageio-core-1.4.0.jar=release\\modules\\ext\\jai-imageio-core-1.4.0.jar +file.reference.jai_core-1.1.3.jar=release/modules/ext/jai_core-1.1.3.jar +file.reference.jai_imageio-1.1.jar=release/modules/ext/jai_imageio-1.1.jar +file.reference.java-libpst-0.8.1.jar=release\\modules\\ext\\java-libpst-0.8.1.jar +file.reference.javax.activation-1.2.0.jar=release\\modules\\ext\\javax.activation-1.2.0.jar file.reference.javax.annotation-api-1.3.2.jar=release\\modules\\ext\\javax.annotation-api-1.3.2.jar -file.reference.javax.ws.rs-api-2.0.jar=release\\modules\\ext\\javax.ws.rs-api-2.0.jar -file.reference.jdom-2.0.5-contrib.jar=release\\modules\\ext\\jdom-2.0.5-contrib.jar -file.reference.jdom-2.0.5.jar=release\\modules\\ext\\jdom-2.0.5.jar -file.reference.jericho-html-3.3.jar=release\\modules\\ext\\jericho-html-3.3.jar -file.reference.jgraphx-4.1.0.jar=release\\modules\\ext\\jgraphx-4.1.0.jar -file.reference.jline-0.9.94.jar=release\\modules\\ext\\jline-0.9.94.jar -file.reference.jsoup-1.10.3.jar=release\\modules\\ext\\jsoup-1.10.3.jar -file.reference.jsr305-3.0.2.jar=release\\modules\\ext\\jsr305-3.0.2.jar -file.reference.junit-3.8.1.jar=release\\modules\\ext\\junit-3.8.1.jar -file.reference.jutf7-1.0.0.jar=release\\modules\\ext\\jutf7-1.0.0.jar -file.reference.jxmapviewer2-2.4.jar=release\\modules\\ext\\jxmapviewer2-2.4.jar -file.reference.jython-standalone-2.7.0.jar=release\\modules\\ext\\jython-standalone-2.7.0.jar -file.reference.libphonenumber-3.5.jar=release\\modules\\ext\\libphonenumber-3.5.jar -file.reference.listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar=release\\modules\\ext\\listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar -file.reference.log4j-1.2.16.jar=release\\modules\\ext\\log4j-1.2.16.jar -file.reference.mchange-commons-java-0.2.9.jar=release\\modules\\ext\\mchange-commons-java-0.2.9.jar +file.reference.jbig2-imageio-3.0.2.jar=release\\modules\\ext\\jbig2-imageio-3.0.2.jar +file.reference.jcl-over-slf4j-1.7.25.jar=release\\modules\\ext\\jcl-over-slf4j-1.7.25.jar +file.reference.jdom-2.0.5-contrib.jar=release/modules/ext/jdom-2.0.5-contrib.jar +file.reference.jdom-2.0.5.jar=release/modules/ext/jdom-2.0.5.jar +file.reference.jdom2-2.0.6.jar=release\\modules\\ext\\jdom2-2.0.6.jar +file.reference.jempbox-1.8.16.jar=release\\modules\\ext\\jempbox-1.8.16.jar +file.reference.jericho-html-3.3.jar=release/modules/ext/jericho-html-3.3.jar +file.reference.jgraphx-4.1.0.jar=release/modules/ext/jgraphx-4.1.0.jar +file.reference.jhighlight-1.0.3.jar=release\\modules\\ext\\jhighlight-1.0.3.jar +file.reference.jmatio-1.5.jar=release\\modules\\ext\\jmatio-1.5.jar +file.reference.json-simple-1.1.1.jar=release\\modules\\ext\\json-simple-1.1.1.jar +file.reference.jsoup-1.11.3.jar=release\\modules\\ext\\jsoup-1.11.3.jar +file.reference.jul-to-slf4j-1.7.25.jar=release\\modules\\ext\\jul-to-slf4j-1.7.25.jar +file.reference.juniversalchardet-1.0.3.jar=release\\modules\\ext\\juniversalchardet-1.0.3.jar +file.reference.junrar-2.0.0.jar=release\\modules\\ext\\junrar-2.0.0.jar +file.reference.jutf7-1.0.0.jar=release/modules/ext/jutf7-1.0.0.jar +file.reference.jxmapviewer2-2.4.jar=release/modules/ext/jxmapviewer2-2.4.jar +file.reference.jython-standalone-2.7.0.jar=release/modules/ext/jython-standalone-2.7.0.jar +file.reference.libphonenumber-3.5.jar=release/modules/ext/libphonenumber-3.5.jar +file.reference.mchange-commons-java-0.2.9.jar=release/modules/ext/mchange-commons-java-0.2.9.jar file.reference.metadata-extractor-2.11.0.jar=release\\modules\\ext\\metadata-extractor-2.11.0.jar -file.reference.netty-3.7.0.Final.jar=release\\modules\\ext\\netty-3.7.0.Final.jar -file.reference.okhttp-2.7.5.jar=release\\modules\\ext\\okhttp-2.7.5.jar -file.reference.okio-1.6.0.jar=release\\modules\\ext\\okio-1.6.0.jar -file.reference.opencensus-api-0.19.2.jar=release\\modules\\ext\\opencensus-api-0.19.2.jar -file.reference.opencensus-contrib-grpc-metrics-0.19.2.jar=release\\modules\\ext\\opencensus-contrib-grpc-metrics-0.19.2.jar -file.reference.opencensus-contrib-http-util-0.19.2.jar=release\\modules\\ext\\opencensus-contrib-http-util-0.19.2.jar +file.reference.mockito-core-3.5.7.jar=release\\modules\\ext\\mockito-core-3.5.7.jar +file.reference.netcdf4-4.5.5.jar=release\\modules\\ext\\netcdf4-4.5.5.jar +file.reference.objenesis-3.1.jar=release\\modules\\ext\\objenesis-3.1.jar +file.reference.openjson-1.0.10.jar=release\\modules\\ext\\openjson-1.0.10.jar file.reference.opennlp-tools-1.9.1.jar=release\\modules\\ext\\opennlp-tools-1.9.1.jar -file.reference.postgresql-9.4.1211.jre7.jar=release\\modules\\ext\\postgresql-9.4.1211.jre7.jar -file.reference.proto-google-cloud-translate-v3beta1-0.53.0.jar=release\\modules\\ext\\proto-google-cloud-translate-v3beta1-0.53.0.jar -file.reference.proto-google-common-protos-1.15.0.jar=release\\modules\\ext\\proto-google-common-protos-1.15.0.jar -file.reference.proto-google-iam-v1-0.12.0.jar=release\\modules\\ext\\proto-google-iam-v1-0.12.0.jar -file.reference.protobuf-java-3.7.0.jar=release\\modules\\ext\\protobuf-java-3.7.0.jar -file.reference.protobuf-java-util-3.7.0.jar=release\\modules\\ext\\protobuf-java-util-3.7.0.jar -file.reference.Rejistry-1.1-SNAPSHOT.jar=release\\modules\\ext\\Rejistry-1.1-SNAPSHOT.jar -file.reference.sevenzipjbinding-AllPlatforms.jar=release\\modules\\ext\\sevenzipjbinding-AllPlatforms.jar -file.reference.sevenzipjbinding.jar=release\\modules\\ext\\sevenzipjbinding.jar -file.reference.sleuthkit-4.10.0.jar=release\\modules\\ext\\sleuthkit-4.10.0.jar -file.reference.sleuthkit-caseuco-4.10.0.jar=release\\modules\\ext\\sleuthkit-caseuco-4.10.0.jar -file.reference.slf4j-api-1.7.6.jar=release\\modules\\ext\\slf4j-api-1.7.6.jar -file.reference.slf4j-log4j12-1.7.6.jar=release\\modules\\ext\\slf4j-log4j12-1.7.6.jar -file.reference.SparseBitSet-1.1.jar=release\\modules\\ext\\SparseBitSet-1.1.jar -file.reference.sqlite-jdbc-3.25.2.jar=release\\modules\\ext\\sqlite-jdbc-3.25.2.jar -file.reference.StixLib.jar=release\\modules\\ext\\StixLib.jar -file.reference.threetenbp-1.3.3.jar=release\\modules\\ext\\threetenbp-1.3.3.jar -file.reference.webp-imageio-sejda-0.1.0.jar=release\\modules\\ext\\webp-imageio-sejda-0.1.0.jar -file.reference.xmpcore-5.1.3.jar=release\\modules\\ext\\xmpcore-5.1.3.jar -file.reference.zookeeper-3.4.6.jar=release\\modules\\ext\\zookeeper-3.4.6.jar +file.reference.parso-2.0.10.jar=release\\modules\\ext\\parso-2.0.10.jar +file.reference.pdfbox-2.0.13.jar=release\\modules\\ext\\pdfbox-2.0.13.jar +file.reference.pdfbox-tools-2.0.13.jar=release\\modules\\ext\\pdfbox-tools-2.0.13.jar +file.reference.postgresql-9.4.1211.jre7.jar=release/modules/ext/postgresql-9.4.1211.jre7.jar +file.reference.Rejistry-1.1-SNAPSHOT.jar=release/modules/ext/Rejistry-1.1-SNAPSHOT.jar +file.reference.rome-1.12.0.jar=release\\modules\\ext\\rome-1.12.0.jar +file.reference.sentiment-analysis-parser-0.1.jar=release\\modules\\ext\\sentiment-analysis-parser-0.1.jar +file.reference.sevenzipjbinding-AllPlatforms.jar=release/modules/ext/sevenzipjbinding-AllPlatforms.jar +file.reference.sevenzipjbinding.jar=release/modules/ext/sevenzipjbinding.jar +file.reference.sis-metadata-0.8.jar=release\\modules\\ext\\sis-metadata-0.8.jar +file.reference.sis-netcdf-0.8.jar=release\\modules\\ext\\sis-netcdf-0.8.jar +file.reference.sis-utility-0.8.jar=release\\modules\\ext\\sis-utility-0.8.jar +file.reference.sleuthkit-caseuco-4.10.0.jar=release/modules/ext/sleuthkit-caseuco-4.10.0.jar +file.reference.slf4j-api-1.7.25.jar=release\\modules\\ext\\slf4j-api-1.7.25.jar +file.reference.sqlite-jdbc-3.25.2.jar=release/modules/ext/sqlite-jdbc-3.25.2.jar +file.reference.StixLib.jar=release/modules/ext/StixLib.jar +file.reference.javax.ws.rs-api-2.0.1.jar=release/modules/ext/javax.ws.rs-api-2.0.1.jar +file.reference.cxf-core-3.0.16.jar=release/modules/ext/cxf-core-3.0.16.jar +file.reference.cxf-rt-frontend-jaxrs-3.0.16.jar=release/modules/ext/cxf-rt-frontend-jaxrs-3.0.16.jar +file.reference.cxf-rt-transports-http-3.0.16.jar=release/modules/ext/cxf-rt-transports-http-3.0.16.jar +file.reference.sleuthkit-4.10.0.jar=release/modules/ext/sleuthkit-4.10.0.jar +file.reference.curator-client-2.8.0.jar=release/modules/ext/curator-client-2.8.0.jar +file.reference.curator-framework-2.8.0.jar=release/modules/ext/curator-framework-2.8.0.jar +file.reference.curator-recipes-2.8.0.jar=release/modules/ext/curator-recipes-2.8.0.jar +file.reference.tagsoup-1.2.1.jar=release\\modules\\ext\\tagsoup-1.2.1.jar +file.reference.tika-core-1.20.jar=release\\modules\\ext\\tika-core-1.20.jar +file.reference.tika-parsers-1.20.jar=release\\modules\\ext\\tika-parsers-1.20.jar +file.reference.uimafit-core-2.4.0.jar=release\\modules\\ext\\uimafit-core-2.4.0.jar +file.reference.uimaj-core-3.0.1.jar=release\\modules\\ext\\uimaj-core-3.0.1.jar +file.reference.vorbis-java-core-0.8.jar=release\\modules\\ext\\vorbis-java-core-0.8.jar +file.reference.vorbis-java-tika-0.8.jar=release\\modules\\ext\\vorbis-java-tika-0.8.jar +file.reference.webp-imageio-sejda-0.1.0.jar=release/modules/ext/webp-imageio-sejda-0.1.0.jar +file.reference.xmlbeans-3.0.2.jar=release\\modules\\ext\\xmlbeans-3.0.2.jar +file.reference.xmpcore-5.1.3.jar=release/modules/ext/xmpcore-5.1.3.jar +file.reference.xz-1.8.jar=release\\modules\\ext\\xz-1.8.jar +file.reference.zookeeper-3.4.6.jar=release/modules/ext/zookeeper-3.4.6.jar +file.reference.SparseBitSet-1.1.jar=release/modules/ext/SparseBitSet-1.1.jar +file.reference.commons-validator-1.6.jar=release/modules/ext/commons-validator-1.6.jar +file.reference.api-common-1.7.0.jar=release/modules/ext/api-common-1.7.0.jar +file.reference.gax-1.44.0.jar=release/modules/ext/gax-1.44.0.jar +file.reference.gax-grpc-1.44.0.jar=release/modules/ext/gax-grpc-1.44.0.jar +file.reference.gax-httpjson-0.61.0.jar=release/modules/ext/gax-httpjson-0.61.0.jar +file.reference.google-api-client-1.27.0.jar=release/modules/ext/google-api-client-1.27.0.jar +file.reference.google-api-services-translate-v2-rev20170525-1.27.0.jar=release/modules/ext/google-api-services-translate-v2-rev20170525-1.27.0.jar +file.reference.google-auth-library-credentials-0.15.0.jar=release/modules/ext/google-auth-library-credentials-0.15.0.jar +file.reference.google-auth-library-oauth2-http-0.15.0.jar=release/modules/ext/google-auth-library-oauth2-http-0.15.0.jar +file.reference.google-cloud-core-1.70.0.jar=release/modules/ext/google-cloud-core-1.70.0.jar +file.reference.google-cloud-core-http-1.70.0.jar=release/modules/ext/google-cloud-core-http-1.70.0.jar +file.reference.google-cloud-translate-1.70.0.jar=release/modules/ext/google-cloud-translate-1.70.0.jar +file.reference.google-http-client-1.29.0.jar=release/modules/ext/google-http-client-1.29.0.jar +file.reference.google-http-client-appengine-1.29.0.jar=release/modules/ext/google-http-client-appengine-1.29.0.jar +file.reference.google-http-client-jackson2-1.29.0.jar=release/modules/ext/google-http-client-jackson2-1.29.0.jar +file.reference.grpc-context-1.19.0.jar=release/modules/ext/grpc-context-1.19.0.jar +file.reference.opencensus-api-0.19.2.jar=release/modules/ext/opencensus-api-0.19.2.jar +file.reference.opencensus-contrib-http-util-0.19.2.jar=release/modules/ext/opencensus-contrib-http-util-0.19.2.jar +file.reference.threetenbp-1.3.3.jar=release/modules/ext/threetenbp-1.3.3.jar +file.reference.okhttp-2.7.5-javadoc.jar=release/modules/ext/okhttp-2.7.5-javadoc.jar +file.reference.okhttp-2.7.5-sources.jar=release/modules/ext/okhttp-2.7.5-sources.jar +file.reference.okhttp-2.7.5.jar=release/modules/ext/okhttp-2.7.5.jar +file.reference.okio-1.6.0.jar=release/modules/ext/okio-1.6.0.jar +file.reference.datcon.jar=release/modules/ext/DatCon.jar javac.source=1.8 javac.compilerargs=-Xlint -Xlint:-serial license.file=../LICENSE-2.0.txt @@ -120,5 +143,5 @@ nbm.homepage=http://www.sleuthkit.org/ nbm.module.author=Brian Carrier nbm.needs.restart=true source.reference.curator-recipes-2.8.0.jar=release/modules/ext/curator-recipes-2.8.0-sources.jar -spec.version.base=10.21 +spec.version.base=10.20 diff --git a/Core/nbproject/project.xml b/Core/nbproject/project.xml index 19c863e6b7..5abd3666b7 100644 --- a/Core/nbproject/project.xml +++ b/Core/nbproject/project.xml @@ -6,6 +6,24 @@ org.sleuthkit.autopsy.core + + org.jdesktop.beansbinding + + + + 1 + 1.27.1.121 + + + + org.jdesktop.layout + + + + 1 + 1.33.1 + + org.netbeans.api.progress @@ -227,14 +245,6 @@ 6.55.1 - - org.sleuthkit.autopsy.Tika - - - - 1.0 - - org.sleuthkit.autopsy.corelibs @@ -299,6 +309,8 @@ net.sf.sevenzipjbinding.impl net.sf.sevenzipjbinding.simple net.sf.sevenzipjbinding.simple.impl + org.apache.tika + org.apache.tika.io org.sleuthkit.autopsy.actions org.sleuthkit.autopsy.appservices org.sleuthkit.autopsy.casemodule @@ -340,88 +352,104 @@ org.sleuthkit.datamodel.blackboardutils.attributes - ext/batik-xml-1.6.jar - release\modules\ext\batik-xml-1.6.jar + ext/commons-lang3-3.8.1.jar + release\modules\ext\commons-lang3-3.8.1.jar - ext/commons-digester-1.8.1.jar - release\modules\ext\commons-digester-1.8.1.jar + ext/batik-xml-1.6.jar + release/modules/ext/batik-xml-1.6.jar ext/jai_core-1.1.3.jar - release\modules\ext\jai_core-1.1.3.jar + release/modules/ext/jai_core-1.1.3.jar ext/gax-grpc-1.44.0.jar - release\modules\ext\gax-grpc-1.44.0.jar + release/modules/ext/gax-grpc-1.44.0.jar - ext/failureaccess-1.0.1.jar - release\modules\ext\failureaccess-1.0.1.jar + ext/cdm-4.5.5.jar + release\modules\ext\cdm-4.5.5.jar - ext/grpc-protobuf-1.19.0.jar - release\modules\ext\grpc-protobuf-1.19.0.jar + ext/sis-utility-0.8.jar + release\modules\ext\sis-utility-0.8.jar ext/opencensus-api-0.19.2.jar - release\modules\ext\opencensus-api-0.19.2.jar + release/modules/ext/opencensus-api-0.19.2.jar ext/batik-svg-dom-1.6.jar - release\modules\ext\batik-svg-dom-1.6.jar + release/modules/ext/batik-svg-dom-1.6.jar ext/gax-httpjson-0.61.0.jar - release\modules\ext\gax-httpjson-0.61.0.jar + release/modules/ext/gax-httpjson-0.61.0.jar + + + ext/boilerpipe-1.1.0.jar + release\modules\ext\boilerpipe-1.1.0.jar + + + ext/jsoup-1.11.3.jar + release\modules\ext\jsoup-1.11.3.jar ext/sevenzipjbinding.jar - release\modules\ext\sevenzipjbinding.jar + release/modules/ext/sevenzipjbinding.jar ext/mchange-commons-java-0.2.9.jar - release\modules\ext\mchange-commons-java-0.2.9.jar - - - ext/api-common-1.7.0.jar - release\modules\ext\api-common-1.7.0.jar + release/modules/ext/mchange-commons-java-0.2.9.jar ext/jackson-databind-2.9.7.jar release\modules\ext\jackson-databind-2.9.7.jar + + ext/jai-imageio-core-1.4.0.jar + release\modules\ext\jai-imageio-core-1.4.0.jar + + + ext/api-common-1.7.0.jar + release/modules/ext/api-common-1.7.0.jar + + + ext/jcl-over-slf4j-1.7.25.jar + release\modules\ext\jcl-over-slf4j-1.7.25.jar + ext/okhttp-2.7.5.jar - release\modules\ext\okhttp-2.7.5.jar + release/modules/ext/okhttp-2.7.5.jar - ext/proto-google-cloud-translate-v3beta1-0.53.0.jar - release\modules\ext\proto-google-cloud-translate-v3beta1-0.53.0.jar - - - ext/error_prone_annotations-2.3.2.jar - release\modules\ext\error_prone_annotations-2.3.2.jar + ext/byte-buddy-1.10.13.jar + release\modules\ext\byte-buddy-1.10.13.jar ext/libphonenumber-3.5.jar - release\modules\ext\libphonenumber-3.5.jar + release/modules/ext/libphonenumber-3.5.jar + + + ext/tika-core-1.20.jar + release\modules\ext\tika-core-1.20.jar ext/StixLib.jar - release\modules\ext\StixLib.jar + release/modules/ext/StixLib.jar + + + ext/bcprov-jdk15on-1.60.jar + release\modules\ext\bcprov-jdk15on-1.60.jar ext/google-auth-library-credentials-0.15.0.jar - release\modules\ext\google-auth-library-credentials-0.15.0.jar + release/modules/ext/google-auth-library-credentials-0.15.0.jar - ext/grpc-auth-1.19.0.jar - release\modules\ext\grpc-auth-1.19.0.jar - - - ext/j2objc-annotations-1.1.jar - release\modules\ext\j2objc-annotations-1.1.jar + ext/json-simple-1.1.1.jar + release\modules\ext\json-simple-1.1.1.jar ext/metadata-extractor-2.11.0.jar @@ -431,137 +459,157 @@ ext/commons-codec-1.11.jar release\modules\ext\commons-codec-1.11.jar + + ext/jmatio-1.5.jar + release\modules\ext\jmatio-1.5.jar + + + ext/tika-parsers-1.20.jar + release\modules\ext\tika-parsers-1.20.jar + + + ext/asm-7.0.jar + release\modules\ext\asm-7.0.jar + ext/commons-pool2-2.4.2.jar - release\modules\ext\commons-pool2-2.4.2.jar + release/modules/ext/commons-pool2-2.4.2.jar ext/jxmapviewer2-2.4.jar - release\modules\ext\jxmapviewer2-2.4.jar - - - ext/jfreechart-1.0.19.jar - release/modules/ext/jfreechart-1.0.19.jar - - - ext/jcommon-1.0.23.jar - release/modules/ext/jcommon-1.0.23.jar + release/modules/ext/jxmapviewer2-2.4.jar ext/jdom-2.0.5-contrib.jar - release\modules\ext\jdom-2.0.5-contrib.jar + release/modules/ext/jdom-2.0.5-contrib.jar + + + ext/openjson-1.0.10.jar + release\modules\ext\openjson-1.0.10.jar + + + ext/isoparser-1.1.22.jar + release\modules\ext\isoparser-1.1.22.jar ext/xmpcore-5.1.3.jar - release\modules\ext\xmpcore-5.1.3.jar + release/modules/ext/xmpcore-5.1.3.jar ext/batik-util-1.6.jar - release\modules\ext\batik-util-1.6.jar + release/modules/ext/batik-util-1.6.jar + + + ext/javax.activation-1.2.0.jar + release\modules\ext\javax.activation-1.2.0.jar + + + ext/rome-1.12.0.jar + release\modules\ext\rome-1.12.0.jar ext/javax.annotation-api-1.3.2.jar release\modules\ext\javax.annotation-api-1.3.2.jar - ext/jgraphx-4.1.0.jar - release\modules\ext\jgraphx-4.1.0.jar + ext/vorbis-java-core-0.8.jar + release\modules\ext\vorbis-java-core-0.8.jar - ext/jline-0.9.94.jar - release\modules\ext\jline-0.9.94.jar + ext/jgraphx-4.1.0.jar + release/modules/ext/jgraphx-4.1.0.jar ext/DatCon.jar - release\modules\ext\DatCon.jar + release/modules/ext/DatCon.jar + + + ext/java-libpst-0.8.1.jar + release\modules\ext\java-libpst-0.8.1.jar ext/okio-1.6.0.jar - release\modules\ext\okio-1.6.0.jar - - - ext/bcprov-jdk15on-1.54.jar - release\modules\ext\bcprov-jdk15on-1.54.jar + release/modules/ext/okio-1.6.0.jar ext/curator-framework-2.8.0.jar - release\modules\ext\curator-framework-2.8.0.jar + release/modules/ext/curator-framework-2.8.0.jar ext/commons-dbcp2-2.1.1.jar - release\modules\ext\commons-dbcp2-2.1.1.jar + release/modules/ext/commons-dbcp2-2.1.1.jar ext/google-http-client-appengine-1.29.0.jar - release\modules\ext\google-http-client-appengine-1.29.0.jar + release/modules/ext/google-http-client-appengine-1.29.0.jar - ext/proto-google-iam-v1-0.12.0.jar - release\modules\ext\proto-google-iam-v1-0.12.0.jar + ext/uimafit-core-2.4.0.jar + release\modules\ext\uimafit-core-2.4.0.jar ext/jackcess-encrypt-2.1.4.jar release\modules\ext\jackcess-encrypt-2.1.4.jar + + ext/junrar-2.0.0.jar + release\modules\ext\junrar-2.0.0.jar + ext/google-http-client-1.29.0.jar - release\modules\ext\google-http-client-1.29.0.jar + release/modules/ext/google-http-client-1.29.0.jar + + + ext/bcpkix-jdk15on-1.60.jar + release\modules\ext\bcpkix-jdk15on-1.60.jar ext/opennlp-tools-1.9.1.jar release\modules\ext\opennlp-tools-1.9.1.jar + + ext/slf4j-api-1.7.25.jar + release\modules\ext\slf4j-api-1.7.25.jar + ext/bcprov-ext-jdk15on-1.54.jar - release\modules\ext\bcprov-ext-jdk15on-1.54.jar + release/modules/ext/bcprov-ext-jdk15on-1.54.jar ext/google-cloud-core-1.70.0.jar - release\modules\ext\google-cloud-core-1.70.0.jar + release/modules/ext/google-cloud-core-1.70.0.jar - ext/protobuf-java-3.7.0.jar - release\modules\ext\protobuf-java-3.7.0.jar + ext/geoapi-3.0.1.jar + release\modules\ext\geoapi-3.0.1.jar - ext/bcpkix-jdk15on-1.54.jar - release\modules\ext\bcpkix-jdk15on-1.54.jar + ext/httpmime-4.5.6.jar + release\modules\ext\httpmime-4.5.6.jar + + + ext/jdom2-2.0.6.jar + release\modules\ext\jdom2-2.0.6.jar + + + ext/uimaj-core-3.0.1.jar + release\modules\ext\uimaj-core-3.0.1.jar ext/sqlite-jdbc-3.25.2.jar - release\modules\ext\sqlite-jdbc-3.25.2.jar + release/modules/ext/sqlite-jdbc-3.25.2.jar - ext/grpc-protobuf-lite-1.19.0.jar - release\modules\ext\grpc-protobuf-lite-1.19.0.jar + ext/cxf-rt-rs-client-3.3.0.jar + release\modules\ext\cxf-rt-rs-client-3.3.0.jar - ext/httpcore-4.4.9.jar - release\modules\ext\httpcore-4.4.9.jar + ext/pdfbox-tools-2.0.13.jar + release\modules\ext\pdfbox-tools-2.0.13.jar - ext/guava-27.1-android.jar - release\modules\ext\guava-27.1-android.jar - - - ext/bcprov-jdk15on-1.52.jar - release\modules\ext\bcprov-jdk15on-1.52.jar - - - ext/checker-compat-qual-2.5.3.jar - release\modules\ext\checker-compat-qual-2.5.3.jar - - - ext/sleuthkit-4.10.0.jar - release\modules\ext\sleuthkit-4.10.0.jar - - - ext/animal-sniffer-annotations-1.17.jar - release\modules\ext\animal-sniffer-annotations-1.17.jar - - - ext/sleuthkit-caseuco-4.10.0.jar - release\modules\ext\sleuthkit-caseuco-4.10.0.jar + ext/grib-4.5.5.jar + release\modules\ext\grib-4.5.5.jar ext/sleuthkit-4.10.0.jar @@ -573,247 +621,255 @@ ext/gax-1.44.0.jar - release\modules\ext\gax-1.44.0.jar + release/modules/ext/gax-1.44.0.jar - ext/jsoup-1.10.3.jar - release\modules\ext\jsoup-1.10.3.jar - - - ext/grpc-context-1.19.0.jar - release\modules\ext\grpc-context-1.19.0.jar + ext/jempbox-1.8.16.jar + release\modules\ext\jempbox-1.8.16.jar ext/jackcess-2.2.0.jar release\modules\ext\jackcess-2.2.0.jar - ext/slf4j-log4j12-1.7.6.jar - release\modules\ext\slf4j-log4j12-1.7.6.jar + ext/grpc-context-1.19.0.jar + release/modules/ext/grpc-context-1.19.0.jar ext/jericho-html-3.3.jar - release\modules\ext\jericho-html-3.3.jar + release/modules/ext/jericho-html-3.3.jar - ext/google-cloud-core-grpc-1.70.0.jar - release\modules\ext\google-cloud-core-grpc-1.70.0.jar + ext/httpservices-4.5.5.jar + release\modules\ext\httpservices-4.5.5.jar + + + ext/xz-1.8.jar + release\modules\ext\xz-1.8.jar ext/commons-validator-1.6.jar - release\modules\ext\commons-validator-1.6.jar - - - ext/slf4j-api-1.7.6.jar - release\modules\ext\slf4j-api-1.7.6.jar + release/modules/ext/commons-validator-1.6.jar ext/decodetect-core-0.3.jar - release\modules\ext\decodetect-core-0.3.jar + release/modules/ext/decodetect-core-0.3.jar - ext/httpclient-4.5.5.jar - release\modules\ext\httpclient-4.5.5.jar + ext/mockito-core-3.5.7.jar + release\modules\ext\mockito-core-3.5.7.jar + + + ext/jbig2-imageio-3.0.2.jar + release\modules\ext\jbig2-imageio-3.0.2.jar + + + ext/apache-mime4j-dom-0.8.2.jar + release\modules\ext\apache-mime4j-dom-0.8.2.jar + + + ext/pdfbox-2.0.13.jar + release\modules\ext\pdfbox-2.0.13.jar + + + ext/xmlbeans-3.0.2.jar + release\modules\ext\xmlbeans-3.0.2.jar ext/curator-recipes-2.8.0.jar - release\modules\ext\curator-recipes-2.8.0.jar + release/modules/ext/curator-recipes-2.8.0.jar - ext/jackson-annotations-2.9.0.jar - release\modules\ext\jackson-annotations-2.9.0.jar + ext/objenesis-3.1.jar + release\modules\ext\objenesis-3.1.jar + + + ext/tagsoup-1.2.1.jar + release\modules\ext\tagsoup-1.2.1.jar ext/jackson-core-2.9.7.jar release\modules\ext\jackson-core-2.9.7.jar - ext/commons-lang3-3.5.jar - release\modules\ext\commons-lang3-3.5.jar + ext/sis-metadata-0.8.jar + release\modules\ext\sis-metadata-0.8.jar - ext/log4j-1.2.16.jar - release\modules\ext\log4j-1.2.16.jar + ext/parso-2.0.10.jar + release\modules\ext\parso-2.0.10.jar - ext/commons-logging-1.2.jar - release\modules\ext\commons-logging-1.2.jar + ext/apache-mime4j-core-0.8.2.jar + release\modules\ext\apache-mime4j-core-0.8.2.jar - ext/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar - release\modules\ext\listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar - - - ext/protobuf-java-util-3.7.0.jar - release\modules\ext\protobuf-java-util-3.7.0.jar - - - ext/commons-collections-3.2.2.jar - release\modules\ext\commons-collections-3.2.2.jar + ext/commons-io-2.6.jar + release\modules\ext\commons-io-2.6.jar ext/SparseBitSet-1.1.jar - release\modules\ext\SparseBitSet-1.1.jar - - - ext/grpc-grpclb-1.19.0.jar - release\modules\ext\grpc-grpclb-1.19.0.jar + release/modules/ext/SparseBitSet-1.1.jar ext/batik-svggen-1.6.jar - release\modules\ext\batik-svggen-1.6.jar + release/modules/ext/batik-svggen-1.6.jar ext/c3p0-0.9.5.jar - release\modules\ext\c3p0-0.9.5.jar + release/modules/ext/c3p0-0.9.5.jar ext/zookeeper-3.4.6.jar - release\modules\ext\zookeeper-3.4.6.jar + release/modules/ext/zookeeper-3.4.6.jar - ext/grpc-alts-1.19.0.jar - release\modules\ext\grpc-alts-1.19.0.jar + ext/commons-csv-1.6.jar + release\modules\ext\commons-csv-1.6.jar ext/jdom-2.0.5.jar - release\modules\ext\jdom-2.0.5.jar + release/modules/ext/jdom-2.0.5.jar - ext/gson-2.7.jar - release\modules\ext\gson-2.7.jar + ext/jackson-annotations-2.9.7.jar + release\modules\ext\jackson-annotations-2.9.7.jar ext/google-api-client-1.27.0.jar - release\modules\ext\google-api-client-1.27.0.jar + release/modules/ext/google-api-client-1.27.0.jar + + + ext/netcdf4-4.5.5.jar + release\modules\ext\netcdf4-4.5.5.jar + + + ext/sis-netcdf-0.8.jar + release\modules\ext\sis-netcdf-0.8.jar + + + ext/sentiment-analysis-parser-0.1.jar + release\modules\ext\sentiment-analysis-parser-0.1.jar + + + ext/commons-collections4-4.2.jar + release\modules\ext\commons-collections4-4.2.jar ext/opencensus-contrib-http-util-0.19.2.jar - release\modules\ext\opencensus-contrib-http-util-0.19.2.jar + release/modules/ext/opencensus-contrib-http-util-0.19.2.jar ext/google-auth-library-oauth2-http-0.15.0.jar - release\modules\ext\google-auth-library-oauth2-http-0.15.0.jar + release/modules/ext/google-auth-library-oauth2-http-0.15.0.jar + + + ext/juniversalchardet-1.0.3.jar + release\modules\ext\juniversalchardet-1.0.3.jar ext/jython-standalone-2.7.0.jar - release\modules\ext\jython-standalone-2.7.0.jar + release/modules/ext/jython-standalone-2.7.0.jar - ext/commons-lang-2.6.jar - release\modules\ext\commons-lang-2.6.jar + ext/jhighlight-1.0.3.jar + release\modules\ext\jhighlight-1.0.3.jar - ext/jsr305-3.0.2.jar - release\modules\ext\jsr305-3.0.2.jar - - - ext/proto-google-common-protos-1.15.0.jar - release\modules\ext\proto-google-common-protos-1.15.0.jar - - - ext/netty-3.7.0.Final.jar - release\modules\ext\netty-3.7.0.Final.jar - - - ext/opencensus-contrib-grpc-metrics-0.19.2.jar - release\modules\ext\opencensus-contrib-grpc-metrics-0.19.2.jar - - - ext/jai_imageio-1.1.jar - release\modules\ext\jai_imageio-1.1.jar + ext/jul-to-slf4j-1.7.25.jar + release\modules\ext\jul-to-slf4j-1.7.25.jar ext/postgresql-9.4.1211.jre7.jar - release\modules\ext\postgresql-9.4.1211.jre7.jar + release/modules/ext/postgresql-9.4.1211.jre7.jar - ext/junit-3.8.1.jar - release\modules\ext\junit-3.8.1.jar + ext/jai_imageio-1.1.jar + release/modules/ext/jai_imageio-1.1.jar + + + ext/httpclient-4.5.6.jar + release\modules\ext\httpclient-4.5.6.jar ext/curator-client-2.8.0.jar - release\modules\ext\curator-client-2.8.0.jar + release/modules/ext/curator-client-2.8.0.jar - ext/grpc-core-1.19.0.jar - release\modules\ext\grpc-core-1.19.0.jar - - - ext/javax.ws.rs-api-2.0.jar - release\modules\ext\javax.ws.rs-api-2.0.jar + ext/fontbox-2.0.13.jar + release\modules\ext\fontbox-2.0.13.jar ext/icepdf-core-6.2.2.jar - release\modules\ext\icepdf-core-6.2.2.jar + release/modules/ext/icepdf-core-6.2.2.jar ext/activemq-all-5.11.1.jar - release\modules\ext\activemq-all-5.11.1.jar + release/modules/ext/activemq-all-5.11.1.jar ext/google-cloud-core-http-1.70.0.jar - release\modules\ext\google-cloud-core-http-1.70.0.jar + release/modules/ext/google-cloud-core-http-1.70.0.jar ext/Rejistry-1.1-SNAPSHOT.jar - release\modules\ext\Rejistry-1.1-SNAPSHOT.jar + release/modules/ext/Rejistry-1.1-SNAPSHOT.jar - ext/commons-beanutils-1.9.2.jar - release\modules\ext\commons-beanutils-1.9.2.jar + ext/dec-0.1.2.jar + release\modules\ext\dec-0.1.2.jar ext/batik-dom-1.6.jar - release\modules\ext\batik-dom-1.6.jar + release/modules/ext/batik-dom-1.6.jar ext/google-http-client-jackson2-1.29.0.jar - release\modules\ext\google-http-client-jackson2-1.29.0.jar + release/modules/ext/google-http-client-jackson2-1.29.0.jar ext/threetenbp-1.3.3.jar - release\modules\ext\threetenbp-1.3.3.jar + release/modules/ext/threetenbp-1.3.3.jar ext/google-cloud-translate-1.70.0.jar - release\modules\ext\google-cloud-translate-1.70.0.jar - - - ext/grpc-stub-1.19.0.jar - release\modules\ext\grpc-stub-1.19.0.jar - - - ext/google-oauth-client-1.28.0.jar - release\modules\ext\google-oauth-client-1.28.0.jar + release/modules/ext/google-cloud-translate-1.70.0.jar ext/sevenzipjbinding-AllPlatforms.jar - release\modules\ext\sevenzipjbinding-AllPlatforms.jar + release/modules/ext/sevenzipjbinding-AllPlatforms.jar ext/jutf7-1.0.0.jar - release\modules\ext\jutf7-1.0.0.jar + release/modules/ext/jutf7-1.0.0.jar + + + ext/byte-buddy-agent-1.10.13.jar + release\modules\ext\byte-buddy-agent-1.10.13.jar ext/batik-awt-util-1.6.jar - release\modules\ext\batik-awt-util-1.6.jar + release/modules/ext/batik-awt-util-1.6.jar ext/google-api-services-translate-v2-rev20170525-1.27.0.jar - release\modules\ext\google-api-services-translate-v2-rev20170525-1.27.0.jar - - - ext/icepdf-viewer-6.2.2.jar - release\modules\ext\icepdf-viewer-6.2.2.jar + release/modules/ext/google-api-services-translate-v2-rev20170525-1.27.0.jar ext/webp-imageio-sejda-0.1.0.jar - release\modules\ext\webp-imageio-sejda-0.1.0.jar + release/modules/ext/webp-imageio-sejda-0.1.0.jar - ext/grpc-netty-shaded-1.19.0.jar - release\modules\ext\grpc-netty-shaded-1.19.0.jar + ext/icepdf-viewer-6.2.2.jar + release/modules/ext/icepdf-viewer-6.2.2.jar + + + ext/bcmail-jdk15on-1.60.jar + release\modules\ext\bcmail-jdk15on-1.60.jar + + + ext/vorbis-java-tika-0.8.jar + release\modules\ext\vorbis-java-tika-0.8.jar diff --git a/Core/src/org/sleuthkit/autopsy/discovery/search/DiscoveryAttributes.java b/Core/src/org/sleuthkit/autopsy/discovery/search/DiscoveryAttributes.java index a9ebbadfb2..90cb880cc2 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/search/DiscoveryAttributes.java +++ b/Core/src/org/sleuthkit/autopsy/discovery/search/DiscoveryAttributes.java @@ -44,6 +44,8 @@ import org.sleuthkit.datamodel.ContentTag; import org.sleuthkit.datamodel.SleuthkitCase; import org.sleuthkit.datamodel.TskCoreException; import org.sleuthkit.datamodel.TskData; +import java.util.StringJoiner; +import org.sleuthkit.autopsy.centralrepository.datamodel.CorrelationAttributeNormalizer; /** * Class which contains the search attributes which can be specified for @@ -220,6 +222,8 @@ public class DiscoveryAttributes { static class FrequencyAttribute extends AttributeType { static final int BATCH_SIZE = 50; // Number of hashes to look up at one time + + static final int DOMAIN_BATCH_SIZE = 500; // Number of domains to look up at one time @Override public DiscoveryKeyUtils.GroupKey getGroupKey(Result file) { @@ -251,12 +255,13 @@ public class DiscoveryAttributes { private void processResultFilesForCR(List results, CentralRepository centralRepoDb) throws DiscoveryException { List currentFiles = new ArrayList<>(); - Set hashesToLookUp = new HashSet<>(); - + Set hashesToLookUp = new HashSet<>(); + List domainsToQuery = new ArrayList<>(); for (Result result : results) { if (result.getKnown() == TskData.FileKnown.KNOWN) { result.setFrequency(SearchData.Frequency.KNOWN); } + if (result.getType() != SearchData.Type.DOMAIN) { ResultFile file = (ResultFile) result; if (file.getFrequency() == SearchData.Frequency.UNKNOWN @@ -265,6 +270,13 @@ public class DiscoveryAttributes { hashesToLookUp.add(file.getFirstInstance().getMd5Hash()); currentFiles.add(file); } + + if (hashesToLookUp.size() >= BATCH_SIZE) { + computeFrequency(hashesToLookUp, currentFiles, centralRepoDb); + + hashesToLookUp.clear(); + currentFiles.clear(); + } } else { ResultDomain domain = (ResultDomain) result; try { @@ -281,14 +293,92 @@ public class DiscoveryAttributes { if (hashesToLookUp.size() >= BATCH_SIZE) { computeFrequency(hashesToLookUp, currentFiles, centralRepoDb); - - hashesToLookUp.clear(); - currentFiles.clear(); + ResultDomain domainInstance = (ResultDomain) result; + domainsToQuery.add(domainInstance); + + if (domainsToQuery.size() == DOMAIN_BATCH_SIZE) { + queryDomainFrequency(domainsToQuery, centralRepoDb); + + domainsToQuery.clear(); + } } } + + queryDomainFrequency(domainsToQuery, centralRepoDb); computeFrequency(hashesToLookUp, currentFiles, centralRepoDb); } } + + private static void queryDomainFrequency(List domainsToQuery, CentralRepository centralRepository) throws DiscoveryException { + if (domainsToQuery.isEmpty()) { + return; + } + + try { + final Map> resultDomainTable = new HashMap<>(); + final StringJoiner joiner = new StringJoiner(", "); + + final CorrelationAttributeInstance.Type attributeType = centralRepository.getCorrelationTypeById(CorrelationAttributeInstance.DOMAIN_TYPE_ID); + for(ResultDomain domainInstance : domainsToQuery) { + try { + final String domainValue = domainInstance.getDomain(); + final String normalizedDomain = CorrelationAttributeNormalizer.normalize(attributeType, domainValue); + final List bucket = resultDomainTable.getOrDefault(normalizedDomain, new ArrayList<>()); + bucket.add(domainInstance); + resultDomainTable.put(normalizedDomain, bucket); + joiner.add("'" + normalizedDomain + "'"); + } catch (CorrelationAttributeNormalizationException ex) { + logger.log(Level.INFO, String.format("Domain [%s] failed normalization, skipping...", domainInstance.getDomain())); + } + } + + final String tableName = CentralRepoDbUtil.correlationTypeToInstanceTableName(attributeType); + final String domainFrequencyQuery = " value AS domain_name, COUNT(*) AS frequency " + + "FROM " + tableName + " " + + "WHERE value IN (" + joiner + ") " + + "GROUP BY value"; + + final DomainFrequencyCallback frequencyCallback = new DomainFrequencyCallback(resultDomainTable); + centralRepository.processSelectClause(domainFrequencyQuery, frequencyCallback); + + if (frequencyCallback.getCause() != null) { + throw frequencyCallback.getCause(); + } + } catch (CentralRepoException | SQLException ex) { + throw new DiscoveryException("Fatal exception encountered querying the CR.", ex); + } + } + + private static class DomainFrequencyCallback implements InstanceTableCallback { + + private final Map> domainLookup; + private SQLException sqlCause; + + private DomainFrequencyCallback(Map> domainLookup) { + this.domainLookup = domainLookup; + } + + @Override + public void process(ResultSet resultSet) { + try { + while (resultSet.next()) { + String domain = resultSet.getString("domain_name"); + Long frequency = resultSet.getLong("frequency"); + + List domainInstances = domainLookup.get(domain); + for(ResultDomain domainInstance : domainInstances) { + domainInstance.setFrequency(SearchData.Frequency.fromCount(frequency)); + } + } + } catch (SQLException ex) { + this.sqlCause = ex; + } + } + + SQLException getCause() { + return this.sqlCause; + } + } /** * Callback to use with findInterCaseValuesByCount which generates a list of @@ -681,7 +771,7 @@ public class DiscoveryAttributes { return Arrays.asList(FREQUENCY, MOST_RECENT_DATE, FIRST_DATE); } } - + /** * Computes the CR frequency of all the given hashes and updates the list of * files. diff --git a/Core/src/org/sleuthkit/autopsy/discovery/search/DiscoveryKeyUtils.java b/Core/src/org/sleuthkit/autopsy/discovery/search/DiscoveryKeyUtils.java index ec5b5516b2..b00fee63e8 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/search/DiscoveryKeyUtils.java +++ b/Core/src/org/sleuthkit/autopsy/discovery/search/DiscoveryKeyUtils.java @@ -129,24 +129,45 @@ public class DiscoveryKeyUtils { } /** - * @return the keyString + * Get the String representation of this key. + * + * @return The String representation of this key. */ String getKeyString() { return keyString; } + /** + * Get the list of filters associated with this key. + * + * @return The list of filters associated with this key. + */ List getFilters() { return Collections.unmodifiableList(this.filters); } + /** + * Get the group sorting type for this key. + * + * @return The group sorting type for this key. + */ Group.GroupSortingAlgorithm getGroupSortingType() { return groupSortingType; } + /** + * Get the grouping attribute for this key. + * + * @return The grouping attribute for this key. + */ DiscoveryAttributes.AttributeType getGroupAttributeType() { return groupAttributeType; } + /** + * Get the fileSorting + * @return + */ ResultsSorter.SortingMethod getFileSortingMethod() { return fileSortingMethod; } diff --git a/Core/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCache.java b/Core/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCache.java index 2a253399a5..481fabefb3 100755 --- a/Core/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCache.java +++ b/Core/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCache.java @@ -36,17 +36,10 @@ import org.sleuthkit.datamodel.SleuthkitCase; class DomainSearchCache { private static final int MAXIMUM_CACHE_SIZE = 10; - private final LoadingCache>> cache; - - DomainSearchCache() { - this(new DomainSearchCacheLoader()); - } - - DomainSearchCache(DomainSearchCacheLoader cacheLoader) { - this.cache = CacheBuilder.newBuilder() + private static final LoadingCache>> cache = + CacheBuilder.newBuilder() .maximumSize(MAXIMUM_CACHE_SIZE) - .build(cacheLoader); - } + .build(new DomainSearchCacheLoader()); /** * Get domain search results matching the given parameters. If no results diff --git a/Core/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCacheLoader.java b/Core/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCacheLoader.java index 59c47429c4..999aab0425 100755 --- a/Core/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCacheLoader.java +++ b/Core/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCacheLoader.java @@ -95,7 +95,7 @@ class DomainSearchCacheLoader extends CacheLoader(); this.skc = skc; } @@ -235,6 +235,8 @@ class DomainSearchCacheLoader extends CacheLoader { private static Comparator getTypeComparator() { return (Result result1, Result result2) -> Integer.compare(result1.getType().getRanking(), result2.getType().getRanking()); } - + /** * Compare files using a concatenated version of keyword list names. * Alphabetical by the list names with files with no keyword list hits going @@ -244,6 +244,21 @@ public class ResultsSorter implements Comparator { return compareStrings(first.getDomain().toLowerCase(), second.getDomain().toLowerCase()); }; } + + /** + * Sorts results by most recent date time + */ + private static Comparator getMostRecentDateTimeComparator() { + return (Result result1, Result result2) -> { + if(result1.getType() != SearchData.Type.DOMAIN) { + return 0; + } + + ResultDomain first = (ResultDomain) result1; + ResultDomain second = (ResultDomain) result2; + return Long.compare(second.getActivityEnd(), first.getActivityEnd()); + }; + } /** * A final default comparison between two ResultFile objects. Currently this diff --git a/Core/test/unit/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCacheLoaderTest.java b/Core/test/unit/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCacheLoaderTest.java new file mode 100755 index 0000000000..2a75ca2dc7 --- /dev/null +++ b/Core/test/unit/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCacheLoaderTest.java @@ -0,0 +1,157 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2020 Basis Technology Corp. + * Contact: carrier sleuthkit 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.discovery.search; + +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import static org.mockito.Mockito.*; +import static org.junit.Assert.*; +import org.junit.Test; +import org.sleuthkit.autopsy.discovery.search.DiscoveryKeyUtils.GroupKey; +import org.sleuthkit.autopsy.discovery.search.DiscoveryKeyUtils.SearchKey; +import org.sleuthkit.datamodel.TskCoreException; + +public class DomainSearchCacheLoaderTest { + + @Test + public void load_GroupByDataSourceSortByGroupNameAndDomain() throws DiscoveryException, TskCoreException, SQLException { + DomainSearchCacheLoader loader = mock(DomainSearchCacheLoader.class); + List domains = Arrays.asList( + DomainSearchTestUtils.mockDomainResult("google.com", 10, 100, 5, 4, 110), + DomainSearchTestUtils.mockDomainResult("yahoo.com", 1, 5, 7, 20, 100), + DomainSearchTestUtils.mockDomainResult("google.com", 5, 20, 1, 4, 105), + DomainSearchTestUtils.mockDomainResult("facebook.com", 2, 2, 1, 3, 110), + DomainSearchTestUtils.mockDomainResult("abc.com", 1, 2, 3, 4, 100), + DomainSearchTestUtils.mockDomainResult("xyz.com", 1, 2, 3, 4, 20) + ); + + SearchKey key = new SearchKey(null, new ArrayList<>(), + new DiscoveryAttributes.DataSourceAttribute(), + Group.GroupSortingAlgorithm.BY_GROUP_NAME, + ResultsSorter.SortingMethod.BY_DOMAIN_NAME); + + when(loader.getResultDomainsFromDatabase(key)).thenReturn(domains); + when(loader.load(key)).thenCallRealMethod(); + Map> results = loader.load(key); + assertEquals(4, results.size()); + for(List group : results.values()) { + ResultDomain previous = null; + for(Result result : group) { + ResultDomain current = (ResultDomain) result; + if (previous != null) { + assertTrue(previous.getDomain().compareTo(current.getDomain()) < 0); + } + previous = current; + } + } + } + + @Test + public void load_GroupByNothingByGroupNameAndDomain() throws DiscoveryException, TskCoreException, SQLException { + DomainSearchCacheLoader loader = mock(DomainSearchCacheLoader.class); + List domains = Arrays.asList( + DomainSearchTestUtils.mockDomainResult("google.com", 10, 100, 5, 4, 110), + DomainSearchTestUtils.mockDomainResult("yahoo.com", 1, 5, 7, 20, 100), + DomainSearchTestUtils.mockDomainResult("facebook.com", 2, 2, 1, 3, 110), + DomainSearchTestUtils.mockDomainResult("abc.com", 1, 2, 3, 4, 100), + DomainSearchTestUtils.mockDomainResult("xyz.com", 1, 2, 3, 4, 20) + ); + + SearchKey key = new SearchKey(null, new ArrayList<>(), + new DiscoveryAttributes.NoGroupingAttribute(), + Group.GroupSortingAlgorithm.BY_GROUP_NAME, + ResultsSorter.SortingMethod.BY_DOMAIN_NAME); + + when(loader.getResultDomainsFromDatabase(key)).thenReturn(domains); + when(loader.load(key)).thenCallRealMethod(); + Map> results = loader.load(key); + assertEquals(1, results.size()); + for(List group : results.values()) { + ResultDomain previous = null; + for(Result result : group) { + ResultDomain current = (ResultDomain) result; + if (previous != null) { + assertTrue(previous.getDomain().compareTo(current.getDomain()) < 0); + } + previous = current; + } + } + } + + @Test + public void load_GroupByNothingSortByNameAndDataSource() throws DiscoveryException, TskCoreException, SQLException { + DomainSearchCacheLoader loader = mock(DomainSearchCacheLoader.class); + List domains = Arrays.asList( + DomainSearchTestUtils.mockDomainResult("google.com", 10, 100, 5, 4, 110), + DomainSearchTestUtils.mockDomainResult("yahoo.com", 1, 5, 7, 20, 100) + ); + + SearchKey key = new SearchKey(null, new ArrayList<>(), + new DiscoveryAttributes.NoGroupingAttribute(), + Group.GroupSortingAlgorithm.BY_GROUP_NAME, + ResultsSorter.SortingMethod.BY_DATA_SOURCE); + + when(loader.getResultDomainsFromDatabase(key)).thenReturn(domains); + when(loader.load(key)).thenCallRealMethod(); + Map> results = loader.load(key); + assertEquals(1, results.size()); + for(List group : results.values()) { + ResultDomain previous = null; + for(Result result : group) { + ResultDomain current = (ResultDomain) result; + if (previous != null) { + assertTrue(Long.compare(previous.getDataSource().getId(), current.getDataSource().getId()) < 0); + } + previous = current; + } + } + } + + @Test + public void load_GroupByDataSourceBySizeAndName() throws DiscoveryException, TskCoreException, SQLException { + DomainSearchCacheLoader loader = mock(DomainSearchCacheLoader.class); + List domains = Arrays.asList( + DomainSearchTestUtils.mockDomainResult("google.com", 10, 100, 5, 4, 110), + DomainSearchTestUtils.mockDomainResult("yahoo.com", 1, 5, 7, 20, 100) + ); + + SearchKey key = new SearchKey(null, new ArrayList<>(), + new DiscoveryAttributes.DataSourceAttribute(), + Group.GroupSortingAlgorithm.BY_GROUP_SIZE, + ResultsSorter.SortingMethod.BY_DOMAIN_NAME); + + when(loader.getResultDomainsFromDatabase(key)).thenReturn(domains); + when(loader.load(key)).thenCallRealMethod(); + Map> results = loader.load(key); + assertEquals(2, results.size()); + for(List group : results.values()) { + ResultDomain previous = null; + for(Result result : group) { + ResultDomain current = (ResultDomain) result; + if (previous != null) { + assertTrue(previous.getDomain().compareTo(current.getDomain()) < 0); + } + previous = current; + } + } + } +} diff --git a/Core/test/unit/src/org/sleuthkit/autopsy/discovery/search/DomainSearchTest.java b/Core/test/unit/src/org/sleuthkit/autopsy/discovery/search/DomainSearchTest.java new file mode 100755 index 0000000000..9ddd7db0bf --- /dev/null +++ b/Core/test/unit/src/org/sleuthkit/autopsy/discovery/search/DomainSearchTest.java @@ -0,0 +1,413 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2020 Basis Technology Corp. + * Contact: carrier sleuthkit 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.discovery.search; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.junit.Test; + +import static org.mockito.Mockito.*; +import static org.junit.Assert.*; +import org.sleuthkit.autopsy.discovery.search.DiscoveryKeyUtils.GroupKey; + +public class DomainSearchTest { + + @Test + public void groupSizes_SingleGroup_ShouldHaveSizeFour() throws DiscoveryException { + DomainSearchCache cache = mock(DomainSearchCache.class); + + DummyKey groupOne = new DummyKey("1"); + Map> dummyData = new HashMap>() { + { + put(groupOne, Arrays.asList( + DomainSearchTestUtils.mockDomainResult("google.com"), + DomainSearchTestUtils.mockDomainResult("yahoo.com"), + DomainSearchTestUtils.mockDomainResult("bing.com"), + DomainSearchTestUtils.mockDomainResult("amazon.com")) + ); + } + }; + when(cache.get(null, new ArrayList<>(), null, null, null, null, null)).thenReturn(dummyData); + + DomainSearch domainSearch = new DomainSearch(cache); + Map sizes = domainSearch.getGroupSizes(null, + new ArrayList<>(), null, null, null, null, null); + assertEquals(4, sizes.get(groupOne).longValue()); + } + + @Test + public void groupSizes_MultipleGroups_ShouldHaveCorrectGroupSizes() throws DiscoveryException { + DomainSearchCache cache = mock(DomainSearchCache.class); + + DummyKey groupOne = new DummyKey("1"); + DummyKey groupTwo = new DummyKey("2"); + DummyKey groupThree = new DummyKey("3"); + + Map> dummyData = new HashMap>() { + { + put(groupOne, Arrays.asList( + DomainSearchTestUtils.mockDomainResult("google.com"), + DomainSearchTestUtils.mockDomainResult("yahoo.com"), + DomainSearchTestUtils.mockDomainResult("bing.com"), + DomainSearchTestUtils.mockDomainResult("amazon.com")) + ); + put(groupTwo, Arrays.asList( + DomainSearchTestUtils.mockDomainResult("facebook.com"), + DomainSearchTestUtils.mockDomainResult("spotify.com"), + DomainSearchTestUtils.mockDomainResult("netbeans.com")) + ); + put(groupThree, Arrays.asList( + DomainSearchTestUtils.mockDomainResult("youtube.com")) + ); + } + }; + + when(cache.get(null, new ArrayList<>(), null, null, null, null, null)).thenReturn(dummyData); + + DomainSearch domainSearch = new DomainSearch(cache); + Map sizes = domainSearch.getGroupSizes(null, + new ArrayList<>(), null, null, null, null, null); + assertEquals(4, sizes.get(groupOne).longValue()); + assertEquals(3, sizes.get(groupTwo).longValue()); + assertEquals(1, sizes.get(groupThree).longValue()); + } + + @Test + public void groupSizes_EmptyGroup_ShouldBeSizeZero() throws DiscoveryException { + DomainSearchCache cache = mock(DomainSearchCache.class); + + when(cache.get(null, new ArrayList<>(), null, null, null, null, null)).thenReturn(new HashMap<>()); + + DomainSearch domainSearch = new DomainSearch(cache); + Map sizes = domainSearch.getGroupSizes(null, + new ArrayList<>(), null, null, null, null, null); + assertEquals(0, sizes.size()); + } + + @Test + public void getDomains_SingleGroupFullPage_ShouldContainAllDomains() throws DiscoveryException { + DomainSearchCache cache = mock(DomainSearchCache.class); + + DummyKey groupOne = new DummyKey("1"); + List domains = Arrays.asList( + DomainSearchTestUtils.mockDomainResult("google.com"), + DomainSearchTestUtils.mockDomainResult("yahoo.com"), + DomainSearchTestUtils.mockDomainResult("bing.com"), + DomainSearchTestUtils.mockDomainResult("amazon.com")); + + Map> dummyData = new HashMap>() { + { + put(groupOne, domains); + } + }; + + when(cache.get(null, new ArrayList<>(), null, null, null, null, null)).thenReturn(dummyData); + + DomainSearch domainSearch = new DomainSearch(cache); + List firstPage = domainSearch.getDomainsInGroup(null, + new ArrayList<>(), null, null, null, groupOne, 0, 3, null, null); + assertEquals(4, firstPage.size()); + for (int i = 0; i < firstPage.size(); i++) { + assertEquals(domains.get(i), firstPage.get(i)); + } + } + + @Test + public void getDomains_SingleGroupOverSizedPage_ShouldContainAllDomains() throws DiscoveryException { + DomainSearchCache cache = mock(DomainSearchCache.class); + + DummyKey groupOne = new DummyKey("1"); + List domains = Arrays.asList( + DomainSearchTestUtils.mockDomainResult("google.com"), + DomainSearchTestUtils.mockDomainResult("yahoo.com"), + DomainSearchTestUtils.mockDomainResult("bing.com"), + DomainSearchTestUtils.mockDomainResult("amazon.com")); + + Map> dummyData = new HashMap>() { + { + put(groupOne, domains); + } + }; + + when(cache.get(null, new ArrayList<>(), null, null, null, null, null)).thenReturn(dummyData); + + DomainSearch domainSearch = new DomainSearch(cache); + List firstPage = domainSearch.getDomainsInGroup(null, + new ArrayList<>(), null, null, null, groupOne, 0, 100, null, null); + assertEquals(4, firstPage.size()); + for (int i = 0; i < firstPage.size(); i++) { + assertEquals(domains.get(i), firstPage.get(i)); + } + } + + @Test + public void getDomains_SingleGroupHalfPage_ShouldContainHalfDomains() throws DiscoveryException { + DomainSearchCache cache = mock(DomainSearchCache.class); + + DummyKey groupOne = new DummyKey("1"); + List domains = Arrays.asList( + DomainSearchTestUtils.mockDomainResult("google.com"), + DomainSearchTestUtils.mockDomainResult("yahoo.com"), + DomainSearchTestUtils.mockDomainResult("bing.com"), + DomainSearchTestUtils.mockDomainResult("amazon.com")); + + Map> dummyData = new HashMap>() { + { + put(groupOne, domains); + } + }; + + when(cache.get(null, new ArrayList<>(), null, null, null, null, null)).thenReturn(dummyData); + + DomainSearch domainSearch = new DomainSearch(cache); + List firstPage = domainSearch.getDomainsInGroup(null, + new ArrayList<>(), null, null, null, groupOne, 0, 2, null, null); + assertEquals(2, firstPage.size()); + for (int i = 0; i < firstPage.size(); i++) { + assertEquals(domains.get(i), firstPage.get(i)); + } + } + + @Test + public void getDomains_SingleGroupLastPageLastDomain_ShouldContainLastDomain() throws DiscoveryException { + DomainSearchCache cache = mock(DomainSearchCache.class); + + DummyKey groupOne = new DummyKey("1"); + List domains = Arrays.asList( + DomainSearchTestUtils.mockDomainResult("google.com"), + DomainSearchTestUtils.mockDomainResult("yahoo.com"), + DomainSearchTestUtils.mockDomainResult("bing.com"), + DomainSearchTestUtils.mockDomainResult("amazon.com")); + + Map> dummyData = new HashMap>() { + { + put(groupOne, domains); + } + }; + + when(cache.get(null, new ArrayList<>(), null, null, null, null, null)).thenReturn(dummyData); + + DomainSearch domainSearch = new DomainSearch(cache); + List firstPage = domainSearch.getDomainsInGroup(null, + new ArrayList<>(), null, null, null, groupOne, 3, 1, null, null); + assertEquals(1, firstPage.size()); + assertEquals(domains.get(domains.size() - 1), firstPage.get(0)); + } + + @Test + public void getDomains_SingleGroupOversizedOffset_ShouldContainNoDomains() throws DiscoveryException { + DomainSearchCache cache = mock(DomainSearchCache.class); + + DummyKey groupOne = new DummyKey("1"); + List domains = Arrays.asList( + DomainSearchTestUtils.mockDomainResult("google.com"), + DomainSearchTestUtils.mockDomainResult("yahoo.com"), + DomainSearchTestUtils.mockDomainResult("bing.com"), + DomainSearchTestUtils.mockDomainResult("amazon.com")); + + Map> dummyData = new HashMap>() { + { + put(groupOne, domains); + } + }; + + when(cache.get(null, new ArrayList<>(), null, null, null, null, null)).thenReturn(dummyData); + + DomainSearch domainSearch = new DomainSearch(cache); + List firstPage = domainSearch.getDomainsInGroup(null, + new ArrayList<>(), null, null, null, groupOne, 20, 5, null, null); + assertEquals(4, firstPage.size()); + for (int i = 0; i < firstPage.size(); i++) { + assertEquals(domains.get(i), firstPage.get(i)); + } + } + + @Test + public void getDomains_SingleGroupZeroSizedPage_ShouldContainNoDomains() throws DiscoveryException { + DomainSearchCache cache = mock(DomainSearchCache.class); + + DummyKey groupOne = new DummyKey("1"); + List domains = Arrays.asList( + DomainSearchTestUtils.mockDomainResult("google.com"), + DomainSearchTestUtils.mockDomainResult("yahoo.com"), + DomainSearchTestUtils.mockDomainResult("bing.com"), + DomainSearchTestUtils.mockDomainResult("amazon.com")); + + Map> dummyData = new HashMap>() { + { + put(groupOne, domains); + } + }; + + when(cache.get(null, new ArrayList<>(), null, null, null, null, null)).thenReturn(dummyData); + + DomainSearch domainSearch = new DomainSearch(cache); + List firstPage = domainSearch.getDomainsInGroup(null, + new ArrayList<>(), null, null, null, groupOne, 0, 0, null, null); + assertEquals(0, firstPage.size()); + } + + @Test + public void getDomains_MultipleGroupsFullPage_ShouldContainAllDomainsInGroup() throws DiscoveryException { + DomainSearchCache cache = mock(DomainSearchCache.class); + + DummyKey groupOne = new DummyKey("1"); + DummyKey groupTwo = new DummyKey("2"); + DummyKey groupThree = new DummyKey("3"); + + Map> dummyData = new HashMap>() { + { + put(groupOne, Arrays.asList( + DomainSearchTestUtils.mockDomainResult("google.com"), + DomainSearchTestUtils.mockDomainResult("yahoo.com"), + DomainSearchTestUtils.mockDomainResult("bing.com"), + DomainSearchTestUtils.mockDomainResult("amazon.com")) + ); + put(groupTwo, Arrays.asList( + DomainSearchTestUtils.mockDomainResult("facebook.com"), + DomainSearchTestUtils.mockDomainResult("spotify.com"), + DomainSearchTestUtils.mockDomainResult("netbeans.com")) + ); + put(groupThree, Arrays.asList( + DomainSearchTestUtils.mockDomainResult("youtube.com")) + ); + } + }; + + when(cache.get(null, new ArrayList<>(), null, null, null, null, null)).thenReturn(dummyData); + + DomainSearch domainSearch = new DomainSearch(cache); + List firstPage = domainSearch.getDomainsInGroup(null, + new ArrayList<>(), null, null, null, groupOne, 0, 3, null, null); + assertEquals(4, firstPage.size()); + } + + @Test + public void getDomains_MultipleGroupsHalfPage_ShouldContainHalfDomainsInGroup() throws DiscoveryException { + DomainSearchCache cache = mock(DomainSearchCache.class); + + DummyKey groupOne = new DummyKey("1"); + DummyKey groupTwo = new DummyKey("2"); + DummyKey groupThree = new DummyKey("3"); + + Map> dummyData = new HashMap>() { + { + put(groupOne, Arrays.asList( + DomainSearchTestUtils.mockDomainResult("google.com"), + DomainSearchTestUtils.mockDomainResult("yahoo.com"), + DomainSearchTestUtils.mockDomainResult("bing.com"), + DomainSearchTestUtils.mockDomainResult("amazon.com")) + ); + put(groupTwo, Arrays.asList( + DomainSearchTestUtils.mockDomainResult("facebook.com"), + DomainSearchTestUtils.mockDomainResult("spotify.com"), + DomainSearchTestUtils.mockDomainResult("netbeans.com")) + ); + put(groupThree, Arrays.asList( + DomainSearchTestUtils.mockDomainResult("youtube.com")) + ); + } + }; + + when(cache.get(null, new ArrayList<>(), null, null, null, null, null)).thenReturn(dummyData); + + DomainSearch domainSearch = new DomainSearch(cache); + List firstPage = domainSearch.getDomainsInGroup(null, + new ArrayList<>(), null, null, null, groupTwo, 1, 2, null, null); + assertEquals(2, firstPage.size()); + for (int i = 0; i < firstPage.size(); i++) { + assertEquals(dummyData.get(groupTwo).get(i + 1), firstPage.get(i)); + } + } + + @Test + public void getDomains_SingleGroupSimulatedPaging_ShouldPageThroughAllDomains() throws DiscoveryException { + DomainSearchCache cache = mock(DomainSearchCache.class); + + DummyKey groupOne = new DummyKey("1"); + List domains = Arrays.asList( + DomainSearchTestUtils.mockDomainResult("google.com"), + DomainSearchTestUtils.mockDomainResult("yahoo.com"), + DomainSearchTestUtils.mockDomainResult("bing.com"), + DomainSearchTestUtils.mockDomainResult("amazon.com"), + DomainSearchTestUtils.mockDomainResult("facebook.com"), + DomainSearchTestUtils.mockDomainResult("capitalone.com"), + DomainSearchTestUtils.mockDomainResult("spotify.com"), + DomainSearchTestUtils.mockDomainResult("netsuite.com")); + + Map> dummyData = new HashMap>() { + { + put(groupOne, domains); + } + }; + + when(cache.get(null, new ArrayList<>(), null, null, null, null, null)).thenReturn(dummyData); + + DomainSearch domainSearch = new DomainSearch(cache); + + int start = 0; + int size = 2; + while (start + size <= domains.size()) { + List page = domainSearch.getDomainsInGroup(null, + new ArrayList<>(), null, null, null, groupOne, start, size, null, null); + assertEquals(2, page.size()); + for(int i = 0; i < page.size(); i++) { + assertEquals(domains.get(start + i), page.get(i)); + } + + start += size; + } + } + + private class DummyKey extends GroupKey { + + private final String name; + + public DummyKey(String name) { + this.name = name; + } + + @Override + String getDisplayName() { + return name; + } + + @Override + public boolean equals(Object otherKey) { + if (otherKey instanceof GroupKey) { + return this.getDisplayName().equals(((GroupKey) otherKey).getDisplayName()); + } else { + return false; + } + } + + @Override + public int hashCode() { + return this.name.hashCode(); + } + + @Override + public int compareTo(GroupKey o) { + return this.getDisplayName().compareTo(o.getDisplayName()); + } + } +} diff --git a/Core/test/unit/src/org/sleuthkit/autopsy/discovery/search/DomainSearchTestUtils.java b/Core/test/unit/src/org/sleuthkit/autopsy/discovery/search/DomainSearchTestUtils.java new file mode 100755 index 0000000000..a0f19c17a4 --- /dev/null +++ b/Core/test/unit/src/org/sleuthkit/autopsy/discovery/search/DomainSearchTestUtils.java @@ -0,0 +1,51 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2020 Basis Technology Corp. + * Contact: carrier sleuthkit 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.discovery.search; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; +import org.sleuthkit.datamodel.Content; + +/** + * Mock utility methods for DomainSearchTests + */ +public class DomainSearchTestUtils { + + private DomainSearchTestUtils() { + + } + + public static ResultDomain mockDomainResult(String domain, long start, long end, + long visits, long filesDownloaded, long dataSourceId) { + Content dataSource = mockDataSource(dataSourceId); + return new ResultDomain(domain, start, end, + visits, filesDownloaded, dataSource); + } + + public static ResultDomain mockDomainResult(String domain) { + return DomainSearchTestUtils.mockDomainResult(domain, 0, 0, 0, 0, 0); + } + + public static Content mockDataSource(long dataSourceId) { + Content dataSource = mock(Content.class); + when(dataSource.getName()).thenReturn(""); + when(dataSource.getId()).thenReturn(dataSourceId); + return dataSource; + } +}