From 98ce6bfebb2e66f2ed04dfa8cd6920759554f7a4 Mon Sep 17 00:00:00 2001 From: Andrew Thornton Date: Sat, 12 Dec 2020 13:16:31 +0000 Subject: [PATCH] Add ConnectionFailedCallback to enable reporting of failed connection Signed-off-by: Andrew Thornton --- server.go | 6 +++++- ssh.go | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/server.go b/server.go index 9528b6e..edf9792 100644 --- a/server.go +++ b/server.go @@ -48,6 +48,8 @@ type Server struct { ServerConfigCallback ServerConfigCallback // callback for configuring detailed SSH options SessionRequestCallback SessionRequestCallback // callback for allowing or denying SSH sessions + ConnectionFailedCallback ConnectionFailedCallback // callback to report connection failures + IdleTimeout time.Duration // connection timeout when no activity, none if empty MaxTimeout time.Duration // absolute connection timeout, none if empty @@ -278,7 +280,9 @@ func (srv *Server) HandleConn(newConn net.Conn) { defer conn.Close() sshConn, chans, reqs, err := gossh.NewServerConn(conn, srv.config(ctx)) if err != nil { - // TODO: trigger event callback + if srv.ConnectionFailedCallback != nil { + srv.ConnectionFailedCallback(conn, err) + } return } diff --git a/ssh.go b/ssh.go index 9673ac3..fbeb150 100644 --- a/ssh.go +++ b/ssh.go @@ -64,6 +64,10 @@ type ReversePortForwardingCallback func(ctx Context, bindHost string, bindPort u // ServerConfigCallback is a hook for creating custom default server configs type ServerConfigCallback func(ctx Context) *gossh.ServerConfig +// ConnectionFailedCallback is a hook for reporting failed connections +// Please note: the net.Conn is likely to be closed at this point +type ConnectionFailedCallback func(conn net.Conn, err error) + // Window represents the size of a PTY window. type Window struct { Width int