sftp/internal/encoding/ssh/filexfer/fxp.go

125 lines
2.8 KiB
Go
Raw Normal View History

2021-03-19 00:59:27 +08:00
package filexfer
import (
"fmt"
)
// PacketType defines the various SFTP packet types.
type PacketType uint8
// Request packet types.
const (
// https://tools.ietf.org/html/draft-ietf-secsh-filexfer-02#section-3
2021-03-19 00:59:27 +08:00
PacketTypeInit = PacketType(iota + 1)
PacketTypeVersion
PacketTypeOpen
PacketTypeClose
PacketTypeRead
PacketTypeWrite
2021-03-22 20:49:12 +08:00
PacketTypeLStat
PacketTypeFStat
2021-03-19 00:59:27 +08:00
PacketTypeSetstat
2021-03-22 20:49:12 +08:00
PacketTypeFSetstat
PacketTypeOpenDir
PacketTypeReadDir
2021-03-19 00:59:27 +08:00
PacketTypeRemove
PacketTypeMkdir
PacketTypeRmdir
2021-03-22 20:49:12 +08:00
PacketTypeRealPath
2021-03-19 00:59:27 +08:00
PacketTypeStat
PacketTypeRename
2021-03-22 20:49:12 +08:00
PacketTypeReadLink
2021-03-19 00:59:27 +08:00
PacketTypeSymlink
// https://tools.ietf.org/html/draft-ietf-secsh-filexfer-07#section-3.3
PacketTypeV6Link
// https://tools.ietf.org/html/draft-ietf-secsh-filexfer-08#section-3.3
PacketTypeV6Block
PacketTypeV6Unblock
2021-03-19 00:59:27 +08:00
)
// Response packet types.
const (
// https://tools.ietf.org/html/draft-ietf-secsh-filexfer-02#section-3
2021-03-19 00:59:27 +08:00
PacketTypeStatus = PacketType(iota + 101)
PacketTypeHandle
PacketTypeData
PacketTypeName
PacketTypeAttrs
)
// Extended packet types.
const (
// https://tools.ietf.org/html/draft-ietf-secsh-filexfer-02#section-3
2021-03-19 00:59:27 +08:00
PacketTypeExtended = PacketType(iota + 200)
PacketTypeExtendedReply
)
func (f PacketType) String() string {
switch f {
case PacketTypeInit:
return "SSH_FXP_INIT"
case PacketTypeVersion:
return "SSH_FXP_VERSION"
case PacketTypeOpen:
return "SSH_FXP_OPEN"
case PacketTypeClose:
return "SSH_FXP_CLOSE"
case PacketTypeRead:
return "SSH_FXP_READ"
case PacketTypeWrite:
return "SSH_FXP_WRITE"
2021-03-22 20:49:12 +08:00
case PacketTypeLStat:
2021-03-19 00:59:27 +08:00
return "SSH_FXP_LSTAT"
2021-03-22 20:49:12 +08:00
case PacketTypeFStat:
2021-03-19 00:59:27 +08:00
return "SSH_FXP_FSTAT"
case PacketTypeSetstat:
return "SSH_FXP_SETSTAT"
2021-03-22 20:49:12 +08:00
case PacketTypeFSetstat:
2021-03-19 00:59:27 +08:00
return "SSH_FXP_FSETSTAT"
2021-03-22 20:49:12 +08:00
case PacketTypeOpenDir:
2021-03-19 00:59:27 +08:00
return "SSH_FXP_OPENDIR"
2021-03-22 20:49:12 +08:00
case PacketTypeReadDir:
2021-03-19 00:59:27 +08:00
return "SSH_FXP_READDIR"
case PacketTypeRemove:
return "SSH_FXP_REMOVE"
case PacketTypeMkdir:
return "SSH_FXP_MKDIR"
case PacketTypeRmdir:
return "SSH_FXP_RMDIR"
2021-03-22 20:49:12 +08:00
case PacketTypeRealPath:
2021-03-19 00:59:27 +08:00
return "SSH_FXP_REALPATH"
case PacketTypeStat:
return "SSH_FXP_STAT"
case PacketTypeRename:
return "SSH_FXP_RENAME"
2021-03-22 20:49:12 +08:00
case PacketTypeReadLink:
2021-03-19 00:59:27 +08:00
return "SSH_FXP_READLINK"
case PacketTypeSymlink:
return "SSH_FXP_SYMLINK"
case PacketTypeV6Link:
2021-03-19 00:59:27 +08:00
return "SSH_FXP_LINK"
case PacketTypeV6Block:
2021-03-19 00:59:27 +08:00
return "SSH_FXP_BLOCK"
case PacketTypeV6Unblock:
2021-03-19 00:59:27 +08:00
return "SSH_FXP_UNBLOCK"
case PacketTypeStatus:
return "SSH_FXP_STATUS"
case PacketTypeHandle:
return "SSH_FXP_HANDLE"
case PacketTypeData:
return "SSH_FXP_DATA"
case PacketTypeName:
return "SSH_FXP_NAME"
case PacketTypeAttrs:
return "SSH_FXP_ATTRS"
case PacketTypeExtended:
return "SSH_FXP_EXTENDED"
case PacketTypeExtendedReply:
return "SSH_FXP_EXTENDED_REPLY"
default:
return fmt.Sprintf("SSH_FXP_UNKNOWN(%d)", f)
}
}