Class SftpHelper
java.lang.Object
org.apache.sshd.sftp.common.SftpHelper
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic intattributesToPermissions(boolean isReg, boolean isDir, boolean isLnk, Collection<PosixFilePermission> perms) Converts a file / folder's attributes into a maskstatic AclEntrybuildAclEntry(int aclType, int aclFlag, int aclMask, String aclWho) static SftpClient.Attributescomplete(SftpClient.Attributes attrs, String longName) Fills in missing information in the attributes if an SFTP v3 long name is available.static AclEntryTypedecodeAclEntryType(int aclType) static Set<AclEntryFlag> decodeAclFlags(int aclFlag) static Set<AclEntryPermission> decodeAclMask(int aclMask) decodeACLs(Buffer buffer, int version) static intReturns the equivalent SFTP value for the ACL typestatic longencodeAclFlags(Collection<AclEntryFlag> flags) static longstatic <B extends Buffer>
BencodeACLs(B buffer, int version, Collection<AclEntry> acl) static intfileTypeFromChar(char ch) Converts a POSIX/Linux file type indicator (as if obtained by "ls -l") to a file type.static intfileTypeToPermission(int type) Converts a file type into a POSIX permission mask valuestatic booleanstatic 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 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 StringgetLongName(String shortName, Map<String, ?> attributes) Creates an "ls -l" compatible long name stringstatic 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 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 notnullprivate static booleanisUnixPermissions(String longName) static Set<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 NavigableMap<String, Object> static NavigableMap<String, byte[]> readExtensions(Buffer buffer) static FileTimeDecodes aFileTimevalue from a bufferstatic StringresolveStatusMessage(int subStatus) static intReturns the most adequate sub-status for the provided exceptionstatic NavigableMap<String, byte[]> toBinaryExtensions(Map<String, String> extensions) static NavigableMap<String, String> toStringExtensions(Map<String, ?> extensions) static <B extends Buffer>
BwriteAclEntry(B buffer, AclEntry acl) static <B extends Buffer>
BwriteACLs(B buffer, int version, Collection<AclEntry> acl) static <B extends Buffer>
BwriteAttributes(B buffer, SftpClient.Attributes attributes, int sftpVersion) static <B extends Buffer>
BwriteAttrs(B buffer, int version, Map<String, ?> attributes) Writes a file / folder's attributes to a bufferstatic <B extends Buffer>
BwriteAttrsV3(B buffer, int version, Map<String, ?> attributes) Writes the retrieved file / directory attributes in V3 formatstatic <B extends Buffer>
BwriteAttrsV4(B buffer, int version, Map<String, ?> attributes) Writes the retrieved file / directory attributes in V4+ formatstatic <B extends Buffer>
BwriteExtensions(B buffer, Map<?, ?> extensions) static <B extends Buffer>
BEncodes aFileTimevalue into a buffer
-
Field Details
-
DEFAULT_SUBSTATUS_MESSAGE
-
UNIX_PERMISSIONS_START
-
-
Constructor Details
-
SftpHelper
private SftpHelper()
-
-
Method Details
-
getEndOfFileIndicatorValue
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:
-
getEndOfListIndicatorValue
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:
-
indicateEndOfNamesList
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
public static 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:
-
writeAttrs
Writes a file / folder's attributes to a buffer -
writeAttrsV3
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
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
- Parameters:
bool- TheBooleanvalue- Returns:
trueit the argument is non-nulland itsBoolean.booleanValue()istrue
-
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-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
-
fileTypeFromChar
public static int fileTypeFromChar(char ch) Converts a POSIX/Linux file type indicator (as if obtained by "ls -l") to a file type.- Parameters:
ch- character to convert- Returns:
- the file type
-
complete
Fills in missing information in the attributes if an SFTP v3 long name is available. If missing information cannot be extracted from the long name, it is not filled in, but no error or exception is generated.The SFTP draft RFC discourages parsing a long name to extract information and states the attributes should be used instead. But some SFTP v3 servers do not send all information in the attributes... for instance the SolarWinds SFTP server on Windows does not include the file type flags in the permissions. The only way to determine the file type is then to look at the permissions string in the long name.
- Parameters:
attrs-SftpClient.Attributesto complete, if necessarylongName- to use to find missing information, may benullor empty.- Returns:
attrs
-
isUnixPermissions
-
permissionsToAttributes
Translates a mask of permissions into its enumeration values equivalents- Parameters:
perms- The permissions mask- Returns:
- A
Setof the equivalentPosixFilePermissions
-
resolveSubstatus
-
resolveStatusMessage
-
readAttrs
-
readExtensions
-
writeExtensions
-
toStringExtensions
-
toBinaryExtensions
-
readACLs
-
decodeACLs
-
buildAclEntry
-
decodeAclEntryType
- Parameters:
aclType- TheACE4_ACCESS_xxx_ACE_TYPEvalue- Returns:
- The matching
AclEntryTypeornullif unknown value
-
decodeAclFlags
-
decodeAclMask
-
writeACLs
-
encodeACLs
-
writeAclEntry
-
encodeAclEntryType
Returns the equivalent SFTP value for the ACL type- Parameters:
type- TheAclEntryType- Returns:
- The equivalent
ACE_SYSTEM_xxx_TYPEor negative ifnullor unknown type
-
encodeAclFlags
-
encodeAclMask
-
writeTime
-
readTime
-
getLongName
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
-