Class SftpHelper

    • Field Detail

      • DEFAULT_SUBSTATUS_MESSAGE

        public static final Map<Integer,​String> DEFAULT_SUBSTATUS_MESSAGE
    • Method Detail

      • getEndOfFileIndicatorValue

        public static Boolean getEndOfFileIndicatorValue​(Buffer buffer,
                                                         int version)
        Retrieves the end-of-file indicator for SSH_FXP_DATA responses, provided the version is at least 6, and the buffer has enough available data
        Parameters:
        buffer - The Buffer to retrieve the data from
        version - The SFTP version being used
        Returns:
        The indicator value - null if none retrieved
        See Also:
        SFTP v6 - section 9.3
      • indicateEndOfNamesList

        public static Boolean indicateEndOfNamesList​(Buffer buffer,
                                                     int version,
                                                     PropertyResolver resolver,
                                                     boolean indicatorValue)
        Appends the end-of-list indicator for SSH_FXP_NAME responses, provided the version is at least 6, the feature is enabled and the indicator value is not null
        Parameters:
        buffer - The Buffer to append the indicator
        version - The SFTP version being used
        resolver - The PropertyResolver to query whether to enable the feature
        indicatorValue - The indicator value - null means don't append the indicator
        Returns:
        The actual indicator value used - null if none appended
        See Also:
        SFTP v6 - section 9.4, SftpModuleProperties.APPEND_END_OF_LIST_INDICATOR
      • writeAttrs

        public static <B extends Buffer> B writeAttrs​(B buffer,
                                                      int version,
                                                      Map<String,​?> attributes)
        Writes a file / folder's attributes to a buffer
        Type Parameters:
        B - Type of Buffer being updated
        Parameters:
        buffer - The target buffer instance
        version - The output encoding version
        attributes - The Map of attributes
        Returns:
        The updated buffer
        See Also:
        writeAttrsV3(Buffer, int, Map), writeAttrsV4(Buffer, int, Map)
      • writeAttrsV3

        public static <B extends Buffer> B writeAttrsV3​(B buffer,
                                                        int version,
                                                        Map<String,​?> attributes)
        Writes the retrieved file / directory attributes in V3 format
        Type Parameters:
        B - Type of Buffer being updated
        Parameters:
        buffer - The target buffer instance
        version - The actual version - must be SftpConstants.SFTP_V3
        attributes - The Map of attributes
        Returns:
        The updated buffer
      • writeAttrsV4

        public static <B extends Buffer> B writeAttrsV4​(B buffer,
                                                        int version,
                                                        Map<String,​?> attributes)
        Writes the retrieved file / directory attributes in V4+ format
        Type Parameters:
        B - Type of Buffer being updated
        Parameters:
        buffer - The target buffer instance
        version - The actual version - must be at least SftpConstants.SFTP_V4
        attributes - The Map of attributes
        Returns:
        The updated buffer
      • attributesToPermissions

        public static int attributesToPermissions​(boolean isReg,
                                                  boolean isDir,
                                                  boolean isLnk,
                                                  Collection<PosixFilePermission> perms)
        Converts a file / folder's attributes into a mask
        Parameters:
        isReg - true if this is a normal file
        isDir - true if this is a directory
        isLnk - true if this is a symbolic link
        perms - The file / folder's access PosixFilePermissions
        Returns:
        A mask encoding the file / folder's attributes
      • permissionsToFileType

        public static int permissionsToFileType​(int perms)
        Converts a POSIX permissions mask to a file type value
        Parameters:
        perms - The POSIX permissions mask
        Returns:
        The file type - see SSH_FILEXFER_TYPE_xxx values
      • fileTypeToPermission

        public static int fileTypeToPermission​(int type)
        Converts a file type into a POSIX permission mask value
        Parameters:
        type - File type - see SSH_FILEXFER_TYPE_xxx values
        Returns:
        The matching POSIX permission mask value
      • permissionsToAttributes

        public static Set<PosixFilePermission> permissionsToAttributes​(int perms)
        Translates a mask of permissions into its enumeration values equivalents
        Parameters:
        perms - The permissions mask
        Returns:
        A Set of the equivalent PosixFilePermissions
      • resolveSubstatus

        public static int resolveSubstatus​(Throwable t)
        Returns the most adequate sub-status for the provided exception
        Parameters:
        t - The thrown Throwable
        Returns:
        The matching sub-status
      • resolveStatusMessage

        public static String resolveStatusMessage​(int subStatus)
      • writeExtensions

        public static <B extends Buffer> B writeExtensions​(B buffer,
                                                           Map<?,​?> extensions)
      • buildAclEntry

        public static AclEntry buildAclEntry​(int aclType,
                                             int aclFlag,
                                             int aclMask,
                                             String aclWho)
      • decodeAclEntryType

        public static AclEntryType decodeAclEntryType​(int aclType)
        Parameters:
        aclType - The ACE4_ACCESS_xxx_ACE_TYPE value
        Returns:
        The matching AclEntryType or null if unknown value
      • decodeAclFlags

        public static Set<AclEntryFlag> decodeAclFlags​(int aclFlag)
      • writeACLs

        public static <B extends Buffer> B writeACLs​(B buffer,
                                                     int version,
                                                     Collection<? extends AclEntry> acl)
      • encodeACLs

        public static <B extends Buffer> B encodeACLs​(B buffer,
                                                      int version,
                                                      Collection<? extends AclEntry> acl)
      • writeAclEntry

        public static <B extends Buffer> B writeAclEntry​(B buffer,
                                                         AclEntry acl)
      • encodeAclEntryType

        public static int encodeAclEntryType​(AclEntryType type)
        Returns the equivalent SFTP value for the ACL type
        Parameters:
        type - The AclEntryType
        Returns:
        The equivalent ACE_SYSTEM_xxx_TYPE or negative if null or unknown type
      • writeTime

        public static <B extends Buffer> B writeTime​(B buffer,
                                                     int version,
                                                     int flags,
                                                     FileTime time)
        Encodes a FileTime value into a buffer
        Type Parameters:
        B - Type of Buffer being updated
        Parameters:
        buffer - The target buffer instance
        version - The encoding version
        flags - The encoding flags
        time - The value to encode
        Returns:
        The updated buffer
      • readTime

        public static FileTime readTime​(Buffer buffer,
                                        int version,
                                        int flags)
        Decodes a FileTime value from a buffer
        Parameters:
        buffer - The source Buffer
        version - The encoding version
        flags - The encoding flags
        Returns:
        The decoded value
      • getLongName

        public static String getLongName​(String shortName,
                                         Map<String,​?> attributes)
        Creates an "ls -l" compatible long name string
        Parameters:
        shortName - The short file name - can also be "." or ".."
        attributes - The file's attributes - e.g., size, owner, permissions, etc.
        Returns:
        A String representing the "long" file name as per SFTP version 3 - section 7