mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-12 07:56:16 +00:00
Merge branch 'develop' of https://github.com/sleuthkit/autopsy into core-corecomponents
This commit is contained in:
commit
607f96ef29
@ -14,9 +14,7 @@ GetTagNameAndCommentDialog.commentLabel.text=Comment:
|
|||||||
GetTagNameAndCommentDialog.cancelButton.text=Cancel
|
GetTagNameAndCommentDialog.cancelButton.text=Cancel
|
||||||
GetTagNameAndCommentDialog.tagCombo.toolTipText=Select tag to use
|
GetTagNameAndCommentDialog.tagCombo.toolTipText=Select tag to use
|
||||||
GetTagNameAndCommentDialog.tagLabel.text=Tag:
|
GetTagNameAndCommentDialog.tagLabel.text=Tag:
|
||||||
#todo this means to tag a result? not result of a tag?
|
|
||||||
AddBlackboardArtifactTagAction.singularTagResult=Tag Result
|
AddBlackboardArtifactTagAction.singularTagResult=Tag Result
|
||||||
#todo check meaning
|
|
||||||
AddBlackboardArtifactTagAction.pluralTagResult=Tag Results
|
AddBlackboardArtifactTagAction.pluralTagResult=Tag Results
|
||||||
AddBlackboardArtifactTagAction.unableToTag.msg=Unable to tag {0}.
|
AddBlackboardArtifactTagAction.unableToTag.msg=Unable to tag {0}.
|
||||||
AddBlackboardArtifactTagAction.taggingErr=Tagging Error
|
AddBlackboardArtifactTagAction.taggingErr=Tagging Error
|
||||||
|
@ -10,8 +10,8 @@ GetTagNameAndCommentDialog.commentLabel.text=\u30B3\u30E1\u30F3\u30C8\uFF1A
|
|||||||
GetTagNameAndCommentDialog.cancelButton.text=\u30AD\u30E3\u30F3\u30BB\u30EB
|
GetTagNameAndCommentDialog.cancelButton.text=\u30AD\u30E3\u30F3\u30BB\u30EB
|
||||||
GetTagNameAndCommentDialog.tagCombo.toolTipText=\u4F7F\u7528\u3059\u308B\u30BF\u30B0\u3092\u9078\u629E
|
GetTagNameAndCommentDialog.tagCombo.toolTipText=\u4F7F\u7528\u3059\u308B\u30BF\u30B0\u3092\u9078\u629E
|
||||||
GetTagNameAndCommentDialog.tagLabel.text=\u30BF\u30B0\uFF1A
|
GetTagNameAndCommentDialog.tagLabel.text=\u30BF\u30B0\uFF1A
|
||||||
AddBlackboardArtifactTagAction.singularTagResult=\u30BF\u30B0\u306E\u7D50\u679C
|
AddBlackboardArtifactTagAction.singularTagResult=\u7D50\u679C\u306B\u30BF\u30B0\u3092\u8FFD\u52A0
|
||||||
AddBlackboardArtifactTagAction.pluralTagResult=\u30BF\u30B0\u306E\u7D50\u679C
|
AddBlackboardArtifactTagAction.pluralTagResult=\u7D50\u679C\u306B\u30BF\u30B0\u3092\u8FFD\u52A0
|
||||||
AddBlackboardArtifactTagAction.unableToTag.msg={0}\u306B\u30BF\u30B0\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002
|
AddBlackboardArtifactTagAction.unableToTag.msg={0}\u306B\u30BF\u30B0\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002
|
||||||
AddBlackboardArtifactTagAction.taggingErr=\u30BF\u30B0\u4ED8\u3051\u30A8\u30E9\u30FC
|
AddBlackboardArtifactTagAction.taggingErr=\u30BF\u30B0\u4ED8\u3051\u30A8\u30E9\u30FC
|
||||||
AddContentTagAction.singularTagFile=\u30D5\u30A1\u30A4\u30EB\u306B\u30BF\u30B0\u3092\u8FFD\u52A0
|
AddContentTagAction.singularTagFile=\u30D5\u30A1\u30A4\u30EB\u306B\u30BF\u30B0\u3092\u8FFD\u52A0
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.sleuthkit.autopsy.casemodule;
|
package org.sleuthkit.autopsy.casemodule;
|
||||||
|
|
||||||
|
import org.sleuthkit.autopsy.coreutils.LocalDisk;
|
||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Component;
|
import java.awt.Component;
|
||||||
|
@ -10,3 +10,5 @@ OpenIDE-Module-Name=Autopsy-Core
|
|||||||
OpenIDE-Module-Short-Description=Autopsy Core Module
|
OpenIDE-Module-Short-Description=Autopsy Core Module
|
||||||
org_sleuthkit_autopsy_core_update_center=http://sleuthkit.org/autopsy/updates.xml
|
org_sleuthkit_autopsy_core_update_center=http://sleuthkit.org/autopsy/updates.xml
|
||||||
Services/AutoupdateType/org_sleuthkit_autopsy_core_update_center.settings=Autopsy Update Center
|
Services/AutoupdateType/org_sleuthkit_autopsy_core_update_center.settings=Autopsy Update Center
|
||||||
|
Installer.errorInitJavafx.msg=Error initializing JavaFX.
|
||||||
|
Installer.errorInitJavafx.details=\ Some features will not be available. Check that you have the right JRE installed (Oracle JRE > 1.7.10).
|
||||||
|
14
Core/src/org/sleuthkit/autopsy/core/Bundle_ja.properties
Normal file
14
Core/src/org/sleuthkit/autopsy/core/Bundle_ja.properties
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
OpenIDE-Module-Display-Category=\u57FA\u76E4
|
||||||
|
OpenIDE-Module-Long-Description=\
|
||||||
|
Autopsy\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u30B3\u30A2\u3067\u3059\u3002\n\n\
|
||||||
|
\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u307F\u3067\u5B9F\u884C\u3059\u308B\u306E\u306B\u5FC5\u8981\u306A\u4E3B\u8981\u306A\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\uFF1ARCP\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u3001\u30A6\u30A3\u30F3\u30C9\u30A6\u30A4\u30F3\u30B0GUI\u3001Sleuth Kit\u30D0\u30A4\u30F3\u30C7\u30A3\u30F3\u30B0\u3001\u30C7\u30FC\u30BF\u30E2\u30C7\u30EB\uFF0F\u30B9\u30C8\u30EC\u30FC\u30B8\u3001\u30A8\u30AF\u30B9\u30D7\u30ED\u30FC\u30E9\u3001\u7D50\u679C\u30D3\u30E5\u30FC\u30A2\u30FC\u3001\u30B3\u30F3\u30C6\u30F3\u30C4\u30D3\u30E5\u30FC\u30A2\u30FC\u3001\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u7528\u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF\u3001\u30EC\u30DD\u30FC\u30C8\u751F\u6210\u3001\u30D5\u30A1\u30A4\u30EB\u691C\u7D22\u7B49\u306E\u4E3B\u8981\u30C4\u30FC\u30EB\u3002\n\n\
|
||||||
|
\u30E2\u30B8\u30E5\u30FC\u30EB\u5185\u306E\u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF\u306B\u306F\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u3001\u30D3\u30E5\u30FC\u30A2\u30FC\u3001\u30EC\u30DD\u30FC\u30C8\u751F\u6210\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u958B\u767A\u7528\u306EAPI\u304C\u542B\u307E\u308C\u307E\u3059\u3002\
|
||||||
|
\u30E2\u30B8\u30E5\u30FC\u30EB\u306FAutopsy\u30D7\u30E9\u30B0\u30A4\u30F3\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9\u30FC\u3092\u4F7F\u7528\u3057\u3001\u30D7\u30E9\u30B0\u30A4\u30F3\u3068\u3057\u3066\u5B9F\u88C5\u3067\u304D\u307E\u3059\u3002\n\
|
||||||
|
\u3053\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u306F\u30A2\u30F3\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u3066\u306F\u3044\u3051\u307E\u305B\u3093\u3002\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u306A\u3051\u308C\u3070\u3001Autopsy\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\n\n\
|
||||||
|
\u8A73\u7D30\u306F\u4E0B\u8A18\u3092\u3054\u89A7\u4E0B\u3055\u3044\u3002http\://www.sleuthkit.org/autopsy/
|
||||||
|
OpenIDE-Module-Name=Autopsy-\u30B3\u30A2
|
||||||
|
OpenIDE-Module-Short-Description=Autopsy\u30B3\u30A2\u30E2\u30B8\u30E5\u30FC\u30EB
|
||||||
|
org_sleuthkit_autopsy_core_update_center=http\://sleuthkit.org/autopsy/updates.xml
|
||||||
|
Services/AutoupdateType/org_sleuthkit_autopsy_core_update_center.settings=Autopsy\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u30BB\u30F3\u30BF\u30FC
|
||||||
|
Installer.errorInitJavafx.msg=JavaFX\u521D\u671F\u5316\u30A8\u30E9\u30FC
|
||||||
|
Installer.errorInitJavafx.details=\u4E00\u90E8\u306E\u6A5F\u80FD\u304C\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u6B63\u3057\u3044JRE\u304C\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u308B\u306E\u3092\u78BA\u8A8D\u3057\u3066\u4E0B\u3055\u3044\u3002\uFF08Oracle JRE > 1.7.10\uFF09
|
@ -23,6 +23,7 @@ import java.util.List;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
import javafx.embed.swing.JFXPanel;
|
import javafx.embed.swing.JFXPanel;
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import org.openide.modules.ModuleInstall;
|
import org.openide.modules.ModuleInstall;
|
||||||
import org.openide.windows.WindowManager;
|
import org.openide.windows.WindowManager;
|
||||||
@ -113,9 +114,8 @@ public class Installer extends ModuleInstall {
|
|||||||
javaFxInit = true;
|
javaFxInit = true;
|
||||||
} catch (UnsatisfiedLinkError | NoClassDefFoundError | Exception e) {
|
} catch (UnsatisfiedLinkError | NoClassDefFoundError | Exception e) {
|
||||||
//in case javafx not present
|
//in case javafx not present
|
||||||
final String msg = "Error initializing JavaFX. ";
|
final String msg = NbBundle.getMessage(Installer.class, "Installer.errorInitJavafx.msg");
|
||||||
final String details = " Some features will not be available. "
|
final String details = NbBundle.getMessage(Installer.class, "Installer.errorInitJavafx.details");
|
||||||
+ " Check that you have the right JRE installed (Oracle JRE > 1.7.10). ";
|
|
||||||
logger.log(Level.SEVERE, msg
|
logger.log(Level.SEVERE, msg
|
||||||
+ details, e);
|
+ details, e);
|
||||||
|
|
||||||
|
@ -148,6 +148,9 @@
|
|||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="GeneralPanel.useGMTTimeRB.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="GeneralPanel.useGMTTimeRB.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
</Property>
|
</Property>
|
||||||
</Properties>
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="useGMTTimeRBActionPerformed"/>
|
||||||
|
</Events>
|
||||||
</Component>
|
</Component>
|
||||||
<Component class="javax.swing.JLabel" name="jLabel3">
|
<Component class="javax.swing.JLabel" name="jLabel3">
|
||||||
<Properties>
|
<Properties>
|
||||||
|
@ -20,6 +20,7 @@ package org.sleuthkit.autopsy.corecomponents;
|
|||||||
|
|
||||||
import java.util.prefs.Preferences;
|
import java.util.prefs.Preferences;
|
||||||
import org.openide.util.NbPreferences;
|
import org.openide.util.NbPreferences;
|
||||||
|
import org.sleuthkit.autopsy.datamodel.ContentUtils;
|
||||||
|
|
||||||
final class GeneralPanel extends javax.swing.JPanel {
|
final class GeneralPanel extends javax.swing.JPanel {
|
||||||
|
|
||||||
@ -33,6 +34,7 @@ final class GeneralPanel extends javax.swing.JPanel {
|
|||||||
GeneralPanel(GeneralOptionsPanelController controller) {
|
GeneralPanel(GeneralOptionsPanelController controller) {
|
||||||
this.controller = controller;
|
this.controller = controller;
|
||||||
initComponents();
|
initComponents();
|
||||||
|
ContentUtils.setDisplayInLocalTime(useLocalTimeRB.isSelected());
|
||||||
// TODO listen to changes in form fields and call controller.changed()
|
// TODO listen to changes in form fields and call controller.changed()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,6 +82,11 @@ final class GeneralPanel extends javax.swing.JPanel {
|
|||||||
|
|
||||||
buttonGroup3.add(useGMTTimeRB);
|
buttonGroup3.add(useGMTTimeRB);
|
||||||
org.openide.awt.Mnemonics.setLocalizedText(useGMTTimeRB, org.openide.util.NbBundle.getMessage(GeneralPanel.class, "GeneralPanel.useGMTTimeRB.text")); // NOI18N
|
org.openide.awt.Mnemonics.setLocalizedText(useGMTTimeRB, org.openide.util.NbBundle.getMessage(GeneralPanel.class, "GeneralPanel.useGMTTimeRB.text")); // NOI18N
|
||||||
|
useGMTTimeRB.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
useGMTTimeRBActionPerformed(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(GeneralPanel.class, "GeneralPanel.jLabel3.text")); // NOI18N
|
org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(GeneralPanel.class, "GeneralPanel.jLabel3.text")); // NOI18N
|
||||||
|
|
||||||
@ -144,6 +151,10 @@ final class GeneralPanel extends javax.swing.JPanel {
|
|||||||
// TODO add your handling code here:
|
// TODO add your handling code here:
|
||||||
}//GEN-LAST:event_useBestViewerRBActionPerformed
|
}//GEN-LAST:event_useBestViewerRBActionPerformed
|
||||||
|
|
||||||
|
private void useGMTTimeRBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_useGMTTimeRBActionPerformed
|
||||||
|
ContentUtils.setDisplayInLocalTime(useLocalTimeRB.isSelected());
|
||||||
|
}//GEN-LAST:event_useGMTTimeRBActionPerformed
|
||||||
|
|
||||||
void load() {
|
void load() {
|
||||||
boolean keepPreferredViewer = prefs.getBoolean(KEEP_PREFERRED_VIEWER, false);
|
boolean keepPreferredViewer = prefs.getBoolean(KEEP_PREFERRED_VIEWER, false);
|
||||||
keepCurrentViewerRB.setSelected(keepPreferredViewer);
|
keepCurrentViewerRB.setSelected(keepPreferredViewer);
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package org.sleuthkit.autopsy.casemodule;
|
package org.sleuthkit.autopsy.coreutils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Representation of a PhysicalDisk or partition.
|
* Representation of a PhysicalDisk or partition.
|
@ -37,7 +37,6 @@ import org.hyperic.sigar.Sigar;
|
|||||||
import org.hyperic.sigar.ptql.ProcessFinder;
|
import org.hyperic.sigar.ptql.ProcessFinder;
|
||||||
import org.openide.modules.InstalledFileLocator;
|
import org.openide.modules.InstalledFileLocator;
|
||||||
import org.openide.modules.Places;
|
import org.openide.modules.Places;
|
||||||
import org.sleuthkit.autopsy.casemodule.LocalDisk;
|
|
||||||
import org.sleuthkit.datamodel.SleuthkitJNI;
|
import org.sleuthkit.datamodel.SleuthkitJNI;
|
||||||
import org.sleuthkit.datamodel.TskCoreException;
|
import org.sleuthkit.datamodel.TskCoreException;
|
||||||
|
|
||||||
|
@ -162,7 +162,13 @@ public abstract class AbstractAbstractFileNode<T extends AbstractFile> extends A
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
return "MD5 Hash";
|
return "MD5 Hash";
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
ObjectID {
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Object ID";
|
||||||
}
|
}
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -201,6 +207,7 @@ public abstract class AbstractAbstractFileNode<T extends AbstractFile> extends A
|
|||||||
map.put(AbstractFilePropertyType.KNOWN.toString(), content.getKnown().getName());
|
map.put(AbstractFilePropertyType.KNOWN.toString(), content.getKnown().getName());
|
||||||
map.put(AbstractFilePropertyType.HASHSETS.toString(), getHashSetHitsForFile(content));
|
map.put(AbstractFilePropertyType.HASHSETS.toString(), getHashSetHitsForFile(content));
|
||||||
map.put(AbstractFilePropertyType.MD5HASH.toString(), content.getMd5Hash() == null ? "" : content.getMd5Hash());
|
map.put(AbstractFilePropertyType.MD5HASH.toString(), content.getMd5Hash() == null ? "" : content.getMd5Hash());
|
||||||
|
map.put(AbstractFilePropertyType.ObjectID.toString(), content.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ public final class ContentUtils {
|
|||||||
private final static Logger logger = Logger.getLogger(ContentUtils.class.getName());
|
private final static Logger logger = Logger.getLogger(ContentUtils.class.getName());
|
||||||
private static final SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
|
private static final SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
|
||||||
private static final SimpleDateFormat dateFormatterISO8601 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
|
private static final SimpleDateFormat dateFormatterISO8601 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
|
||||||
|
private static boolean displayInLocalTime;
|
||||||
// don't instantiate
|
// don't instantiate
|
||||||
private ContentUtils() {
|
private ContentUtils() {
|
||||||
throw new AssertionError();
|
throw new AssertionError();
|
||||||
@ -106,10 +106,9 @@ public final class ContentUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static TimeZone getTimeZone(Content c) {
|
public static TimeZone getTimeZone(Content c) {
|
||||||
Preferences generalPanelPrefs = NbPreferences.root().node("/org/sleuthkit/autopsy/core");
|
|
||||||
boolean useLocalTime = generalPanelPrefs.getBoolean("useLocalTime", true);
|
|
||||||
try {
|
try {
|
||||||
if (!useLocalTime) {
|
if (!getDisplayInLocalTime()) {
|
||||||
return TimeZone.getTimeZone("GMT");
|
return TimeZone.getTimeZone("GMT");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -360,4 +359,18 @@ public final class ContentUtils {
|
|||||||
+ cntnt.getClass().getSimpleName());
|
+ cntnt.getClass().getSimpleName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**sets displayInlocalTime value based on button in GeneralPanel.java
|
||||||
|
*
|
||||||
|
* @param flag
|
||||||
|
*/
|
||||||
|
public static void setDisplayInLocalTime(boolean flag) {
|
||||||
|
displayInLocalTime = flag;
|
||||||
|
}
|
||||||
|
/** get global timezone setting for displaying time values
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static boolean getDisplayInLocalTime(){
|
||||||
|
return displayInLocalTime;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,8 @@
|
|||||||
package org.sleuthkit.autopsy.keywordsearch;
|
package org.sleuthkit.autopsy.keywordsearch;
|
||||||
|
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
|
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.keywordsearch.Ingester.IngesterException;
|
import org.sleuthkit.autopsy.keywordsearch.Ingester.IngesterException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -59,7 +61,8 @@ class AbstractFileChunk {
|
|||||||
//logger.log(Level.INFO, "Ingesting string chunk: " + this.getName() + ": " + chunkID);
|
//logger.log(Level.INFO, "Ingesting string chunk: " + this.getName() + ": " + chunkID);
|
||||||
} catch (Exception ingEx) {
|
} catch (Exception ingEx) {
|
||||||
success = false;
|
success = false;
|
||||||
throw new IngesterException("Problem ingesting file string chunk: " + parent.getSourceFile().getId() + ", chunk: " + chunkID, ingEx);
|
throw new IngesterException(NbBundle.getMessage(this.getClass(), "AbstractFileChunk.index.exception.msg",
|
||||||
|
parent.getSourceFile().getId(), chunkID), ingEx);
|
||||||
}
|
}
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,8 @@ import java.io.InputStream;
|
|||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
|
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import org.apache.solr.common.util.ContentStream;
|
import org.apache.solr.common.util.ContentStream;
|
||||||
import org.sleuthkit.datamodel.AbstractContent;
|
import org.sleuthkit.datamodel.AbstractContent;
|
||||||
@ -69,12 +71,13 @@ import org.sleuthkit.datamodel.AbstractFile;
|
|||||||
@Override
|
@Override
|
||||||
public Long getSize() {
|
public Long getSize() {
|
||||||
//return convertedLength;
|
//return convertedLength;
|
||||||
throw new UnsupportedOperationException("Cannot tell how many chars in converted string, until entire string is converted");
|
throw new UnsupportedOperationException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "AbstractFileStringContentStream.getSize.exception.msg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getSourceInfo() {
|
public String getSourceInfo() {
|
||||||
return "File:" + content.getId();
|
return NbBundle.getMessage(this.getClass(), "AbstractFileStringContentStream.getSrcInfo.text", content.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -90,7 +90,6 @@ KeywordSearchListsViewerPanel.manageListsButton.toolTipText=Manage keyword lists
|
|||||||
KeywordSearchConfigurationPanel2.frequencyLabel.text=Results update frequency during ingest:
|
KeywordSearchConfigurationPanel2.frequencyLabel.text=Results update frequency during ingest:
|
||||||
KeywordSearchConfigurationPanel2.timeRadioButton4.text_1=1 minute (faster feedback, longest ingest)
|
KeywordSearchConfigurationPanel2.timeRadioButton4.text_1=1 minute (faster feedback, longest ingest)
|
||||||
KeywordSearchConfigurationPanel2.timeRadioButton4.toolTipText=1 minute (overall ingest time will be longest)
|
KeywordSearchConfigurationPanel2.timeRadioButton4.toolTipText=1 minute (overall ingest time will be longest)
|
||||||
KeywordSearchConfigurationPanel2.showSnippetsCB.text=Show Keyword Preview in Keyword Search Results (will result in longer search times)
|
|
||||||
AbstractKeywordSearchPerformer.search.dialogErrorHeader=Keyword Search Error
|
AbstractKeywordSearchPerformer.search.dialogErrorHeader=Keyword Search Error
|
||||||
AbstractKeywordSearchPerformer.search.invalidSyntaxHeader=Invalid query syntax.
|
AbstractKeywordSearchPerformer.search.invalidSyntaxHeader=Invalid query syntax.
|
||||||
AbstractKeywordSearchPerformer.search.searchIngestInProgressTitle=Keyword Search Ingest in Progress
|
AbstractKeywordSearchPerformer.search.searchIngestInProgressTitle=Keyword Search Ingest in Progress
|
||||||
@ -149,6 +148,9 @@ KeywordSearchIngestModule.init.badInitMsg=Keyword search server was not properly
|
|||||||
KeywordSearchIngestModule.init.tryStopSolrMsg={0}<br />Please try stopping old java Solr process (if it exists) and restart the application.
|
KeywordSearchIngestModule.init.tryStopSolrMsg={0}<br />Please try stopping old java Solr process (if it exists) and restart the application.
|
||||||
KeywordSearchIngestModule.init.noKwInLstMsg=No keywords in keyword list.
|
KeywordSearchIngestModule.init.noKwInLstMsg=No keywords in keyword list.
|
||||||
KeywordSearchIngestModule.init.onlyIdxKwSkipMsg=Only indexing will be done and and keyword search will be skipped (you can still add keyword lists using the Keyword Lists - Add to Ingest).
|
KeywordSearchIngestModule.init.onlyIdxKwSkipMsg=Only indexing will be done and and keyword search will be skipped (you can still add keyword lists using the Keyword Lists - Add to Ingest).
|
||||||
|
KeywordSearchIngestModule.doInBackGround.displayName=Keyword Search
|
||||||
|
KeywordSearchIngestModule.doInBackGround.finalizeMsg=Finalizing...
|
||||||
|
KeywordSearchIngestModule.doInBackGround.pendingMsg=Working on Keyword Search...
|
||||||
KeywordSearchIngestModule.postIndexSummary.knowFileHeaderLbl=Files with known types
|
KeywordSearchIngestModule.postIndexSummary.knowFileHeaderLbl=Files with known types
|
||||||
KeywordSearchIngestModule.postIndexSummary.fileGenStringsHead=Files with general strings extracted
|
KeywordSearchIngestModule.postIndexSummary.fileGenStringsHead=Files with general strings extracted
|
||||||
KeywordSearchIngestModule.postIndexSummary.mdOnlyLbl=Metadata only was indexed
|
KeywordSearchIngestModule.postIndexSummary.mdOnlyLbl=Metadata only was indexed
|
||||||
@ -183,4 +185,83 @@ KeywordSearch.listImportFeatureTitle=Keyword List Import
|
|||||||
KeywordSearchIngestModule.hashDbModuleName=Hash Lookup
|
KeywordSearchIngestModule.hashDbModuleName=Hash Lookup
|
||||||
KeywordSearchIngestModule.moduleName=Keyword Search
|
KeywordSearchIngestModule.moduleName=Keyword Search
|
||||||
KeywordSearchIngestModule.moduleDescription=Performs file indexing and periodic search using keywords and regular expressions in lists.
|
KeywordSearchIngestModule.moduleDescription=Performs file indexing and periodic search using keywords and regular expressions in lists.
|
||||||
|
AbstractFileChunk.index.exception.msg=Problem ingesting file string chunk\: {0}, chunk\: {1}
|
||||||
|
AbstractFileStringContentStream.getSize.exception.msg=Cannot tell how many chars in converted string, until entire string is converted
|
||||||
|
AbstractFileStringContentStream.getSrcInfo.text=File\:{0}
|
||||||
|
ByteContentStream.getSrcInfo.text=File\:{0}
|
||||||
|
ExtractedContentPanel.SetMarkup.progress.loading=Loading text
|
||||||
|
ExtractedContentPanel.SetMarkup.progress.displayName=Loading text
|
||||||
|
ExtractedContentViewer.nextPage.exception.msg=No next page.
|
||||||
|
ExtractedContentViewer.previousPage.exception.msg=No previous page.
|
||||||
|
ExtractedContentViewer.hasNextItem.exception.msg=Not supported, not a searchable source.
|
||||||
|
ExtractedContentViewer.hasPreviousItem.exception.msg=Not supported, not a searchable source.
|
||||||
|
ExtractedContentViewer.nextItem.exception.msg=Not supported, not a searchable source.
|
||||||
|
ExtractedContentViewer.previousItem.exception.msg=Not supported, not a searchable source.
|
||||||
|
ExtractedContentViewer.currentItem.exception.msg=Not supported, not a searchable source.
|
||||||
|
HighlightedMatchesSource.nextPage.exception.msg=No next page.
|
||||||
|
HighlightedMatchesSource.previousPage.exception.msg=No previous page.
|
||||||
|
HighlightedMatchesSource.nextItem.exception.msg=No next item.
|
||||||
|
HighlightedMatchesSource.previousItem.exception.msg=No previous item.
|
||||||
|
Ingester.ingest.exception.unknownImgId.msg=Skipping indexing the file, unknown image id, for file\: {0}
|
||||||
|
Ingester.ingest.exception.cantReadStream.msg=Could not read content stream\: {0}
|
||||||
|
Ingester.ingest.exception.err.msg=Error ingesting document\: {0}
|
||||||
|
Ingester.ingestExtract.exception.solrTimeout.msg=Solr index request time out for id\: {0}, name\: {1}
|
||||||
|
Ingester.ingestExtract.exception.probPostToSolr.msg=Problem posting content to Solr, id\: {0}, name\: {1}
|
||||||
|
Ingester.UpReqestTask.run.exception.sorlNotAvail.msg=No Solr core available, cannot index the content
|
||||||
|
Ingester.UpRequestTask.run.exception.probReadFile.msg=Problem reading file.
|
||||||
|
Ingester.UpRequestTask.run.exception.solrProb.msg=Problem with Solr
|
||||||
|
Ingester.UpRequestTask.run.exception.probPostToSolr.msg=Problem posting file contents to Solr. SolrException error code\: {0}
|
||||||
|
Ingester.FscContentStream.getSrcInfo=File\:{0}
|
||||||
|
Ingester.FscContentStream.getReader=Not supported yet.
|
||||||
|
Ingester.NullContentStream.getSrcInfo.text=File\:{0}
|
||||||
|
Ingester.NullContentStream.getReader=Not supported yet.
|
||||||
|
Keyword.toString.text=Keyword'{'query\={0}, isLiteral\={1}, keywordType\={2}'}'
|
||||||
|
KeywordSearch.moduleErr=Module Error
|
||||||
|
KeywordSearch.fireNumIdxFileChg.moduleErr.msg=A module caused an error listening to KeywordSearch updates. See log to determine which module. Some data could be incomplete.
|
||||||
|
KeywordSearchIngestModule.init.exception.errConnToSolr.msg=Error connecting to SOLR server\: {0}
|
||||||
|
KeywordSearchListsEncase.save.exception.msg=Not supported yet.
|
||||||
|
KeywordSearchListsEncase.save2.exception.msg=Not supported yet.
|
||||||
|
KeywordSearchListsEncase.encaseMetaType.exception.msg=Unsupported EncaseMetaType\: {0}
|
||||||
|
KeywordSearchListsManagementPanel.getColName.text=Name
|
||||||
|
KeywordSearchListsManagementPanel.setValueAt.exception.msg=Editing of cells is not supported
|
||||||
|
KeywordSearchListsViewerPanel.isLuceneQuerySel.exception.msg=Not supported for multi-word queries.
|
||||||
|
KeywordSearchListsViewerPanel.getQueryText.exception.msg=Not supported for multi-word queries.
|
||||||
|
KeywordSearchOptionsPanelController.moduleErr=Module Error
|
||||||
|
KeywordSearchOptionsPanelController.moduleErr.msg1=A module caused an error listening to KeywordSearchOptionsPanelController updates. See log to determine which module. Some data could be incomplete.
|
||||||
|
KeywordSearchOptionsPanelController.moduleErr.msg2=A module caused an error listening to KeywordSearchOptionsPanelController updates. See log to determine which module. Some data could be incomplete.
|
||||||
|
KeywordSearchPanel.getQueryList.exception.msg=No list for single-keyword search
|
||||||
|
KeywordSearchQueryManager.pathText.text=Keyword search
|
||||||
|
KeywordSearchResultFactory.progress.saving=Saving results\: {0}
|
||||||
|
KeywordSearchSettings.moduleName.text=KeywordSearch
|
||||||
|
KeywordSearchSettings.properties_options.text={0}_Options
|
||||||
|
KeywordSearchSettings.propertiesNSRL.text={0}_NSRL
|
||||||
|
KeywordSearchSettings.propertiesScripts.text={0}_Scripts
|
||||||
|
NoOpenCoreException.err.noOpenSorlCore.msg=No currently open Solr core.
|
||||||
|
Server.start.exception.cantStartSolr.msg=Could not start Solr server process
|
||||||
|
Server.start.exception.cantStartSolr.msg2=Could not start Solr server process
|
||||||
|
Server.isRunning.exception.errCheckSolrRunning.msg=Error checking if Solr server is running
|
||||||
|
Server.isRunning.exception.errCheckSolrRunning.msg2=Error checking if Solr server is running
|
||||||
|
Server.openCore.exception.alreadyOpen.msg=Already an open Core\! Explicitely close Core first.
|
||||||
|
Server.queryNumIdxFiles.exception.msg=Error querying number of indexed files,
|
||||||
|
Server.queryNumIdxChunks.exception.msg=Error querying number of indexed chunks,
|
||||||
|
Server.queryNumIdxDocs.exception.msg=Error querying number of indexed documents,
|
||||||
|
Server.queryIsIdxd.exception.msg=Error checkign if content is indexed,
|
||||||
|
Server.queryNumFileChunks.exception.msg=Error getting number of file chunks,
|
||||||
|
Server.query.exception.msg=Error running query\: {0}
|
||||||
|
Server.query2.exception.msg=Error running query\: {0}
|
||||||
|
Server.queryTerms.exception.msg=Error running terms query\: {0}
|
||||||
|
Server.openCore.exception.msg=Core open requested, but server not yet running
|
||||||
|
Server.openCore.exception.cantOpen.msg=Could not open Core
|
||||||
|
Server.openCore.exception.cantOpen.msg2=Could not open Core
|
||||||
|
Server.request.exception.exception.msg=Could not issue Solr request
|
||||||
|
Server.commit.exception.msg=Could not commit index
|
||||||
|
Server.addDoc.exception.msg=Could not add document to index via update handler\: {0}
|
||||||
|
Server.addDoc.exception.msg2=Could not add document to index via update handler\: {0}
|
||||||
|
Server.close.exception.msg=Cannot close Core
|
||||||
|
Server.close.exception.msg2=Cannot close Core
|
||||||
|
Server.solrServerNoPortException.msg=Indexing server could not bind to port {0}, port is not available, consider change the default {1} port.
|
||||||
|
KeywordSearchIngestModule.doInBackGround.displayName=Keyword Search
|
||||||
|
KeywordSearchIngestModule.doInBackGround.finalizeMsg= - Finalizing
|
||||||
|
KeywordSearchIngestModule.doInBackGround.pendingMsg= (Pending)
|
||||||
|
KeywordSearchIngestModule.doInBackGround.cancelMsg= (Cancelling...)
|
||||||
|
|
||||||
|
@ -8,16 +8,16 @@ ListBundleName=\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8
|
|||||||
ListBundleConfig=\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u8A2D\u5B9A
|
ListBundleConfig=\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u8A2D\u5B9A
|
||||||
IndexProgressPanel.statusText.text=\u30B9\u30C6\u30FC\u30BF\u30B9\u30C6\u30AD\u30B9\u30C8
|
IndexProgressPanel.statusText.text=\u30B9\u30C6\u30FC\u30BF\u30B9\u30C6\u30AD\u30B9\u30C8
|
||||||
IndexProgressPanel.cancelButton.text=\u30AD\u30E3\u30F3\u30BB\u30EB
|
IndexProgressPanel.cancelButton.text=\u30AD\u30E3\u30F3\u30BB\u30EB
|
||||||
ExtractedContentPanel.hitLabel.text=\u30DA\u30FC\u30B8\u4E0A\u306E\u4E00\u81F4
|
ExtractedContentPanel.hitLabel.text=\u30DA\u30FC\u30B8\u5185\u306E\u4E00\u81F4\uFF1A
|
||||||
ExtractedContentPanel.hitCountLabel.text=
|
ExtractedContentPanel.hitCountLabel.text=-
|
||||||
ExtractedContentPanel.hitOfLabel.text=
|
ExtractedContentPanel.hitOfLabel.text=of
|
||||||
ExtractedContentPanel.hitTotalLabel.text=
|
ExtractedContentPanel.hitTotalLabel.text=-
|
||||||
ExtractedContentPanel.hitButtonsLabel.text=\u4E00\u81F4
|
ExtractedContentPanel.hitButtonsLabel.text=\u4E00\u81F4
|
||||||
ExtractedContentPanel.copyMenuItem.text=\u30B3\u30D4\u30FC
|
ExtractedContentPanel.copyMenuItem.text=\u30B3\u30D4\u30FC
|
||||||
ExtractedContentPanel.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629E
|
ExtractedContentPanel.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629E
|
||||||
KeywordSearchEditListPanel.saveListButton.text=\u30EA\u30B9\u30C8\u3092\u30B3\u30D4\u30FC
|
KeywordSearchEditListPanel.saveListButton.text=\u30EA\u30B9\u30C8\u3092\u30B3\u30D4\u30FC
|
||||||
KeywordSearchEditListPanel.addWordButton.text=\u8FFD\u52A0
|
KeywordSearchEditListPanel.addWordButton.text=\u8FFD\u52A0
|
||||||
KeywordSearchEditListPanel.chRegex.text=\u4E00\u822C\u7684\u306A\u8868\u73FE
|
KeywordSearchEditListPanel.chRegex.text=\u6B63\u898F\u8868\u73FE
|
||||||
KeywordSearchEditListPanel.deleteWordButton.text=\u9078\u629E\u3057\u305F\u3082\u306E\u3092\u524A\u9664
|
KeywordSearchEditListPanel.deleteWordButton.text=\u9078\u629E\u3057\u305F\u3082\u306E\u3092\u524A\u9664
|
||||||
KeywordSearchEditListPanel.cutMenuItem.text=\u30AB\u30C3\u30C8
|
KeywordSearchEditListPanel.cutMenuItem.text=\u30AB\u30C3\u30C8
|
||||||
KeywordSearchEditListPanel.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629E
|
KeywordSearchEditListPanel.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629E
|
||||||
@ -28,8 +28,8 @@ KeywordSearchEditListPanel.deleteListButton.text=\u30EA\u30B9\u30C8\u3092\u524A\
|
|||||||
KeywordSearchListsManagementPanel.newListButton.text=\u65B0\u898F\u30EA\u30B9\u30C8
|
KeywordSearchListsManagementPanel.newListButton.text=\u65B0\u898F\u30EA\u30B9\u30C8
|
||||||
KeywordSearchEditListPanel.useForIngestCheckbox.text=\u51E6\u7406\u4E2D\u306B\u4F7F\u7528
|
KeywordSearchEditListPanel.useForIngestCheckbox.text=\u51E6\u7406\u4E2D\u306B\u4F7F\u7528
|
||||||
KeywordSearchListsManagementPanel.importButton.text=\u30EA\u30B9\u30C8\u3092\u30A4\u30F3\u30DD\u30FC\u30C8
|
KeywordSearchListsManagementPanel.importButton.text=\u30EA\u30B9\u30C8\u3092\u30A4\u30F3\u30DD\u30FC\u30C8
|
||||||
KeywordSearchPanel.searchBox.text=\u691C\u7D22...
|
KeywordSearchPanel.searchBox.text=\u691C\u7D22\u2026
|
||||||
KeywordSearchPanel.regExCheckboxMenuItem.text=\u4E00\u822C\u7684\u306A\u8868\u73FE\u3092\u4F7F\u7528
|
KeywordSearchPanel.regExCheckboxMenuItem.text=\u6B63\u898F\u8868\u73FE\u3092\u4F7F\u7528
|
||||||
KeywordSearchListsViewerPanel.searchAddButton.text=\u691C\u7D22
|
KeywordSearchListsViewerPanel.searchAddButton.text=\u691C\u7D22
|
||||||
KeywordSearchListsViewerPanel.manageListsButton.text=\u30EA\u30B9\u30C8\u3092\u7BA1\u7406
|
KeywordSearchListsViewerPanel.manageListsButton.text=\u30EA\u30B9\u30C8\u3092\u7BA1\u7406
|
||||||
KeywordSearchListsViewerPanel.ingestIndexLabel.text=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\uFF1A
|
KeywordSearchListsViewerPanel.ingestIndexLabel.text=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\uFF1A
|
||||||
@ -42,10 +42,10 @@ ExtractedContentPanel.pagesLabel.text=\u30DA\u30FC\u30B8\uFF1A
|
|||||||
KeywordSearchEditListPanel.ingestMessagesCheckbox.text=\u51E6\u7406\u4E2D\u306B\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u30A4\u30F3\u30DC\u30C3\u30AF\u30B9\u306B\u9001\u4FE1
|
KeywordSearchEditListPanel.ingestMessagesCheckbox.text=\u51E6\u7406\u4E2D\u306B\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u30A4\u30F3\u30DC\u30C3\u30AF\u30B9\u306B\u9001\u4FE1
|
||||||
KeywordSearchEditListPanel.ingestMessagesCheckbox.toolTipText=\u3053\u306E\u30EA\u30B9\u30C8\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u304C\u691C\u7D22\u306B\u30D2\u30C3\u30C8\u3057\u305F\u5834\u5408\u3001\u51E6\u7406\u4E2D\u306B\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u30A4\u30F3\u30DC\u30C3\u30AF\u30B9\u306B\u9001\u4FE1
|
KeywordSearchEditListPanel.ingestMessagesCheckbox.toolTipText=\u3053\u306E\u30EA\u30B9\u30C8\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u304C\u691C\u7D22\u306B\u30D2\u30C3\u30C8\u3057\u305F\u5834\u5408\u3001\u51E6\u7406\u4E2D\u306B\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u30A4\u30F3\u30DC\u30C3\u30AF\u30B9\u306B\u9001\u4FE1
|
||||||
KeywordSearchConfigurationPanel2.skipNSRLCheckBox.text=\u51E6\u7406\u4E2D\u306BNSRL\u306E\u30D5\u30A1\u30A4\u30EB\uFF08\u65E2\u77E5\u306E\u30D5\u30A1\u30A4\u30EB\uFF09\u3092\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u306B\u8FFD\u52A0\u3057\u306A\u3044
|
KeywordSearchConfigurationPanel2.skipNSRLCheckBox.text=\u51E6\u7406\u4E2D\u306BNSRL\u306E\u30D5\u30A1\u30A4\u30EB\uFF08\u65E2\u77E5\u306E\u30D5\u30A1\u30A4\u30EB\uFF09\u3092\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u306B\u8FFD\u52A0\u3057\u306A\u3044
|
||||||
KeywordSearchConfigurationPanel2.skipNSRLCheckBox.toolTipText=Hash DB\u30B5\u30FC\u30D3\u30B9\u3092\u4E8B\u524D\u306B\u5B9F\u884C\u3059\u308B\u304B\u3001\u6B21\u56DE\u306E\u51E6\u7406\u6642\u306B\u9078\u629E\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
|
KeywordSearchConfigurationPanel2.skipNSRLCheckBox.toolTipText=Hash DB\u30B5\u30FC\u30D3\u30B9\u3092\u4E8B\u524D\u306B\u5B9F\u884C\u3059\u308B\u304B\u3001\u6B21\u56DE\u306E\u51E6\u7406\u306B\u9078\u629E\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
|
||||||
KeywordSearchConfigurationPanel2.filesIndexedLabel.text=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5185\u306E\u30D5\u30A1\u30A4\u30EB\uFF1A
|
KeywordSearchConfigurationPanel2.filesIndexedLabel.text=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5185\u306E\u30D5\u30A1\u30A4\u30EB\uFF1A
|
||||||
KeywordSearchIngestSimplePanel.languagesLabel.text=\u4E0D\u660E\u306A\u30D5\u30A1\u30A4\u30EB\u5F62\u5F0F\u304B\u3089\u306E\u30B9\u30C8\u30EA\u30F3\u30B0\u62BD\u51FA\u3092\u6709\u52B9\u306B\u3057\u305F\u30B9\u30AF\u30EA\u30D7\u30C8\uFF1A
|
KeywordSearchIngestSimplePanel.languagesLabel.text=\u4E0D\u660E\u306A\u30D5\u30A1\u30A4\u30EB\u5F62\u5F0F\u304B\u3089\u306E\u30B9\u30C8\u30EA\u30F3\u30B0\u62BD\u51FA\u3092\u6709\u52B9\u306B\u3057\u305F\u30B9\u30AF\u30EA\u30D7\u30C8\uFF1A
|
||||||
KeywordSearchIngestSimplePanel.languagesLabel.toolTipText=\u4E0D\u660E\u306A\u30D5\u30A1\u30A4\u30EB\u5F62\u5F0F\u304B\u3089\u306E\u30B9\u30C8\u30EA\u30F3\u30B0\u62BD\u51FA\u3092\u6709\u52B9\u306B\u3057\u305F\u30B9\u30AF\u30EA\u30D7\u30C8\u3002\u30A2\u30C9\u30D0\u30F3\u30B9\u8A2D\u5B9A\u3067\u5909\u66F4\u304C\u53EF\u80FD\u3067\u3059\u3002
|
KeywordSearchIngestSimplePanel.languagesLabel.toolTipText=\u4E0D\u660E\u306A\u30D5\u30A1\u30A4\u30EB\u5F62\u5F0F\u304B\u3089\u306E\u30B9\u30C8\u30EA\u30F3\u30B0\u62BD\u51FA\u3092\u6709\u52B9\u306B\u3057\u305F\u30B9\u30AF\u30EA\u30D7\u30C8\u3002\u30A2\u30C9\u30D0\u30F3\u30B9\u8A2D\u5B9A\u304B\u3089\u5909\u66F4\u304C\u53EF\u80FD\u3067\u3059\u3002
|
||||||
KeywordSearchConfigurationPanel3.languagesLabel.text=\u6709\u52B9\u306A\u30B9\u30AF\u30EA\u30D7\u30C8\uFF08\u8A00\u8A9E\uFF09\uFF1A
|
KeywordSearchConfigurationPanel3.languagesLabel.text=\u6709\u52B9\u306A\u30B9\u30AF\u30EA\u30D7\u30C8\uFF08\u8A00\u8A9E\uFF09\uFF1A
|
||||||
KeywordSearchConfigurationPanel2.chunksLabel.text=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5185\u306E\u30C1\u30E3\u30F3\u30AF\uFF1A
|
KeywordSearchConfigurationPanel2.chunksLabel.text=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5185\u306E\u30C1\u30E3\u30F3\u30AF\uFF1A
|
||||||
KeywordSearchConfigurationPanel3.enableUTF8Checkbox.text=UTF8\u30C6\u30AD\u30B9\u30C8\u62BD\u51FA\u306E\u6709\u52B9\u5316
|
KeywordSearchConfigurationPanel3.enableUTF8Checkbox.text=UTF8\u30C6\u30AD\u30B9\u30C8\u62BD\u51FA\u306E\u6709\u52B9\u5316
|
||||||
@ -70,7 +70,6 @@ KeywordSearchListsViewerPanel.manageListsButton.toolTipText=\u30AD\u30FC\u30EF\u
|
|||||||
KeywordSearchConfigurationPanel2.frequencyLabel.text=\u51E6\u7406\u4E2D\u306E\u7D50\u679C\u66F4\u65B0\u306E\u983B\u5EA6\uFF1A
|
KeywordSearchConfigurationPanel2.frequencyLabel.text=\u51E6\u7406\u4E2D\u306E\u7D50\u679C\u66F4\u65B0\u306E\u983B\u5EA6\uFF1A
|
||||||
KeywordSearchConfigurationPanel2.timeRadioButton4.text_1=\uFF11\u5206\uFF08\u3088\u308A\u901F\u3044\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3001\u6700\u3082\u9577\u3044\u51E6\u7406\u6642\u9593\uFF09
|
KeywordSearchConfigurationPanel2.timeRadioButton4.text_1=\uFF11\u5206\uFF08\u3088\u308A\u901F\u3044\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3001\u6700\u3082\u9577\u3044\u51E6\u7406\u6642\u9593\uFF09
|
||||||
KeywordSearchConfigurationPanel2.timeRadioButton4.toolTipText=\uFF11\u5206\uFF08\u5168\u4F53\u7684\u306A\u51E6\u7406\u6642\u9593\u304C\u9577\u304F\u306A\u308A\u307E\u3059\uFF09
|
KeywordSearchConfigurationPanel2.timeRadioButton4.toolTipText=\uFF11\u5206\uFF08\u5168\u4F53\u7684\u306A\u51E6\u7406\u6642\u9593\u304C\u9577\u304F\u306A\u308A\u307E\u3059\uFF09
|
||||||
KeywordSearchConfigurationPanel2.showSnippetsCB.text=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\u7D50\u679C\u306B\u30AD\u30FC\u30EF\u30FC\u30C9\u30D7\u30EC\u30D3\u30E5\u30FC\u3092\u8868\u793A\uFF08\u691C\u7D22\u6642\u9593\u304C\u9577\u304F\u306A\u308A\u307E\u3059\uFF09
|
|
||||||
AbstractKeywordSearchPerformer.search.dialogErrorHeader=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\u30A8\u30E9\u30FC
|
AbstractKeywordSearchPerformer.search.dialogErrorHeader=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\u30A8\u30E9\u30FC
|
||||||
AbstractKeywordSearchPerformer.search.invalidSyntaxHeader=\u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u30A8\u30E9\u30FC
|
AbstractKeywordSearchPerformer.search.invalidSyntaxHeader=\u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u30A8\u30E9\u30FC
|
||||||
AbstractKeywordSearchPerformer.search.searchIngestInProgressTitle=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3092\u5B9F\u884C\u4E2D
|
AbstractKeywordSearchPerformer.search.searchIngestInProgressTitle=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3092\u5B9F\u884C\u4E2D
|
||||||
@ -105,22 +104,22 @@ KeywordSearch.newKwListTitle=\u65B0\u898F\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u3
|
|||||||
KeywordSearchConfigurationPanel1.customizeComponents.noOwDefaultMsg=\u30C7\u30D5\u30A9\u30EB\u30C8\u30EA\u30B9\u30C8\u306F\u4E0A\u66F8\u304D\u3067\u304D\u307E\u305B\u3093
|
KeywordSearchConfigurationPanel1.customizeComponents.noOwDefaultMsg=\u30C7\u30D5\u30A9\u30EB\u30C8\u30EA\u30B9\u30C8\u306F\u4E0A\u66F8\u304D\u3067\u304D\u307E\u305B\u3093
|
||||||
KeywordSearchConfigurationPanel1.customizeComponents.kwListExistMsg=\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8 <{0}> \u306F\u65E2\u306B\u5B58\u5728\u3057\u307E\u3059\u3002\u4E0A\u66F8\u304D\u3057\u307E\u3059\u304B\uFF1F
|
KeywordSearchConfigurationPanel1.customizeComponents.kwListExistMsg=\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8 <{0}> \u306F\u65E2\u306B\u5B58\u5728\u3057\u307E\u3059\u3002\u4E0A\u66F8\u304D\u3057\u307E\u3059\u304B\uFF1F
|
||||||
KeywordSearchConfigurationPanel1.customizeComponents.kwListSavedMsg=\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8 <{0}> \u4FDD\u5B58\u3055\u308C\u307E\u3057\u305F
|
KeywordSearchConfigurationPanel1.customizeComponents.kwListSavedMsg=\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8 <{0}> \u4FDD\u5B58\u3055\u308C\u307E\u3057\u305F
|
||||||
KeywordSearchEditListPanel.customizeComponents.kwReToolTip=\u30AD\u30FC\u30EF\u30FC\u30C9\u306F\u4E00\u822C\u7684\u306A\u8868\u73FE\u3067\u3059
|
KeywordSearchEditListPanel.customizeComponents.kwReToolTip=\u30AD\u30FC\u30EF\u30FC\u30C9\u306F\u6B63\u7FA9\u8868\u73FE\u3067\u3059
|
||||||
KeywordSearchEditListPanel.customizeComponents.addWordToolTip=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\u30EA\u30B9\u30C8\u306B\u5358\u8A9E\u3092\u8FFD\u52A0
|
KeywordSearchEditListPanel.customizeComponents.addWordToolTip=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\u30EA\u30B9\u30C8\u306B\u5358\u8A9E\u3092\u8FFD\u52A0
|
||||||
KeywordSearchEditListPanel.customizeComponents.enterNewWordToolTip=\u65B0\u898F\u5358\u8A9E\u3084\u4E00\u822C\u7684\u306A\u8868\u73FE\u3092\u5165\u529B
|
KeywordSearchEditListPanel.customizeComponents.enterNewWordToolTip=\u65B0\u898F\u5358\u8A9E\u3084\u4E00\u6B63\u898F\u8868\u73FE\u3092\u5165\u529B
|
||||||
KeywordSearchEditListPanel.customizeComponents.exportToFile=\u65E2\u5B58\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u3092\u30D5\u30A1\u30A4\u30EB\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8
|
KeywordSearchEditListPanel.customizeComponents.exportToFile=\u65E2\u5B58\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u3092\u30D5\u30A1\u30A4\u30EB\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8
|
||||||
KeywordSearchEditListPanel.customizeComponents.saveCurrentWIthNewNameToolTip=\u65E2\u5B58\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u306B\u540D\u524D\u3092\u4ED8\u3051\u3066\u4FDD\u5B58
|
KeywordSearchEditListPanel.customizeComponents.saveCurrentWIthNewNameToolTip=\u65E2\u5B58\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u306B\u540D\u524D\u3092\u4ED8\u3051\u3066\u4FDD\u5B58
|
||||||
KeywordSearchEditListPanel.customizeComponents.removeSelectedMsg=\u9078\u629E\u3057\u305F\u30AD\u30FC\u30EF\u30FC\u30C9\u3092\u30EA\u30B9\u30C8\u304B\u3089\u524A\u9664
|
KeywordSearchEditListPanel.customizeComponents.removeSelectedMsg=\u9078\u629E\u3057\u305F\u30AD\u30FC\u30EF\u30FC\u30C9\u3092\u30EA\u30B9\u30C8\u304B\u3089\u524A\u9664
|
||||||
KeywordSearchEditListPanel.newKwTitle=\u65B0\u898F\u30AD\u30FC\u30EF\u30FC\u30C9\u30A8\u30F3\u30C8\u30EA\u30FC
|
KeywordSearchEditListPanel.newKwTitle=\u65B0\u898F\u30AD\u30FC\u30EF\u30FC\u30C9\u30A8\u30F3\u30C8\u30EA\u30FC
|
||||||
KeywordSearchEditListPanel.addWordButtonAction.kwAlreadyExistsMsg=\u30AD\u30FC\u30EF\u30FC\u30C9\u306F\u65E2\u306B\u30EA\u30B9\u30C8\u306B\u5B58\u5728\u3057\u307E\u3059\u3002
|
KeywordSearchEditListPanel.addWordButtonAction.kwAlreadyExistsMsg=\u30AD\u30FC\u30EF\u30FC\u30C9\u306F\u65E2\u306B\u30EA\u30B9\u30C8\u306B\u5B58\u5728\u3057\u307E\u3059\u3002
|
||||||
KeywordSearchEditListPanel.invalidKwMsg=\u7121\u52B9\u306A\u30AD\u30FC\u30EF\u30FC\u30C9\u30D1\u30BF\u30FC\u30F3\u3002\u5358\u8A9E\u3082\u3057\u304F\u306F\u6B63\u3057\u3044\u4E00\u822C\u7684\u306A\u8868\u73FE\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
KeywordSearchEditListPanel.invalidKwMsg=\u7121\u52B9\u306A\u30AD\u30FC\u30EF\u30FC\u30C9\u30D1\u30BF\u30FC\u30F3\u3002\u5358\u8A9E\u3082\u3057\u304F\u306F\u6B63\u3057\u3044\u6B63\u898F\u8868\u73FE\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
||||||
KeywordSearchEditListPanel.removeKwMsg=\u30AD\u30FC\u30EF\u30FC\u30C9\u3092\u524A\u9664
|
KeywordSearchEditListPanel.removeKwMsg=\u30AD\u30FC\u30EF\u30FC\u30C9\u3092\u524A\u9664
|
||||||
KeywordSearchEditListPanel.deleteWordButtonActionPerformed.delConfirmMsg=\u5168\u3066\u306E\u30B1\u30FC\u30B9\u306B\u304A\u3051\u308B\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u3092\u524A\u9664\u3057\u307E\u3059\u3002\u3053\u306E\u524A\u9664\u3092\u5B9F\u884C\u3057\u307E\u3059\u304B\uFF1F
|
KeywordSearchEditListPanel.deleteWordButtonActionPerformed.delConfirmMsg=\u5168\u3066\u306E\u30B1\u30FC\u30B9\u306B\u304A\u3051\u308B\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u3092\u524A\u9664\u3057\u307E\u3059\u3002\u3053\u306E\u524A\u9664\u3092\u5B9F\u884C\u3057\u307E\u3059\u304B\uFF1F
|
||||||
KeywordSearchEditListPanel.exportButtonActionPerformed.fileFilterLabel=\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8XML\u30D5\u30A1\u30A4\u30EB
|
KeywordSearchEditListPanel.exportButtonActionPerformed.fileFilterLabel=\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8XML\u30D5\u30A1\u30A4\u30EB
|
||||||
KeywordSearchEditListPanel.exportButtonActionPerformed.fileExistPrompt=\ {0} \u30D5\u30A1\u30A4\u30EB\u306F\u65E2\u306B\u5B58\u5728\u3057\u307E\u3059\u3002\u4E0A\u66F8\u304D\u3057\u307E\u3059\u304B\uFF1F
|
KeywordSearchEditListPanel.exportButtonActionPerformed.fileExistPrompt=\ {0} \u30D5\u30A1\u30A4\u30EB\u306F\u65E2\u306B\u5B58\u5728\u3057\u307E\u3059\u3002\u4E0A\u66F8\u304D\u3057\u307E\u3059\u304B\uFF1F
|
||||||
KeywordSearchEditListPanel.exportButtonActionPerformed.kwListExportedMsg=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3055\u308C\u305F\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8
|
KeywordSearchEditListPanel.exportButtonActionPerformed.kwListExportedMsg=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3055\u308C\u305F\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8
|
||||||
KeywordSearchEditListPanel.kwColName=\u30AD\u30FC\u30EF\u30FC\u30C9
|
KeywordSearchEditListPanel.kwColName=\u30AD\u30FC\u30EF\u30FC\u30C9
|
||||||
KeywordSearchEditListPanel.exportButtonActionPerformed.regExColName=\u4E00\u822C\u7684\u306A\u8868\u73FE
|
KeywordSearchEditListPanel.exportButtonActionPerformed.regExColName=\u6B63\u898F\u8868\u73FE
|
||||||
KeywordSearchFilterNode.getFileActions.openExternViewActLbl=\u5916\u90E8\u30D3\u30E5\u30FC\u30A2\u3067\u958B\u304F
|
KeywordSearchFilterNode.getFileActions.openExternViewActLbl=\u5916\u90E8\u30D3\u30E5\u30FC\u30A2\u3067\u958B\u304F
|
||||||
KeywordSearchFilterNode.getFileActions.searchSameMd5=\u540C\u4E00\u306EMD5\u30CF\u30C3\u30B7\u30E5\u3092\u6301\u3064\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22
|
KeywordSearchFilterNode.getFileActions.searchSameMd5=\u540C\u4E00\u306EMD5\u30CF\u30C3\u30B7\u30E5\u3092\u6301\u3064\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22
|
||||||
KeywordSearchFilterNode.getFileActions.viewInNewWinActionLbl=\u65B0\u3057\u3044\u30A6\u30A3\u30F3\u30C9\u30A6\u3067\u8868\u793A
|
KeywordSearchFilterNode.getFileActions.viewInNewWinActionLbl=\u65B0\u3057\u3044\u30A6\u30A3\u30F3\u30C9\u30A6\u3067\u8868\u793A
|
||||||
@ -128,7 +127,7 @@ KeywordSearchIngestModule.init.badInitMsg=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u
|
|||||||
KeywordSearchIngestModule.init.tryStopSolrMsg={0}<br />\u53E4\u3044java Solr\u51E6\u7406\u3092\u505C\u6B62\u3057\uFF08\u3082\u3057\u5B58\u5728\u3059\u308C\u3070\uFF09\u3001\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3092\u518D\u8D77\u52D5\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
KeywordSearchIngestModule.init.tryStopSolrMsg={0}<br />\u53E4\u3044java Solr\u51E6\u7406\u3092\u505C\u6B62\u3057\uFF08\u3082\u3057\u5B58\u5728\u3059\u308C\u3070\uFF09\u3001\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3092\u518D\u8D77\u52D5\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
||||||
KeywordSearchIngestModule.init.noKwInLstMsg=\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u306B\u30AD\u30FC\u30EF\u30FC\u30C9\u304C\u3042\u308A\u307E\u305B\u3093\u3002
|
KeywordSearchIngestModule.init.noKwInLstMsg=\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u306B\u30AD\u30FC\u30EF\u30FC\u30C9\u304C\u3042\u308A\u307E\u305B\u3093\u3002
|
||||||
KeywordSearchIngestModule.init.onlyIdxKwSkipMsg=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3060\u3051\u5B9F\u884C\u3055\u308C\u3001\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\u306F\u30B9\u30AD\u30C3\u30D7\u3055\u308C\u307E\u3059\uFF08\u300C\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8 - \u51E6\u7406\u306B\u8FFD\u52A0\u300D\u3092\u4F7F\u7528\u3057\u3001\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u3092\u8FFD\u52A0\u3059\u308B\u306E\u306F\u53EF\u80FD\u3067\u3059
|
KeywordSearchIngestModule.init.onlyIdxKwSkipMsg=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3060\u3051\u5B9F\u884C\u3055\u308C\u3001\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\u306F\u30B9\u30AD\u30C3\u30D7\u3055\u308C\u307E\u3059\uFF08\u300C\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8 - \u51E6\u7406\u306B\u8FFD\u52A0\u300D\u3092\u4F7F\u7528\u3057\u3001\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u3092\u8FFD\u52A0\u3059\u308B\u306E\u306F\u53EF\u80FD\u3067\u3059
|
||||||
KeywordSearchIngestModule.postIndexSummary.knowFileHeaderLbl=\u65E2\u77E5\u306E\u7A2E\u985E\u306E\u30D5\u30A1\u30A4\u30EB
|
KeywordSearchIngestModule.postIndexSummary.knowFileHeaderLbl=\u65E2\u77E5\u30BF\u30A4\u30D7\u306E\u30D5\u30A1\u30A4\u30EB
|
||||||
KeywordSearchIngestModule.postIndexSummary.fileGenStringsHead=\u4E00\u822C\u7684\u306A\u30B9\u30C8\u30EA\u30F3\u30B0\u304C\u62BD\u51FA\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB
|
KeywordSearchIngestModule.postIndexSummary.fileGenStringsHead=\u4E00\u822C\u7684\u306A\u30B9\u30C8\u30EA\u30F3\u30B0\u304C\u62BD\u51FA\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB
|
||||||
KeywordSearchIngestModule.postIndexSummary.mdOnlyLbl=\u30E1\u30BF\u30C7\u30FC\u30BF\u306E\u307F\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3055\u308C\u307E\u3057\u305F
|
KeywordSearchIngestModule.postIndexSummary.mdOnlyLbl=\u30E1\u30BF\u30C7\u30FC\u30BF\u306E\u307F\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3055\u308C\u307E\u3057\u305F
|
||||||
KeywordSearchIngestModule.postIndexSummary.idxErrLbl=\u30A8\u30E9\u30FC\uFF08\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u30A8\u30E9\u30FC\uFF09
|
KeywordSearchIngestModule.postIndexSummary.idxErrLbl=\u30A8\u30E9\u30FC\uFF08\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u30A8\u30E9\u30FC\uFF09
|
||||||
@ -136,7 +135,7 @@ KeywordSearchIngestModule.postIndexSummary.errTxtLbl=\u30A8\u30E9\u30FC\uFF08\u3
|
|||||||
KeywordSearchIngestModule.postIndexSummary.errIoLbl=\u30A8\u30E9\u30FC\uFF08I/O\uFF09
|
KeywordSearchIngestModule.postIndexSummary.errIoLbl=\u30A8\u30E9\u30FC\uFF08I/O\uFF09
|
||||||
KeywordSearchIngestModule.postIndexSummary.kwIdxResultsLbl=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u7D50\u679C
|
KeywordSearchIngestModule.postIndexSummary.kwIdxResultsLbl=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u7D50\u679C
|
||||||
KeywordSearchIngestModule.postIndexSummary.kwIdxErrsTitle=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u30A8\u30E9\u30FC
|
KeywordSearchIngestModule.postIndexSummary.kwIdxErrsTitle=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u30A8\u30E9\u30FC
|
||||||
KeywordSearchIngestModule.postIndexSummary.kwIdxErrMsgFiles=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u30B5\u30FC\u30D3\u30B9\u4E2D\u306B {0} \u30D5\u30A1\u30A4\u30EB\u306E\u51E6\u7406\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3057\u305F\u3002
|
KeywordSearchIngestModule.postIndexSummary.kwIdxErrMsgFiles=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u30B5\u30FC\u30D3\u30B9\u4E2D\u306B{0}\u30D5\u30A1\u30A4\u30EB\u306E\u51E6\u7406\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3057\u305F\u3002
|
||||||
KeywordSearchIngestModule.postIndexSummary.kwIdxWarnMsgTitle=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u8B66\u544A
|
KeywordSearchIngestModule.postIndexSummary.kwIdxWarnMsgTitle=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u8B66\u544A
|
||||||
KeywordSearchIngestModule.postIndexSummary.idxErrReadFilesMsg=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u30B5\u30FC\u30D3\u30B9\u4E2D\u306B\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u307F\u8FBC\u307F\u3084\u30C6\u30AD\u30B9\u30C8\u62BD\u51FA\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3057\u305F\u3002\u539F\u56E0\u306F\u7834\u640D\u3057\u305F\u30E1\u30C7\u30A3\u30A2\u3084\u30D5\u30A1\u30A4\u30EB\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u3002
|
KeywordSearchIngestModule.postIndexSummary.idxErrReadFilesMsg=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u30B5\u30FC\u30D3\u30B9\u4E2D\u306B\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u307F\u8FBC\u307F\u3084\u30C6\u30AD\u30B9\u30C8\u62BD\u51FA\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3057\u305F\u3002\u539F\u56E0\u306F\u7834\u640D\u3057\u305F\u30E1\u30C7\u30A3\u30A2\u3084\u30D5\u30A1\u30A4\u30EB\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u3002
|
||||||
KeywordSearchListsViewerPanel.initIngest.addIngestTitle=\u51E6\u7406\u306B\u8FFD\u52A0
|
KeywordSearchListsViewerPanel.initIngest.addIngestTitle=\u51E6\u7406\u306B\u8FFD\u52A0
|
||||||
@ -146,11 +145,11 @@ KeywordSearchListsViewerPanel.initIngest.addIdxSearchMsg=\u9078\u629E\u3057\u305
|
|||||||
KeywordSearchListsViewerPanel.initIngest.ongoingIngestMsg=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\uFF1A {0} \uFF08\u51E6\u7406\u306F\u5B9F\u884C\u4E2D\uFF09
|
KeywordSearchListsViewerPanel.initIngest.ongoingIngestMsg=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\uFF1A {0} \uFF08\u51E6\u7406\u306F\u5B9F\u884C\u4E2D\uFF09
|
||||||
KeywordSearchListsViewerPanel.initIngest.fileIndexCtMsg=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\uFF1A {0}
|
KeywordSearchListsViewerPanel.initIngest.fileIndexCtMsg=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\uFF1A {0}
|
||||||
KeywordSearch.selectedColLbl=\u9078\u629E\u6E08\u307F
|
KeywordSearch.selectedColLbl=\u9078\u629E\u6E08\u307F
|
||||||
KeywordSearch.nameColLbl=\u540D\u524D
|
KeywordSearch.nameColLbl=\u540D\u79F0
|
||||||
KeywordSearch.regExColLbl=\u4E00\u822C\u7684\u306A\u8868\u73FE
|
KeywordSearch.regExColLbl=\u6B63\u898F\u8868\u73FE
|
||||||
KeywordSearchQueryManager.execute.exeWinTitle=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22 {0} - {1}
|
KeywordSearchQueryManager.execute.exeWinTitle=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22 {0} - {1}
|
||||||
KeywordSearch.newKeywordListMsg=\u65B0\u898F\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8
|
KeywordSearch.newKeywordListMsg=\u65B0\u898F\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8
|
||||||
KeywordSearch.importListFileDialogMsg=\ {0}\u3000\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3059\u308B\u306E\u306B\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3057\u305F
|
KeywordSearch.importListFileDialogMsg={0}\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3057\u305F
|
||||||
KeywordSearch.yesOwMsg=\u306F\u3044\u3001\u4E0A\u66F8\u304D\u3057\u307E\u3059
|
KeywordSearch.yesOwMsg=\u306F\u3044\u3001\u4E0A\u66F8\u304D\u3057\u307E\u3059
|
||||||
KeywordSearch.noSkipMsg=\u3044\u3044\u3048\u3001\u30B9\u30AD\u30C3\u30D7\u3057\u307E\u3059
|
KeywordSearch.noSkipMsg=\u3044\u3044\u3048\u3001\u30B9\u30AD\u30C3\u30D7\u3057\u307E\u3059
|
||||||
KeywordSearch.cancelImportMsg=\u30A4\u30F3\u30DD\u30FC\u30C8\u3092\u30AD\u30E3\u30F3\u30BB\u30EB
|
KeywordSearch.cancelImportMsg=\u30A4\u30F3\u30DD\u30FC\u30C8\u3092\u30AD\u30E3\u30F3\u30BB\u30EB
|
||||||
@ -161,6 +160,94 @@ KeywordSearchListsManagementPanel.fileExtensionFilterLbl=\u30AD\u30FC\u30EF\u30F
|
|||||||
KeywordSearch.listImportFeatureTitle=\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u30A4\u30F3\u30DD\u30FC\u30C8
|
KeywordSearch.listImportFeatureTitle=\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u30A4\u30F3\u30DD\u30FC\u30C8
|
||||||
KeywordSearchIngestModule.hashDbModuleName=\u30CF\u30C3\u30B7\u30E5\u30EB\u30C3\u30AF\u30A2\u30C3\u30D7
|
KeywordSearchIngestModule.hashDbModuleName=\u30CF\u30C3\u30B7\u30E5\u30EB\u30C3\u30AF\u30A2\u30C3\u30D7
|
||||||
KeywordSearchIngestModule.moduleName=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22
|
KeywordSearchIngestModule.moduleName=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22
|
||||||
KeywordSearchIngestModule.moduleDescription=\u30EA\u30B9\u30C8\u5185\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u304A\u3088\u3073\u4E00\u822C\u7684\u306A\u8868\u73FE\u3092\u4F7F\u3044\u3001\u30D5\u30A1\u30A4\u30EB\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u304A\u3088\u3073\u5B9A\u671F\u7684\u306A\u691C\u7D22\u3092\u5B9F\u884C\u3057\u307E\u3059\u3002
|
KeywordSearchIngestModule.moduleDescription=\u30EA\u30B9\u30C8\u5185\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u304A\u3088\u3073\u6B63\u898F\u8868\u73FE\u3092\u4F7F\u3044\u3001\u30D5\u30A1\u30A4\u30EB\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u304A\u3088\u3073\u5B9A\u671F\u7684\u306A\u691C\u7D22\u3092\u5B9F\u884C\u3057\u307E\u3059\u3002
|
||||||
OptionsCategory_Name_KeywordSearchOptions=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22
|
OptionsCategory_Name_KeywordSearchOptions=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22
|
||||||
OptionsCategory_Keywords_KeywordSearchOptions=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22
|
OptionsCategory_Keywords_KeywordSearchOptions=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22
|
||||||
|
ExtractedContentPanel.pagePreviousButton.actionCommand=
|
||||||
|
ExtractedContentPanel.pageOfLabel.text=of
|
||||||
|
ExtractedContentPanel.pageCurLabel.text=-
|
||||||
|
ExtractedContentPanel.pageTotalLabel.text=-
|
||||||
|
KeywordSearchConfigurationPanel2.filesIndexedValue.text=-
|
||||||
|
KeywordSearchIngestSimplePanel.languagesValLabel.text=-
|
||||||
|
KeywordSearchConfigurationPanel2.chunksValLabel.text=-
|
||||||
|
KeywordSearchIngestSimplePanel.keywordSearchEncodings.text=-
|
||||||
|
AbstractFileChunk.index.exception.msg=\u30D5\u30A1\u30A4\u30EB\u30B9\u30C8\u30EA\u30F3\u30B0\u30C1\u30E3\u30F3\u30AF\u306E\u51E6\u7406\u4E2D\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\uFF1A {0}, \u30C1\u30E3\u30F3\u30AF\: {1}
|
||||||
|
AbstractFileStringContentStream.getSize.exception.msg=\u30B9\u30C8\u30EA\u30F3\u30B0\u5168\u4F53\u304C\u5909\u63DB\u3055\u308C\u306A\u3051\u308C\u3070\u3001\u5909\u63DB\u3055\u308C\u305F\u30B9\u30C8\u30EA\u30F3\u30B0\u5185\u306E\u30AD\u30E3\u30E9\u30AF\u30BF\u30FC\u6570\u306F\u4E0D\u660E\u3067\u3059\u3002
|
||||||
|
AbstractFileStringContentStream.getSrcInfo.text=\u30D5\u30A1\u30A4\u30EB\uFF1A{0}
|
||||||
|
ByteContentStream.getSrcInfo.text=\u30D5\u30A1\u30A4\u30EB\uFF1A{0}
|
||||||
|
ExtractedContentPanel.SetMarkup.progress.loading=\u30C6\u30AD\u30B9\u30C8\u3092\u8AAD\u307F\u8FBC\u307F\u4E2D
|
||||||
|
ExtractedContentPanel.SetMarkup.progress.displayName=\u30C6\u30AD\u30B9\u30C8\u3092\u8AAD\u307F\u8FBC\u307F\u4E2D
|
||||||
|
ExtractedContentViewer.nextPage.exception.msg=\u6B21\u306E\u30DA\u30FC\u30B8\u304C\u3042\u308A\u307E\u305B\u3093\u3002
|
||||||
|
ExtractedContentViewer.previousPage.exception.msg=\u524D\u306E\u30DA\u30FC\u30B8\u304C\u3042\u308A\u307E\u305B\u3093\u3002
|
||||||
|
ExtractedContentViewer.hasNextItem.exception.msg=\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u691C\u7D22\u53EF\u80FD\u306A\u30BD\u30FC\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
|
||||||
|
ExtractedContentViewer.hasPreviousItem.exception.msg=\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u691C\u7D22\u53EF\u80FD\u306A\u30BD\u30FC\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
|
||||||
|
ExtractedContentViewer.nextItem.exception.msg=\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u691C\u7D22\u53EF\u80FD\u306A\u30BD\u30FC\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
|
||||||
|
ExtractedContentViewer.previousItem.exception.msg=\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u691C\u7D22\u53EF\u80FD\u306A\u30BD\u30FC\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
|
||||||
|
ExtractedContentViewer.currentItem.exception.msg=\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u691C\u7D22\u53EF\u80FD\u306A\u30BD\u30FC\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
|
||||||
|
HighlightedMatchesSource.nextPage.exception.msg=\u6B21\u306E\u30DA\u30FC\u30B8\u304C\u3042\u308A\u307E\u305B\u3093\u3002
|
||||||
|
HighlightedMatchesSource.previousPage.exception.msg=\u524D\u306E\u30DA\u30FC\u30B8\u304C\u3042\u308A\u307E\u305B\u3093\u3002
|
||||||
|
HighlightedMatchesSource.nextItem.exception.msg=\u6B21\u306E\u30A2\u30A4\u30C6\u30E0\u304C\u3042\u308A\u307E\u305B\u3093\u3002
|
||||||
|
HighlightedMatchesSource.previousItem.exception.msg=\u524D\u306E\u30A2\u30A4\u30C6\u30E0\u304C\u3042\u308A\u307E\u305B\u3093\u3002
|
||||||
|
Ingester.ingest.exception.unknownImgId.msg=\u4E0B\u8A18\u306E\u30D5\u30A1\u30A4\u30EB\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3092\u30B9\u30AD\u30C3\u30D7\u3057\u3066\u3044\u307E\u3059\u3002\u4E0D\u660E\u306A\u30A4\u30E1\u30FC\u30B8ID\uFF1A{0}
|
||||||
|
Ingester.ingest.exception.cantReadStream.msg=\u30B3\u30F3\u30C6\u30F3\u30C4\u30B9\u30C8\u30EA\u30FC\u30E0\u3092\u8AAD\u307F\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\uFF1A{0}
|
||||||
|
Ingester.ingest.exception.err.msg=\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u51E6\u7406\u4E2D\u306E\u30A8\u30E9\u30FC\uFF1A{0}
|
||||||
|
Ingester.ingestExtract.exception.solrTimeout.msg=\u4E0B\u8A18\u306EID\u306B\u5BFE\u3059\u308B\u3001Solr\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u30EA\u30AF\u30A8\u30B9\u30C8\u306F\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F\uFF1A{0}, name\: {1}
|
||||||
|
Ingester.ingestExtract.exception.probPostToSolr.msg=Solr\u306B\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u30DD\u30B9\u30C8\u3059\u308B\u306E\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002ID\uFF1A{0}, \u540D\u79F0\: {1}
|
||||||
|
Ingester.UpReqestTask.run.exception.sorlNotAvail.msg=Solr\u30B3\u30A2\u304C\u5229\u7528\u4E0D\u53EF\u3067\u3059\u3002\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3067\u304D\u307E\u305B\u3093\u3002
|
||||||
|
Ingester.UpRequestTask.run.exception.probReadFile.msg=\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u307F\u53D6\u308A\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
|
||||||
|
Ingester.UpRequestTask.run.exception.solrProb.msg=Solr\u306B\u306F\u554F\u984C\u304C\u3042\u308A\u307E\u3059
|
||||||
|
Ingester.UpRequestTask.run.exception.probPostToSolr.msg=\u30D5\u30A1\u30A4\u30EB\u30B3\u30F3\u30C6\u30F3\u30C4\u3092Solr\u306B\u30DD\u30B9\u30C8\u3059\u308B\u306E\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002SolrException\u30A8\u30E9\u30FC\u30B3\u30FC\u30C9\uFF1A{0}
|
||||||
|
Ingester.FscContentStream.getSrcInfo=\u30D5\u30A1\u30A4\u30EB\uFF1A{0}
|
||||||
|
Ingester.FscContentStream.getReader=\u307E\u3060\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
|
||||||
|
Ingester.NullContentStream.getSrcInfo.text=\u30D5\u30A1\u30A4\u30EB\uFF1A{0}
|
||||||
|
Ingester.NullContentStream.getReader=\u307E\u3060\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
|
||||||
|
KeywordSearch.moduleErr=\u30E2\u30B8\u30E5\u30FC\u30EB\u30A8\u30E9\u30FC
|
||||||
|
KeywordSearch.fireNumIdxFileChg.moduleErr.msg=KeywordSearch\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3092\u78BA\u8A8D\u4E2D\u306B\u30E2\u30B8\u30E5\u30FC\u30EB\u304C\u30A8\u30E9\u30FC\u3092\u8D77\u3053\u3057\u307E\u3057\u305F\u3002\u3069\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u304B\u30ED\u30B0\u3067\u78BA\u8A8D\u3057\u3066\u4E0B\u3055\u3044\u3002\u4E00\u90E8\u306E\u30C7\u30FC\u30BF\u304C\u4E0D\u5B8C\u5168\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u3002
|
||||||
|
KeywordSearchIngestModule.init.exception.errConnToSolr.msg=Solr\u30B5\u30FC\u30D0\u3078\u63A5\u7D9A\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\uFF1A{0}
|
||||||
|
KeywordSearchListsEncase.save.exception.msg=\u307E\u3060\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
|
||||||
|
KeywordSearchListsEncase.save2.exception.msg=\u307E\u3060\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
|
||||||
|
KeywordSearchListsEncase.encaseMetaType.exception.msg=\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044EncaseMetaType\uFF1A{0}
|
||||||
|
KeywordSearchListsManagementPanel.getColName.text=\u540D\u79F0
|
||||||
|
KeywordSearchListsManagementPanel.setValueAt.exception.msg=\u30BB\u30EB\u306E\u7DE8\u96C6\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
|
||||||
|
KeywordSearchListsViewerPanel.isLuceneQuerySel.exception.msg=\u30DE\u30EB\u30C1\u30EF\u30FC\u30C9\u30AF\u30A8\u30EA\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
|
||||||
|
KeywordSearchListsViewerPanel.getQueryText.exception.msg=\u30DE\u30EB\u30C1\u30EF\u30FC\u30C9\u30AF\u30A8\u30EA\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
|
||||||
|
KeywordSearchOptionsPanelController.moduleErr=\u30E2\u30B8\u30E5\u30FC\u30EB\u30A8\u30E9\u30FC
|
||||||
|
KeywordSearchOptionsPanelController.moduleErr.msg1=KeywordSearchOptionsPanelController\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3092\u78BA\u8A8D\u4E2D\u306B\u30E2\u30B8\u30E5\u30FC\u30EB\u304C\u30A8\u30E9\u30FC\u3092\u8D77\u3053\u3057\u307E\u3057\u305F\u3002\u3069\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u304B\u30ED\u30B0\u3067\u78BA\u8A8D\u3057\u3066\u4E0B\u3055\u3044\u3002\u4E00\u90E8\u306E\u30C7\u30FC\u30BF\u304C\u4E0D\u5B8C\u5168\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u3002
|
||||||
|
KeywordSearchOptionsPanelController.moduleErr.msg2=KeywordSearchOptionsPanelController\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3092\u78BA\u8A8D\u4E2D\u306B\u30E2\u30B8\u30E5\u30FC\u30EB\u304C\u30A8\u30E9\u30FC\u3092\u8D77\u3053\u3057\u307E\u3057\u305F\u3002\u3069\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u304B\u30ED\u30B0\u3067\u78BA\u8A8D\u3057\u3066\u4E0B\u3055\u3044\u3002\u4E00\u90E8\u306E\u30C7\u30FC\u30BF\u304C\u4E0D\u5B8C\u5168\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u3002
|
||||||
|
KeywordSearchPanel.getQueryList.exception.msg=\u30B7\u30F3\u30B0\u30EB\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\u306E\u30EA\u30B9\u30C8\u304C\u3042\u308A\u307E\u305B\u3093
|
||||||
|
KeywordSearchQueryManager.pathText.text=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22
|
||||||
|
KeywordSearchResultFactory.progress.saving=\u7D50\u679C\u3092\u4FDD\u5B58\u4E2D\uFF1A{0}
|
||||||
|
KeywordSearchSettings.moduleName.text=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22
|
||||||
|
KeywordSearchSettings.properties_options.text={0}_\u30AA\u30D7\u30B7\u30E7\u30F3
|
||||||
|
KeywordSearchSettings.propertiesNSRL.text={0}_NSRL
|
||||||
|
KeywordSearchSettings.propertiesScripts.text={0}_\u30B9\u30AF\u30EA\u30D7\u30C8
|
||||||
|
NoOpenCoreException.err.noOpenSorlCore.msg=\u73FE\u5728\u958B\u3044\u3066\u3044\u308BSolr\u30B3\u30A2\u306F\u3042\u308A\u307E\u305B\u3093\u3002
|
||||||
|
Server.start.exception.cantStartSolr.msg=Solr\u30B5\u30FC\u30D0\u30D7\u30ED\u30BB\u30B9\u3092\u958B\u59CB\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
|
||||||
|
Server.start.exception.cantStartSolr.msg2=Solr\u30B5\u30FC\u30D0\u30D7\u30ED\u30BB\u30B9\u3092\u958B\u59CB\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
|
||||||
|
Server.isRunning.exception.errCheckSolrRunning.msg=Solr\u30B5\u30FC\u30D0\u304C\u7A3C\u50CD\u3057\u3066\u3044\u308B\u304B\u78BA\u8A8D\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
|
||||||
|
Server.isRunning.exception.errCheckSolrRunning.msg2=Solr\u30B5\u30FC\u30D0\u304C\u7A3C\u50CD\u3057\u3066\u3044\u308B\u304B\u78BA\u8A8D\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
|
||||||
|
Server.openCore.exception.alreadyOpen.msg=\u3059\u3067\u306B\u958B\u3044\u3066\u3044\u308B\u30B3\u30A2\u3067\u3059\uFF01\u307E\u305A\u660E\u793A\u7684\u306B\u30B3\u30A2\u3092\u9589\u3058\u3066\u4E0B\u3055\u3044\u3002
|
||||||
|
Server.queryNumIdxFiles.exception.msg=\u8907\u6570\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u306B\u5BFE\u3057\u3066\u306E\u30AF\u30A8\u30EA\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
|
||||||
|
Server.queryNumIdxChunks.exception.msg=\u8907\u6570\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3055\u308C\u305F\u30C1\u30E3\u30F3\u30AF\u306B\u5BFE\u3057\u3066\u306E\u30AF\u30A8\u30EA\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
|
||||||
|
Server.queryNumIdxDocs.exception.msg=\u8907\u6570\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3055\u308C\u305F\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306B\u5BFE\u3057\u3066\u306E\u30AF\u30A8\u30EA\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
|
||||||
|
Server.queryIsIdxd.exception.msg=\u30B3\u30F3\u30C6\u30F3\u30C4\u304C\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3055\u308C\u305F\u304B\u78BA\u8A8D\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
|
||||||
|
Server.queryNumFileChunks.exception.msg=\u30D5\u30A1\u30A4\u30EB\u30C1\u30E3\u30F3\u30AF\u306E\u6570\u3092\u78BA\u8A8D\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
|
||||||
|
Server.query.exception.msg=\u30AF\u30A8\u30EA\u306E\u5B9F\u884C\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\uFF1A{0}
|
||||||
|
Server.query2.exception.msg=\u30AF\u30A8\u30EA\u306E\u5B9F\u884C\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\uFF1A{0}
|
||||||
|
Server.queryTerms.exception.msg=Terms\u30AF\u30A8\u30EA\u306E\u5B9F\u884C\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
|
||||||
|
Server.openCore.exception.msg=\u30B3\u30A2\u3092\u958B\u304F\u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u3057\u307E\u3057\u305F\u304C\u3001\u30B5\u30FC\u30D0\u304C\u307E\u3060\u7A3C\u50CD\u3057\u3066\u3044\u307E\u305B\u3093\u3002
|
||||||
|
Server.openCore.exception.cantOpen.msg=\u30B3\u30A2\u3092\u958B\u3051\u307E\u305B\u3093\u3067\u3057\u305F
|
||||||
|
Server.openCore.exception.cantOpen.msg2=\u30B3\u30A2\u3092\u958B\u3051\u307E\u305B\u3093\u3067\u3057\u305F
|
||||||
|
Server.request.exception.exception.msg=Solr\u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u767A\u884C\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
|
||||||
|
Server.commit.exception.msg=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3092\u30B3\u30DF\u30C3\u30C8\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
|
||||||
|
Server.addDoc.exception.msg=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u30CF\u30F3\u30C9\u30E9\u30FC\u3092\u4F7F\u7528\u3057\u307E\u3057\u305F\u304C\u3001\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u306B\u4E0B\u8A18\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF1A{0}
|
||||||
|
Server.close.exception.msg=\u30B3\u30A2\u3092\u9589\u3058\u308C\u307E\u305B\u3093
|
||||||
|
Server.close.exception.msg2=\u30B3\u30A2\u3092\u9589\u3058\u308C\u307E\u305B\u3093
|
||||||
|
Server.solrServerNoPortException.msg=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u306B\u4F7F\u7528\u3057\u3066\u3044\u308B\u30B5\u30FC\u30D0\u306F\u30DD\u30FC\u30C8{0}\u306B\u30D0\u30A4\u30F3\u30C9\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u30DD\u30FC\u30C8\u306F\u4F7F\u7528\u4E0D\u53EF\u3067\u3059\u3002\u30C7\u30D5\u30A9\u30EB\u30C8{1}\u30DD\u30FC\u30C8\u306E\u5909\u66F4\u3092\u691C\u8A0E\u3057\u3066\u4E0B\u3055\u3044\u3002
|
||||||
|
KeywordSearchIngestModule.doInBackGround.displayName=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22
|
||||||
|
KeywordSearchIngestModule.doInBackGround.finalizeMsg=-\u3000\u6700\u7D42\u51E6\u7406\u4E2D
|
||||||
|
KeywordSearchIngestModule.doInBackGround.pendingMsg=\uFF08\u30DA\u30F3\u30C7\u30A3\u30F3\u30B0\uFF09
|
||||||
|
KeywordSearchIngestModule.doInBackGround.cancelMsg=\uFF08\u30AD\u30E3\u30F3\u30BB\u30EB\u4E2D\u2026\uFF09
|
||||||
|
Server.addDoc.exception.msg2=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u30CF\u30F3\u30C9\u30E9\u30FC\u3092\u4F7F\u7528\u3057\u307E\u3057\u305F\u304C\u3001\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u306B\u4E0B\u8A18\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF1A{0}
|
||||||
|
ExtractedContentViewer.getSolrContent.txtBodyItal=<span style\=''font-style\:italic''>{0}</span>
|
||||||
|
Keyword.toString.text=Keyword'{'query\={0}, isLiteral\={1}, keywordType\={2}'}'
|
@ -24,6 +24,8 @@ import java.io.InputStream;
|
|||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
|
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import org.apache.solr.common.util.ContentStream;
|
import org.apache.solr.common.util.ContentStream;
|
||||||
import org.sleuthkit.datamodel.AbstractContent;
|
import org.sleuthkit.datamodel.AbstractContent;
|
||||||
@ -84,7 +86,7 @@ class ByteContentStream implements ContentStream {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getSourceInfo() {
|
public String getSourceInfo() {
|
||||||
return "File:" + aContent.getId();
|
return NbBundle.getMessage(this.getClass(), "ByteContentStream.getSrcInfo.text", aContent.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -685,8 +685,10 @@ class ExtractedContentPanel extends javax.swing.JPanel {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Object doInBackground() throws Exception {
|
protected Object doInBackground() throws Exception {
|
||||||
progress = ProgressHandleFactory.createHandle("Loading text");
|
progress = ProgressHandleFactory.createHandle(
|
||||||
progress.setDisplayName("Loading text");
|
NbBundle.getMessage(this.getClass(), "ExtractedContentPanel.SetMarkup.progress.loading"));
|
||||||
|
progress.setDisplayName(
|
||||||
|
NbBundle.getMessage(this.getClass(), "ExtractedContentPanel.SetMarkup.progress.displayName"));
|
||||||
progress.start();
|
progress.start();
|
||||||
progress.switchToIndeterminate();
|
progress.switchToIndeterminate();
|
||||||
|
|
||||||
|
@ -134,7 +134,8 @@ public class ExtractedContentViewer implements DataContentViewer {
|
|||||||
@Override
|
@Override
|
||||||
public int nextPage() {
|
public int nextPage() {
|
||||||
if (!hasNextPage()) {
|
if (!hasNextPage()) {
|
||||||
throw new IllegalStateException("No next page.");
|
throw new IllegalStateException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "ExtractedContentViewer.nextPage.exception.msg"));
|
||||||
}
|
}
|
||||||
++currentPage;
|
++currentPage;
|
||||||
return currentPage;
|
return currentPage;
|
||||||
@ -143,7 +144,8 @@ public class ExtractedContentViewer implements DataContentViewer {
|
|||||||
@Override
|
@Override
|
||||||
public int previousPage() {
|
public int previousPage() {
|
||||||
if (!hasPreviousPage()) {
|
if (!hasPreviousPage()) {
|
||||||
throw new IllegalStateException("No previous page.");
|
throw new IllegalStateException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "ExtractedContentViewer.previousPage.exception.msg"));
|
||||||
}
|
}
|
||||||
--currentPage;
|
--currentPage;
|
||||||
return currentPage;
|
return currentPage;
|
||||||
@ -151,27 +153,32 @@ public class ExtractedContentViewer implements DataContentViewer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasNextItem() {
|
public boolean hasNextItem() {
|
||||||
throw new UnsupportedOperationException("Not supported, not a searchable source.");
|
throw new UnsupportedOperationException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "ExtractedContentViewer.hasNextItem.exception.msg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasPreviousItem() {
|
public boolean hasPreviousItem() {
|
||||||
throw new UnsupportedOperationException("Not supported, not a searchable source.");
|
throw new UnsupportedOperationException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "ExtractedContentViewer.hasPreviousItem.exception.msg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int nextItem() {
|
public int nextItem() {
|
||||||
throw new UnsupportedOperationException("Not supported, not a searchable source.");
|
throw new UnsupportedOperationException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "ExtractedContentViewer.nextItem.exception.msg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int previousItem() {
|
public int previousItem() {
|
||||||
throw new UnsupportedOperationException("Not supported, not a searchable source.");
|
throw new UnsupportedOperationException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "ExtractedContentViewer.previousItem.exception.msg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int currentItem() {
|
public int currentItem() {
|
||||||
throw new UnsupportedOperationException("Not supported, not a searchable source.");
|
throw new UnsupportedOperationException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "ExtractedContentViewer.currentItem.exception.msg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -223,7 +223,8 @@ class HighlightedMatchesSource implements MarkupSource, HighlightLookup {
|
|||||||
@Override
|
@Override
|
||||||
public int nextPage() {
|
public int nextPage() {
|
||||||
if (!hasNextPage()) {
|
if (!hasNextPage()) {
|
||||||
throw new IllegalStateException("No next page.");
|
throw new IllegalStateException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "HighlightedMatchesSource.nextPage.exception.msg"));
|
||||||
}
|
}
|
||||||
int idx = pages.indexOf(this.currentPage);
|
int idx = pages.indexOf(this.currentPage);
|
||||||
currentPage = pages.get(idx + 1);
|
currentPage = pages.get(idx + 1);
|
||||||
@ -233,7 +234,8 @@ class HighlightedMatchesSource implements MarkupSource, HighlightLookup {
|
|||||||
@Override
|
@Override
|
||||||
public int previousPage() {
|
public int previousPage() {
|
||||||
if (!hasPreviousPage()) {
|
if (!hasPreviousPage()) {
|
||||||
throw new IllegalStateException("No previous page.");
|
throw new IllegalStateException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "HighlightedMatchesSource.previousPage.exception.msg"));
|
||||||
}
|
}
|
||||||
int idx = pages.indexOf(this.currentPage);
|
int idx = pages.indexOf(this.currentPage);
|
||||||
currentPage = pages.get(idx - 1);
|
currentPage = pages.get(idx - 1);
|
||||||
@ -259,7 +261,8 @@ class HighlightedMatchesSource implements MarkupSource, HighlightLookup {
|
|||||||
@Override
|
@Override
|
||||||
public int nextItem() {
|
public int nextItem() {
|
||||||
if (!hasNextItem()) {
|
if (!hasNextItem()) {
|
||||||
throw new IllegalStateException("No next item.");
|
throw new IllegalStateException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "HighlightedMatchesSource.nextItem.exception.msg"));
|
||||||
}
|
}
|
||||||
int cur = pagesToHits.get(currentPage) + 1;
|
int cur = pagesToHits.get(currentPage) + 1;
|
||||||
pagesToHits.put(currentPage, cur);
|
pagesToHits.put(currentPage, cur);
|
||||||
@ -269,7 +272,8 @@ class HighlightedMatchesSource implements MarkupSource, HighlightLookup {
|
|||||||
@Override
|
@Override
|
||||||
public int previousItem() {
|
public int previousItem() {
|
||||||
if (!hasPreviousItem()) {
|
if (!hasPreviousItem()) {
|
||||||
throw new IllegalStateException("No previous item.");
|
throw new IllegalStateException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "HighlightedMatchesSource.previousItem.exception.msg"));
|
||||||
}
|
}
|
||||||
int cur = pagesToHits.get(currentPage) - 1;
|
int cur = pagesToHits.get(currentPage) - 1;
|
||||||
pagesToHits.put(currentPage, cur);
|
pagesToHits.put(currentPage, cur);
|
||||||
|
@ -41,6 +41,7 @@ import org.apache.solr.common.SolrException.ErrorCode;
|
|||||||
import org.apache.solr.common.util.ContentStream;
|
import org.apache.solr.common.util.ContentStream;
|
||||||
import org.apache.solr.common.SolrInputDocument;
|
import org.apache.solr.common.SolrInputDocument;
|
||||||
import org.openide.util.Exceptions;
|
import org.openide.util.Exceptions;
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.casemodule.Case;
|
import org.sleuthkit.autopsy.casemodule.Case;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import org.sleuthkit.autopsy.datamodel.ContentUtils;
|
import org.sleuthkit.autopsy.datamodel.ContentUtils;
|
||||||
@ -279,7 +280,8 @@ class Ingester {
|
|||||||
|
|
||||||
if (fields.get(Server.Schema.IMAGE_ID.toString()) == null) {
|
if (fields.get(Server.Schema.IMAGE_ID.toString()) == null) {
|
||||||
//skip the file, image id unknown
|
//skip the file, image id unknown
|
||||||
String msg = "Skipping indexing the file, unknown image id, for file: " + cs.getName();
|
String msg = NbBundle.getMessage(this.getClass(),
|
||||||
|
"Ingester.ingest.exception.unknownImgId.msg", cs.getName());
|
||||||
logger.log(Level.SEVERE, msg);
|
logger.log(Level.SEVERE, msg);
|
||||||
throw new IngesterException(msg);
|
throw new IngesterException(msg);
|
||||||
}
|
}
|
||||||
@ -301,7 +303,9 @@ class Ingester {
|
|||||||
is = cs.getStream();
|
is = cs.getStream();
|
||||||
read = is.read(docChunkContentBuf);
|
read = is.read(docChunkContentBuf);
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
throw new IngesterException("Could not read content stream: " + cs.getName());
|
throw new IngesterException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Ingester.ingest.exception.cantReadStream.msg",
|
||||||
|
cs.getName()));
|
||||||
} finally {
|
} finally {
|
||||||
try {
|
try {
|
||||||
is.close();
|
is.close();
|
||||||
@ -333,7 +337,8 @@ class Ingester {
|
|||||||
solrServer.addDocument(updateDoc);
|
solrServer.addDocument(updateDoc);
|
||||||
uncommitedIngests = true;
|
uncommitedIngests = true;
|
||||||
} catch (KeywordSearchModuleException ex) {
|
} catch (KeywordSearchModuleException ex) {
|
||||||
throw new IngesterException("Error ingestint document: " + cs.getName(), ex);
|
throw new IngesterException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Ingester.ingest.exception.err.msg", cs.getName()), ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -373,9 +378,13 @@ class Ingester {
|
|||||||
logger.log(Level.WARNING, "Solr timeout encountered, trying to restart Solr");
|
logger.log(Level.WARNING, "Solr timeout encountered, trying to restart Solr");
|
||||||
//restart may be needed to recover from some error conditions
|
//restart may be needed to recover from some error conditions
|
||||||
hardSolrRestart();
|
hardSolrRestart();
|
||||||
throw new IngesterException("Solr index request time out for id: " + fields.get("id") + ", name: " + fields.get("file_name"));
|
throw new IngesterException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Ingester.ingestExtract.exception.solrTimeout.msg",
|
||||||
|
fields.get("id"), fields.get("file_name")));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new IngesterException("Problem posting content to Solr, id: " + fields.get("id") + ", name: " + fields.get("file_name"), e);
|
throw new IngesterException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Ingester.ingestExtract.exception.probPostToSolr.msg",
|
||||||
|
fields.get("id"), fields.get("file_name")), e);
|
||||||
}
|
}
|
||||||
uncommitedIngests = true;
|
uncommitedIngests = true;
|
||||||
}
|
}
|
||||||
@ -443,14 +452,17 @@ class Ingester {
|
|||||||
up.setMethod(METHOD.POST);
|
up.setMethod(METHOD.POST);
|
||||||
solrServer.request(up);
|
solrServer.request(up);
|
||||||
} catch (NoOpenCoreException ex) {
|
} catch (NoOpenCoreException ex) {
|
||||||
throw new RuntimeException("No Solr core available, cannot index the content", ex);
|
throw new RuntimeException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Ingester.UpReqestTask.run.exception.sorlNotAvail.msg"), ex);
|
||||||
} catch (IllegalStateException ex) {
|
} catch (IllegalStateException ex) {
|
||||||
// problems with content
|
// problems with content
|
||||||
throw new RuntimeException("Problem reading file.", ex);
|
throw new RuntimeException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Ingester.UpRequestTask.run.exception.probReadFile.msg"), ex);
|
||||||
} catch (SolrServerException ex) {
|
} catch (SolrServerException ex) {
|
||||||
// If there's a problem talking to Solr, something is fundamentally
|
// If there's a problem talking to Solr, something is fundamentally
|
||||||
// wrong with ingest
|
// wrong with ingest
|
||||||
throw new RuntimeException("Problem with Solr", ex);
|
throw new RuntimeException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Ingester.UpRequestTask.run.exception.solrProb.msg"), ex);
|
||||||
} catch (SolrException ex) {
|
} catch (SolrException ex) {
|
||||||
// Tika problems result in an unchecked SolrException
|
// Tika problems result in an unchecked SolrException
|
||||||
ErrorCode ec = ErrorCode.getErrorCode(ex.code());
|
ErrorCode ec = ErrorCode.getErrorCode(ex.code());
|
||||||
@ -458,7 +470,10 @@ class Ingester {
|
|||||||
// When Tika has problems with a document, it throws a server error
|
// When Tika has problems with a document, it throws a server error
|
||||||
// but it's okay to continue with other documents
|
// but it's okay to continue with other documents
|
||||||
if (ec.equals(ErrorCode.SERVER_ERROR)) {
|
if (ec.equals(ErrorCode.SERVER_ERROR)) {
|
||||||
throw new RuntimeException("Problem posting file contents to Solr. SolrException error code: " + ec, ex);
|
throw new RuntimeException(NbBundle.getMessage(this.getClass(),
|
||||||
|
"Ingester.UpRequestTask.run.exception.probPostToSolr.msg",
|
||||||
|
ec),
|
||||||
|
ex);
|
||||||
} else {
|
} else {
|
||||||
// shouldn't get any other error codes
|
// shouldn't get any other error codes
|
||||||
throw ex;
|
throw ex;
|
||||||
@ -513,7 +528,7 @@ class Ingester {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getSourceInfo() {
|
public String getSourceInfo() {
|
||||||
return "File:" + f.getId();
|
return NbBundle.getMessage(this.getClass(), "Ingester.FscContentStream.getSrcInfo", f.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -533,7 +548,8 @@ class Ingester {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Reader getReader() throws IOException {
|
public Reader getReader() throws IOException {
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Ingester.FscContentStream.getReader"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -555,7 +571,7 @@ class Ingester {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getSourceInfo() {
|
public String getSourceInfo() {
|
||||||
return "File:" + aContent.getId();
|
return NbBundle.getMessage(this.getClass(), "Ingester.NullContentStream.getSrcInfo.text", aContent.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -575,7 +591,8 @@ class Ingester {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Reader getReader() throws IOException {
|
public Reader getReader() throws IOException {
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Ingester.NullContentStream.getReader"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
package org.sleuthkit.autopsy.keywordsearch;
|
package org.sleuthkit.autopsy.keywordsearch;
|
||||||
|
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.datamodel.BlackboardAttribute;
|
import org.sleuthkit.datamodel.BlackboardAttribute;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -72,7 +73,7 @@ class Keyword {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "Keyword{" + "query=" + keywordString + ", isLiteral=" + isLiteral + ", keywordType=" + keywordType + '}';
|
return NbBundle.getMessage(this.getClass(), "Keyword.toString.text", keywordString, isLiteral, keywordType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -28,6 +28,7 @@ import java.util.logging.Level;
|
|||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
import java.util.logging.SimpleFormatter;
|
import java.util.logging.SimpleFormatter;
|
||||||
import org.openide.util.Exceptions;
|
import org.openide.util.Exceptions;
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.casemodule.Case;
|
import org.sleuthkit.autopsy.casemodule.Case;
|
||||||
import org.sleuthkit.autopsy.coreutils.PlatformUtil;
|
import org.sleuthkit.autopsy.coreutils.PlatformUtil;
|
||||||
import org.sleuthkit.autopsy.keywordsearch.KeywordSearchResultFactory.ResultWriter;
|
import org.sleuthkit.autopsy.keywordsearch.KeywordSearchResultFactory.ResultWriter;
|
||||||
@ -107,7 +108,10 @@ public class KeywordSearch {
|
|||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
logger.log(Level.SEVERE, "KeywordSearch listener threw exception", e);
|
logger.log(Level.SEVERE, "KeywordSearch listener threw exception", e);
|
||||||
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to KeywordSearch updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
|
MessageNotifyUtil.Notify.show(NbBundle.getMessage(KeywordSearch.class, "KeywordSearch.moduleErr"),
|
||||||
|
NbBundle.getMessage(KeywordSearch.class,
|
||||||
|
"KeywordSearch.fireNumIdxFileChg.moduleErr.msg"),
|
||||||
|
MessageNotifyUtil.MessageType.ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -377,7 +377,9 @@ public final class KeywordSearchIngestModule extends IngestModuleAbstractFile {
|
|||||||
// we had cases where getStatus was OK, but the connection resulted in a 404
|
// we had cases where getStatus was OK, but the connection resulted in a 404
|
||||||
server.queryNumIndexedDocuments();
|
server.queryNumIndexedDocuments();
|
||||||
} catch (KeywordSearchModuleException | NoOpenCoreException ex) {
|
} catch (KeywordSearchModuleException | NoOpenCoreException ex) {
|
||||||
throw new IngestModuleException("Error connecting to SOLR server: " + ex.getMessage());
|
throw new IngestModuleException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "KeywordSearchIngestModule.init.exception.errConnToSolr.msg",
|
||||||
|
ex.getMessage()));
|
||||||
}
|
}
|
||||||
|
|
||||||
//initialize extractors
|
//initialize extractors
|
||||||
|
@ -18,6 +18,8 @@
|
|||||||
*/
|
*/
|
||||||
package org.sleuthkit.autopsy.keywordsearch;
|
package org.sleuthkit.autopsy.keywordsearch;
|
||||||
|
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
@ -115,12 +117,14 @@ class KeywordSearchListsEncase extends KeywordSearchListsAbstract{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean save() {
|
public boolean save() {
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "KeywordSearchListsEncase.save.exception.msg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean save(boolean isExport) {
|
public boolean save(boolean isExport) {
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "KeywordSearchListsEncase.save2.exception.msg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -173,7 +177,10 @@ class KeywordSearchListsEncase extends KeywordSearchListsAbstract{
|
|||||||
} else if(type.equals("")) {
|
} else if(type.equals("")) {
|
||||||
return Expression;
|
return Expression;
|
||||||
} else {
|
} else {
|
||||||
throw new IllegalArgumentException("Unsupported EncaseMetaType: " + type);
|
throw new IllegalArgumentException(
|
||||||
|
NbBundle.getMessage(KeywordSearchListsEncase.class,
|
||||||
|
"KeywordSearchListsEncase.encaseMetaType.exception.msg",
|
||||||
|
type));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -342,7 +342,7 @@ class KeywordSearchListsManagementPanel extends javax.swing.JPanel implements Op
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getColumnName(int column) {
|
public String getColumnName(int column) {
|
||||||
return "Name";
|
return NbBundle.getMessage(this.getClass(), "KeywordSearchListsManagementPanel.getColName.text");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -357,7 +357,8 @@ class KeywordSearchListsManagementPanel extends javax.swing.JPanel implements Op
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
|
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
|
||||||
throw new UnsupportedOperationException("Editing of cells is not supported");
|
throw new UnsupportedOperationException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "KeywordSearchListsManagementPanel.setValueAt.exception.msg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -322,12 +322,14 @@ class KeywordSearchListsViewerPanel extends AbstractKeywordSearchPerformer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isLuceneQuerySelected() {
|
public boolean isLuceneQuerySelected() {
|
||||||
throw new UnsupportedOperationException("Not supported for multi-word queries.");
|
throw new UnsupportedOperationException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "KeywordSearchListsViewerPanel.isLuceneQuerySel.exception.msg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getQueryText() {
|
public String getQueryText() {
|
||||||
throw new UnsupportedOperationException("Not supported for multi-word queries.");
|
throw new UnsupportedOperationException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "KeywordSearchListsViewerPanel.getQueryText.exception.msg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void addSearchButtonActionListener(ActionListener al) {
|
void addSearchButtonActionListener(ActionListener al) {
|
||||||
|
@ -10,6 +10,7 @@ import javax.swing.JComponent;
|
|||||||
import org.netbeans.spi.options.OptionsPanelController;
|
import org.netbeans.spi.options.OptionsPanelController;
|
||||||
import org.openide.util.HelpCtx;
|
import org.openide.util.HelpCtx;
|
||||||
import org.openide.util.Lookup;
|
import org.openide.util.Lookup;
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
@ -82,7 +83,10 @@ public final class KeywordSearchOptionsPanelController extends OptionsPanelContr
|
|||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
logger.log(Level.SEVERE, "KeywordSearchOptionsPanelController listener threw exception", e);
|
logger.log(Level.SEVERE, "KeywordSearchOptionsPanelController listener threw exception", e);
|
||||||
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to KeywordSearchOptionsPanelController updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
|
MessageNotifyUtil.Notify.show(
|
||||||
|
NbBundle.getMessage(this.getClass(), "KeywordSearchOptionsPanelController.moduleErr"),
|
||||||
|
NbBundle.getMessage(this.getClass(), "KeywordSearchOptionsPanelController.moduleErr.msg1"),
|
||||||
|
MessageNotifyUtil.MessageType.ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
@ -90,7 +94,10 @@ public final class KeywordSearchOptionsPanelController extends OptionsPanelContr
|
|||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
logger.log(Level.SEVERE, "KeywordSearchOptionsPanelController listener threw exception", e);
|
logger.log(Level.SEVERE, "KeywordSearchOptionsPanelController listener threw exception", e);
|
||||||
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to KeywordSearchOptionsPanelController updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
|
MessageNotifyUtil.Notify.show(
|
||||||
|
NbBundle.getMessage(this.getClass(), "KeywordSearchOptionsPanelController.moduleErr"),
|
||||||
|
NbBundle.getMessage(this.getClass(), "KeywordSearchOptionsPanelController.moduleErr.msg2"),
|
||||||
|
MessageNotifyUtil.MessageType.ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -34,12 +34,14 @@ import java.beans.PropertyChangeEvent;
|
|||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import javax.swing.JMenuItem;
|
import javax.swing.JMenuItem;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
import javax.swing.event.PopupMenuEvent;
|
import javax.swing.event.PopupMenuEvent;
|
||||||
import javax.swing.event.PopupMenuListener;
|
import javax.swing.event.PopupMenuListener;
|
||||||
import org.apache.solr.client.solrj.SolrServerException;
|
|
||||||
import org.sleuthkit.autopsy.casemodule.Case;
|
import org.sleuthkit.autopsy.casemodule.Case;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -384,7 +386,8 @@ class KeywordSearchPanel extends AbstractKeywordSearchPerformer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Keyword> getQueryList() {
|
public List<Keyword> getQueryList() {
|
||||||
throw new UnsupportedOperationException("No list for single-keyword search");
|
throw new UnsupportedOperationException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "KeywordSearchPanel.getQueryList.exception.msg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private class KeywordPropertyChangeListener implements PropertyChangeListener {
|
private class KeywordPropertyChangeListener implements PropertyChangeListener {
|
||||||
|
@ -165,7 +165,7 @@ class KeywordSearchQueryManager {
|
|||||||
rootNode = Node.EMPTY;
|
rootNode = Node.EMPTY;
|
||||||
}
|
}
|
||||||
|
|
||||||
final String pathText = "Keyword search";
|
final String pathText = NbBundle.getMessage(this.getClass(), "KeywordSearchQueryManager.pathText.text");
|
||||||
|
|
||||||
DataResultTopComponent.initInstance(pathText, rootNode, things.size(), searchResultWin);
|
DataResultTopComponent.initInstance(pathText, rootNode, things.size(), searchResultWin);
|
||||||
|
|
||||||
|
@ -28,6 +28,8 @@ import java.util.Map;
|
|||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
import javax.swing.SwingWorker;
|
import javax.swing.SwingWorker;
|
||||||
@ -571,7 +573,8 @@ class KeywordSearchResultFactory extends ChildFactory<KeyValueQuery> {
|
|||||||
try {
|
try {
|
||||||
final String queryStr = query.getQueryString();
|
final String queryStr = query.getQueryString();
|
||||||
final String queryDisp = queryStr.length() > QUERY_DISPLAY_LEN ? queryStr.substring(0, QUERY_DISPLAY_LEN - 1) + " ..." : queryStr;
|
final String queryDisp = queryStr.length() > QUERY_DISPLAY_LEN ? queryStr.substring(0, QUERY_DISPLAY_LEN - 1) + " ..." : queryStr;
|
||||||
progress = ProgressHandleFactory.createHandle("Saving results: " + queryDisp, new Cancellable() {
|
progress = ProgressHandleFactory.createHandle(
|
||||||
|
NbBundle.getMessage(this.getClass(), "KeywordSearchResultFactory.progress.saving", queryDisp), new Cancellable() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean cancel() {
|
public boolean cancel() {
|
||||||
|
@ -25,6 +25,8 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import org.sleuthkit.autopsy.coreutils.ModuleSettings;
|
import org.sleuthkit.autopsy.coreutils.ModuleSettings;
|
||||||
import org.sleuthkit.autopsy.coreutils.StringExtract;
|
import org.sleuthkit.autopsy.coreutils.StringExtract;
|
||||||
@ -34,10 +36,10 @@ import org.sleuthkit.autopsy.keywordsearch.KeywordSearchIngestModule.UpdateFrequ
|
|||||||
|
|
||||||
//This file contains constants and settings for KeywordSearch
|
//This file contains constants and settings for KeywordSearch
|
||||||
class KeywordSearchSettings {
|
class KeywordSearchSettings {
|
||||||
public static final String MODULE_NAME = "KeywordSearch";
|
public static final String MODULE_NAME = NbBundle.getMessage(KeywordSearchSettings.class, "KeywordSearchSettings.moduleName.text");
|
||||||
static final String PROPERTIES_OPTIONS = MODULE_NAME+"_Options";
|
static final String PROPERTIES_OPTIONS = NbBundle.getMessage(KeywordSearchSettings.class, "KeywordSearchSettings.properties_options.text", MODULE_NAME);
|
||||||
static final String PROPERTIES_NSRL = MODULE_NAME+"_NSRL";
|
static final String PROPERTIES_NSRL = NbBundle.getMessage(KeywordSearchSettings.class, "KeywordSearchSettings.propertiesNSRL.text", MODULE_NAME);
|
||||||
static final String PROPERTIES_SCRIPTS = MODULE_NAME+"_Scripts";
|
static final String PROPERTIES_SCRIPTS = NbBundle.getMessage(KeywordSearchSettings.class, "KeywordSearchSettings.propertiesScripts.text", MODULE_NAME);
|
||||||
private static boolean skipKnown = true;
|
private static boolean skipKnown = true;
|
||||||
private static final Logger logger = Logger.getLogger(KeywordSearchSettings.class.getName());
|
private static final Logger logger = Logger.getLogger(KeywordSearchSettings.class.getName());
|
||||||
private static UpdateFrequency UpdateFreq = UpdateFrequency.DEFAULT;
|
private static UpdateFrequency UpdateFreq = UpdateFrequency.DEFAULT;
|
||||||
|
@ -18,6 +18,8 @@
|
|||||||
*/
|
*/
|
||||||
package org.sleuthkit.autopsy.keywordsearch;
|
package org.sleuthkit.autopsy.keywordsearch;
|
||||||
|
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Exception thrown when no core is open
|
* Exception thrown when no core is open
|
||||||
@ -25,7 +27,7 @@ package org.sleuthkit.autopsy.keywordsearch;
|
|||||||
public class NoOpenCoreException extends Exception {
|
public class NoOpenCoreException extends Exception {
|
||||||
|
|
||||||
NoOpenCoreException() {
|
NoOpenCoreException() {
|
||||||
super("No currently open Solr core.");
|
super(NbBundle.getMessage(NoOpenCoreException.class, "NoOpenCoreException.err.noOpenSorlCore.msg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,7 +30,6 @@ import java.io.InputStreamReader;
|
|||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.io.OutputStreamWriter;
|
import java.io.OutputStreamWriter;
|
||||||
import java.lang.Long;
|
import java.lang.Long;
|
||||||
import java.lang.Long;
|
|
||||||
import java.net.ConnectException;
|
import java.net.ConnectException;
|
||||||
import java.net.ServerSocket;
|
import java.net.ServerSocket;
|
||||||
import java.net.SocketException;
|
import java.net.SocketException;
|
||||||
@ -38,9 +37,10 @@ import java.nio.charset.Charset;
|
|||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import javax.swing.AbstractAction;
|
import javax.swing.AbstractAction;
|
||||||
import org.apache.solr.client.solrj.SolrQuery;
|
import org.apache.solr.client.solrj.SolrQuery;
|
||||||
@ -57,7 +57,6 @@ import org.openide.modules.Places;
|
|||||||
import org.sleuthkit.autopsy.casemodule.Case;
|
import org.sleuthkit.autopsy.casemodule.Case;
|
||||||
import org.sleuthkit.autopsy.coreutils.ModuleSettings;
|
import org.sleuthkit.autopsy.coreutils.ModuleSettings;
|
||||||
import org.sleuthkit.autopsy.coreutils.PlatformUtil;
|
import org.sleuthkit.autopsy.coreutils.PlatformUtil;
|
||||||
import org.sleuthkit.autopsy.coreutils.Version;
|
|
||||||
import org.sleuthkit.datamodel.Content;
|
import org.sleuthkit.datamodel.Content;
|
||||||
import org.apache.solr.common.SolrInputDocument;
|
import org.apache.solr.common.SolrInputDocument;
|
||||||
import org.apache.solr.client.solrj.impl.XMLResponseParser;
|
import org.apache.solr.client.solrj.impl.XMLResponseParser;
|
||||||
@ -403,10 +402,12 @@ public class Server {
|
|||||||
|
|
||||||
} catch (SecurityException ex) {
|
} catch (SecurityException ex) {
|
||||||
logger.log(Level.WARNING, "Could not start Solr process!", ex);
|
logger.log(Level.WARNING, "Could not start Solr process!", ex);
|
||||||
throw new KeywordSearchModuleException("Could not start Solr server process", ex);
|
throw new KeywordSearchModuleException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Server.start.exception.cantStartSolr.msg"), ex);
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
logger.log(Level.WARNING, "Could not start Solr server process!", ex);
|
logger.log(Level.WARNING, "Could not start Solr server process!", ex);
|
||||||
throw new KeywordSearchModuleException("Could not start Solr server process", ex);
|
throw new KeywordSearchModuleException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Server.start.exception.cantStartSolr.msg2"), ex);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
logger.log(Level.WARNING, "Could not start Solr server process, port [" + currentSolrServerPort + "] not available!");
|
logger.log(Level.WARNING, "Could not start Solr server process, port [" + currentSolrServerPort + "] not available!");
|
||||||
@ -537,10 +538,12 @@ public class Server {
|
|||||||
logger.log(Level.INFO, "Solr server is not running, cause: " + cause.getMessage());
|
logger.log(Level.INFO, "Solr server is not running, cause: " + cause.getMessage());
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
throw new KeywordSearchModuleException("Error checking if Solr server is running", ex);
|
throw new KeywordSearchModuleException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Server.isRunning.exception.errCheckSolrRunning.msg"), ex);
|
||||||
}
|
}
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
throw new KeywordSearchModuleException("Error checking if Solr server is running", ex);
|
throw new KeywordSearchModuleException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Server.isRunning.exception.errCheckSolrRunning.msg2"), ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -552,7 +555,8 @@ public class Server {
|
|||||||
|
|
||||||
synchronized void openCore() throws KeywordSearchModuleException {
|
synchronized void openCore() throws KeywordSearchModuleException {
|
||||||
if (currentCore != null) {
|
if (currentCore != null) {
|
||||||
throw new KeywordSearchModuleException("Already an open Core! Explicitely close Core first. ");
|
throw new KeywordSearchModuleException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Server.openCore.exception.alreadyOpen.msg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
Case currentCase = Case.getCurrentCase();
|
Case currentCase = Case.getCurrentCase();
|
||||||
@ -665,7 +669,8 @@ public class Server {
|
|||||||
try {
|
try {
|
||||||
return currentCore.queryNumIndexedFiles();
|
return currentCore.queryNumIndexedFiles();
|
||||||
} catch (SolrServerException ex) {
|
} catch (SolrServerException ex) {
|
||||||
throw new KeywordSearchModuleException("Error querying number of indexed files, ", ex);
|
throw new KeywordSearchModuleException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Server.queryNumIdxFiles.exception.msg"), ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -686,7 +691,8 @@ public class Server {
|
|||||||
try {
|
try {
|
||||||
return currentCore.queryNumIndexedChunks();
|
return currentCore.queryNumIndexedChunks();
|
||||||
} catch (SolrServerException ex) {
|
} catch (SolrServerException ex) {
|
||||||
throw new KeywordSearchModuleException("Error querying number of indexed chunks, ", ex);
|
throw new KeywordSearchModuleException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Server.queryNumIdxChunks.exception.msg"), ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -705,7 +711,8 @@ public class Server {
|
|||||||
try {
|
try {
|
||||||
return currentCore.queryNumIndexedDocuments();
|
return currentCore.queryNumIndexedDocuments();
|
||||||
} catch (SolrServerException ex) {
|
} catch (SolrServerException ex) {
|
||||||
throw new KeywordSearchModuleException("Error querying number of indexed documents, ", ex);
|
throw new KeywordSearchModuleException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Server.queryNumIdxDocs.exception.msg"), ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -724,7 +731,8 @@ public class Server {
|
|||||||
try {
|
try {
|
||||||
return currentCore.queryIsIndexed(contentID);
|
return currentCore.queryIsIndexed(contentID);
|
||||||
} catch (SolrServerException ex) {
|
} catch (SolrServerException ex) {
|
||||||
throw new KeywordSearchModuleException("Error checkign if content is indexed, ", ex);
|
throw new KeywordSearchModuleException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Server.queryIsIdxd.exception.msg"), ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -744,7 +752,8 @@ public class Server {
|
|||||||
try {
|
try {
|
||||||
return currentCore.queryNumFileChunks(fileID);
|
return currentCore.queryNumFileChunks(fileID);
|
||||||
} catch (SolrServerException ex) {
|
} catch (SolrServerException ex) {
|
||||||
throw new KeywordSearchModuleException("Error getting number of file chunks, ", ex);
|
throw new KeywordSearchModuleException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Server.queryNumFileChunks.exception.msg"), ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -763,7 +772,8 @@ public class Server {
|
|||||||
try {
|
try {
|
||||||
return currentCore.query(sq);
|
return currentCore.query(sq);
|
||||||
} catch (SolrServerException ex) {
|
} catch (SolrServerException ex) {
|
||||||
throw new KeywordSearchModuleException("Error running query: " + sq.getQuery(), ex);
|
throw new KeywordSearchModuleException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Server.query.exception.msg", sq.getQuery()), ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -783,7 +793,8 @@ public class Server {
|
|||||||
try {
|
try {
|
||||||
return currentCore.query(sq, method);
|
return currentCore.query(sq, method);
|
||||||
} catch (SolrServerException ex) {
|
} catch (SolrServerException ex) {
|
||||||
throw new KeywordSearchModuleException("Error running query: " + sq.getQuery(), ex);
|
throw new KeywordSearchModuleException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Server.query2.exception.msg", sq.getQuery()), ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -802,7 +813,8 @@ public class Server {
|
|||||||
try {
|
try {
|
||||||
return currentCore.queryTerms(sq);
|
return currentCore.queryTerms(sq);
|
||||||
} catch (SolrServerException ex) {
|
} catch (SolrServerException ex) {
|
||||||
throw new KeywordSearchModuleException("Error running terms query: " + sq.getQuery(), ex);
|
throw new KeywordSearchModuleException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Server.queryTerms.exception.msg", sq.getQuery()), ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -873,7 +885,8 @@ public class Server {
|
|||||||
//handle a possible scenario when server process might not be fully started
|
//handle a possible scenario when server process might not be fully started
|
||||||
if (!this.isRunning()) {
|
if (!this.isRunning()) {
|
||||||
logger.log(Level.WARNING, "Core open requested, but server not yet running");
|
logger.log(Level.WARNING, "Core open requested, but server not yet running");
|
||||||
throw new KeywordSearchModuleException("Core open requested, but server not yet running");
|
throw new KeywordSearchModuleException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Server.openCore.exception.msg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
CoreAdminRequest.Create createCore = new CoreAdminRequest.Create();
|
CoreAdminRequest.Create createCore = new CoreAdminRequest.Create();
|
||||||
@ -888,9 +901,11 @@ public class Server {
|
|||||||
return newCore;
|
return newCore;
|
||||||
|
|
||||||
} catch (SolrServerException ex) {
|
} catch (SolrServerException ex) {
|
||||||
throw new KeywordSearchModuleException("Could not open Core", ex);
|
throw new KeywordSearchModuleException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Server.openCore.exception.cantOpen.msg"), ex);
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
throw new KeywordSearchModuleException("Could not open Core", ex);
|
throw new KeywordSearchModuleException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Server.openCore.exception.cantOpen.msg2"), ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -931,7 +946,8 @@ public class Server {
|
|||||||
return solrCore.request(request);
|
return solrCore.request(request);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
logger.log(Level.WARNING, "Could not issue Solr request. ", e);
|
logger.log(Level.WARNING, "Could not issue Solr request. ", e);
|
||||||
throw new SolrServerException("Could not issue Solr request", e);
|
throw new SolrServerException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Server.request.exception.exception.msg"), e);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -951,7 +967,7 @@ public class Server {
|
|||||||
solrCore.commit(true, true);
|
solrCore.commit(true, true);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
logger.log(Level.WARNING, "Could not commit index. ", e);
|
logger.log(Level.WARNING, "Could not commit index. ", e);
|
||||||
throw new SolrServerException("Could not commit index", e);
|
throw new SolrServerException(NbBundle.getMessage(this.getClass(), "Server.commit.exception.msg"), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -960,10 +976,12 @@ public class Server {
|
|||||||
solrCore.add(doc);
|
solrCore.add(doc);
|
||||||
} catch (SolrServerException ex) {
|
} catch (SolrServerException ex) {
|
||||||
logger.log(Level.SEVERE, "Could not add document to index via update handler: " + doc.getField("id"), ex);
|
logger.log(Level.SEVERE, "Could not add document to index via update handler: " + doc.getField("id"), ex);
|
||||||
throw new KeywordSearchModuleException("Could not add document to index via update handler: " + doc.getField("id"), ex);
|
throw new KeywordSearchModuleException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Server.addDoc.exception.msg", doc.getField("id")), ex);
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
logger.log(Level.SEVERE, "Could not add document to index via update handler: " + doc.getField("id"), ex);
|
logger.log(Level.SEVERE, "Could not add document to index via update handler: " + doc.getField("id"), ex);
|
||||||
throw new KeywordSearchModuleException("Could not add document to index via update handler: " + doc.getField("id"), ex);
|
throw new KeywordSearchModuleException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Server.addDoc.exception.msg2", doc.getField("id")), ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -994,9 +1012,11 @@ public class Server {
|
|||||||
try {
|
try {
|
||||||
CoreAdminRequest.unloadCore(this.name, solrServer);
|
CoreAdminRequest.unloadCore(this.name, solrServer);
|
||||||
} catch (SolrServerException ex) {
|
} catch (SolrServerException ex) {
|
||||||
throw new KeywordSearchModuleException("Cannot close Core", ex);
|
throw new KeywordSearchModuleException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Server.close.exception.msg"), ex);
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
throw new KeywordSearchModuleException("Cannot close Core", ex);
|
throw new KeywordSearchModuleException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Server.close.exception.msg2"), ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1092,9 +1112,8 @@ public class Server {
|
|||||||
private int port;
|
private int port;
|
||||||
|
|
||||||
SolrServerNoPortException(int port) {
|
SolrServerNoPortException(int port) {
|
||||||
super("Indexing server could not bind to port " + port
|
super(NbBundle.getMessage(Server.class, "Server.solrServerNoPortException.msg", port,
|
||||||
+ ", port is not available, consider change the default "
|
Server.PROPERTIES_CURRENT_SERVER_PORT));
|
||||||
+ Server.PROPERTIES_CURRENT_SERVER_PORT + " port.");
|
|
||||||
this.port = port;
|
this.port = port;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,7 +30,6 @@ import java.util.logging.Level;
|
|||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import org.sleuthkit.autopsy.casemodule.Case;
|
import org.sleuthkit.autopsy.casemodule.Case;
|
||||||
import org.sleuthkit.autopsy.ingest.IngestModuleDataSource;
|
import org.sleuthkit.autopsy.ingest.IngestModuleDataSource;
|
||||||
import org.sleuthkit.autopsy.report.SQLiteDBConnect;
|
|
||||||
import org.sleuthkit.datamodel.*;
|
import org.sleuthkit.datamodel.*;
|
||||||
|
|
||||||
abstract class Extract extends IngestModuleDataSource{
|
abstract class Extract extends IngestModuleDataSource{
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package org.sleuthkit.autopsy.report;
|
package org.sleuthkit.autopsy.recentactivity;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.DriverManager;
|
import java.sql.DriverManager;
|
||||||
@ -32,7 +32,7 @@ import org.sleuthkit.autopsy.coreutils.Logger;
|
|||||||
/**
|
/**
|
||||||
* Database connection class & utilities *
|
* Database connection class & utilities *
|
||||||
*/
|
*/
|
||||||
public class SQLiteDBConnect {
|
class SQLiteDBConnect {
|
||||||
|
|
||||||
public String sDriver = "";
|
public String sDriver = "";
|
||||||
public String sUrl = null;
|
public String sUrl = null;
|
@ -41,7 +41,6 @@ import java.util.regex.Matcher;
|
|||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import org.sleuthkit.autopsy.casemodule.Case;
|
import org.sleuthkit.autopsy.casemodule.Case;
|
||||||
import org.sleuthkit.autopsy.casemodule.services.FileManager;
|
import org.sleuthkit.autopsy.casemodule.services.FileManager;
|
||||||
import org.sleuthkit.autopsy.report.SQLiteDBConnect;
|
|
||||||
import org.sleuthkit.datamodel.AbstractFile;
|
import org.sleuthkit.datamodel.AbstractFile;
|
||||||
import org.sleuthkit.datamodel.Content;
|
import org.sleuthkit.datamodel.Content;
|
||||||
import org.sleuthkit.datamodel.TskCoreException;
|
import org.sleuthkit.datamodel.TskCoreException;
|
||||||
|
@ -56,6 +56,7 @@ import org.netbeans.jemmy.operators.JLabelOperator;
|
|||||||
import org.netbeans.jemmy.operators.JTabbedPaneOperator;
|
import org.netbeans.jemmy.operators.JTabbedPaneOperator;
|
||||||
import org.netbeans.jemmy.operators.JTableOperator;
|
import org.netbeans.jemmy.operators.JTableOperator;
|
||||||
import org.netbeans.jemmy.operators.JTextFieldOperator;
|
import org.netbeans.jemmy.operators.JTextFieldOperator;
|
||||||
|
import org.netbeans.jemmy.operators.JListOperator;
|
||||||
import org.netbeans.junit.NbModuleSuite;
|
import org.netbeans.junit.NbModuleSuite;
|
||||||
import org.openide.util.Exceptions;
|
import org.openide.util.Exceptions;
|
||||||
import org.sleuthkit.autopsy.ingest.IngestManager;
|
import org.sleuthkit.autopsy.ingest.IngestManager;
|
||||||
@ -265,14 +266,13 @@ public class RegressionTest extends TestCase {
|
|||||||
}
|
}
|
||||||
logger.info("Enqueue took " + (System.currentTimeMillis() - start) + "ms");
|
logger.info("Enqueue took " + (System.currentTimeMillis() - start) + "ms");
|
||||||
while (man.isIngestRunning()) {
|
while (man.isIngestRunning()) {
|
||||||
|
|
||||||
new Timeout("pausing", 1000).sleep(); // give it a second (or five) to process
|
new Timeout("pausing", 1000).sleep(); // give it a second (or five) to process
|
||||||
}
|
}
|
||||||
new Timeout("pausing", 15000).sleep(); // give it a second (or fifteen) to process
|
new Timeout("pausing", 15000).sleep(); // give it a second (or fifteen) to process
|
||||||
boolean sleep = true;
|
|
||||||
while (man.areModulesRunning()) {
|
while (man.areModulesRunning()) {
|
||||||
new Timeout("pausing", 5000).sleep(); // give it a second (or five) to process
|
new Timeout("pausing", 5000).sleep(); // give it a second (or five) to process
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.info("Ingest (including enqueue) took " + (System.currentTimeMillis() - start) + "ms");
|
logger.info("Ingest (including enqueue) took " + (System.currentTimeMillis() - start) + "ms");
|
||||||
// allow keyword search to finish saving artifacts, just in case
|
// allow keyword search to finish saving artifacts, just in case
|
||||||
// but randomize the timing so that we don't always get the same error
|
// but randomize the timing so that we don't always get the same error
|
||||||
@ -299,10 +299,13 @@ public class RegressionTest extends TestCase {
|
|||||||
logger.info("Generate Report Button");
|
logger.info("Generate Report Button");
|
||||||
JDialog reportDialog = JDialogOperator.waitJDialog("Generate Report", false, false);
|
JDialog reportDialog = JDialogOperator.waitJDialog("Generate Report", false, false);
|
||||||
JDialogOperator reportDialogOperator = new JDialogOperator(reportDialog);
|
JDialogOperator reportDialogOperator = new JDialogOperator(reportDialog);
|
||||||
|
JListOperator listOperator = new JListOperator(reportDialogOperator);
|
||||||
JButtonOperator jbo0 = new JButtonOperator(reportDialogOperator, "Next");
|
JButtonOperator jbo0 = new JButtonOperator(reportDialogOperator, "Next");
|
||||||
DateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy-HH-mm-ss");
|
DateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy-HH-mm-ss");
|
||||||
Date date = new Date();
|
Date date = new Date();
|
||||||
String datenotime = dateFormat.format(date);
|
String datenotime = dateFormat.format(date);
|
||||||
|
listOperator.clickOnItem(1, 1);
|
||||||
|
new Timeout("pausing", 1000).sleep();
|
||||||
jbo0.pushNoBlock();
|
jbo0.pushNoBlock();
|
||||||
new Timeout("pausing", 1000).sleep();
|
new Timeout("pausing", 1000).sleep();
|
||||||
JButtonOperator jbo1 = new JButtonOperator(reportDialogOperator, "Finish");
|
JButtonOperator jbo1 = new JButtonOperator(reportDialogOperator, "Finish");
|
||||||
|
@ -4,6 +4,29 @@ OpenIDE-Module-Long-Description=\
|
|||||||
Events for a selected day are viewable in the built-in result and content viewers.
|
Events for a selected day are viewable in the built-in result and content viewers.
|
||||||
OpenIDE-Module-Name=Timeline
|
OpenIDE-Module-Name=Timeline
|
||||||
CTL_MakeTimeline="Make Timeline (Beta)"
|
CTL_MakeTimeline="Make Timeline (Beta)"
|
||||||
|
CTL_TimelineView=Generate Timeline
|
||||||
OpenIDE-Module-Short-Description=Displays user activity timeline
|
OpenIDE-Module-Short-Description=Displays user activity timeline
|
||||||
TimelineProgressDialog.jLabel1.text=Creating timeline . . .
|
TimelineProgressDialog.jLabel1.text=Creating timeline . . .
|
||||||
TimelineFrame.title=Timeline
|
TimelineFrame.title=Timeline
|
||||||
|
Timeline.frameName.text={0} - Autopsy Timeline (Beta)
|
||||||
|
Timeline.resultsPanel.title=Timeline Results
|
||||||
|
Timeline.getName=Make Timeline (Beta)
|
||||||
|
Timeline.runJavaFxThread.progress.creating=Creating timeline . . .
|
||||||
|
Timeline.runJavaFxThread.progress.genBodyFile=Generating Bodyfile
|
||||||
|
Timeline.runJavaFxThread.progress.genMacTime=Generating Mactime
|
||||||
|
Timeline.runJavaFxThread.progress.parseMacTime=Parsing Mactime
|
||||||
|
Timeline.zoomOutButton.text=Zoom Out
|
||||||
|
Timeline.goToButton.text=Go To\:
|
||||||
|
Timeline.yearBarChart.x.years=Years
|
||||||
|
Timeline.yearBarChart.y.numEvents=Number of Events
|
||||||
|
Timeline.MonthsBarChart.x.monthYY=Month ({0})
|
||||||
|
Timeline.MonthsBarChart.y.numEvents=Number of Events
|
||||||
|
Timeline.eventsByMoBarChart.x.dayOfMo=Day of Month
|
||||||
|
Timeline.eventsByMoBarChart.y.numEvents=Number of Events
|
||||||
|
Timeline.node.emptyRoot=Empty Root
|
||||||
|
Timeline.resultPanel.loading=Loading...
|
||||||
|
Timeline.node.root=Root
|
||||||
|
Timeline.propChg.confDlg.timelineOOD.msg=Timeline is out of date. Would you like to regenerate it?
|
||||||
|
Timeline.propChg.confDlg.timelineOOD.details=Select an option
|
||||||
|
Timeline.initTimeline.confDlg.genBeforeIngest.msg=You are trying to generate a timeline before ingest has been completed. The timeline may be incomplete. Do you want to continue?
|
||||||
|
Timeline.initTimeline.confDlg.genBeforeIngest.deails=Timeline
|
||||||
|
@ -41,7 +41,9 @@ import java.util.List;
|
|||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
import java.util.Stack;
|
import java.util.Stack;
|
||||||
|
import java.util.TimeZone;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
import java.util.prefs.Preferences;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
import javafx.beans.value.ChangeListener;
|
import javafx.beans.value.ChangeListener;
|
||||||
import javafx.beans.value.ObservableValue;
|
import javafx.beans.value.ObservableValue;
|
||||||
@ -75,11 +77,11 @@ import org.openide.awt.ActionReference;
|
|||||||
import org.openide.awt.ActionReferences;
|
import org.openide.awt.ActionReferences;
|
||||||
import org.openide.awt.ActionRegistration;
|
import org.openide.awt.ActionRegistration;
|
||||||
import org.openide.modules.InstalledFileLocator;
|
import org.openide.modules.InstalledFileLocator;
|
||||||
import org.openide.modules.ModuleInstall;
|
|
||||||
import org.openide.nodes.Children;
|
import org.openide.nodes.Children;
|
||||||
import org.openide.nodes.Node;
|
import org.openide.nodes.Node;
|
||||||
import org.openide.util.HelpCtx;
|
import org.openide.util.HelpCtx;
|
||||||
import org.openide.util.NbBundle;
|
import org.openide.util.NbBundle;
|
||||||
|
import org.openide.util.NbPreferences;
|
||||||
import org.openide.util.actions.CallableSystemAction;
|
import org.openide.util.actions.CallableSystemAction;
|
||||||
import org.openide.util.actions.Presenter;
|
import org.openide.util.actions.Presenter;
|
||||||
import org.openide.util.lookup.Lookups;
|
import org.openide.util.lookup.Lookups;
|
||||||
@ -97,6 +99,7 @@ import org.sleuthkit.autopsy.datamodel.DisplayableItemNodeVisitor;
|
|||||||
import org.sleuthkit.autopsy.datamodel.FileNode;
|
import org.sleuthkit.autopsy.datamodel.FileNode;
|
||||||
import org.sleuthkit.autopsy.ingest.IngestManager;
|
import org.sleuthkit.autopsy.ingest.IngestManager;
|
||||||
import org.sleuthkit.autopsy.coreutils.ExecUtil;
|
import org.sleuthkit.autopsy.coreutils.ExecUtil;
|
||||||
|
import org.sleuthkit.autopsy.datamodel.ContentUtils;
|
||||||
import org.sleuthkit.datamodel.AbstractFile;
|
import org.sleuthkit.datamodel.AbstractFile;
|
||||||
import org.sleuthkit.datamodel.SleuthkitCase;
|
import org.sleuthkit.datamodel.SleuthkitCase;
|
||||||
import org.sleuthkit.datamodel.TskCoreException;
|
import org.sleuthkit.datamodel.TskCoreException;
|
||||||
@ -105,7 +108,7 @@ import org.sleuthkit.datamodel.TskCoreException;
|
|||||||
@ActionRegistration(displayName = "#CTL_MakeTimeline", lazy = false)
|
@ActionRegistration(displayName = "#CTL_MakeTimeline", lazy = false)
|
||||||
@ActionReferences(value = {
|
@ActionReferences(value = {
|
||||||
@ActionReference(path = "Menu/Tools", position = 100)})
|
@ActionReference(path = "Menu/Tools", position = 100)})
|
||||||
@NbBundle.Messages(value = "CTL_TimelineView=Generate Timeline")
|
//@NbBundle.Messages(value = "CTL_TimelineView=Generate Timeline")
|
||||||
/**
|
/**
|
||||||
* The Timeline Action entry point. Collects data and pushes data to javafx
|
* The Timeline Action entry point. Collects data and pushes data to javafx
|
||||||
* widgets
|
* widgets
|
||||||
@ -129,6 +132,7 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
|||||||
private ComboBox<String> fxDropdownSelectYears; //Dropdown box for selecting years. Useful when the charts' scale means some years are unclickable, despite having events.
|
private ComboBox<String> fxDropdownSelectYears; //Dropdown box for selecting years. Useful when the charts' scale means some years are unclickable, despite having events.
|
||||||
private final Stack<BarChart<String, Number>> fxStackPrevCharts = new Stack<BarChart<String, Number>>(); //Stack for storing drill-up information.
|
private final Stack<BarChart<String, Number>> fxStackPrevCharts = new Stack<BarChart<String, Number>>(); //Stack for storing drill-up information.
|
||||||
private BarChart<String, Number> fxChartTopLevel; //the topmost chart, used for resetting to default view.
|
private BarChart<String, Number> fxChartTopLevel; //the topmost chart, used for resetting to default view.
|
||||||
|
private BarChart<String, Number> fxMonthView; //the month chart
|
||||||
private DataResultPanel dataResultPanel;
|
private DataResultPanel dataResultPanel;
|
||||||
private DataContentPanel dataContentPanel;
|
private DataContentPanel dataContentPanel;
|
||||||
private ProgressHandle progress;
|
private ProgressHandle progress;
|
||||||
@ -142,12 +146,13 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
|||||||
private EventHandler<MouseEvent> fxMouseExitedListener;
|
private EventHandler<MouseEvent> fxMouseExitedListener;
|
||||||
private SleuthkitCase skCase;
|
private SleuthkitCase skCase;
|
||||||
private boolean fxInited = false;
|
private boolean fxInited = false;
|
||||||
|
private int monthCounter = 0;
|
||||||
|
|
||||||
public Timeline() {
|
public Timeline() {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
fxInited = Installer.isJavaFxInited();
|
fxInited = Installer.isJavaFxInited();
|
||||||
|
// TimeZone.setDefault(TimeZone.getTimeZone("UTC")); //sets the default timezone to UTC unless otherwise stated
|
||||||
}
|
}
|
||||||
|
|
||||||
//Swing components and JavafX components don't play super well together
|
//Swing components and JavafX components don't play super well together
|
||||||
@ -175,7 +180,8 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
|||||||
//Making the main frame *
|
//Making the main frame *
|
||||||
|
|
||||||
mainFrame = new TimelineFrame();
|
mainFrame = new TimelineFrame();
|
||||||
mainFrame.setFrameName(Case.getCurrentCase().getName() + " - Autopsy Timeline (Beta)");
|
mainFrame.setFrameName(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Timeline.frameName.text", Case.getCurrentCase().getName()));
|
||||||
|
|
||||||
//use the same icon on jframe as main application
|
//use the same icon on jframe as main application
|
||||||
mainFrame.setIconImage(WindowManager.getDefault().getMainWindow().getIconImage());
|
mainFrame.setIconImage(WindowManager.getDefault().getMainWindow().getIconImage());
|
||||||
@ -186,7 +192,9 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
|||||||
//dataContentPanel.setAlignmentX(Component.RIGHT_ALIGNMENT);
|
//dataContentPanel.setAlignmentX(Component.RIGHT_ALIGNMENT);
|
||||||
//dataContentPanel.setPreferredSize(new Dimension(FRAME_WIDTH, (int) (FRAME_HEIGHT * 0.4)));
|
//dataContentPanel.setPreferredSize(new Dimension(FRAME_WIDTH, (int) (FRAME_HEIGHT * 0.4)));
|
||||||
|
|
||||||
dataResultPanel = DataResultPanel.createInstance("Timeline Results", "", Node.EMPTY, 0, dataContentPanel);
|
dataResultPanel = DataResultPanel.createInstance(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Timeline.resultsPanel.title"),
|
||||||
|
"", Node.EMPTY, 0, dataContentPanel);
|
||||||
dataResultPanel.setContentViewer(dataContentPanel);
|
dataResultPanel.setContentViewer(dataContentPanel);
|
||||||
//dataResultPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
|
//dataResultPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
|
||||||
//dataResultPanel.setPreferredSize(new Dimension((int)(FRAME_WIDTH * 0.5), (int) (FRAME_HEIGHT * 0.5)));
|
//dataResultPanel.setPreferredSize(new Dimension((int)(FRAME_WIDTH * 0.5), (int) (FRAME_HEIGHT * 0.5)));
|
||||||
@ -211,7 +219,8 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
|||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
// start the progress bar
|
// start the progress bar
|
||||||
progress = ProgressHandleFactory.createHandle("Creating timeline . . .");
|
progress = ProgressHandleFactory.createHandle(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Timeline.runJavaFxThread.progress.creating"));
|
||||||
progress.start();
|
progress.start();
|
||||||
|
|
||||||
fxChartEvents = null; //important to reset old data
|
fxChartEvents = null; //important to reset old data
|
||||||
@ -239,11 +248,13 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
|||||||
if (!mactimeFile.exists()) {
|
if (!mactimeFile.exists()) {
|
||||||
progressDialog.setProgressTotal(3); //total 3 units
|
progressDialog.setProgressTotal(3); //total 3 units
|
||||||
logger.log(Level.INFO, "Creating body file");
|
logger.log(Level.INFO, "Creating body file");
|
||||||
progressDialog.updateProgressBar("Generating Bodyfile");
|
progressDialog.updateProgressBar(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Timeline.runJavaFxThread.progress.genBodyFile"));
|
||||||
String bodyFilePath = makeBodyFile();
|
String bodyFilePath = makeBodyFile();
|
||||||
progressDialog.updateProgressBar(++currentProgress);
|
progressDialog.updateProgressBar(++currentProgress);
|
||||||
logger.log(Level.INFO, "Creating mactime file: " + mactimeFile.getAbsolutePath());
|
logger.log(Level.INFO, "Creating mactime file: " + mactimeFile.getAbsolutePath());
|
||||||
progressDialog.updateProgressBar("Generating Mactime");
|
progressDialog.updateProgressBar(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Timeline.runJavaFxThread.progress.genMacTime"));
|
||||||
makeMacTime(bodyFilePath);
|
makeMacTime(bodyFilePath);
|
||||||
progressDialog.updateProgressBar(++currentProgress);
|
progressDialog.updateProgressBar(++currentProgress);
|
||||||
data = null;
|
data = null;
|
||||||
@ -253,7 +264,8 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
progressDialog.updateProgressBar("Parsing Mactime");
|
progressDialog.updateProgressBar(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Timeline.runJavaFxThread.progress.parseMacTime"));
|
||||||
if (data == null) {
|
if (data == null) {
|
||||||
logger.log(Level.INFO, "Parsing mactime file: " + mactimeFile.getAbsolutePath());
|
logger.log(Level.INFO, "Parsing mactime file: " + mactimeFile.getAbsolutePath());
|
||||||
data = parseMacTime(mactimeFile); //The sum total of the mactime parsing. YearEpochs contain everything you need to make a timeline.
|
data = parseMacTime(mactimeFile); //The sum total of the mactime parsing. YearEpochs contain everything you need to make a timeline.
|
||||||
@ -269,7 +281,7 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
|||||||
fxDropdownSelectYears = new ComboBox<String>(listSelect);
|
fxDropdownSelectYears = new ComboBox<String>(listSelect);
|
||||||
|
|
||||||
//Buttons for navigating up and down the timeline
|
//Buttons for navigating up and down the timeline
|
||||||
fxZoomOutButton = new Button("Zoom Out");
|
fxZoomOutButton = new Button(NbBundle.getMessage(this.getClass(), "Timeline.zoomOutButton.text"));
|
||||||
fxZoomOutButton.setOnAction(new EventHandler<ActionEvent>() {
|
fxZoomOutButton.setOnAction(new EventHandler<ActionEvent>() {
|
||||||
@Override
|
@Override
|
||||||
public void handle(ActionEvent e) {
|
public void handle(ActionEvent e) {
|
||||||
@ -301,7 +313,8 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
|||||||
|
|
||||||
//Adding things to the V and H boxes.
|
//Adding things to the V and H boxes.
|
||||||
//hBox_Charts stores the pseudo menu bar at the top of the timeline. |Zoom Out|View Year: [Select Year]|►|
|
//hBox_Charts stores the pseudo menu bar at the top of the timeline. |Zoom Out|View Year: [Select Year]|►|
|
||||||
fxHBoxCharts.getChildren().addAll(fxZoomOutButton, new Label("Go To:"), fxDropdownSelectYears);
|
fxHBoxCharts.getChildren().addAll(fxZoomOutButton, new Label(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Timeline.goToButton.text")), fxDropdownSelectYears);
|
||||||
fxVBox.getChildren().addAll(fxHBoxCharts, fxScrollEvents); //FxBox_V holds things in a visual stack.
|
fxVBox.getChildren().addAll(fxHBoxCharts, fxScrollEvents); //FxBox_V holds things in a visual stack.
|
||||||
fxGroupCharts.getChildren().add(fxVBox); //Adding the FxBox to the group. Groups make things easier to manipulate without having to update a hundred things every change.
|
fxGroupCharts.getChildren().add(fxVBox); //Adding the FxBox to the group. Groups make things easier to manipulate without having to update a hundred things every change.
|
||||||
fxPanelCharts.setScene(fxSceneCharts);
|
fxPanelCharts.setScene(fxSceneCharts);
|
||||||
@ -346,8 +359,8 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
|||||||
final Label l = new Label("");
|
final Label l = new Label("");
|
||||||
l.setStyle("-fx-font: 24 arial;");
|
l.setStyle("-fx-font: 24 arial;");
|
||||||
l.setTextFill(Color.AZURE);
|
l.setTextFill(Color.AZURE);
|
||||||
xAxis.setLabel("Years");
|
xAxis.setLabel(NbBundle.getMessage(this.getClass(), "Timeline.yearBarChart.x.years"));
|
||||||
yAxis.setLabel("Number of Events");
|
yAxis.setLabel(NbBundle.getMessage(this.getClass(), "Timeline.yearBarChart.y.numEvents"));
|
||||||
//Charts are made up of individual pieces of Chart.Data. In this case, a piece of barData is a single bar on the graph.
|
//Charts are made up of individual pieces of Chart.Data. In this case, a piece of barData is a single bar on the graph.
|
||||||
//Data is packaged into a series, which can be assigned custom colors or styling
|
//Data is packaged into a series, which can be assigned custom colors or styling
|
||||||
//After the series are created, 1 or more series are packaged into a single chart.
|
//After the series are created, 1 or more series are packaged into a single chart.
|
||||||
@ -410,11 +423,10 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
|||||||
* Always 12 per year, empty months are represented by no bar.
|
* Always 12 per year, empty months are represented by no bar.
|
||||||
*/
|
*/
|
||||||
private BarChart<String, Number> createMonthsWithDrill(final YearEpoch ye) {
|
private BarChart<String, Number> createMonthsWithDrill(final YearEpoch ye) {
|
||||||
|
|
||||||
final CategoryAxis xAxis = new CategoryAxis();
|
final CategoryAxis xAxis = new CategoryAxis();
|
||||||
final NumberAxis yAxis = new NumberAxis();
|
final NumberAxis yAxis = new NumberAxis();
|
||||||
xAxis.setLabel("Month (" + ye.year + ")");
|
xAxis.setLabel(NbBundle.getMessage(this.getClass(), "Timeline.MonthsBarChart.x.monthYY", ye.year));
|
||||||
yAxis.setLabel("Number of Events");
|
yAxis.setLabel(NbBundle.getMessage(this.getClass(), "Timeline.MonthsBarChart.y.numEvents"));
|
||||||
ObservableList<BarChart.Series<String, Number>> bcData = FXCollections.observableArrayList();
|
ObservableList<BarChart.Series<String, Number>> bcData = FXCollections.observableArrayList();
|
||||||
|
|
||||||
BarChart.Series<String, Number> se = new BarChart.Series<String, Number>();
|
BarChart.Series<String, Number> se = new BarChart.Series<String, Number>();
|
||||||
@ -465,7 +477,7 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
|||||||
bc.autosize();
|
bc.autosize();
|
||||||
bc.setPrefWidth(FRAME_WIDTH);
|
bc.setPrefWidth(FRAME_WIDTH);
|
||||||
bc.setLegendVisible(false);
|
bc.setLegendVisible(false);
|
||||||
fxStackPrevCharts.push(bc);
|
fxMonthView= bc;
|
||||||
return bc;
|
return bc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -477,8 +489,8 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
|||||||
private BarChart<String, Number> createEventsByMonth(final MonthEpoch me, final YearEpoch ye) {
|
private BarChart<String, Number> createEventsByMonth(final MonthEpoch me, final YearEpoch ye) {
|
||||||
final CategoryAxis xAxis = new CategoryAxis();
|
final CategoryAxis xAxis = new CategoryAxis();
|
||||||
final NumberAxis yAxis = new NumberAxis();
|
final NumberAxis yAxis = new NumberAxis();
|
||||||
xAxis.setLabel("Day of Month");
|
xAxis.setLabel(NbBundle.getMessage(this.getClass(), "Timeline.eventsByMoBarChart.x.dayOfMo"));
|
||||||
yAxis.setLabel("Number of Events");
|
yAxis.setLabel(NbBundle.getMessage(this.getClass(), "Timeline.eventsByMoBarChart.y.numEvents"));
|
||||||
ObservableList<BarChart.Data<String, Number>> bcData = makeObservableListByMonthAllDays(me, ye.getYear());
|
ObservableList<BarChart.Data<String, Number>> bcData = makeObservableListByMonthAllDays(me, ye.getYear());
|
||||||
BarChart.Series<String, Number> series = new BarChart.Series<String, Number>(bcData);
|
BarChart.Series<String, Number> series = new BarChart.Series<String, Number>(bcData);
|
||||||
series.setName(me.getMonthName() + " " + ye.getYear());
|
series.setName(me.getMonthName() + " " + ye.getYear());
|
||||||
@ -507,9 +519,10 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
//reset the view and free the current nodes before loading new ones
|
//reset the view and free the current nodes before loading new ones
|
||||||
final FileRootNode d = new FileRootNode("Empty Root", new ArrayList<Long>());
|
final FileRootNode d = new FileRootNode(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Timeline.node.emptyRoot"), new ArrayList<Long>());
|
||||||
dataResultPanel.setNode(d);
|
dataResultPanel.setNode(d);
|
||||||
dataResultPanel.setPath("Loading...");
|
dataResultPanel.setPath(NbBundle.getMessage(this.getClass(), "Timeline.resultPanel.loading"));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
final int day = (Integer.valueOf((barData.getXValue()).split("-")[1]));
|
final int day = (Integer.valueOf((barData.getXValue()).split("-")[1]));
|
||||||
@ -525,7 +538,8 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
|||||||
SwingUtilities.invokeLater(new Runnable() {
|
SwingUtilities.invokeLater(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
final FileRootNode d = new FileRootNode("Root", afs);
|
final FileRootNode d = new FileRootNode(
|
||||||
|
NbBundle.getMessage(this.getClass(), "Timeline.node.root"), afs);
|
||||||
dataResultPanel.setNode(d);
|
dataResultPanel.setNode(d);
|
||||||
//set result viewer title path with the current date
|
//set result viewer title path with the current date
|
||||||
String dateString = ye.getYear() + "-" + (1 + me.getMonthInt()) + "-" + +de.dayNum;
|
String dateString = ye.getYear() + "-" + (1 + me.getMonthInt()) + "-" + +de.dayNum;
|
||||||
@ -539,6 +553,12 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
|||||||
}
|
}
|
||||||
bc.autosize();
|
bc.autosize();
|
||||||
bc.setPrefWidth(FRAME_WIDTH);
|
bc.setPrefWidth(FRAME_WIDTH);
|
||||||
|
monthCounter++;
|
||||||
|
if (monthCounter==12)
|
||||||
|
{
|
||||||
|
fxStackPrevCharts.push(fxMonthView);
|
||||||
|
monthCounter=0;
|
||||||
|
}
|
||||||
return bc;
|
return bc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -620,7 +640,12 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int answer = JOptionPane.showConfirmDialog(mainFrame, "Timeline is out of date. Would you like to regenerate it?", "Select an option", JOptionPane.YES_NO_OPTION);
|
int answer = JOptionPane.showConfirmDialog(mainFrame,
|
||||||
|
NbBundle.getMessage(this.getClass(),
|
||||||
|
"Timeline.propChg.confDlg.timelineOOD.msg"),
|
||||||
|
NbBundle.getMessage(this.getClass(),
|
||||||
|
"Timeline.propChg.confDlg.timelineOOD.details"),
|
||||||
|
JOptionPane.YES_NO_OPTION);
|
||||||
if (answer != JOptionPane.YES_OPTION) {
|
if (answer != JOptionPane.YES_OPTION) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -914,17 +939,35 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
|||||||
|
|
||||||
int prevYear = -1;
|
int prevYear = -1;
|
||||||
YearEpoch ye = null;
|
YearEpoch ye = null;
|
||||||
|
|
||||||
while (scan.hasNextLine()) {
|
while (scan.hasNextLine()) {
|
||||||
String[] s = scan.nextLine().split(","); //1999-02-08T11:08:08Z, 78706, m..b, rrwxrwxrwx, 0, 0, 8355, /img...
|
String[] s = scan.nextLine().split(","); //1999-02-08T11:08:08Z, 78706, m..b, rrwxrwxrwx, 0, 0, 8355, /img...
|
||||||
|
|
||||||
// break the date into mon, day and year: Note that the ISO times are in GMT
|
// break the date into year,month,day,hour,minute, and second: Note that the ISO times are in GMT
|
||||||
String[] datetime = s[0].split("T"); //{1999-02-08, 11:08:08Z}
|
String delims = "[T:Z\\-]+"; //split by the delimiters
|
||||||
String[] date = datetime[0].split("-"); // {1999, 02, 08}
|
String[] date = s[0].split(delims); //{1999,02,08,11,08,08,...}
|
||||||
|
|
||||||
int year = Integer.valueOf(date[0]);
|
int year = Integer.valueOf(date[0]);
|
||||||
int month = Integer.valueOf(date[1]) - 1; //Months are zero indexed: 1 = February, 6 = July, 11 = December
|
int month = Integer.valueOf(date[1]) - 1; //Months are zero indexed: 1 = February, 6 = July, 11 = December
|
||||||
int day = Integer.valueOf(date[2]); //Days are 1 indexed
|
int day = Integer.valueOf(date[2]); //Days are 1 indexed
|
||||||
|
int hour=Integer.valueOf(date[3]);
|
||||||
|
int minute=Integer.valueOf(date[4]);
|
||||||
|
int second=Integer.valueOf(date[5]);
|
||||||
|
|
||||||
// get the object id out of the modified outpu
|
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT")); //set calendar to GMT due to ISO format
|
||||||
|
calendar.set(year, month, day, hour, minute, second);
|
||||||
|
day=calendar.get(Calendar.DAY_OF_MONTH); // this is needed or else timezone change wont work. probably incorrect optimization by compiler
|
||||||
|
|
||||||
|
//conversion to GMT
|
||||||
|
|
||||||
|
if (!ContentUtils.getDisplayInLocalTime()) {
|
||||||
|
calendar.setTimeZone(TimeZone.getTimeZone("GMT"));
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
calendar.setTimeZone(TimeZone.getDefault());// local timezone OF the user. should be what the user SETS at startup
|
||||||
|
}
|
||||||
|
|
||||||
|
day=calendar.get(Calendar.DAY_OF_MONTH);//get the day which may be affected by timezone change
|
||||||
long ObjId = Long.valueOf(s[4]);
|
long ObjId = Long.valueOf(s[4]);
|
||||||
|
|
||||||
// when the year changes, create and add a new YearEpoch object to the list
|
// when the year changes, create and add a new YearEpoch object to the list
|
||||||
@ -961,7 +1004,6 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
|||||||
// Get report path
|
// Get report path
|
||||||
String bodyFilePath = moduleDir.getAbsolutePath()
|
String bodyFilePath = moduleDir.getAbsolutePath()
|
||||||
+ java.io.File.separator + currentCase.getName() + "-" + datenotime + ".txt";
|
+ java.io.File.separator + currentCase.getName() + "-" + datenotime + ".txt";
|
||||||
|
|
||||||
// Run query to get all files
|
// Run query to get all files
|
||||||
final String filesAndDirs = "name != '.' "
|
final String filesAndDirs = "name != '.' "
|
||||||
+ "AND name != '..'";
|
+ "AND name != '..'";
|
||||||
@ -1123,9 +1165,10 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
|||||||
|
|
||||||
if (IngestManager.getDefault().isIngestRunning()) {
|
if (IngestManager.getDefault().isIngestRunning()) {
|
||||||
int answer = JOptionPane.showConfirmDialog(new JFrame(),
|
int answer = JOptionPane.showConfirmDialog(new JFrame(),
|
||||||
"You are trying to generate a timeline before "
|
NbBundle.getMessage(this.getClass(),
|
||||||
+ "ingest has been completed. The timeline may be "
|
"Timeline.initTimeline.confDlg.genBeforeIngest.msg"),
|
||||||
+ "incomplete. Do you want to continue?", "Timeline",
|
NbBundle.getMessage(this.getClass(),
|
||||||
|
"Timeline.initTimeline.confDlg.genBeforeIngest.deails"),
|
||||||
JOptionPane.YES_NO_OPTION);
|
JOptionPane.YES_NO_OPTION);
|
||||||
if (answer != JOptionPane.YES_OPTION) {
|
if (answer != JOptionPane.YES_OPTION) {
|
||||||
return;
|
return;
|
||||||
@ -1177,7 +1220,7 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return "Make Timeline (Beta)";
|
return NbBundle.getMessage(this.getClass(), "Timeline.getName");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -6,6 +6,14 @@
|
|||||||
<code-name-base>org.sleuthkit.autopsy.thunderbirdparser</code-name-base>
|
<code-name-base>org.sleuthkit.autopsy.thunderbirdparser</code-name-base>
|
||||||
<suite-component/>
|
<suite-component/>
|
||||||
<module-dependencies>
|
<module-dependencies>
|
||||||
|
<dependency>
|
||||||
|
<code-name-base>org.openide.util</code-name-base>
|
||||||
|
<build-prerequisite/>
|
||||||
|
<compile-dependency/>
|
||||||
|
<run-dependency>
|
||||||
|
<specification-version>8.25.1</specification-version>
|
||||||
|
</run-dependency>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<code-name-base>org.sleuthkit.autopsy.core</code-name-base>
|
<code-name-base>org.sleuthkit.autopsy.core</code-name-base>
|
||||||
<build-prerequisite/>
|
<build-prerequisite/>
|
||||||
|
@ -4,3 +4,24 @@ OpenIDE-Module-Long-Description=\
|
|||||||
The module extracts Thunderbird e-mail folder hierarchy from the ingested disk image and posts the folder hierarchy and e-mail messages found as results.
|
The module extracts Thunderbird e-mail folder hierarchy from the ingested disk image and posts the folder hierarchy and e-mail messages found as results.
|
||||||
OpenIDE-Module-Name=ThunderbirdParser
|
OpenIDE-Module-Name=ThunderbirdParser
|
||||||
OpenIDE-Module-Short-Description=Thunderbird Parser e-mail extractor ingest module
|
OpenIDE-Module-Short-Description=Thunderbird Parser e-mail extractor ingest module
|
||||||
|
MboxParser.parse.errMsg.failedToReadFile=Failed to read mbox file from disk.
|
||||||
|
MboxParser.parse.errMsg.couldntFindCharset=Couldn't find appropriate charset encoder.
|
||||||
|
MboxParser.parse.errMsg.failedToParseNMsgs=Failed to extract {0} email messages.
|
||||||
|
MboxParser.handleAttch.errMsg.failedToCreateOnDisk=Failed to extract attachment to disk\: {0}
|
||||||
|
MboxParser.handleAttch.failedWriteToDisk=Failed to extract attachment to disk\: {0}
|
||||||
|
PstParser.parse.errMsg.failedToParseNMsgs=Failed to extract {0} email messages.
|
||||||
|
PstParser.extractAttch.errMsg.failedToExtractToDisk=Failed to extract attachment to disk\: {0}
|
||||||
|
ThunderbirdMboxFileIngestModule.moduleName=Email Parser
|
||||||
|
ThunderbirdMboxFileIngestModule.hashDbModuleName=Hash Lookup
|
||||||
|
ThunderbirdMboxFileIngestModule.processPst.errMsg.outOfDiskSpace=Out of disk space. Can''t copy {0} to parse.
|
||||||
|
ThunderbirdMboxFileIngestModule.encryptionFileLevel=File-level Encryption
|
||||||
|
ThunderbirdMboxFileIngestModule.processPst.errProcFile.msg=Error while processing {0}
|
||||||
|
ThunderbirdMboxFileIngestModule.processPst.errProcFile.details=Only files from Outlook 2003 and later are supported.
|
||||||
|
ThunderbirdMboxFileIngestModule.processPst.errProcFile.msg2=Error while processing {0}
|
||||||
|
ThunderbirdMboxFileIngestModule.processMBox.errProcFile.msg=Error while processing {0}
|
||||||
|
ThunderbirdMboxFileIngestModule.processMBox.errProfFile.details=Out of disk space. Can't copy file to parse.
|
||||||
|
ThunderbirdMboxFileIngestModule.processMBox.errProcFile.msg2=Error while processing {0}
|
||||||
|
ThunderbirdMboxFileIngestModule.getDesc.text=This module detects and parses mbox and pst/ost files and populates email artifacts in the blackboard.
|
||||||
|
ThunderbirdMboxFileIngestModule.handleAttch.errMsg=Error processing {0}
|
||||||
|
ThunderbirdMboxFileIngestModule.handleAttch.errMsg.details=Failed to add attachment named {0} to the case.
|
||||||
|
ThunderbirdMboxFileIngestModule.notAvail=Not available
|
||||||
|
@ -54,6 +54,7 @@ import org.apache.james.mime4j.message.DefaultMessageBuilder;
|
|||||||
import org.apache.james.mime4j.stream.MimeConfig;
|
import org.apache.james.mime4j.stream.MimeConfig;
|
||||||
import org.apache.tika.parser.txt.CharsetDetector;
|
import org.apache.tika.parser.txt.CharsetDetector;
|
||||||
import org.apache.tika.parser.txt.CharsetMatch;
|
import org.apache.tika.parser.txt.CharsetMatch;
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.ingest.IngestServices;
|
import org.sleuthkit.autopsy.ingest.IngestServices;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -116,14 +117,14 @@ import org.sleuthkit.autopsy.ingest.IngestServices;
|
|||||||
// Not the right encoder
|
// Not the right encoder
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
logger.log(Level.WARNING, "couldn't find mbox file.", ex);
|
logger.log(Level.WARNING, "couldn't find mbox file.", ex);
|
||||||
addErrorMessage("Failed to read mbox file from disk.");
|
addErrorMessage(NbBundle.getMessage(this.getClass(), "MboxParser.parse.errMsg.failedToReadFile"));
|
||||||
return Collections.EMPTY_LIST;
|
return Collections.EMPTY_LIST;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If no encoders work, post an error message and return.
|
// If no encoders work, post an error message and return.
|
||||||
if (mboxIterator == null || theEncoder == null) {
|
if (mboxIterator == null || theEncoder == null) {
|
||||||
addErrorMessage("Couldn't find appropriate charset encoder.");
|
addErrorMessage(NbBundle.getMessage(this.getClass(), "MboxParser.parse.errMsg.couldntFindCharset"));
|
||||||
return Collections.EMPTY_LIST;
|
return Collections.EMPTY_LIST;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,7 +143,8 @@ import org.sleuthkit.autopsy.ingest.IngestServices;
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (failCount > 0) {
|
if (failCount > 0) {
|
||||||
addErrorMessage("Failed to extract " + failCount + " email messages.");
|
addErrorMessage(
|
||||||
|
NbBundle.getMessage(this.getClass(), "MboxParser.parse.errMsg.failedToParseNMsgs", failCount));
|
||||||
}
|
}
|
||||||
return emails;
|
return emails;
|
||||||
}
|
}
|
||||||
@ -255,7 +257,9 @@ import org.sleuthkit.autopsy.ingest.IngestServices;
|
|||||||
try {
|
try {
|
||||||
fos = new FileOutputStream(outPath);
|
fos = new FileOutputStream(outPath);
|
||||||
} catch (FileNotFoundException ex) {
|
} catch (FileNotFoundException ex) {
|
||||||
addErrorMessage("Failed to extract attachment to disk: " + filename);
|
addErrorMessage(
|
||||||
|
NbBundle.getMessage(this.getClass(),
|
||||||
|
"MboxParser.handleAttch.errMsg.failedToCreateOnDisk", filename));
|
||||||
logger.log(Level.INFO, "Failed to create file output stream for: " + outPath, ex);
|
logger.log(Level.INFO, "Failed to create file output stream for: " + outPath, ex);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -270,7 +274,7 @@ import org.sleuthkit.autopsy.ingest.IngestServices;
|
|||||||
}
|
}
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
logger.log(Level.INFO, "Failed to write mbox email attachment to disk.", ex);
|
logger.log(Level.INFO, "Failed to write mbox email attachment to disk.", ex);
|
||||||
addErrorMessage("Failed to extract attachment to disk: " + filename);
|
addErrorMessage(NbBundle.getMessage(this.getClass(), "MboxParser.handleAttch.failedWriteToDisk", filename));
|
||||||
return;
|
return;
|
||||||
} finally {
|
} finally {
|
||||||
try {
|
try {
|
||||||
|
@ -33,6 +33,8 @@ import java.util.Collections;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.ingest.IngestServices;
|
import org.sleuthkit.autopsy.ingest.IngestServices;
|
||||||
import static org.sleuthkit.autopsy.thunderbirdparser.ThunderbirdMboxFileIngestModule.getRelModuleOutputPath;
|
import static org.sleuthkit.autopsy.thunderbirdparser.ThunderbirdMboxFileIngestModule.getRelModuleOutputPath;
|
||||||
import org.sleuthkit.datamodel.AbstractFile;
|
import org.sleuthkit.datamodel.AbstractFile;
|
||||||
@ -80,7 +82,8 @@ class PstParser {
|
|||||||
pstFile = new PSTFile(file);
|
pstFile = new PSTFile(file);
|
||||||
failures = processFolder(pstFile.getRootFolder(), "\\", true);
|
failures = processFolder(pstFile.getRootFolder(), "\\", true);
|
||||||
if (failures > 0) {
|
if (failures > 0) {
|
||||||
addErrorMessage("Failed to extract " + failures + " email messages.");
|
addErrorMessage(
|
||||||
|
NbBundle.getMessage(this.getClass(), "PstParser.parse.errMsg.failedToParseNMsgs", failures));
|
||||||
}
|
}
|
||||||
return ParseResult.OK;
|
return ParseResult.OK;
|
||||||
} catch (PSTException | IOException ex) {
|
} catch (PSTException | IOException ex) {
|
||||||
@ -219,7 +222,9 @@ class PstParser {
|
|||||||
attachment.setSize(attach.getFilesize());
|
attachment.setSize(attach.getFilesize());
|
||||||
email.addAttachment(attachment);
|
email.addAttachment(attachment);
|
||||||
} catch (PSTException | IOException ex) {
|
} catch (PSTException | IOException ex) {
|
||||||
addErrorMessage("Failed to extract attachment to disk: " + filename);
|
addErrorMessage(
|
||||||
|
NbBundle.getMessage(this.getClass(), "PstParser.extractAttch.errMsg.failedToExtractToDisk",
|
||||||
|
filename));
|
||||||
logger.log(Level.WARNING, "Failed to extract attachment from pst file.", ex);
|
logger.log(Level.WARNING, "Failed to extract attachment from pst file.", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,8 @@ import java.io.IOException;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.casemodule.Case;
|
import org.sleuthkit.autopsy.casemodule.Case;
|
||||||
import org.sleuthkit.autopsy.casemodule.services.FileManager;
|
import org.sleuthkit.autopsy.casemodule.services.FileManager;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
@ -53,8 +55,10 @@ public class ThunderbirdMboxFileIngestModule extends IngestModuleAbstractFile {
|
|||||||
private static final Logger logger = Logger.getLogger(ThunderbirdMboxFileIngestModule.class.getName());
|
private static final Logger logger = Logger.getLogger(ThunderbirdMboxFileIngestModule.class.getName());
|
||||||
private static ThunderbirdMboxFileIngestModule instance = null;
|
private static ThunderbirdMboxFileIngestModule instance = null;
|
||||||
private IngestServices services;
|
private IngestServices services;
|
||||||
private static final String MODULE_NAME = "Email Parser";
|
private static final String MODULE_NAME = NbBundle.getMessage(ThunderbirdMboxFileIngestModule.class,
|
||||||
private final String hashDBModuleName = "Hash Lookup";
|
"ThunderbirdMboxFileIngestModule.moduleName");
|
||||||
|
private final String hashDBModuleName = NbBundle.getMessage(ThunderbirdMboxFileIngestModule.class,
|
||||||
|
"ThunderbirdMboxFileIngestModule.hashDbModuleName");
|
||||||
final public static String MODULE_VERSION = Version.getVersion();
|
final public static String MODULE_VERSION = Version.getVersion();
|
||||||
private int messageId = 0;
|
private int messageId = 0;
|
||||||
private FileManager fileManager;
|
private FileManager fileManager;
|
||||||
@ -132,7 +136,10 @@ public class ThunderbirdMboxFileIngestModule extends IngestModuleAbstractFile {
|
|||||||
|
|
||||||
if (abstractFile.getSize() >= services.getFreeDiskSpace()) {
|
if (abstractFile.getSize() >= services.getFreeDiskSpace()) {
|
||||||
logger.log(Level.WARNING, "Not enough disk space to write file to disk.");
|
logger.log(Level.WARNING, "Not enough disk space to write file to disk.");
|
||||||
IngestMessage msg = IngestMessage.createErrorMessage(messageId++, this, getName(), "Out of disk space. Can't copy " + abstractFile.getName() + " to parse.");
|
IngestMessage msg = IngestMessage.createErrorMessage(messageId++, this, getName(),
|
||||||
|
NbBundle.getMessage(this.getClass(),
|
||||||
|
"ThunderbirdMboxFileIngestModule.processPst.errMsg.outOfDiskSpace",
|
||||||
|
abstractFile.getName()));
|
||||||
services.postMessage(msg);
|
services.postMessage(msg);
|
||||||
return ProcessResult.OK;
|
return ProcessResult.OK;
|
||||||
}
|
}
|
||||||
@ -155,14 +162,18 @@ public class ThunderbirdMboxFileIngestModule extends IngestModuleAbstractFile {
|
|||||||
try {
|
try {
|
||||||
BlackboardArtifact generalInfo = abstractFile.getGenInfoArtifact();
|
BlackboardArtifact generalInfo = abstractFile.getGenInfoArtifact();
|
||||||
generalInfo.addAttribute(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_ENCRYPTION_DETECTED.getTypeID(),
|
generalInfo.addAttribute(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_ENCRYPTION_DETECTED.getTypeID(),
|
||||||
MODULE_NAME, "File-level Encryption"));
|
MODULE_NAME,
|
||||||
|
NbBundle.getMessage(this.getClass(), "ThunderbirdMboxFileIngestModule.encryptionFileLevel")));
|
||||||
} catch (TskCoreException ex) {
|
} catch (TskCoreException ex) {
|
||||||
logger.log(Level.INFO, "Failed to add encryption attribute to file: " + abstractFile.getName());
|
logger.log(Level.INFO, "Failed to add encryption attribute to file: " + abstractFile.getName());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// parsing error: log message
|
// parsing error: log message
|
||||||
postErrorMessage("Error while processing " + abstractFile.getName(),
|
postErrorMessage(
|
||||||
"Only files from Outlook 2003 and later are supported.");
|
NbBundle.getMessage(this.getClass(), "ThunderbirdMboxFileIngestModule.processPst.errProcFile.msg",
|
||||||
|
abstractFile.getName()),
|
||||||
|
NbBundle.getMessage(this.getClass(),
|
||||||
|
"ThunderbirdMboxFileIngestModule.processPst.errProcFile.details"));
|
||||||
logger.log(Level.INFO, "PSTParser failed to parse " + abstractFile.getName());
|
logger.log(Level.INFO, "PSTParser failed to parse " + abstractFile.getName());
|
||||||
return ProcessResult.ERROR;
|
return ProcessResult.ERROR;
|
||||||
}
|
}
|
||||||
@ -173,7 +184,9 @@ public class ThunderbirdMboxFileIngestModule extends IngestModuleAbstractFile {
|
|||||||
|
|
||||||
String errors = parser.getErrors();
|
String errors = parser.getErrors();
|
||||||
if (errors.isEmpty() == false) {
|
if (errors.isEmpty() == false) {
|
||||||
postErrorMessage("Error while processing " + abstractFile.getName(), errors);
|
postErrorMessage(
|
||||||
|
NbBundle.getMessage(this.getClass(), "ThunderbirdMboxFileIngestModule.processPst.errProcFile.msg2",
|
||||||
|
abstractFile.getName()), errors);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ProcessResult.OK;
|
return ProcessResult.OK;
|
||||||
@ -206,8 +219,11 @@ public class ThunderbirdMboxFileIngestModule extends IngestModuleAbstractFile {
|
|||||||
|
|
||||||
if (abstractFile.getSize() >= services.getFreeDiskSpace()) {
|
if (abstractFile.getSize() >= services.getFreeDiskSpace()) {
|
||||||
logger.log(Level.WARNING, "Not enough disk space to write file to disk.");
|
logger.log(Level.WARNING, "Not enough disk space to write file to disk.");
|
||||||
postErrorMessage("Error while processing " + abstractFile.getName(),
|
postErrorMessage(
|
||||||
"Out of disk space. Can't copy file to parse.");
|
NbBundle.getMessage(this.getClass(), "ThunderbirdMboxFileIngestModule.processMBox.errProcFile.msg",
|
||||||
|
abstractFile.getName()),
|
||||||
|
NbBundle.getMessage(this.getClass(),
|
||||||
|
"ThunderbirdMboxFileIngestModule.processMBox.errProfFile.details"));
|
||||||
return ProcessResult.OK;
|
return ProcessResult.OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -229,7 +245,9 @@ public class ThunderbirdMboxFileIngestModule extends IngestModuleAbstractFile {
|
|||||||
|
|
||||||
String errors = parser.getErrors();
|
String errors = parser.getErrors();
|
||||||
if (errors.isEmpty() == false) {
|
if (errors.isEmpty() == false) {
|
||||||
postErrorMessage("Error while processing " + abstractFile.getName(), errors);
|
postErrorMessage(
|
||||||
|
NbBundle.getMessage(this.getClass(), "ThunderbirdMboxFileIngestModule.processMBox.errProcFile.msg2",
|
||||||
|
abstractFile.getName()), errors);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ProcessResult.OK;
|
return ProcessResult.OK;
|
||||||
@ -275,7 +293,7 @@ public class ThunderbirdMboxFileIngestModule extends IngestModuleAbstractFile {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDescription() {
|
public String getDescription() {
|
||||||
return "This module detects and parses mbox and pst/ost files and populates email artifacts in the blackboard.";
|
return NbBundle.getMessage(this.getClass(), "ThunderbirdMboxFileIngestModule.getDesc.text");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -347,8 +365,11 @@ public class ThunderbirdMboxFileIngestModule extends IngestModuleAbstractFile {
|
|||||||
MODULE_NAME, MODULE_VERSION, "");
|
MODULE_NAME, MODULE_VERSION, "");
|
||||||
files.add(df);
|
files.add(df);
|
||||||
} catch (TskCoreException ex) {
|
} catch (TskCoreException ex) {
|
||||||
postErrorMessage("Error processing " + abstractFile.getName(),
|
postErrorMessage(
|
||||||
"Failed to add attachment named " + filename + " to the case.");
|
NbBundle.getMessage(this.getClass(), "ThunderbirdMboxFileIngestModule.handleAttch.errMsg",
|
||||||
|
abstractFile.getName()),
|
||||||
|
NbBundle.getMessage(this.getClass(),
|
||||||
|
"ThunderbirdMboxFileIngestModule.handleAttch.errMsg.details", filename));
|
||||||
logger.log(Level.INFO, "", ex);
|
logger.log(Level.INFO, "", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -399,7 +420,8 @@ public class ThunderbirdMboxFileIngestModule extends IngestModuleAbstractFile {
|
|||||||
if (rtf.isEmpty() == false) {
|
if (rtf.isEmpty() == false) {
|
||||||
bbattributes.add(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_EMAIL_CONTENT_RTF.getTypeID(), MODULE_NAME, rtf));
|
bbattributes.add(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_EMAIL_CONTENT_RTF.getTypeID(), MODULE_NAME, rtf));
|
||||||
}
|
}
|
||||||
bbattributes.add(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_MSG_ID.getTypeID(), MODULE_NAME, ((id < 0L) ? "Not available" : String.valueOf(id))));
|
bbattributes.add(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_MSG_ID.getTypeID(), MODULE_NAME, ((id < 0L) ? NbBundle
|
||||||
|
.getMessage(this.getClass(), "ThunderbirdMboxFileIngestModule.notAvail") : String.valueOf(id))));
|
||||||
if (subject.isEmpty() == false) {
|
if (subject.isEmpty() == false) {
|
||||||
bbattributes.add(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_SUBJECT.getTypeID(), MODULE_NAME, subject));
|
bbattributes.add(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_SUBJECT.getTypeID(), MODULE_NAME, subject));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user