/** * {@inheritDoc} */ @Override public final IdentificationRequest<File> newRequest(RequestMetaData metaData, RequestIdentifier identifier) { return new FileSystemIdentificationRequest(metaData, identifier); }
@Override public void handle(IdentificationRequest request) throws IOException { if (request.getClass().isAssignableFrom(FileSystemIdentificationRequest.class)) { FileSystemIdentificationRequest req = (FileSystemIdentificationRequest) request; Iso9660FileSystem fileSystem = new Iso9660FileSystem(req.getFile(), true); ISOImageArchiveWalker walker = new ISOImageArchiveWalker(droid, factory, resultHandler, fileSystem, request.getIdentifier()); walker.walk(fileSystem); } else { log.info("Identification request for ISO image ignored due to limited support."); } }
@Override public void handle(IdentificationRequest request) throws IOException { if (request.getClass().isAssignableFrom(FileSystemIdentificationRequest.class)) { FileSystemIdentificationRequest req = (FileSystemIdentificationRequest) request; FileVolumeManager fileVolumeManager = new FileVolumeManager(req.getFile()); try { try (Archive archive = new Archive(fileVolumeManager)) { if (archive.isEncrypted()) { throw new RuntimeException("Encrypted archive"); } RarWalker walker = new RarWalker(archive, req.getIdentifier()); walker.walk(archive.getFileHeaders()); } } catch (RarException ex) { throw new RuntimeException("Rar procesing failed :", ex); } } else { log.info("Identification request for RAR archive ignored due to limited support."); } }
@Override public void handle(IdentificationRequest request) throws IOException { // TODO: upgrade to 2.0.2 version of java-iso-tools once released and adapt WindowReader to SeekableInput. // ISO images can only be instantiated from files right now, as the 2.0.1 code only supports File as // an input source. The 2.0.2-SNAPSHOT code in GitHub supports a "SeekableInput" interface, // which we could easily adapt a WindowReader to once the 2.0.2 code is released. // This would allow us to process ISO files no matter where they came from (e.g. in a zip file). // TODO: alternatively - DROID could fork the ISO code if the project has stopped making new releases. // The last release was back in 2015, so it may be that the project is now basically inactive. if (request.getClass().isAssignableFrom(FileSystemIdentificationRequest.class)) { FileSystemIdentificationRequest req = (FileSystemIdentificationRequest) request; Iso9660FileSystem fileSystem = new Iso9660FileSystem(req.getFile().toFile(), true); ISOImageArchiveWalker walker = new ISOImageArchiveWalker(droid, factory, resultHandler, fileSystem, request.getIdentifier()); walker.walk(fileSystem); } else { log.info("Identification request for ISO image ignored due to limited support."); } }
/** * @param uri to identify * @param request identification request. Only FileSystemIdentificationRequest is supported. * @throws CommandExecutionException ex. */ public void identify(final URI uri, final IdentificationRequest request) throws CommandExecutionException { final String newPath = makeContainerURI("zip", request.getFileName()); setSlash1(""); if (request.getClass().isAssignableFrom(FileSystemIdentificationRequest.class)) { FileSystemIdentificationRequest req = (FileSystemIdentificationRequest) request; try { try (Iso9660FileSystem fileSystem = new Iso9660FileSystem(req.getFile().toFile(), true)) { for (Iso9660FileEntry entry : fileSystem) { processEntry(entry, uri, fileSystem, newPath); } } } catch (IOException e) { throw new CommandExecutionException("IO error in ISOFileSystem", e); } } else { log.info("Identification request for ISO image ignored due to limited support."); } }
/** * {@inheritDoc} */ @Override public final IdentificationRequest<Path> newRequest(RequestMetaData metaData, RequestIdentifier identifier) { return new FileSystemIdentificationRequest(metaData, identifier); }
/** * @param uri to identify * @param request identification request. Only FileSystemIdentificationRequest is supported. * @throws CommandExecutionException ex. */ public void identify(final URI uri, final IdentificationRequest request) throws CommandExecutionException { final String newPath = makeContainerURI("fat", request.getFileName()); setSlash1(""); if (request.getClass().isAssignableFrom(FileSystemIdentificationRequest.class)) { FileSystemIdentificationRequest req = (FileSystemIdentificationRequest) request; try { FileDisk fileDisk = new FileDisk(req.getFile().toFile(), true); FileSystem fatSystem = FileSystemFactory.create(fileDisk, true); FsDirectory root = fatSystem.getRoot(); for (FsDirectoryEntry entry : root) { processEntry(entry, uri, newPath); } } catch (IOException e) { throw new CommandExecutionException("IO error in FatFileSystem", e); } } else { log.info("Identification request for Fat image ignored due to limited support."); } }
/** * Helper method to open an identification request. */ private void openIdentificationRequest(File file) { try { URI resourceUri = file.toURI(); RequestMetaData metadata = new RequestMetaData(file.length(), file.lastModified(), file.getName()); RequestIdentifier requestIdentifier = new RequestIdentifier(resourceUri); identificationRequest = new FileSystemIdentificationRequest(metadata, requestIdentifier); FileInputStream inputStream = new FileInputStream(file); identificationRequest.open(inputStream); } catch (Exception e) { log.error("Could not open identification request.", e); } }
/** * @param uri to identify * @param request identification request. Only FileSystemIdentificationRequest is supported. * @throws CommandExecutionException ex. */ public void identify(final URI uri, final IdentificationRequest request) throws CommandExecutionException { final String newPath = makeContainerURI("7z", request.getFileName()); setSlash1(""); if (request.getClass().isAssignableFrom(FileSystemIdentificationRequest.class)) { FileSystemIdentificationRequest req = (FileSystemIdentificationRequest) request; try { SevenZStreamFactory sevenZStreamFactory = new SevenZStreamFactory(); try (ArchiveInputStream archiveStream = sevenZStreamFactory.getArchiveInputStream(req.getFile().toFile(), null)) { SevenZArchiveEntry entry; while ((entry = (SevenZArchiveEntry) archiveStream.getNextEntry()) != null) { processEntry(entry, archiveStream, uri, newPath); } } } catch (IOException e) { throw new CommandExecutionException("IO error in 7z FileSystem", e); } } else { log.info("Identification request for 7z archive ignored due to limited support."); } }
IdentificationRequest request = new FileSystemIdentificationRequest( metaData, identifier); try {
/** * @param uri to identify * @param request identification request. Only FileSystemIdentificationRequest is supported. * @throws CommandExecutionException ex. */ public void identify(final URI uri, final IdentificationRequest request) throws CommandExecutionException { final String newPath = makeContainerURI("rar", request.getFileName()); setSlash1(""); if (request.getClass().isAssignableFrom(FileSystemIdentificationRequest.class)) { FileSystemIdentificationRequest req = (FileSystemIdentificationRequest) request; FileVolumeManager fileVolumeManager = new FileVolumeManager(req.getFile().toFile()); try { try (Archive archive = new Archive(fileVolumeManager)) { if (archive.isEncrypted()) { log.info("encrypted rar"); } else { for (FileHeader entry : archive.getFileHeaders()) { processEntry(entry, archive, uri, newPath); } } } } catch (IOException e) { throw new CommandExecutionException("IO error in RARFileSystem", e); } catch (RarException ex) { throw new CommandExecutionException("Rar exception in RARFileSystem", ex); } } else { log.info("Identification request for RAR archive ignored due to limited support."); } }
identifier.setParentId(1L); try(final IdentificationRequest<Path> request = new FileSystemIdentificationRequest(metaData, identifier)) { request.open(file); IdentificationResultCollection results =
if (FileSystemIdentificationRequest.class.isAssignableFrom(request.getClass())) { FileSystemIdentificationRequest req = FileSystemIdentificationRequest.class.cast(request); reader = new POIFSFileSystem(req.getFile().toFile()); } else { reader = new POIFSFileSystem(in);
if (FileSystemIdentificationRequest.class.isAssignableFrom(request.getClass())) { FileSystemIdentificationRequest req = FileSystemIdentificationRequest.class.cast(request); reader = new POIFSFileSystem(req.getFile()); } else { reader = new POIFSFileSystem(in);