Package org.apache.sshd.sftp.common
Class SftpHelper
- java.lang.Object
-
- org.apache.sshd.sftp.common.SftpHelper
-
public final class SftpHelper extends java.lang.Object
-
-
Field Summary
Fields Modifier and Type Field Description static java.util.Map<java.lang.Integer,java.lang.String>DEFAULT_SUBSTATUS_MESSAGE
-
Constructor Summary
Constructors Modifier Constructor Description privateSftpHelper()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static intattributesToPermissions(boolean isReg, boolean isDir, boolean isLnk, java.util.Collection<java.nio.file.attribute.PosixFilePermission> perms)Converts a file / folder's attributes into a maskstatic java.nio.file.attribute.AclEntrybuildAclEntry(int aclType, int aclFlag, int aclMask, java.lang.String aclWho)static java.nio.file.attribute.AclEntryTypedecodeAclEntryType(int aclType)static java.util.Set<java.nio.file.attribute.AclEntryFlag>decodeAclFlags(int aclFlag)static java.util.Set<java.nio.file.attribute.AclEntryPermission>decodeAclMask(int aclMask)static java.util.List<java.nio.file.attribute.AclEntry>decodeACLs(Buffer buffer, int version)static intencodeAclEntryType(java.nio.file.attribute.AclEntryType type)Returns the equivalent SFTP value for the ACL typestatic longencodeAclFlags(java.util.Collection<java.nio.file.attribute.AclEntryFlag> flags)static longencodeAclMask(java.util.Collection<java.nio.file.attribute.AclEntryPermission> mask)static <B extends Buffer>
BencodeACLs(B buffer, int version, java.util.Collection<? extends java.nio.file.attribute.AclEntry> acl)static intfileTypeToPermission(int type)Converts a file type into a POSIX permission mask valuestatic booleangetBool(java.lang.Boolean bool)static java.lang.BooleangetEndOfFileIndicatorValue(Buffer buffer, int version)Retrieves the end-of-file indicator forSSH_FXP_DATAresponses, provided the version is at least 6, and the buffer has enough available datastatic java.lang.BooleangetEndOfListIndicatorValue(Buffer buffer, int version)Retrieves the end-of-list indicator forSSH_FXP_NAMEresponses, provided the version is at least 6, and the buffer has enough available datastatic java.lang.StringgetLongName(java.lang.String shortName, java.util.Map<java.lang.String,?> attributes)Creates an "ls -l" compatible long name stringstatic java.lang.BooleanindicateEndOfNamesList(Buffer buffer, int version, PropertyResolver resolver)Appends the end-of-list=TRUEindicator forSSH_FXP_NAMEresponses, provided the version is at least 6 and the feature is enabledstatic java.lang.BooleanindicateEndOfNamesList(Buffer buffer, int version, PropertyResolver resolver, boolean indicatorValue)Appends the end-of-list indicator forSSH_FXP_NAMEresponses, provided the version is at least 6, the feature is enabled and the indicator value is notnullstatic java.util.Set<java.nio.file.attribute.PosixFilePermission>permissionsToAttributes(int perms)Translates a mask of permissions into its enumeration values equivalentsstatic intpermissionsToFileType(int perms)Converts a POSIX permissions mask to a file type valuestatic java.util.List<java.nio.file.attribute.AclEntry>readACLs(Buffer buffer, int version)static java.util.NavigableMap<java.lang.String,java.lang.Object>readAttrs(Buffer buffer, int version)static java.util.NavigableMap<java.lang.String,byte[]>readExtensions(Buffer buffer)static java.nio.file.attribute.FileTimereadTime(Buffer buffer, int version, int flags)Decodes aFileTimevalue from a bufferstatic java.lang.StringresolveStatusMessage(int subStatus)static intresolveSubstatus(java.lang.Throwable t)Returns the most adequate sub-status for the provided exceptionstatic java.util.NavigableMap<java.lang.String,byte[]>toBinaryExtensions(java.util.Map<java.lang.String,java.lang.String> extensions)static java.util.NavigableMap<java.lang.String,java.lang.String>toStringExtensions(java.util.Map<java.lang.String,?> extensions)static <B extends Buffer>
BwriteAclEntry(B buffer, java.nio.file.attribute.AclEntry acl)static <B extends Buffer>
BwriteACLs(B buffer, int version, java.util.Collection<? extends java.nio.file.attribute.AclEntry> acl)static <B extends Buffer>
BwriteAttributes(B buffer, SftpClient.Attributes attributes, int sftpVersion)static <B extends Buffer>
BwriteAttrs(B buffer, int version, java.util.Map<java.lang.String,?> attributes)Writes a file / folder's attributes to a bufferstatic <B extends Buffer>
BwriteAttrsV3(B buffer, int version, java.util.Map<java.lang.String,?> attributes)Writes the retrieved file / directory attributes in V3 formatstatic <B extends Buffer>
BwriteAttrsV4(B buffer, int version, java.util.Map<java.lang.String,?> attributes)Writes the retrieved file / directory attributes in V4+ formatstatic <B extends Buffer>
BwriteExtensions(B buffer, java.util.Map<?,?> extensions)static <B extends Buffer>
BwriteTime(B buffer, int version, int flags, java.nio.file.attribute.FileTime time)Encodes aFileTimevalue into a buffer
-
-
-
Method Detail
-
getEndOfFileIndicatorValue
public static java.lang.Boolean getEndOfFileIndicatorValue(Buffer buffer, int version)
Retrieves the end-of-file indicator forSSH_FXP_DATAresponses, provided the version is at least 6, and the buffer has enough available data- Parameters:
buffer- TheBufferto retrieve the data fromversion- The SFTP version being used- Returns:
- The indicator value -
nullif none retrieved - See Also:
- SFTP v6 - section 9.3
-
getEndOfListIndicatorValue
public static java.lang.Boolean getEndOfListIndicatorValue(Buffer buffer, int version)
Retrieves the end-of-list indicator forSSH_FXP_NAMEresponses, provided the version is at least 6, and the buffer has enough available data- Parameters:
buffer- TheBufferto retrieve the data fromversion- The SFTP version being used- Returns:
- The indicator value -
nullif none retrieved - See Also:
- SFTP v6 - section
9.4,
indicateEndOfNamesList(Buffer, int, PropertyResolver, boolean)
-
indicateEndOfNamesList
public static java.lang.Boolean indicateEndOfNamesList(Buffer buffer, int version, PropertyResolver resolver)
Appends the end-of-list=TRUEindicator forSSH_FXP_NAMEresponses, provided the version is at least 6 and the feature is enabled- Parameters:
buffer- TheBufferto append the indicatorversion- The SFTP version being usedresolver- ThePropertyResolverto query whether to enable the feature- Returns:
- The actual indicator value used -
nullif none appended - See Also:
indicateEndOfNamesList(Buffer, int, PropertyResolver, boolean)
-
indicateEndOfNamesList
public static java.lang.Boolean indicateEndOfNamesList(Buffer buffer, int version, PropertyResolver resolver, boolean indicatorValue)
Appends the end-of-list indicator forSSH_FXP_NAMEresponses, provided the version is at least 6, the feature is enabled and the indicator value is notnull- Parameters:
buffer- TheBufferto append the indicatorversion- The SFTP version being usedresolver- ThePropertyResolverto query whether to enable the featureindicatorValue- The indicator value -nullmeans don't append the indicator- Returns:
- The actual indicator value used -
nullif 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, java.util.Map<java.lang.String,?> attributes)
Writes a file / folder's attributes to a buffer- Type Parameters:
B- Type ofBufferbeing updated- Parameters:
buffer- The target buffer instanceversion- The output encoding versionattributes- TheMapof 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, java.util.Map<java.lang.String,?> attributes)
Writes the retrieved file / directory attributes in V3 format- Type Parameters:
B- Type ofBufferbeing updated- Parameters:
buffer- The target buffer instanceversion- The actual version - must beSftpConstants.SFTP_V3attributes- TheMapof attributes- Returns:
- The updated buffer
-
writeAttrsV4
public static <B extends Buffer> B writeAttrsV4(B buffer, int version, java.util.Map<java.lang.String,?> attributes)
Writes the retrieved file / directory attributes in V4+ format- Type Parameters:
B- Type ofBufferbeing updated- Parameters:
buffer- The target buffer instanceversion- The actual version - must be at leastSftpConstants.SFTP_V4attributes- TheMapof attributes- Returns:
- The updated buffer
-
writeAttributes
public static <B extends Buffer> B writeAttributes(B buffer, SftpClient.Attributes attributes, int sftpVersion)
-
getBool
public static boolean getBool(java.lang.Boolean bool)
- Parameters:
bool- TheBooleanvalue- Returns:
trueit the argument is non-nulland itsBoolean.booleanValue()istrue
-
attributesToPermissions
public static int attributesToPermissions(boolean isReg, boolean isDir, boolean isLnk, java.util.Collection<java.nio.file.attribute.PosixFilePermission> perms)Converts a file / folder's attributes into a mask- Parameters:
isReg-trueif this is a normal fileisDir-trueif this is a directoryisLnk-trueif this is a symbolic linkperms- The file / folder's accessPosixFilePermissions- 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_xxxvalues
-
fileTypeToPermission
public static int fileTypeToPermission(int type)
Converts a file type into a POSIX permission mask value- Parameters:
type- File type - seeSSH_FILEXFER_TYPE_xxxvalues- Returns:
- The matching POSIX permission mask value
-
permissionsToAttributes
public static java.util.Set<java.nio.file.attribute.PosixFilePermission> permissionsToAttributes(int perms)
Translates a mask of permissions into its enumeration values equivalents- Parameters:
perms- The permissions mask- Returns:
- A
Setof the equivalentPosixFilePermissions
-
resolveSubstatus
public static int resolveSubstatus(java.lang.Throwable t)
Returns the most adequate sub-status for the provided exception- Parameters:
t- The thrownThrowable- Returns:
- The matching sub-status
-
resolveStatusMessage
public static java.lang.String resolveStatusMessage(int subStatus)
-
readAttrs
public static java.util.NavigableMap<java.lang.String,java.lang.Object> readAttrs(Buffer buffer, int version)
-
readExtensions
public static java.util.NavigableMap<java.lang.String,byte[]> readExtensions(Buffer buffer)
-
writeExtensions
public static <B extends Buffer> B writeExtensions(B buffer, java.util.Map<?,?> extensions)
-
toStringExtensions
public static java.util.NavigableMap<java.lang.String,java.lang.String> toStringExtensions(java.util.Map<java.lang.String,?> extensions)
-
toBinaryExtensions
public static java.util.NavigableMap<java.lang.String,byte[]> toBinaryExtensions(java.util.Map<java.lang.String,java.lang.String> extensions)
-
readACLs
public static java.util.List<java.nio.file.attribute.AclEntry> readACLs(Buffer buffer, int version)
-
decodeACLs
public static java.util.List<java.nio.file.attribute.AclEntry> decodeACLs(Buffer buffer, int version)
-
buildAclEntry
public static java.nio.file.attribute.AclEntry buildAclEntry(int aclType, int aclFlag, int aclMask, java.lang.String aclWho)
-
decodeAclEntryType
public static java.nio.file.attribute.AclEntryType decodeAclEntryType(int aclType)
- Parameters:
aclType- TheACE4_ACCESS_xxx_ACE_TYPEvalue- Returns:
- The matching
AclEntryTypeornullif unknown value
-
decodeAclFlags
public static java.util.Set<java.nio.file.attribute.AclEntryFlag> decodeAclFlags(int aclFlag)
-
decodeAclMask
public static java.util.Set<java.nio.file.attribute.AclEntryPermission> decodeAclMask(int aclMask)
-
writeACLs
public static <B extends Buffer> B writeACLs(B buffer, int version, java.util.Collection<? extends java.nio.file.attribute.AclEntry> acl)
-
encodeACLs
public static <B extends Buffer> B encodeACLs(B buffer, int version, java.util.Collection<? extends java.nio.file.attribute.AclEntry> acl)
-
writeAclEntry
public static <B extends Buffer> B writeAclEntry(B buffer, java.nio.file.attribute.AclEntry acl)
-
encodeAclEntryType
public static int encodeAclEntryType(java.nio.file.attribute.AclEntryType type)
Returns the equivalent SFTP value for the ACL type- Parameters:
type- TheAclEntryType- Returns:
- The equivalent
ACE_SYSTEM_xxx_TYPEor negative ifnullor unknown type
-
encodeAclFlags
public static long encodeAclFlags(java.util.Collection<java.nio.file.attribute.AclEntryFlag> flags)
-
encodeAclMask
public static long encodeAclMask(java.util.Collection<java.nio.file.attribute.AclEntryPermission> mask)
-
writeTime
public static <B extends Buffer> B writeTime(B buffer, int version, int flags, java.nio.file.attribute.FileTime time)
Encodes aFileTimevalue into a buffer- Type Parameters:
B- Type ofBufferbeing updated- Parameters:
buffer- The target buffer instanceversion- The encoding versionflags- The encoding flagstime- The value to encode- Returns:
- The updated buffer
-
readTime
public static java.nio.file.attribute.FileTime readTime(Buffer buffer, int version, int flags)
Decodes aFileTimevalue from a buffer- Parameters:
buffer- The sourceBufferversion- The encoding versionflags- The encoding flags- Returns:
- The decoded value
-
getLongName
public static java.lang.String getLongName(java.lang.String shortName, java.util.Map<java.lang.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
Stringrepresenting the "long" file name as per SFTP version 3 - section 7
-
-