session

package
v11.3.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 13, 2022 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Overview

Package session is used for bookkeeping of SSH interactive sessions that happen in realtime across the teleport cluster

Index

Constants

View Source
const MaxSessionSliceLength = 1000

MaxSessionSliceLength is the maximum number of sessions per time window that the backend will return.

Variables

This section is empty.

Functions

This section is empty.

Types

type ID

type ID string

ID is a unique session ID.

func NewID

func NewID() ID

NewID returns new session ID. The session ID is based on UUIDv4.

func ParseID

func ParseID(id string) (*ID, error)

ParseID parses ID and checks if it's correct.

func (*ID) Check

func (s *ID) Check() error

Check will check that the underlying UUID is valid.

func (*ID) IsZero

func (s *ID) IsZero() bool

IsZero returns true if this ID is empty.

func (*ID) String

func (s *ID) String() string

String returns string representation of this ID.

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

func (*Party) String

func (p *Party) String() string

String returns debug friendly representation

type Service

type Service interface {
	// GetSessions returns a list of currently active sessions matching
	// the given condition.
	GetSessions(ctx context.Context, namespace string) ([]Session, error)

	// GetSession returns a session with its parties by ID.
	GetSession(ctx context.Context, 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(ctx context.Context, sess Session) error

	// UpdateSession updates certain session parameters (last_active, terminal
	// parameters) other parameters will not be updated.
	UpdateSession(ctx context.Context, req UpdateRequest) error

	// DeleteSession removes an active session from the backend.
	DeleteSession(ctx context.Context, 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. DELETE IN 12.0.0

func New

func New(bk backend.Backend) (Service, error)

New returns new session server that uses sqlite to manage active sessions

func NewDiscardSessionServer

func NewDiscardSessionServer() Service

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. DELETE IN 12.0.0

type Session

type Session struct {
	// Kind describes what kind of session this is e.g. ssh or kubernetes.
	Kind types.SessionKind `json:"kind"`
	// 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"`
	// ServerHostPort of session
	ServerHostPort int `json:"server_hostport"`
	// ServerAddr of session
	ServerAddr string `json:"server_addr"`
	// ClusterName is the name of the Teleport cluster that this session belongs to.
	ClusterName string `json:"cluster_name"`
	// KubernetesClusterName is the name of the kube cluster that this session is running in.
	KubernetesClusterName string `json:"kubernetes_cluster_name"`
	// DesktopName is the name of the desktop that this session is running in.
	DesktopName string `json:"desktop_name"`
	// DatabaseName is the name of the database being accessed.
	DatabaseName string `json:"database_name"`
	// AppName is the name of the app being accessed.
	AppName string `json:"app_name"`
}

Session is an interactive collaboration session that represents one or many sessions started by the teleport user.

func (*Session) Participants

func (s *Session) Participants() []string

Participants returns the usernames of the current session participants.

func (*Session) RemoveParty

func (s *Session) RemoveParty(pid ID) bool

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

type Sessions []Session

Sessions type is created over []Session to implement sort.Interface to be able to sort sessions by creation time

func (Sessions) Len

func (slice Sessions) Len() int

Len is part of sort.Interface implementation for []Session

func (Sessions) Less

func (slice Sessions) Less(i, j int) bool

Less is part of sort.Interface implementation for []Session

func (Sessions) Swap

func (slice Sessions) Swap(i, j int)

Swap is part of sort.Interface implementation for []Session

type TerminalParams

type TerminalParams struct {
	W int `json:"w"`
	H int `json:"h"`
}

TerminalParams holds the terminal size in a session.

func NewTerminalParamsFromInt

func NewTerminalParamsFromInt(w int, h int) (*TerminalParams, error)

NewTerminalParamsFromInt returns new terminal parameters from int width and height

func NewTerminalParamsFromUint32

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

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

func (p *TerminalParams) String() string

String returns debug friendly representation of terminal

func (*TerminalParams) Winsize

func (p *TerminalParams) Winsize() *term.Winsize

Winsize returns low-level parameters for changing PTY

type UpdateRequest

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 DELETE IN 12.0.0

func (*UpdateRequest) Check

func (u *UpdateRequest) Check() error

Check returns nil if request is valid, error otherwize

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL