Documentation
¶
Index ¶
- func GetLogger(s *SSHServerConnSession) *slog.Logger
- func GetUser(s *SSHServerConnSession) *db.User
- func KeysEqual(a, b ssh.PublicKey) bool
- func SessionMessage(sesh *SSHServerConnSession, msg string)
- func SetLogger(s *SSHServerConnSession, logger *slog.Logger)
- func SetUser(s *SSHServerConnSession, user *db.User)
- type FindUserInterface
- type GetLoggerInterface
- type Pty
- type PubKeyAuthHandler
- type SSHServer
- type SSHServerChannelMiddleware
- type SSHServerConfig
- type SSHServerConn
- type SSHServerConnSession
- func (s *SSHServerConnSession) Close() error
- func (s *SSHServerConnSession) Command() []string
- func (s *SSHServerConnSession) Context() context.Context
- func (s *SSHServerConnSession) Deadline() (deadline time.Time, ok bool)
- func (s *SSHServerConnSession) Done() <-chan struct{}
- func (s *SSHServerConnSession) Err() error
- func (sesh *SSHServerConnSession) Errorf(f string, v ...interface{})
- func (sesh *SSHServerConnSession) Errorln(v ...interface{})
- func (s *SSHServerConnSession) Exit(code int) error
- func (s *SSHServerConnSession) Fatal(err error)
- func (s *SSHServerConnSession) Permissions() *ssh.Permissions
- func (sesh *SSHServerConnSession) Printf(f string, v ...interface{})
- func (sesh *SSHServerConnSession) Println(v ...interface{})
- func (s *SSHServerConnSession) Pty() (*Pty, <-chan Window, bool)
- func (s *SSHServerConnSession) PublicKey() ssh.PublicKey
- func (s *SSHServerConnSession) RemoteAddr() net.Addr
- func (s *SSHServerConnSession) SetValue(key any, data any)
- func (s *SSHServerConnSession) User() string
- func (s *SSHServerConnSession) Value(key any) any
- func (s *SSHServerConnSession) Write(p []byte) (n int, err error)
- type SSHServerHandler
- type SSHServerMiddleware
- type Window
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetLogger ¶
func GetLogger(s *SSHServerConnSession) *slog.Logger
func GetUser ¶
func GetUser(s *SSHServerConnSession) *db.User
func SessionMessage ¶
func SessionMessage(sesh *SSHServerConnSession, msg string)
func SetLogger ¶
func SetLogger(s *SSHServerConnSession, logger *slog.Logger)
func SetUser ¶
func SetUser(s *SSHServerConnSession, user *db.User)
Types ¶
type FindUserInterface ¶
type GetLoggerInterface ¶
type GetLoggerInterface interface {
GetLogger(s *SSHServerConnSession) *slog.Logger
}
type PubKeyAuthHandler ¶
type PubKeyAuthHandler func(conn ssh.ConnMetadata, key ssh.PublicKey) (*ssh.Permissions, error)
type SSHServer ¶
type SSHServer struct {
Ctx context.Context
CancelFunc context.CancelFunc
Logger *slog.Logger
Config *SSHServerConfig
Listener net.Listener
Conns *syncmap.Map[string, *SSHServerConn]
SessionsCreated *prometheus.CounterVec
SessionsFinished *prometheus.CounterVec
SessionsDuration *prometheus.CounterVec
Mu sync.Mutex
}
func NewSSHServer ¶
func NewSSHServerWithConfig ¶
func NewSSHServerWithConfig( ctx context.Context, logger *slog.Logger, app, host, port, promPort, hostKey string, pubKeyAuthHandler PubKeyAuthHandler, middleware, subsystemMiddleware []SSHServerMiddleware, channelMiddleware map[string]SSHServerChannelMiddleware, ) (*SSHServer, error)
func (*SSHServer) ListenAndServe ¶
type SSHServerChannelMiddleware ¶
type SSHServerChannelMiddleware func(ssh.NewChannel, *SSHServerConn) error
type SSHServerConfig ¶
type SSHServerConfig struct {
*ssh.ServerConfig
App string
ListenAddr string
PromListenAddr string
Middleware []SSHServerMiddleware
SubsystemMiddleware []SSHServerMiddleware
ChannelMiddleware map[string]SSHServerChannelMiddleware
}
type SSHServerConn ¶
type SSHServerConn struct {
Ctx context.Context
CancelFunc context.CancelFunc
Logger *slog.Logger
Conn *ssh.ServerConn
SSHServer *SSHServer
Start time.Time
// contains filtered or unexported fields
}
func NewSSHServerConn ¶
func NewSSHServerConn( ctx context.Context, logger *slog.Logger, conn *ssh.ServerConn, server *SSHServer, ) *SSHServerConn
func (*SSHServerConn) Close ¶
func (sc *SSHServerConn) Close() error
func (*SSHServerConn) Context ¶
func (s *SSHServerConn) Context() context.Context
func (*SSHServerConn) Handle ¶
func (sc *SSHServerConn) Handle(chans <-chan ssh.NewChannel, reqs <-chan *ssh.Request) error
type SSHServerConnSession ¶
type SSHServerConnSession struct {
ssh.Channel
*SSHServerConn
Ctx context.Context
CancelFunc context.CancelFunc
// contains filtered or unexported fields
}
func (*SSHServerConnSession) Close ¶
func (s *SSHServerConnSession) Close() error
func (*SSHServerConnSession) Command ¶
func (s *SSHServerConnSession) Command() []string
func (*SSHServerConnSession) Context ¶
func (s *SSHServerConnSession) Context() context.Context
func (*SSHServerConnSession) Deadline ¶
func (s *SSHServerConnSession) Deadline() (deadline time.Time, ok bool)
Deadline implements context.Context.
func (*SSHServerConnSession) Done ¶
func (s *SSHServerConnSession) Done() <-chan struct{}
Done implements context.Context.
func (*SSHServerConnSession) Err ¶
func (s *SSHServerConnSession) Err() error
Err implements context.Context.
func (*SSHServerConnSession) Errorf ¶
func (sesh *SSHServerConnSession) Errorf(f string, v ...interface{})
func (*SSHServerConnSession) Errorln ¶
func (sesh *SSHServerConnSession) Errorln(v ...interface{})
func (*SSHServerConnSession) Exit ¶
func (s *SSHServerConnSession) Exit(code int) error
func (*SSHServerConnSession) Fatal ¶
func (s *SSHServerConnSession) Fatal(err error)
func (*SSHServerConnSession) Permissions ¶
func (s *SSHServerConnSession) Permissions() *ssh.Permissions
func (*SSHServerConnSession) Printf ¶
func (sesh *SSHServerConnSession) Printf(f string, v ...interface{})
func (*SSHServerConnSession) Println ¶
func (sesh *SSHServerConnSession) Println(v ...interface{})
func (*SSHServerConnSession) PublicKey ¶
func (s *SSHServerConnSession) PublicKey() ssh.PublicKey
func (*SSHServerConnSession) RemoteAddr ¶
func (s *SSHServerConnSession) RemoteAddr() net.Addr
func (*SSHServerConnSession) SetValue ¶
func (s *SSHServerConnSession) SetValue(key any, data any)
SetValue implements context.Context.
func (*SSHServerConnSession) User ¶
func (s *SSHServerConnSession) User() string
func (*SSHServerConnSession) Value ¶
func (s *SSHServerConnSession) Value(key any) any
Value implements context.Context.
type SSHServerHandler ¶
type SSHServerHandler func(*SSHServerConnSession) error
type SSHServerMiddleware ¶
type SSHServerMiddleware func(SSHServerHandler) SSHServerHandler
func HelpNotice ¶
func HelpNotice(help string) SSHServerMiddleware
HelpNotice writes help to the session, translating newlines for the client's pty.
func LogMiddleware ¶
func LogMiddleware(getLogger GetLoggerInterface, database FindUserInterface) SSHServerMiddleware
func PtyMdw ¶
func PtyMdw(mdw SSHServerMiddleware) SSHServerMiddleware
Click to show internal directories.
Click to hide internal directories.