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
Due to limitations of the current back-end, Teleport won't return more than 1000 sessions per time window
Variables ¶
This section is empty.
Functions ¶
Types ¶
type ID ¶ added in v1.0.0
type ID string
ID is a uinique session id that is based on time UUID v1
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 }
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"` // Active indicates if the session is active Active bool `json:"active"` // 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 ServerID string `json:"server_id"` }
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 parameters of the terminal used in 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 (*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"` Active *bool `json:"active"` 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