From 4b72c663cfb315ecfb9f6be5c106c0c693ce196b Mon Sep 17 00:00:00 2001 From: "Philipp C. Heckel" Date: Thu, 21 Feb 2019 14:57:56 -0500 Subject: [PATCH] Add DefaultServerConfigCallback option for create custom default (#95) ServerConfigs --- server.go | 10 ++++++++-- ssh.go | 3 +++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/server.go b/server.go index a41902e..dc27f69 100644 --- a/server.go +++ b/server.go @@ -30,7 +30,8 @@ type Server struct { PtyCallback PtyCallback // callback for allowing PTY sessions, allows all if nil ConnCallback ConnCallback // optional callback for wrapping net.Conn before handling LocalPortForwardingCallback LocalPortForwardingCallback // callback for allowing local port forwarding, denies all if nil - ReversePortForwardingCallback ReversePortForwardingCallback //callback for allowing reverse port forwarding, denies all if nil + ReversePortForwardingCallback ReversePortForwardingCallback // callback for allowing reverse port forwarding, denies all if nil + DefaultServerConfigCallback DefaultServerConfigCallback // callback for configuring detailed SSH options IdleTimeout time.Duration // connection timeout when no activity, none if empty MaxTimeout time.Duration // absolute connection timeout, none if empty @@ -77,7 +78,12 @@ func (srv *Server) ensureHandlers() { } func (srv *Server) config(ctx Context) *gossh.ServerConfig { - config := &gossh.ServerConfig{} + var config *gossh.ServerConfig + if srv.DefaultServerConfigCallback == nil { + config = &gossh.ServerConfig{} + } else { + config = srv.DefaultServerConfigCallback(ctx) + } for _, signer := range srv.HostSigners { config.AddHostKey(signer) } diff --git a/ssh.go b/ssh.go index 1d339c4..334566d 100644 --- a/ssh.go +++ b/ssh.go @@ -57,6 +57,9 @@ type LocalPortForwardingCallback func(ctx Context, destinationHost string, desti // ReversePortForwardingCallback is a hook for allowing reverse port forwarding type ReversePortForwardingCallback func(ctx Context, bindHost string, bindPort uint32) bool +// DefaultServerConfigCallback is a hook for creating custom default server configs +type DefaultServerConfigCallback func(ctx Context) *gossh.ServerConfig + // Window represents the size of a PTY window. type Window struct { Width int