New creates a new SSH server ready to be run. It may return an error if the configuration is invalid.
(cfg config.SSHConfig, handler Handler, logger log.Logger)
| 9 | |
| 10 | // New creates a new SSH server ready to be run. It may return an error if the configuration is invalid. |
| 11 | func New(cfg config.SSHConfig, handler Handler, logger log.Logger) (Server, error) { |
| 12 | if err := cfg.Validate(); err != nil { |
| 13 | return nil, err |
| 14 | } |
| 15 | hostKeys, err := cfg.LoadHostKeys() |
| 16 | if err != nil { |
| 17 | return nil, err |
| 18 | } |
| 19 | return &serverImpl{ |
| 20 | cfg: cfg, |
| 21 | handler: handler, |
| 22 | logger: logger, |
| 23 | wg: &sync.WaitGroup{}, |
| 24 | lock: &sync.Mutex{}, |
| 25 | listenSocket: nil, |
| 26 | hostKeys: hostKeys, |
| 27 | shutdownHandlers: &shutdownRegistry{ |
| 28 | lock: &sync.Mutex{}, |
| 29 | callbacks: map[string]shutdownHandler{}, |
| 30 | }, |
| 31 | }, nil |
| 32 | } |