Class ModifiableFileWatcher

java.lang.Object
org.apache.sshd.common.util.logging.AbstractLoggingBean
org.apache.sshd.common.util.io.ModifiableFileWatcher
Direct Known Subclasses:
AuthorizedKeysAuthenticator, ClientIdentityFileWatcher, ConfigFileHostEntryResolver, FileWatcherKeyPairResourceLoader, KnownHostsServerKeyVerifier

public class ModifiableFileWatcher extends AbstractLoggingBean
Watches over changes for a file and re-loads them if file has changed - including if file is deleted or (re-)created
  • Field Details

  • Constructor Details

    • ModifiableFileWatcher

      public ModifiableFileWatcher(Path file)
    • ModifiableFileWatcher

      public ModifiableFileWatcher(Path file, LinkOption... options)
  • Method Details

    • getPath

      public final Path getPath()
      Returns:
      The watched Path
    • exists

      public final boolean exists() throws IOException
      Throws:
      IOException
    • size

      public final long size() throws IOException
      Throws:
      IOException
    • lastModified

      public final FileTime lastModified() throws IOException
      Throws:
      IOException
    • checkReloadRequired

      public boolean checkReloadRequired() throws IOException
      Returns:
      true if the watched file has probably been changed
      Throws:
      IOException - If failed to query file data
    • resetReloadAttributes

      public void resetReloadAttributes()
      Resets the state attributes used to detect changes to the initial construction values - i.e., file assumed not to exist and no known size of modify time
    • updateReloadAttributes

      public void updateReloadAttributes() throws IOException
      May be called to refresh the state attributes used to detect changes e.g., file existence, size and last-modified time once re-loading is successfully completed. If the file does not exist then the attributes are reset to an "unknown" state.
      Throws:
      IOException - If failed to access the file (if exists)
      See Also:
    • toPathResource

      public PathResource toPathResource()
    • toPathResource

      public PathResource toPathResource(OpenOption... options)
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • validateStrictConfigFilePermissions

      public static AbstractMap.SimpleImmutableEntry<String,Object> validateStrictConfigFilePermissions(Path path, LinkOption... options) throws IOException

      Checks if a path has strict permissions

      • (For Unix) The path may not have group or others write permissions

      • The path must be owned by current user.

      • (For Unix) The path may be owned by root.

      Parameters:
      path - The Path to be checked - ignored if null or does not exist
      options - The LinkOptions to use to query the file's permissions
      Returns:
      The violated permission as AbstractMap.SimpleImmutableEntry where key is a loggable message and value is the offending object - e.g., PosixFilePermission or String for owner. Return value is null if no violations detected
      Throws:
      IOException - If failed to retrieve the permissions
      See Also: