1%% 2%% %CopyrightBegin% 3%% 4%% Copyright Ericsson AB 2005-2020. All Rights Reserved. 5%% 6%% Licensed under the Apache License, Version 2.0 (the "License"); 7%% you may not use this file except in compliance with the License. 8%% You may obtain a copy of the License at 9%% 10%% http://www.apache.org/licenses/LICENSE-2.0 11%% 12%% Unless required by applicable law or agreed to in writing, software 13%% distributed under the License is distributed on an "AS IS" BASIS, 14%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15%% See the License for the specific language governing permissions and 16%% limitations under the License. 17%% 18%% %CopyrightEnd% 19%% 20 21%% 22 23 24-define(XFER_PACKET_SIZE, 65536). 25-define(XFER_WINDOW_SIZE, 20*?XFER_PACKET_SIZE). 26 27%%% Description: SFTP defines 28-define(SSH_SFTP_PROTOCOL_VERSION, 6). 29%%%---------------------------------------------------------------------- 30%%% # SSH_FXP_xxx 31%%% Description: Request and initialization packet types for file transfer 32%%% protocol. 33%%%---------------------------------------------------------------------- 34-define(SSH_FXP_INIT, 1). 35-define(SSH_FXP_VERSION, 2). 36-define(SSH_FXP_OPEN, 3). 37-define(SSH_FXP_CLOSE, 4). 38-define(SSH_FXP_READ, 5). 39-define(SSH_FXP_WRITE, 6). 40-define(SSH_FXP_LSTAT, 7). 41-define(SSH_FXP_FSTAT, 8). 42-define(SSH_FXP_SETSTAT, 9). 43-define(SSH_FXP_FSETSTAT, 10). 44-define(SSH_FXP_OPENDIR, 11). 45-define(SSH_FXP_READDIR, 12). 46-define(SSH_FXP_REMOVE, 13). 47-define(SSH_FXP_MKDIR, 14). 48-define(SSH_FXP_RMDIR, 15). 49-define(SSH_FXP_REALPATH, 16). 50-define(SSH_FXP_STAT, 17). 51-define(SSH_FXP_RENAME, 18). 52-define(SSH_FXP_READLINK, 19). 53-define(SSH_FXP_SYMLINK, 20). 54-define(SSH_FXP_STATUS, 101). 55-define(SSH_FXP_HANDLE, 102). 56-define(SSH_FXP_DATA, 103). 57-define(SSH_FXP_NAME, 104). 58-define(SSH_FXP_ATTRS, 105). 59-define(SSH_FXP_EXTENDED, 200). 60-define(SSH_FXP_EXTENDED_REPLY, 201). 61 62%%%---------------------------------------------------------------------- 63%%% # SSH_FX_xxx 64%%% Description: Response packet types for file transfer protocol. 65%%%---------------------------------------------------------------------- 66-define(SSH_FX_OK, 0). 67-define(SSH_FX_EOF, 1). 68-define(SSH_FX_NO_SUCH_FILE, 2). 69-define(SSH_FX_PERMISSION_DENIED, 3). 70-define(SSH_FX_FAILURE, 4). 71-define(SSH_FX_BAD_MESSAGE, 5). 72-define(SSH_FX_NO_CONNECTION, 6). 73-define(SSH_FX_CONNECTION_LOST, 7). 74-define(SSH_FX_OP_UNSUPPORTED, 8). 75-define(SSH_FX_INVALID_HANDLE, 9). 76-define(SSH_FX_NO_SUCH_PATH, 10). 77-define(SSH_FX_FILE_ALREADY_EXISTS, 11). 78-define(SSH_FX_WRITE_PROTECT, 12). 79-define(SSH_FX_NO_MEDIA, 13). 80-define(SSH_FX_NO_SPACE_ON_FILESYSTEM, 14). 81-define(SSH_FX_QUOTA_EXCEEDED, 15). 82-define(SSH_FX_UNKNOWN_PRINCIPLE, 16). 83-define(SSH_FX_LOCK_CONFlICT, 17). 84-define(SSH_FX_DIR_NOT_EMPTY, 18). 85-define(SSH_FX_NOT_A_DIRECTORY, 19). 86-define(SSH_FX_INVALID_FILENAME, 20). 87-define(SSH_FX_LINK_LOOP, 21). 88-define(SSH_FX_CANNOT_DELETE, 22). 89-define(SSH_FX_INVALID_PARAMETER, 23). 90-define(SSH_FX_FILE_IS_A_DIRECTORY, 24). 91-define(SSH_FX_BYTE_RANGE_LOCK_CONFLICT,25). 92-define(SSH_FX_BYTE_RANGE_LOCK_REFUSED, 26). 93-define(SSH_FX_DELETE_PENDING, 27). 94-define(SSH_FX_FILE_CORRUPT, 28). 95-define(SSH_FX_OWNER_INVALID, 29). 96-define(SSH_FX_GROUP_INVALID, 30). 97-define(SSH_FX_NO_MATCHING_BYTE_RANGE_LOCK,31). 98 99%%%---------------------------------------------------------------------- 100%%% # SSH_FILEXFER_xxx 101%%% Description: Bits for file attributes bit mask 102%%%---------------------------------------------------------------------- 103-define(SSH_FILEXFER_ATTR_SIZE, 16#00000001). %% vsn 3,5 104-define(SSH_FILEXFER_ATTR_UIDGID, 16#00000002). %% vsn 3 105-define(SSH_FILEXFER_ATTR_PERMISSIONS, 16#00000004). %% vsn 3,5 106-define(SSH_FILEXFER_ATTR_ACCESSTIME, 16#00000008). %% vsn 5 107-define(SSH_FILEXFER_ATTR_ACMODTIME, 16#00000008). %% vsn 3 108-define(SSH_FILEXFER_ATTR_CREATETIME, 16#00000010). %% vsn 5 109-define(SSH_FILEXFER_ATTR_MODIFYTIME, 16#00000020) .%% vsn 5 110-define(SSH_FILEXFER_ATTR_ACL, 16#00000040). %% vsn 5 111-define(SSH_FILEXFER_ATTR_OWNERGROUP, 16#00000080). %% vsn 5 112-define(SSH_FILEXFER_ATTR_SUBSECOND_TIMES, 16#00000100). %% vsn 5 113-define(SSH_FILEXFER_ATTR_BITS, 16#00000200). %% vsn 5 114-define(SSH_FILEXFER_ATTR_EXTENDED, 16#80000000). %% vsn 3,5 115 116%% File types 117-define(SSH_FILEXFER_TYPE_REGULAR, 1). 118-define(SSH_FILEXFER_TYPE_DIRECTORY, 2). 119-define(SSH_FILEXFER_TYPE_SYMLINK, 3). 120-define(SSH_FILEXFER_TYPE_SPECIAL, 4). 121-define(SSH_FILEXFER_TYPE_UNKNOWN, 5). 122-define(SSH_FILEXFER_TYPE_SOCKET, 6). 123-define(SSH_FILEXFER_TYPE_CHAR_DEVICE, 7). 124-define(SSH_FILEXFER_TYPE_BLOCK_DEVICE, 8). 125-define(SSH_FILEXFER_TYPE_FIFO, 9). 126 127%% Permissions 128-define(S_IRUSR, 8#0000400). 129-define(S_IWUSR, 8#0000200). 130-define(S_IXUSR, 8#0000100). 131-define(S_IRGRP, 8#0000040). 132-define(S_IWGRP, 8#0000020). 133-define(S_IXGRP, 8#0000010). 134-define(S_IROTH, 8#0000004). 135-define(S_IWOTH, 8#0000002). 136-define(S_IXOTH, 8#0000001). 137-define(S_ISUID, 8#0004000). 138-define(S_ISGID, 8#0002000). 139-define(S_ISVTX, 8#0001000). 140%% type bits (version 3 only?) 141-define(S_IFMT, 8#0170000). %% file type mask 142-define(S_IFDIR, 8#0040000). 143-define(S_IFCHR, 8#0020000). 144-define(S_IFBLK, 8#0060000). 145-define(S_IFIFO, 8#0010000). 146-define(S_IFREG, 8#0100000). 147-define(S_IFLNK, 8#0120000). 148-define(S_IFSOCK, 8#0140000). 149 150%% ACE-Type 151-define(ACE4_ACCESS_ALLOWED_ACE_TYPE, 16#00000000). 152-define(ACE4_ACCESS_DENIED_ACE_TYPE, 16#00000001). 153-define(ACE4_SYSTEM_AUDIT_ACE_TYPE, 16#00000002). 154-define(ACE4_SYSTEM_ALARM_ACE_TYPE, 16#00000003). 155 156%% ACE-Flag 157-define(ACE4_FILE_INHERIT_ACE, 16#00000001). 158-define(ACE4_DIRECTORY_INHERIT_ACE, 16#00000002). 159-define(ACE4_NO_PROPAGATE_INHERIT_ACE, 16#00000004). 160-define(ACE4_INHERIT_ONLY_ACE, 16#00000008). 161-define(ACE4_SUCCESSFUL_ACCESS_ACE_FLAG, 16#00000010). 162-define(ACE4_FAILED_ACCESS_ACE_FLAG, 16#00000020). 163-define(ACE4_IDENTIFIER_GROUP, 16#00000040). 164 165%% ACE-Mask 166-define(ACE4_READ_DATA, 16#00000001). 167-define(ACE4_LIST_DIRECTORY, 16#00000001). 168-define(ACE4_WRITE_DATA, 16#00000002). 169-define(ACE4_ADD_FILE, 16#00000002). 170-define(ACE4_APPEND_DATA, 16#00000004). 171-define(ACE4_ADD_SUBDIRECTORY, 16#00000004). 172-define(ACE4_READ_NAMED_ATTRS, 16#00000008). 173-define(ACE4_WRITE_NAMED_ATTRS, 16#00000010). 174-define(ACE4_EXECUTE, 16#00000020). 175-define(ACE4_DELETE_CHILD, 16#00000040). 176-define(ACE4_READ_ATTRIBUTES, 16#00000080). 177-define(ACE4_WRITE_ATTRIBUTES, 16#00000100). 178-define(ACE4_DELETE, 16#00010000). 179-define(ACE4_READ_ACL, 16#00020000). 180-define(ACE4_WRITE_ACL, 16#00040000). 181-define(ACE4_WRITE_OWNER, 16#00080000). 182-define(ACE4_SYNCHRONIZE, 16#00100000). 183 184%% Attrib-bits 185-define(SSH_FILEXFER_ATTR_FLAGS_READONLY, 16#00000001). 186-define(SSH_FILEXFER_ATTR_FLAGS_SYSTEM, 16#00000002). 187-define(SSH_FILEXFER_ATTR_FLAGS_HIDDEN, 16#00000004). 188-define(SSH_FILEXFER_ATTR_FLAGS_CASE_INSENSITIVE, 16#00000008). 189-define(SSH_FILEXFER_ATTR_FLAGS_ARCHIVE, 16#00000010). 190-define(SSH_FILEXFER_ATTR_FLAGS_ENCRYPTED, 16#00000020). 191-define(SSH_FILEXFER_ATTR_FLAGS_COMPRESSED, 16#00000040). 192-define(SSH_FILEXFER_ATTR_FLAGS_SPARSE, 16#00000080). 193-define(SSH_FILEXFER_ATTR_FLAGS_APPEND_ONLY, 16#00000100). 194-define(SSH_FILEXFER_ATTR_FLAGS_IMMUTABLE, 16#00000200). 195-define(SSH_FILEXFER_ATTR_FLAGS_SYNC, 16#00000400). 196 197%% Open flags (version 3) 198-define(SSH_FXF_READ, 16#00000001). 199-define(SSH_FXF_WRITE, 16#00000002). 200-define(SSH_FXF_APPEND, 16#00000004). 201-define(SSH_FXF_CREAT, 16#00000008). 202-define(SSH_FXF_TRUNC, 16#00000010). 203-define(SSH_FXF_EXCL, 16#00000020). 204 205%% Open flags (version 5) 206-define(SSH_FXF_ACCESS_DISPOSITION, 16#00000007). 207-define(SSH_FXF_CREATE_NEW, 16#00000000). 208-define(SSH_FXF_CREATE_TRUNCATE, 16#00000001). 209-define(SSH_FXF_OPEN_EXISTING, 16#00000002). 210-define(SSH_FXF_OPEN_OR_CREATE, 16#00000003). 211-define(SSH_FXF_TRUNCATE_EXISTING, 16#00000004). 212-define(SSH_FXF_ACCESS_APPEND_DATA, 16#00000008). 213-define(SSH_FXF_ACCESS_APPEND_DATA_ATOMIC, 16#00000010). 214-define(SSH_FXF_ACCESS_TEXT_MODE, 16#00000020). 215-define(SSH_FXF_ACCESS_READ_LOCK, 16#00000040). 216-define(SSH_FXF_ACCESS_WRITE_LOCK, 16#00000080). 217-define(SSH_FXF_ACCESS_DELETE_LOCK, 16#00000100). 218 219%% Rename flags 220-define(SSH_FXP_RENAME_OVERWRITE, 16#00000001). 221-define(SSH_FXP_RENAME_ATOMIC, 16#00000002). 222-define(SSH_FXP_RENAME_NATIVE, 16#00000004). 223 224 225-define(SSH_FILEXFER_LARGEFILESIZE, (1 bsl 63)). 226 227-record(ssh_xfer_attr, 228 { 229 type, %% regular, dirctory, symlink, ... 230 size, 231 owner, 232 group, 233 permissions, 234 atime, 235 atime_nseconds, 236 createtime, 237 createtime_nseconds, 238 mtime, 239 mtime_nseconds, 240 acl, 241 attrib_bits, 242 extensions %% list of [{type,data}] 243 }). 244 245-record(ssh_xfer_ace, 246 { 247 type, 248 flag, 249 mask, 250 who 251 }). 252 253%% connection endpoint and server/client info 254-record(ssh_xfer, 255 { 256 vsn, %% server version 257 ext, %% server extensions 258 cm, %% connection mgr 259 channel %% SFTP channel 260 }). 261 262 263 264 265 266 267