diff options
author | Runxi Yu <me@runxiyu.org> | 2025-08-17 13:31:41 +0800 |
---|---|---|
committer | Runxi Yu <me@runxiyu.org> | 2025-08-17 13:36:51 +0800 |
commit | a7bd17c605e79446d8bf02e474c91986c615b36a (patch) | |
tree | 6d9b610c259c92eadda56ecf20943670ae426224 /forged | |
parent | Tidying (diff) | |
download | forge-a7bd17c605e79446d8bf02e474c91986c615b36a.tar.gz forge-a7bd17c605e79446d8bf02e474c91986c615b36a.tar.zst forge-a7bd17c605e79446d8bf02e474c91986c615b36a.zip |
Linting
Diffstat (limited to 'forged')
-rw-r--r-- | forged/.golangci.yaml | 1 | ||||
-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 | ||||
-rw-r--r-- | forged/internal/server/server.go | 12 |
6 files changed, 41 insertions, 21 deletions
diff --git a/forged/.golangci.yaml b/forged/.golangci.yaml index 1cf650d..7d93d90 100644 --- a/forged/.golangci.yaml +++ b/forged/.golangci.yaml @@ -18,6 +18,7 @@ linters: - lll - mnd # tmp - revive # tmp + - godox # tmp linters-settings: revive: 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) diff --git a/forged/internal/server/server.go b/forged/internal/server/server.go index ab677e0..86332a7 100644 --- a/forged/internal/server/server.go +++ b/forged/internal/server/server.go @@ -30,7 +30,7 @@ type Server struct { } func New(configPath string) (server *Server, err error) { - server = &Server{} + server = &Server{} //exhaustruct:ignore server.config, err = config.Open(configPath) if err != nil { @@ -65,9 +65,15 @@ func (server *Server) Run(ctx context.Context) (err error) { g.Go(func() error { return server.webServer.Run(gctx) }) g.Go(func() error { return server.sshServer.Run(gctx) }) - if err := g.Wait(); err != nil { + err = g.Wait() + if err != nil { return fmt.Errorf("server error: %w", err) } - return ctx.Err() + err = ctx.Err() + if err != nil { + return fmt.Errorf("context exceeded: %w", err) + } + + return nil } |