Documentation ¶
Overview ¶
Package scp handles file uploads and downloads via scp command
Index ¶
Constants ¶
const ( // OKByte is scp OK message bytes OKByte = 0x0 // WarnByte tells that next goes a warning string WarnByte = 0x1 // ErrByte tells that next goes an error string ErrByte = 0x2 )
Variables ¶
This section is empty.
Functions ¶
func ParseSCPDestination ¶
ParseSCPDestination takes a string representing a remote resource for SCP to download/upload, like "user@host:/path/to/resource.txt" and returns 3 components of it
Types ¶
type Command ¶
type Command interface { // Execute processes SCP traffic Execute(ch io.ReadWriter) error // GetRemoteShellCmd returns a remote shell command that // has to be executed on the remove server (handled by Teleport) GetRemoteShellCmd() (string, error) }
Command is an API that describes command operations
func CreateCommand ¶
CreateCommand creates and returns a new Command
func CreateDownloadCommand ¶
CreateDownloadCommand configures and returns a command used to download a file
func CreateHTTPDownload ¶
func CreateHTTPDownload(req HTTPTransferRequest) (Command, error)
CreateHTTPDownload creates HTTP upload command
func CreateHTTPUpload ¶
func CreateHTTPUpload(req HTTPTransferRequest) (Command, error)
CreateHTTPUpload creates HTTP download command
func CreateUploadCommand ¶
CreateUploadCommand configures and returns a command used to upload a file
type Config ¶
type Config struct { // Flags is a set of SCP command line flags Flags Flags // User is a user who runs SCP command User string // AuditLog is AuditLog log AuditLog events.IAuditLog // ProgressWriter is a writer for printing the progress // (used only on the client) ProgressWriter io.Writer // FileSystem is a source file system abstraction for the SCP command FileSystem FileSystem // RemoteLocation is a destination location of the file RemoteLocation string // RunOnServer is low level API flag that indicates that // this command will be run on the server RunOnServer bool }
Config describes Command configuration settings
func (*Config) CheckAndSetDefaults ¶
CheckAndSetDefaults checks and sets default values
type FileInfo ¶
type FileInfo interface { // IsDir returns true if a file is a directory IsDir() bool // ReadDir returns information of directory files ReadDir() ([]FileInfo, error) // GetName returns a file name GetName() string // GetPath returns a file path GetPath() string // GetModePerm returns file permissions GetModePerm() os.FileMode // GetSize returns file size GetSize() int64 }
FileInfo is an API that describes methods that provide file information
type FileSystem ¶
type FileSystem interface { // IsDir returns true if a given file path is a directory IsDir(path string) bool // GetFileInfo returns FileInfo for a given file path GetFileInfo(filePath string) (FileInfo, error) // MkDir creates a directory MkDir(path string, mode int) error // OpenFile opens a file and returns its Reader OpenFile(filePath string) (io.ReadCloser, error) // CreateFile creates a new file CreateFile(filePath string, length uint64) (io.WriteCloser, error) // SetChmod sets file permissions SetChmod(path string, mode int) error }
FileSystem is an interface that abstracts file system methods used in SCP command functions
type Flags ¶
type Flags struct { // Source indicates upload mode Source bool // Sink indicates receive mode Sink bool // Verbose sets a logging mode Verbose bool // Target sets targeted files to be transfered Target []string // Recursive indicates recursive file transfer Recursive bool // RemoteAddr is a remote host address RemoteAddr string // LocalAddr is a local host address LocalAddr string }
Flags describes SCP command line flags
type HTTPTransferRequest ¶
type HTTPTransferRequest struct { // RemoteLocation is a destination location of the file RemoteLocation string // FileName is a file name FileName string // HTTPRequest is HTTP request HTTPRequest *http.Request // HTTPRequest is HTTP request HTTPResponse http.ResponseWriter // ProgressWriter is a writer for printing the progress Progress io.Writer // User is a user name User string // AuditLog is AuditLog log AuditLog events.IAuditLog }
HTTPTransferRequest describes HTTP file transfer request