Documentation
¶
Overview ¶
Package session is used for bookeeping of SSH interactive sessions that happen in realtime across the teleport cluster
Index ¶
Constants ¶
const MaxSessionSliceLength = 1000
MaxSessionSliceLength is the maximum number of sessions per time window that the backend will return.
Variables ¶
This section is empty.
Functions ¶
func NewDiscardSessionServer ¶
func NewDiscardSessionServer() *discardSessionServer
NewDiscardSessionServer returns a new discarding session server. It's used with the recording proxy so that nodes don't register active sessions to the backend.
Types ¶
type ID ¶ added in v1.0.0
type ID string
ID is a unique session ID.
func NewID ¶ added in v1.0.0
func NewID() ID
NewID returns new session ID. The session ID is based on UUIDv4.
func NewLegacyID ¶
func NewLegacyID() ID
DELETE IN: 4.1.0.
NewLegacyID creates a new session ID in the UUIDv1 legacy format.
type Party ¶
type Party struct {
// ID is a unique party id
ID ID `json:"id"`
// Site is a remote address?
RemoteAddr string `json:"remote_addr"`
// User is a teleport user using this session
User string `json:"user"`
// ServerID is an address of the server
ServerID string `json:"server_id"`
// LastActive is a last time this party was active
LastActive time.Time `json:"last_active"`
}
Party is a participant a user or a script executing some action in the context of the session
type Service ¶ added in v1.0.0
type Service interface {
// GetSessions returns a list of currently active sessions with all parties
// involved.
GetSessions(namespace string) ([]Session, error)
// GetSession returns a session with it's parties by ID.
GetSession(namespace string, id ID) (*Session, error)
// CreateSession creates a new active session and it's parameters if term is
// skipped, terminal size won't be recorded.
CreateSession(sess Session) error
// UpdateSession updates certain session parameters (last_active, terminal
// parameters) other parameters will not be updated.
UpdateSession(req UpdateRequest) error
// DeleteSession removes an active session from the backend.
DeleteSession(namespace string, id ID) error
}
Service is a realtime SSH session service that has information about sessions that are in-flight in the cluster at the moment.
type Session ¶
type Session struct {
// ID is a unique session identifier
ID ID `json:"id"`
// Namespace is a session namespace, separating sessions from each other
Namespace string `json:"namespace"`
// Parties is a list of session parties.
Parties []Party `json:"parties"`
// TerminalParams sets terminal properties
TerminalParams TerminalParams `json:"terminal_params"`
// Login is a login used by all parties joining the session
Login string `json:"login"`
// Created records the information about the time when session
// was created
Created time.Time `json:"created"`
// LastActive holds the information about when the session
// was last active
LastActive time.Time `json:"last_active"`
// ServerID of session
ServerID string `json:"server_id"`
// ServerHostname of session
ServerHostname string `json:"server_hostname"`
// ServerAddr of session
ServerAddr string `json:"server_addr"`
// ClusterName is the name of cluster that this session belongs to.
ClusterName string `json:"cluster_name"`
}
Session is an interactive collaboration session that represents one or many SSH session started by teleport user
func (*Session) RemoveParty ¶ added in v1.0.0
RemoveParty helper allows to remove a party by it's ID from the session's list. Returns 'false' if pid couldn't be found
type Sessions ¶ added in v1.0.0
type Sessions []Session
Sessions type is created over []Session to implement sort.Interface to be able to sort sessions by creation time
type TerminalParams ¶ added in v1.0.0
TerminalParams holds the terminal size in a session.
func NewTerminalParamsFromInt ¶ added in v1.0.0
func NewTerminalParamsFromInt(w int, h int) (*TerminalParams, error)
NewTerminalParamsFromInt returns new terminal parameters from int width and height
func NewTerminalParamsFromUint32 ¶ added in v1.0.0
func NewTerminalParamsFromUint32(w uint32, h uint32) (*TerminalParams, error)
NewTerminalParamsFromUint32 returns new terminal parameters from uint32 width and height
func UnmarshalTerminalParams ¶
func UnmarshalTerminalParams(s string) (*TerminalParams, error)
UnmarshalTerminalParams takes a serialized string that contains the terminal parameters and returns a *TerminalParams.
func (*TerminalParams) Serialize ¶ added in v1.0.0
func (p *TerminalParams) Serialize() string
Serialize is a more strict version of String(): it returns a string representation of terminal size, this is used in our APIs. Format : "W:H" Example: "80:25"
func (*TerminalParams) String ¶ added in v1.0.0
func (p *TerminalParams) String() string
String returns debug friendly representation of terminal
func (*TerminalParams) Winsize ¶ added in v1.0.0
func (p *TerminalParams) Winsize() *term.Winsize
Winsize returns low-level parameters for changing PTY
type UpdateRequest ¶ added in v1.0.0
type UpdateRequest struct {
ID ID `json:"id"`
Namespace string `json:"namespace"`
TerminalParams *TerminalParams `json:"terminal_params"`
// Parties allows to update the list of session parties. nil means
// "do not update", empty list means "everybody is gone"
Parties *[]Party `json:"parties"`
}
UpdateRequest is a session update request
func (*UpdateRequest) Check ¶ added in v1.0.0
func (u *UpdateRequest) Check() error
Check returns nil if request is valid, error otherwize