"MD5"); if (!java.nio.file.Files.exists(journalDirectory)) { try { java.nio.file.Files.createDirectories(journalDirectory); } catch (IOException e) { LOG.error("Cannot create journal directory at {}, please check the permissions", journalDirectory.toAbsolutePath()); throw new UncheckedIOException(e); committedReadOffsetFile = new File(journalDirectory.toFile(), "graylog2-committed-read-offset"); try { if (!committedReadOffsetFile.createNewFile()) { final AccessDeniedException accessDeniedException = new AccessDeniedException(committedReadOffsetFile.getAbsolutePath(), null, e.getMessage()); throw new RuntimeException(accessDeniedException); kafkaScheduler.startup(); logManager = new LogManager( new File[]{journalDirectory.toFile()}, Map$.MODULE$.<String, LogConfig>empty(), defaultConfig,
@Test @DisabledOnOs( OS.WINDOWS ) void shouldGiveAClearErrorMessageIfTheDestinationsParentDirectoryIsNotWritable() throws IOException { Path archive = testDirectory.file( "the-archive.dump" ).toPath(); Path destination = testDirectory.directory( "subdir/the-destination" ).toPath(); Files.createDirectories( destination.getParent() ); try ( Closeable ignored = withPermissions( destination.getParent(), emptySet() ) ) { AccessDeniedException exception = assertThrows( AccessDeniedException.class, () -> new Loader().load( archive, destination, destination ) ); assertEquals( destination.getParent().toString(), exception.getMessage() ); } }
@Override public void setReadOnly(FsEntryName name) throws IOException { Path file = target.resolve(name.getPath()); // Confirmed: There is no equivalent NIO.2 method, e.g. something like // setAttribute(file, "readOnly", Boolean.TRUE, null); // is not available! if (!file.toFile().setReadOnly()) if (exists(file)) throw new AccessDeniedException(file.toString()); // just guessing here else throw new FileNotFoundException(file.toString()); }
Path path = Files.createTempFile("digdag-", ".bat"); try { try (InputStream in = res.readEntity(InputStream.class)) { try (OutputStream out = Files.newOutputStream(path)) { ByteStreams.copy(in, out); path.toFile().setExecutable(true, false); path.toFile().setReadable(true, false); Path near = dest.getParent().resolve(".digdag.selfupdate.bat"); try { Files.move(path, near, REPLACE_EXISTING); path = near; throw systemExit(String.format(ENGLISH, "%s: permission denied\nhint: don't you need \"sudo\"?", ex.getMessage()));
public PathContentProvider(String contentType, Path filePath, int bufferSize) throws IOException { super(contentType); if (!Files.isRegularFile(filePath)) throw new NoSuchFileException(filePath.toString()); if (!Files.isReadable(filePath)) throw new AccessDeniedException(filePath.toString()); this.filePath = filePath; this.fileSize = Files.size(filePath); this.bufferSize = bufferSize; }
@Override public void checkAccess(AccessMode mode) throws AccessDeniedException { switch (mode) { case READ: // always fine break; case WRITE: if (this.readOnly) { throw new AccessDeniedException(this.path.toString()); } break; case EXECUTE: // always fine break; default: throw new UnsupportedOperationException("access mode " + mode + " is not supported"); } }
public static void checkWritableDirectory( Path directory ) throws FileSystemException { if ( !exists( directory ) ) { throw new NoSuchFileException( directory.toString() ); } if ( isRegularFile( directory ) ) { throw new FileSystemException( directory.toString() + ": Not a directory" ); } if ( !isWritable( directory ) ) { throw new AccessDeniedException( directory.toString() ); } }
allLines.add(preFn.apply(tempFile1.toAbsolutePath().toString())); allLines.addAll(Arrays.asList(lines)); allLines.add(postFn.apply(tempFile1.toAbsolutePath().toString(), null)); allLines.add(postFn.apply(tmpDirPath, isWindows ? new AccessDeniedException(tmpDirPath) : new IOException("Is a directory")));
if (status && Files.isDirectory(path, linkOptions)) { String localName = name.replace('/', File.separatorChar); // in case we are running on Windows file = path.resolve(localName); } else if (status && Files.isRegularFile(path, linkOptions)) { file = path; } else if (!status) { Path parent = path.getParent(); throw new AccessDeniedException("Receive file parent (" + parent + ") existence status cannot be determined for " + path); if (parentStatus && Files.isDirectory(parent, linkOptions)) { file = path; throw new AccessDeniedException("Receive file existence status cannot be determined: " + file);
public void receiveDir(String header, Path local, ScpTimestamp time, boolean preserve, int bufferSize) throws IOException { Path path = Objects.requireNonNull(local, "No local path").normalize().toAbsolutePath(); if (!header.startsWith("D")) { throw new IOException("Expected a 'D; message but got '" + header + "'"); Boolean status = IoUtils.checkFileExists(path, options); if (status == null) { throw new AccessDeniedException("Receive directory existence status cannot be determined: " + path); if (status && Files.isDirectory(path, options)) { String localName = name.replace('/', File.separatorChar); file = path.resolve(localName); } else if (!status) { Path parent = path.getParent(); throw new AccessDeniedException("Receive directory parent (" + parent + ") existence status cannot be determined for " + path); if (status && Files.isDirectory(parent, options)) { file = path; throw new AccessDeniedException("Receive directory file existence status cannot be determined: " + file); if (!(status && Files.isDirectory(file, options))) { Files.createDirectory(file);
@Override protected String doOpenDir(int id, String path, Path p, LinkOption... options) throws IOException { Boolean status = IoUtils.checkFileExists(p, options); if (status == null) { throw signalOpenFailure(id, path, p, true, new AccessDeniedException(p.toString(), p.toString(), "Cannot determine open-dir existence")); } if (!status) { throw signalOpenFailure(id, path, p, true, new NoSuchFileException(path, path, "Referenced target directory N/A")); } else if (!Files.isDirectory(p, options)) { throw signalOpenFailure(id, path, p, true, new NotDirectoryException(path)); } else if (!Files.isReadable(p)) { throw signalOpenFailure(id, path, p, true, new AccessDeniedException(p.toString(), p.toString(), "Not readable")); } else { String handle; try { synchronized (handles) { handle = generateFileHandle(p); DirectoryHandle dirHandle = new DirectoryHandle(this, p, handle); handles.put(handle, dirHandle); } } catch (IOException e) { throw signalOpenFailure(id, path, p, true, e); } return handle; } }
ArrayNode resultList = JsonNodeFactory.instance.arrayNode(); try (DirectoryStream<Path> directoryStream = Files.newDirectoryStream(Paths.get(repositoryBasePath, path))) { SimpleDateFormat dt = new SimpleDateFormat(dateFormat); for (Path pathObj : directoryStream) { BasicFileAttributes attrs = Files.readAttributes(pathObj, BasicFileAttributes.class); element.put("name", pathObj.getFileName().toString()); element.put("rights", getPermissions(pathObj)); element.put("date", dt.format(new Date(attrs.lastModifiedTime().toMillis()))); } catch (AccessDeniedException ex) { logger.error("[List files] - Access denied to read file", ex); return error("Access denied to read file " + ex.getMessage()); } catch (IOException ex) { logger.error("[List files] - Error list files of " + path, ex);
Path result = Paths.get(dumpDir.toString(), fileName); try { if (createDirectory) { return Files.createDirectory(result); } else { try { return Files.createFile(result); } catch (AccessDeniedException e) { throw Files.isDirectory(result, NOFOLLOW_LINKS) ? new FileAlreadyExistsException(e.getFile()) : e;
Boolean status = IoUtils.checkFileExists(localPath, options); if (status == null) { throw new AccessDeniedException("Receive directory existence status cannot be determined: " + localPath); if (status && Files.isDirectory(localPath, options)) { String localName = name.replace('/', File.separatorChar); file = localPath.resolve(localName); } else if (!status) { Path parent = localPath.getParent(); throw new AccessDeniedException("Receive directory parent (" + parent + ") existence status cannot be determined for " + localPath); if (status && Files.isDirectory(parent, options)) { file = localPath; throw new AccessDeniedException("Receive directory file existence status cannot be determined: " + file); if (!(status && Files.isDirectory(file, options))) { Files.createDirectory(file);
throw new AccessDeniedException(path.toString(), path.toString(), "File not opened for read"); if (Files.isDirectory(path, IoUtils.getLinkOptions(true))) { throw new NotDirectoryException(path.toString()); long totalSize = Files.size(path); if ((startOffset == 0L) && (length == 0L)) { effectiveLength = totalSize;
protected void doMakeDirectory(int id, String path, Map<String, ?> attrs, LinkOption... options) throws IOException { Path p = resolveFile(path); ServerSession session = getServerSession(); if (log.isDebugEnabled()) { log.debug("doMakeDirectory({})[id={}] SSH_FXP_MKDIR (path={}[{}], attrs={})", session, id, path, p, attrs); } Boolean status = IoUtils.checkFileExists(p, options); if (status == null) { throw new AccessDeniedException(p.toString(), p.toString(), "Cannot validate make-directory existence"); } if (status) { if (Files.isDirectory(p, options)) { throw new FileAlreadyExistsException(p.toString(), p.toString(), "Target directory already exists"); } else { throw new FileAlreadyExistsException(p.toString(), p.toString(), "Already exists as a file"); } } else { SftpEventListener listener = getSftpEventListenerProxy(); listener.creating(session, p, attrs); try { Files.createDirectory(p); doSetAttributes(p, attrs); } catch (IOException | RuntimeException e) { listener.created(session, p, attrs, e); throw e; } listener.created(session, p, attrs, null); } }
final ChunkHeader chunkHeader = seekToStartOfMetadata(fc, existingTag, file.toString()); logger.info(file + "Current Space allocated:" + existingTag.getSizeOfID3TagOnly() + ":NewTagRequires:" + bb.limit()); deleteTagChunk(fc, existingTag, chunkHeader, file.toString()); fc.position(fc.size()); writeExtraByteIfChunkOddSize(fc, fc.size()); deleteRemainderOfFile(fc, existingTag, file.toString()); fc.position(fc.size()); writeExtraByteIfChunkOddSize(fc, fc.size()); throw new NoWritePermissionsException(file + ":" + ade.getMessage());
throw new AccessDeniedException(path.toString(), path.toString(), "File not opened for read"); for (int index = 0; Files.isSymbolicLink(path) && (index < Byte.MAX_VALUE /* TODO make this configurable */); index++) { path = Files.readSymbolicLink(path); if (Files.isSymbolicLink(path)) { throw new FileSystemLoopException(target); if (Files.isDirectory(path, IoUtils.getLinkOptions(false))) { throw new NotDirectoryException(path.toString());
protected void doRemove(int id, String path, LinkOption... options) throws IOException { Path p = resolveFile(path); if (log.isDebugEnabled()) { log.debug("doRemove({})[id={}] SSH_FXP_REMOVE (path={}[{}])", getServerSession(), id, path, p); } Boolean status = IoUtils.checkFileExists(p, options); if (status == null) { throw signalRemovalPreConditionFailure(id, path, p, new AccessDeniedException(p.toString(), p.toString(), "Cannot determine existence of remove candidate")); } else if (!status) { throw signalRemovalPreConditionFailure(id, path, p, new NoSuchFileException(p.toString(), p.toString(), "Removal candidate not found")); } else if (Files.isDirectory(p, options)) { throw signalRemovalPreConditionFailure(id, path, p, new SftpException(SftpConstants.SSH_FX_FILE_IS_A_DIRECTORY, p.toString() + " is a folder")); } else { doRemove(id, p); } }
int srcAccess = srcHandle.getAccessMask(); if ((srcAccess & SftpConstants.ACE4_READ_DATA) != SftpConstants.ACE4_READ_DATA) { throw new AccessDeniedException(srcPath.toString(), srcPath.toString(), "Source file not opened for read"); ValidateUtils.checkTrue(readOffset >= 0L, "Invalid read offset: %d", readOffset); long totalSize = Files.size(srcHandle.getFile()); long effectiveLength = readLength; if (effectiveLength == 0L) { int dstAccess = dstHandle.getAccessMask(); if ((dstAccess & SftpConstants.ACE4_WRITE_DATA) != SftpConstants.ACE4_WRITE_DATA) { throw new AccessDeniedException(srcHandle.toString(), srcHandle.toString(), "Source handle not opened for write");