diff options
Diffstat (limited to 'forged/internal/incoming')
-rw-r--r-- | forged/internal/incoming/hooks/hooks.go | 5 | ||||
-rw-r--r-- | forged/internal/incoming/lmtp/lmtp.go (renamed from forged/internal/incoming/lmtp/config.go) | 4 | ||||
-rw-r--r-- | forged/internal/incoming/ssh/ssh.go | 18 | ||||
-rw-r--r-- | forged/internal/incoming/web/web.go | 22 |
4 files changed, 31 insertions, 18 deletions
diff --git a/forged/internal/incoming/hooks/hooks.go b/forged/internal/incoming/hooks/hooks.go index 52ccb0f..65277d4 100644 --- a/forged/internal/incoming/hooks/hooks.go +++ b/forged/internal/incoming/hooks/hooks.go @@ -40,6 +40,7 @@ func New(config Config) (server *Server) { return &Server{ socketPath: config.Socket, executablesPath: config.Execs, + hookMap: cmap.Map[string, hookInfo]{}, } } @@ -71,7 +72,9 @@ func (server *Server) Run(ctx context.Context) error { } func (server *Server) handleConn(ctx context.Context, conn net.Conn) { - defer conn.Close() + defer func() { + _ = conn.Close() + }() unblock := context.AfterFunc(ctx, func() { _ = conn.SetDeadline(time.Now()) _ = conn.Close() diff --git a/forged/internal/incoming/lmtp/config.go b/forged/internal/incoming/lmtp/lmtp.go index def3ce9..cf5618c 100644 --- a/forged/internal/incoming/lmtp/config.go +++ b/forged/internal/incoming/lmtp/lmtp.go @@ -64,7 +64,9 @@ func (server *Server) Run(ctx context.Context) error { } func (server *Server) handleConn(ctx context.Context, conn net.Conn) { - defer conn.Close() + defer func() { + _ = conn.Close() + }() unblock := context.AfterFunc(ctx, func() { _ = conn.SetDeadline(time.Now()) _ = conn.Close() diff --git a/forged/internal/incoming/ssh/ssh.go b/forged/internal/incoming/ssh/ssh.go index 0c722c0..e551863 100644 --- a/forged/internal/incoming/ssh/ssh.go +++ b/forged/internal/incoming/ssh/ssh.go @@ -37,15 +37,20 @@ func New(config Config) (server *Server, err error) { addr: config.Addr, root: config.Root, shutdownTimeout: config.ShutdownTimeout, - } + } //exhaustruct:ignore var privkeyBytes []byte - if privkeyBytes, err = os.ReadFile(config.Key); err != nil { + + privkeyBytes, err = os.ReadFile(config.Key) + if err != nil { return server, fmt.Errorf("read SSH private key: %w", err) } - if server.privkey, err = gossh.ParsePrivateKey(privkeyBytes); err != nil { + + server.privkey, err = gossh.ParsePrivateKey(privkeyBytes) + if err != nil { return server, fmt.Errorf("parse SSH private key: %w", err) } + server.pubkeyString = misc.BytesToString(gossh.MarshalAuthorizedKey(server.privkey.PublicKey())) server.pubkeyFP = gossh.FingerprintSHA256(server.privkey.PublicKey()) @@ -53,10 +58,10 @@ func New(config Config) (server *Server, err error) { Handler: handle, PublicKeyHandler: func(ctx gliderssh.Context, key gliderssh.PublicKey) bool { return true }, KeyboardInteractiveHandler: func(ctx gliderssh.Context, challenge gossh.KeyboardInteractiveChallenge) bool { return true }, - } + } //exhaustruct:ignore server.gliderServer.AddHostKey(server.privkey) - return + return server, nil } func (server *Server) Run(ctx context.Context) (err error) { @@ -76,7 +81,8 @@ func (server *Server) Run(ctx context.Context) (err error) { }) defer stop() - if err = server.gliderServer.Serve(listener); err != nil { + err = server.gliderServer.Serve(listener) + if err != nil { if errors.Is(err, gliderssh.ErrServerClosed) || ctx.Err() != nil { return nil } diff --git a/forged/internal/incoming/web/web.go b/forged/internal/incoming/web/web.go index dc2d9b4..fb5bedc 100644 --- a/forged/internal/incoming/web/web.go +++ b/forged/internal/incoming/web/web.go @@ -2,6 +2,7 @@ package web import ( "context" + "errors" "fmt" "net" "net/http" @@ -37,19 +38,19 @@ type Config struct { } func New(config Config) (server *Server) { - handler := &handler{} + httpServer := &http.Server{ + Handler: &handler{}, + ReadTimeout: time.Duration(config.ReadTimeout) * time.Second, + WriteTimeout: time.Duration(config.WriteTimeout) * time.Second, + IdleTimeout: time.Duration(config.IdleTimeout) * time.Second, + MaxHeaderBytes: config.MaxHeaderBytes, + } //exhaustruct:ignore return &Server{ net: config.Net, addr: config.Addr, root: config.Root, shutdownTimeout: config.ShutdownTimeout, - httpServer: &http.Server{ - Handler: handler, - ReadTimeout: time.Duration(config.ReadTimeout) * time.Second, - WriteTimeout: time.Duration(config.WriteTimeout) * time.Second, - IdleTimeout: time.Duration(config.IdleTimeout) * time.Second, - MaxHeaderBytes: config.MaxHeaderBytes, - }, + httpServer: httpServer, } } @@ -72,8 +73,9 @@ func (server *Server) Run(ctx context.Context) (err error) { }) defer stop() - if err = server.httpServer.Serve(listener); err != nil { - if err == http.ErrServerClosed || ctx.Err() != nil { + err = server.httpServer.Serve(listener) + if err != nil { + if errors.Is(err, http.ErrServerClosed) || ctx.Err() != nil { return nil } return fmt.Errorf("serve web: %w", err) |