package imsvr import "golang.org/x/crypto/ssh" type ServerConfig struct { BindAddress string MaxAuthTries int hostkeys []ssh.Signer ovrSSHPasswordCallback bool ovrSSHPublicKeyCallback bool ovrSSHKeyboardInteractiveCallback bool ovrSSHAuthLogCallback bool ocSSHPasswordCallback func(conn ssh.ConnMetadata, password []byte) (*ssh.Permissions, error) ocSSHPublicKeyCallback func(conn ssh.ConnMetadata, key ssh.PublicKey) (*ssh.Permissions, error) ocSSHKeyboardInteractiveCallback func(conn ssh.ConnMetadata, client ssh.KeyboardInteractiveChallenge) (*ssh.Permissions, error) ocSSHAuthLogCallback func(conn ssh.ConnMetadata, method string, err error) } func (c *ServerConfig) AddHostKey(key ssh.Signer) { if c.hostkeys == nil { c.hostkeys = make([]ssh.Signer, 1) c.hostkeys[0] = key }else { c.hostkeys = append(c.hostkeys, key) } } func (c *ServerConfig) OverrideSSHPasswordCallback( cb func(conn ssh.ConnMetadata, password []byte) (*ssh.Permissions, error), ){ c.ovrSSHPasswordCallback = true c.ocSSHPasswordCallback = cb } func (c *ServerConfig) OverrideSSHPublicKeyCallback( cb func(conn ssh.ConnMetadata, key ssh.PublicKey) (*ssh.Permissions, error), ){ c.ovrSSHPublicKeyCallback = true c.ocSSHPublicKeyCallback = cb } func (c *ServerConfig) OverrideSSHKeyboardInteractiveCallbakc( cb func(conn ssh.ConnMetadata, client ssh.KeyboardInteractiveChallenge) (*ssh.Permissions, error), ){ c.ovrSSHKeyboardInteractiveCallback = true c.ocSSHKeyboardInteractiveCallback = cb } func (c *ServerConfig) OverrideSSHAuthLogCallback( cb func(conn ssh.ConnMetadata, method string, err error), ){ c.ovrSSHAuthLogCallback = true c.ocSSHAuthLogCallback = cb }