From a7bd17c605e79446d8bf02e474c91986c615b36a Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sun, 17 Aug 2025 13:31:41 +0800 Subject: [PATCH] Linting --- forged/.golangci.yaml | 1 + forged/internal/incoming/hooks/hooks.go | 5 ++++- forged/internal/incoming/lmtp/config.go => forged/internal/incoming/lmtp/lmtp.go | 4 +++- forged/internal/incoming/ssh/ssh.go | 18 ++++++++++++------ forged/internal/incoming/web/web.go | 22 ++++++++++++---------- forged/internal/server/server.go | 12 +++++++++--- diff --git a/forged/.golangci.yaml b/forged/.golangci.yaml index 1cf650de1dd92895f48fb9d44386e2490ab944d9..7d93d90338b97c899a86f9c3a7f3827622d8665a 100644 --- a/forged/.golangci.yaml +++ b/forged/.golangci.yaml @@ -18,6 +18,7 @@ - funlen # tmp - 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 52ccb0f0b1a0a7d2bcdcf54f06182cbd925710c9..65277d4ca2f070ab8ab64c9ce0c014bf74593f99 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) 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 rename from forged/internal/incoming/lmtp/config.go rename to forged/internal/incoming/lmtp/lmtp.go index def3ce9fe2487a48ce0fe90b91edbe19f9ba9a3b..cf5618cbc2052486248cc0d36f13919edacedc93 100644 --- a/forged/internal/incoming/lmtp/config.go +++ b/forged/internal/incoming/lmtp/lmtp.go @@ -64,7 +64,9 @@ } } 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 0c722c097fd875a8d5e261121d16081f9a514000..e55186300de6c098a63eadc0ee4501b27d6824e4 100644 --- a/forged/internal/incoming/ssh/ssh.go +++ b/forged/internal/incoming/ssh/ssh.go @@ -37,15 +37,20 @@ net: config.Net, 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 @@ server.gliderServer = &gliderssh.Server{ 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 @@ _ = listener.Close() }) 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 dc2d9b49e6383c59902fd30c16cf0d838b287512..fb5bedc48d735b2063f36b9a6068fc9538668176 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 @@ ShutdownTimeout uint32 `scfg:"shutdown_timeout"` } 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 @@ _ = listener.Close() }) 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 ab677e06bde1c18a40b3345d8c7f96e22e0f2d3b..86332a7656366703873f04b63cac16ffea7159ef 100644 --- a/forged/internal/server/server.go +++ b/forged/internal/server/server.go @@ -30,7 +30,7 @@ } } 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 @@ g.Go(func() error { return server.lmtpServer.Run(gctx) }) 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 } -- 2.48.1