mirror of
https://github.com/elisspace/autopsy.git
synced 2026-09-29 05:49:50 +00:00
4961 WindowsRegistryViewer working as a FileTypeViewer
This commit is contained in:
@@ -52,4 +52,6 @@ interface FileTypeViewer {
|
||||
* fine. Otherwise, it is ambiguous.
|
||||
*/
|
||||
void resetComponent();
|
||||
|
||||
boolean isSupported(AbstractFile file);
|
||||
}
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
*/
|
||||
package org.sleuthkit.autopsy.contentviewers;
|
||||
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import java.awt.Component;
|
||||
import java.util.HashMap;
|
||||
@@ -50,7 +49,8 @@ public class FileViewer extends javax.swing.JPanel implements DataContentViewer
|
||||
new SQLiteViewer(),
|
||||
new PListViewer(),
|
||||
new MediaFileViewer(),
|
||||
new HtmlViewer()
|
||||
new HtmlViewer(),
|
||||
new WindowsRegistryViewer()
|
||||
};
|
||||
|
||||
private FileTypeViewer lastViewer;
|
||||
@@ -81,10 +81,15 @@ public class FileViewer extends javax.swing.JPanel implements DataContentViewer
|
||||
*
|
||||
* @param mimeType
|
||||
*
|
||||
* @return FileTypeViewer, null if no known content viewer supports the mimetype
|
||||
* @return FileTypeViewer, null if no known content viewer supports the
|
||||
* mimetype
|
||||
*/
|
||||
private FileTypeViewer getSupportingViewer(String mimeType) {
|
||||
return mimeTypeToViewerMap.get(mimeType);
|
||||
private FileTypeViewer getSupportingViewer(AbstractFile file) {
|
||||
FileTypeViewer viewer = mimeTypeToViewerMap.get(file.getMIMEType());
|
||||
if (viewer == null || viewer.isSupported(file)) {
|
||||
return viewer;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -102,12 +107,11 @@ public class FileViewer extends javax.swing.JPanel implements DataContentViewer
|
||||
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
// End of variables declaration//GEN-END:variables
|
||||
|
||||
@Override
|
||||
public void setNode(Node selectedNode) {
|
||||
|
||||
|
||||
resetComponent();
|
||||
|
||||
|
||||
if (selectedNode == null) {
|
||||
return;
|
||||
}
|
||||
@@ -123,27 +127,22 @@ public class FileViewer extends javax.swing.JPanel implements DataContentViewer
|
||||
try {
|
||||
FileTypeDetector fileTypeDetector = new FileTypeDetector();
|
||||
mimeType = fileTypeDetector.getMIMEType(file);
|
||||
}catch (FileTypeDetector.FileTypeDetectorInitException ex) {
|
||||
} catch (FileTypeDetector.FileTypeDetectorInitException ex) {
|
||||
LOGGER.log(Level.SEVERE, "Failed to initialize FileTypeDetector.", ex); //NON-NLS
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (mimeType.equalsIgnoreCase("application/octet-stream")) {
|
||||
return;
|
||||
}
|
||||
else {
|
||||
FileTypeViewer viewer = getSupportingViewer(mimeType);
|
||||
if (viewer != null) {
|
||||
lastViewer = viewer;
|
||||
|
||||
viewer.setFile(file);
|
||||
this.removeAll();
|
||||
this.add(viewer.getComponent());
|
||||
this.repaint();
|
||||
}
|
||||
FileTypeViewer viewer = getSupportingViewer(file);
|
||||
if (viewer != null) {
|
||||
lastViewer = viewer;
|
||||
|
||||
viewer.setFile(file);
|
||||
this.removeAll();
|
||||
this.add(viewer.getComponent());
|
||||
this.repaint();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -196,44 +195,36 @@ public class FileViewer extends javax.swing.JPanel implements DataContentViewer
|
||||
try {
|
||||
FileTypeDetector fileTypeDetector = new FileTypeDetector();
|
||||
mimeType = fileTypeDetector.getMIMEType(aFile);
|
||||
}catch (FileTypeDetector.FileTypeDetectorInitException ex) {
|
||||
} catch (FileTypeDetector.FileTypeDetectorInitException ex) {
|
||||
LOGGER.log(Level.SEVERE, "Failed to initialize FileTypeDetector.", ex); //NON-NLS
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (mimeType.equalsIgnoreCase("application/octet-stream")) {
|
||||
return false;
|
||||
} else {
|
||||
return (getSupportingViewer(mimeType) != null);
|
||||
}
|
||||
|
||||
|
||||
return (getSupportingViewer(aFile) != null);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int isPreferred(Node node) {
|
||||
AbstractFile file = node.getLookup().lookup(AbstractFile.class);
|
||||
String mimeType = file.getMIMEType();
|
||||
|
||||
|
||||
if (Strings.isNullOrEmpty(mimeType)) {
|
||||
LOGGER.log(Level.INFO, "Mimetype not known for file: {0}", file.getName()); //NON-NLS
|
||||
try {
|
||||
FileTypeDetector fileTypeDetector = new FileTypeDetector();
|
||||
mimeType = fileTypeDetector.getMIMEType(file);
|
||||
}catch (FileTypeDetector.FileTypeDetectorInitException ex) {
|
||||
} catch (FileTypeDetector.FileTypeDetectorInitException ex) {
|
||||
LOGGER.log(Level.SEVERE, "Failed to initialize FileTypeDetector.", ex); //NON-NLS
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (mimeType.equalsIgnoreCase("application/octet-stream")) {
|
||||
return 0;
|
||||
} else {
|
||||
if (null != getSupportingViewer(mimeType)) {
|
||||
return CONFIDENCE_LEVEL;
|
||||
}
|
||||
|
||||
if (null != getSupportingViewer(file)) {
|
||||
return CONFIDENCE_LEVEL;
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,29 +37,28 @@ final class HtmlViewer extends javax.swing.JPanel implements FileTypeViewer {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private static final Logger logger = Logger.getLogger(HtmlViewer.class.getName());
|
||||
|
||||
|
||||
private static final String[] SUPPORTED_MIMETYPES = new String[]{
|
||||
"text/html",
|
||||
"application/xhtml+xml"
|
||||
"text/html",
|
||||
"application/xhtml+xml"
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Creates new form HtmlViewerPanel
|
||||
*/
|
||||
HtmlViewer() {
|
||||
initComponents();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve the HTML text content from the supplied file.
|
||||
*
|
||||
*
|
||||
* @param abstractFile The file to read.
|
||||
*
|
||||
*
|
||||
* @return The text content of the file.
|
||||
*/
|
||||
@NbBundle.Messages({
|
||||
"HtmlViewer_file_error=This file is missing or unreadable.",
|
||||
})
|
||||
"HtmlViewer_file_error=This file is missing or unreadable.",})
|
||||
private String getHtmlText(AbstractFile abstractFile) {
|
||||
try {
|
||||
int fileSize = (int) abstractFile.getSize();
|
||||
@@ -128,4 +127,9 @@ final class HtmlViewer extends javax.swing.JPanel implements FileTypeViewer {
|
||||
public void resetComponent() {
|
||||
htmlPanel.reset();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSupported(AbstractFile file) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -191,4 +191,8 @@ class MediaFileViewer extends javax.swing.JPanel implements FileTypeViewer {
|
||||
|
||||
boolean isSupported(AbstractFile file);
|
||||
}
|
||||
@Override
|
||||
public boolean isSupported(AbstractFile file){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -538,6 +538,11 @@ class PListViewer extends javax.swing.JPanel implements FileTypeViewer, Explorer
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSupported(AbstractFile file){
|
||||
return true;
|
||||
}
|
||||
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
private javax.swing.JButton exportButton;
|
||||
private javax.swing.JPanel hdrPanel;
|
||||
|
||||
@@ -413,8 +413,8 @@ class SQLiteViewer extends javax.swing.JPanel implements FileTypeViewer {
|
||||
currentTableHeader = new ArrayList<>();
|
||||
viewReader.read(tableName);
|
||||
Map<String, Object> columnRow = new LinkedHashMap<>();
|
||||
for(int i = 0; i< currentTableHeader.size(); i++){
|
||||
columnRow.put(currentTableHeader.get(i), "");
|
||||
for (int i = 0; i < currentTableHeader.size(); i++) {
|
||||
columnRow.put(currentTableHeader.get(i), "");
|
||||
}
|
||||
selectedTableView.setupTable(Collections.singletonList(columnRow));
|
||||
}
|
||||
@@ -617,4 +617,9 @@ class SQLiteViewer extends javax.swing.JPanel implements FileTypeViewer {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSupported(AbstractFile file) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,9 +48,11 @@ class WindowsRegistryViewer extends JPanel implements FileTypeViewer {
|
||||
|
||||
WindowsRegistryViewer() {
|
||||
super(new BorderLayout());
|
||||
System.out.println("CREATED REGISTRY VIEWER");
|
||||
}
|
||||
|
||||
private void setDataView(Content content) {
|
||||
System.out.println("setDataview called");
|
||||
if (content == null) {
|
||||
this.resetComponent();
|
||||
return;
|
||||
@@ -80,11 +82,13 @@ class WindowsRegistryViewer extends JPanel implements FileTypeViewer {
|
||||
|
||||
@Override
|
||||
public Component getComponent() {
|
||||
System.out.println("component GOTTEN");
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resetComponent() {
|
||||
System.out.println("RESETING COMP");
|
||||
// cleanup anything
|
||||
if (this.regview != null) {
|
||||
this.remove(this.regview);
|
||||
@@ -92,7 +96,9 @@ class WindowsRegistryViewer extends JPanel implements FileTypeViewer {
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isSupported(AbstractFile file) {
|
||||
@Override
|
||||
public boolean isSupported(AbstractFile file) {
|
||||
System.out.println("IS THIS SUPPORTED?");
|
||||
if (file == null) {
|
||||
return false;
|
||||
}
|
||||
@@ -111,19 +117,23 @@ class WindowsRegistryViewer extends JPanel implements FileTypeViewer {
|
||||
RegistryHive hive = new RegistryHiveBuffer(buf);
|
||||
try {
|
||||
hive.getHeader();
|
||||
System.out.println("is supported " + file.getName());
|
||||
return true;
|
||||
} catch (RegistryParseException ex) {
|
||||
System.out.println("not supported "+ file.getName());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getSupportedMIMETypes() {
|
||||
System.out.println("GET SUPPORTED MIME TYPES");
|
||||
return Arrays.asList(SUPPORTED_MIMETYPES);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFile(AbstractFile file) {
|
||||
System.out.println("SET THE FILE");
|
||||
if (file == null) {
|
||||
resetComponent();
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user