forked from Deuxfleurs/bagage
124 lines
2.8 KiB
Go
124 lines
2.8 KiB
Go
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
|
|
PacketTypeInit = PacketType(iota + 1)
|
|
PacketTypeVersion
|
|
PacketTypeOpen
|
|
PacketTypeClose
|
|
PacketTypeRead
|
|
PacketTypeWrite
|
|
PacketTypeLStat
|
|
PacketTypeFStat
|
|
PacketTypeSetstat
|
|
PacketTypeFSetstat
|
|
PacketTypeOpenDir
|
|
PacketTypeReadDir
|
|
PacketTypeRemove
|
|
PacketTypeMkdir
|
|
PacketTypeRmdir
|
|
PacketTypeRealPath
|
|
PacketTypeStat
|
|
PacketTypeRename
|
|
PacketTypeReadLink
|
|
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
|
|
)
|
|
|
|
// Response packet types.
|
|
const (
|
|
// https://tools.ietf.org/html/draft-ietf-secsh-filexfer-02#section-3
|
|
PacketTypeStatus = PacketType(iota + 101)
|
|
PacketTypeHandle
|
|
PacketTypeData
|
|
PacketTypeName
|
|
PacketTypeAttrs
|
|
)
|
|
|
|
// Extended packet types.
|
|
const (
|
|
// https://tools.ietf.org/html/draft-ietf-secsh-filexfer-02#section-3
|
|
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"
|
|
case PacketTypeLStat:
|
|
return "SSH_FXP_LSTAT"
|
|
case PacketTypeFStat:
|
|
return "SSH_FXP_FSTAT"
|
|
case PacketTypeSetstat:
|
|
return "SSH_FXP_SETSTAT"
|
|
case PacketTypeFSetstat:
|
|
return "SSH_FXP_FSETSTAT"
|
|
case PacketTypeOpenDir:
|
|
return "SSH_FXP_OPENDIR"
|
|
case PacketTypeReadDir:
|
|
return "SSH_FXP_READDIR"
|
|
case PacketTypeRemove:
|
|
return "SSH_FXP_REMOVE"
|
|
case PacketTypeMkdir:
|
|
return "SSH_FXP_MKDIR"
|
|
case PacketTypeRmdir:
|
|
return "SSH_FXP_RMDIR"
|
|
case PacketTypeRealPath:
|
|
return "SSH_FXP_REALPATH"
|
|
case PacketTypeStat:
|
|
return "SSH_FXP_STAT"
|
|
case PacketTypeRename:
|
|
return "SSH_FXP_RENAME"
|
|
case PacketTypeReadLink:
|
|
return "SSH_FXP_READLINK"
|
|
case PacketTypeSymlink:
|
|
return "SSH_FXP_SYMLINK"
|
|
case PacketTypeV6Link:
|
|
return "SSH_FXP_LINK"
|
|
case PacketTypeV6Block:
|
|
return "SSH_FXP_BLOCK"
|
|
case PacketTypeV6Unblock:
|
|
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)
|
|
}
|
|
}
|