1// Copyright 2019 The Gitea Authors. All rights reserved.
2// SPDX-License-Identifier: MIT
3
4package ssh
5
6import (
7 "forgejo.org/modules/graceful"
8 "forgejo.org/modules/log"
9 "forgejo.org/modules/setting"
10
11 "github.com/gliderlabs/ssh"
12)
13
14func listen(server *ssh.Server) {
15 gracefulServer := graceful.NewServer("tcp", server.Addr, "SSH")
16 gracefulServer.PerWriteTimeout = setting.SSH.PerWriteTimeout
17 gracefulServer.PerWritePerKbTimeout = setting.SSH.PerWritePerKbTimeout
18
19 err := gracefulServer.ListenAndServe(server.Serve, setting.SSH.UseProxyProtocol)
20 if err != nil {
21 select {
22 case <-graceful.GetManager().IsShutdown():
23 log.Critical("Failed to start SSH server: %v", err)
24 default:
25 log.Fatal("Failed to start SSH server: %v", err)
26 }
27 }
28 log.Info("SSH Listener: %s Closed", server.Addr)
29}
30
31// builtinUnused informs our cleanup routine that we will not be using a ssh port
32func builtinUnused() {
33 graceful.GetManager().InformCleanup()
34}