- commit
- 6b1a9fc
- parent
- 7a72e72
- author
- Eric Bower
- date
- 2025-05-25 14:31:40 -0400 EDT
fix: linter issues
33 files changed,
+208,
-126
+3,
-1
1@@ -11,7 +11,9 @@ import (
2 func main() {
3 cfg := feeds.NewConfigSite("feeds-fetch")
4 dbh := postgres.NewDB(cfg.DbURL, cfg.Logger)
5- defer dbh.Close()
6+ defer func() {
7+ _ = dbh.Close()
8+ }()
9 fetcher := feeds.NewFetcher(dbh, cfg)
10 fp := gofeed.NewParser()
11 feed, err := fetcher.ParseURL(fp, "https://old.reddit.com/r/Watchexchange/.rss")
+3,
-1
1@@ -830,7 +830,9 @@ func StartApiServer() {
2 cfg.Logger = logger
3
4 db := postgres.NewDB(cfg.DbURL, logger)
5- defer db.Close()
6+ defer func() {
7+ _ = db.Close()
8+ }()
9
10 ctx, cancel := context.WithCancel(context.Background())
11 defer cancel()
+3,
-1
1@@ -127,7 +127,9 @@ func createStaticRoutes() []shared.Route {
2 func StartApiServer() {
3 cfg := NewConfigSite("feeds-web")
4 db := postgres.NewDB(cfg.DbURL, cfg.Logger)
5- defer db.Close()
6+ defer func() {
7+ _ = db.Close()
8+ }()
9 logger := cfg.Logger
10
11 // cron daily digest
+20,
-20
1@@ -20,7 +20,7 @@ func Middleware(dbpool db.DB, cfg *shared.ConfigSite) pssh.SSHServerMiddleware {
2
3 if user == nil {
4 err := fmt.Errorf("user not found")
5- fmt.Fprintln(sesh.Stderr(), err)
6+ _, _ = fmt.Fprintln(sesh.Stderr(), err)
7 return err
8 }
9
10@@ -31,25 +31,25 @@ func Middleware(dbpool db.DB, cfg *shared.ConfigSite) pssh.SSHServerMiddleware {
11
12 switch cmd {
13 case "help":
14- fmt.Fprintf(sesh, "Commands: [help, ls, rm, run]\r\n\r\n")
15+ _, _ = fmt.Fprintf(sesh, "Commands: [help, ls, rm, run]\r\n\r\n")
16 writer := tabwriter.NewWriter(sesh, 0, 0, 1, ' ', tabwriter.TabIndent)
17- fmt.Fprintln(writer, "Cmd\tDesc")
18- fmt.Fprintf(
19+ _, _ = fmt.Fprintln(writer, "Cmd\tDesc")
20+ _, _ = fmt.Fprintf(
21 writer,
22 "%s\t%s\r\n",
23 "help", "this help text",
24 )
25- fmt.Fprintf(
26+ _, _ = fmt.Fprintf(
27 writer,
28 "%s\t%s\r\n",
29 "ls", "list feed digest posts with metadata",
30 )
31- fmt.Fprintf(
32+ _, _ = fmt.Fprintf(
33 writer,
34 "%s\t%s\r\n",
35 "rm {filename}", "removes feed digest post",
36 )
37- fmt.Fprintf(
38+ _, _ = fmt.Fprintf(
39 writer,
40 "%s\t%s\r\n",
41 "run {filename}", "runs the feed digest post immediately, ignoring last digest time validation",
42@@ -58,20 +58,20 @@ func Middleware(dbpool db.DB, cfg *shared.ConfigSite) pssh.SSHServerMiddleware {
43 case "ls":
44 posts, err := dbpool.FindPostsForUser(&db.Pager{Page: 0, Num: 1000}, user.ID, "feeds")
45 if err != nil {
46- fmt.Fprintln(sesh.Stderr(), err)
47+ _, _ = fmt.Fprintln(sesh.Stderr(), err)
48 return err
49 }
50
51 if len(posts.Data) == 0 {
52- fmt.Fprintln(sesh, "no posts found")
53+ _, _ = fmt.Fprintln(sesh, "no posts found")
54 }
55
56 writer := tabwriter.NewWriter(sesh, 0, 0, 1, ' ', tabwriter.TabIndent)
57- fmt.Fprintln(writer, "Filename\tLast Digest\tNext Digest\tInterval\tFailed Attempts")
58+ _, _ = fmt.Fprintln(writer, "Filename\tLast Digest\tNext Digest\tInterval\tFailed Attempts")
59 for _, post := range posts.Data {
60 parsed := shared.ListParseText(post.Text)
61 digestOption := DigestOptionToTime(*post.Data.LastDigest, parsed.DigestInterval)
62- fmt.Fprintf(
63+ _, _ = fmt.Fprintf(
64 writer,
65 "%s\t%s\t%s\t%s\t%d/10\r\n",
66 post.Filename,
67@@ -84,7 +84,7 @@ func Middleware(dbpool db.DB, cfg *shared.ConfigSite) pssh.SSHServerMiddleware {
68 return writer.Flush()
69 case "rm":
70 filename := args[1]
71- fmt.Fprintf(sesh, "removing digest post %s\r\n", filename)
72+ _, _ = fmt.Fprintf(sesh, "removing digest post %s\r\n", filename)
73 write := false
74 if len(args) > 2 {
75 writeRaw := args[2]
76@@ -95,37 +95,37 @@ func Middleware(dbpool db.DB, cfg *shared.ConfigSite) pssh.SSHServerMiddleware {
77
78 post, err := dbpool.FindPostWithFilename(filename, user.ID, "feeds")
79 if err != nil {
80- fmt.Fprintln(sesh.Stderr(), err)
81+ _, _ = fmt.Fprintln(sesh.Stderr(), err)
82 return err
83 }
84 if write {
85 err = dbpool.RemovePosts([]string{post.ID})
86 if err != nil {
87- fmt.Fprintln(sesh.Stderr(), err)
88+ _, _ = fmt.Fprintln(sesh.Stderr(), err)
89 }
90 }
91- fmt.Fprintf(sesh, "digest post removed %s\r\n", filename)
92+ _, _ = fmt.Fprintf(sesh, "digest post removed %s\r\n", filename)
93 if !write {
94- fmt.Fprintln(sesh, "WARNING: *must* append with `--write` for the changes to persist.")
95+ _, _ = fmt.Fprintln(sesh, "WARNING: *must* append with `--write` for the changes to persist.")
96 }
97 return err
98 case "run":
99 if len(args) < 2 {
100 err := fmt.Errorf("must provide filename of post to run")
101- fmt.Fprintln(sesh.Stderr(), err)
102+ _, _ = fmt.Fprintln(sesh.Stderr(), err)
103 return err
104 }
105 filename := args[1]
106 post, err := dbpool.FindPostWithFilename(filename, user.ID, "feeds")
107 if err != nil {
108- fmt.Fprintln(sesh.Stderr(), err)
109+ _, _ = fmt.Fprintln(sesh.Stderr(), err)
110 return err
111 }
112- fmt.Fprintf(sesh, "running feed post: %s\r\n", filename)
113+ _, _ = fmt.Fprintf(sesh, "running feed post: %s\r\n", filename)
114 fetcher := NewFetcher(dbpool, cfg)
115 err = fetcher.RunPost(logger, user, post, true)
116 if err != nil {
117- fmt.Fprintln(sesh.Stderr(), err)
118+ _, _ = fmt.Fprintln(sesh.Stderr(), err)
119 }
120 return err
121 }
+3,
-1
1@@ -317,7 +317,9 @@ func (f *Fetcher) ParseURL(fp *gofeed.Parser, url string) (*gofeed.Feed, error)
2 return nil, err
3 }
4
5- defer resp.Body.Close()
6+ defer func() {
7+ _ = resp.Body.Close()
8+ }()
9 body, err := io.ReadAll(resp.Body)
10 if err != nil {
11 return nil, err
+3,
-1
1@@ -32,7 +32,9 @@ func StartSshServer() {
2 defer cancel()
3
4 dbh := postgres.NewDB(cfg.DbURL, cfg.Logger)
5- defer dbh.Close()
6+ defer func() {
7+ _ = dbh.Close()
8+ }()
9
10 hooks := &FeedHooks{
11 Cfg: cfg,
+3,
-1
1@@ -375,7 +375,9 @@ func createSubdomainRoutes(staticRoutes []shared.Route) []shared.Route {
2 func StartApiServer() {
3 cfg := NewConfigSite("pastes-web")
4 db := postgres.NewDB(cfg.DbURL, cfg.Logger)
5- defer db.Close()
6+ defer func() {
7+ _ = db.Close()
8+ }()
9 logger := cfg.Logger
10
11 go CronDeleteExpiredPosts(cfg, db)
+3,
-1
1@@ -33,7 +33,9 @@ func StartSshServer() {
2 defer cancel()
3
4 dbh := postgres.NewDB(cfg.DbURL, cfg.Logger)
5- defer dbh.Close()
6+ defer func() {
7+ _ = dbh.Close()
8+ }()
9 hooks := &FileHooks{
10 Cfg: cfg,
11 Db: dbh,
+9,
-11
1@@ -25,14 +25,14 @@ func NewTabWriter(out io.Writer) *tabwriter.Writer {
2
3 func projectTable(sesh io.Writer, projects []*db.Project) {
4 writer := NewTabWriter(sesh)
5- fmt.Fprintln(writer, "Name\tLast Updated\tLinks To\tACL Type\tACL\tBlocked")
6+ _, _ = fmt.Fprintln(writer, "Name\tLast Updated\tLinks To\tACL Type\tACL\tBlocked")
7
8 for _, project := range projects {
9 links := ""
10 if project.ProjectDir != project.Name {
11 links = project.ProjectDir
12 }
13- fmt.Fprintf(
14+ _, _ = fmt.Fprintf(
15 writer,
16 "%s\t%s\t%s\t%s\t%s\t%s\r\n",
17 project.Name,
18@@ -43,7 +43,7 @@ func projectTable(sesh io.Writer, projects []*db.Project) {
19 project.Blocked,
20 )
21 }
22- writer.Flush()
23+ _ = writer.Flush()
24 }
25
26 type Cmd struct {
27@@ -184,11 +184,11 @@ func (c *Cmd) help() {
28 }
29
30 writer := NewTabWriter(c.Session)
31- fmt.Fprintln(writer, "Cmd\tDescription")
32+ _, _ = fmt.Fprintln(writer, "Cmd\tDescription")
33 for _, dat := range data {
34- fmt.Fprintf(writer, "%s\t%s\r\n", dat[0], dat[1])
35+ _, _ = fmt.Fprintf(writer, "%s\t%s\r\n", dat[0], dat[1])
36 }
37- writer.Flush()
38+ _ = writer.Flush()
39 }
40
41 func (c *Cmd) stats(cfgMaxSize uint64) error {
42@@ -217,8 +217,8 @@ func (c *Cmd) stats(cfgMaxSize uint64) error {
43 }
44
45 writer := NewTabWriter(c.Session)
46- fmt.Fprintln(writer, "Used (GB)\tQuota (GB)\tUsed (%)\tProjects (#)")
47- fmt.Fprintf(
48+ _, _ = fmt.Fprintln(writer, "Used (GB)\tQuota (GB)\tUsed (%)\tProjects (#)")
49+ _, _ = fmt.Fprintf(
50 writer,
51 "%.4f\t%.4f\t%.4f\t%d\r\n",
52 utils.BytesToGB(int(totalFileSize)),
53@@ -226,9 +226,7 @@ func (c *Cmd) stats(cfgMaxSize uint64) error {
54 (float32(totalFileSize)/float32(storageMax))*100,
55 len(projects),
56 )
57- writer.Flush()
58-
59- return nil
60+ return writer.Flush()
61 }
62
63 func (c *Cmd) ls() error {
+26,
-9
1@@ -59,7 +59,9 @@ func TestSshServerSftp(t *testing.T) {
2 t.Error(err)
3 return
4 }
5- defer client.Close()
6+ defer func() {
7+ _ = client.Close()
8+ }()
9
10 _, err = WriteFileWithSftp(cfg, client)
11 if err != nil {
12@@ -142,7 +144,9 @@ func TestSshServerRsync(t *testing.T) {
13 t.Error(err)
14 return
15 }
16- defer conn.Close()
17+ defer func() {
18+ _ = conn.Close()
19+ }()
20
21 // open an SFTP session over an existing ssh connection.
22 client, err := sftp.NewClient(conn)
23@@ -150,7 +154,9 @@ func TestSshServerRsync(t *testing.T) {
24 cfg.Logger.Error("could not create sftp client", "err", err)
25 panic(err)
26 }
27- defer client.Close()
28+ defer func() {
29+ _ = client.Close()
30+ }()
31
32 name, err := os.MkdirTemp("", "rsync-")
33 if err != nil {
34@@ -229,7 +235,7 @@ func TestSshServerRsync(t *testing.T) {
35 }
36
37 // remove about file
38- os.Remove(aboutFile)
39+ _ = os.Remove(aboutFile)
40
41 // copy files with delete
42 delCmd := exec.Command("rsync", "-rv", "--delete", "-e", eCmd, name+"/", "localhost:/test")
43@@ -252,7 +258,9 @@ func TestSshServerRsync(t *testing.T) {
44 if err != nil {
45 panic(err)
46 }
47- defer os.RemoveAll(dlName)
48+ defer func() {
49+ _ = os.RemoveAll(dlName)
50+ }()
51 // download files
52 downloadCmd := exec.Command("rsync", "-rvvv", "-e", eCmd, "localhost:/test/", dlName+"/")
53 result, err = downloadCmd.CombinedOutput()
54@@ -351,7 +359,9 @@ func (s UserSSH) Cmd(client *ssh.Client, patch []byte, cmd string) (string, erro
55 if err != nil {
56 return "", err
57 }
58- defer session.Close()
59+ defer func() {
60+ _ = session.Close()
61+ }()
62
63 stdinPipe, err := session.StdinPipe()
64 if err != nil {
65@@ -374,7 +384,10 @@ func (s UserSSH) Cmd(client *ssh.Client, patch []byte, cmd string) (string, erro
66 }
67 }
68
69- stdinPipe.Close()
70+ err = stdinPipe.Close()
71+ if err != nil {
72+ return "", err
73+ }
74
75 if err := session.Wait(); err != nil {
76 return "", err
77@@ -419,7 +432,9 @@ func WriteFileWithSftp(cfg *PgsConfig, conn *ssh.Client) (*os.FileInfo, error) {
78 cfg.Logger.Error("could not create sftp client", "err", err)
79 return nil, err
80 }
81- defer client.Close()
82+ defer func() {
83+ _ = client.Close()
84+ }()
85
86 f, err := client.Create("test/hello.txt")
87 if err != nil {
88@@ -450,7 +465,9 @@ func WriteFilesMultProjectsWithSftp(cfg *PgsConfig, conn *ssh.Client) (*os.FileI
89 cfg.Logger.Error("could not create sftp client", "err", err)
90 return nil, err
91 }
92- defer client.Close()
93+ defer func() {
94+ _ = client.Close()
95+ }()
96
97 f, err := client.Create("mult/hello.txt")
98 if err != nil {
+8,
-4
1@@ -244,7 +244,9 @@ func (h *UploadAssetHandler) findDenylist(bucket sst.Bucket, project *db.Project
2 if err != nil {
3 return "", fmt.Errorf("_pgs_ignore not found")
4 }
5- defer fp.Close()
6+ defer func() {
7+ _ = fp.Close()
8+ }()
9
10 buf := new(strings.Builder)
11 _, err = io.Copy(buf, fp)
12@@ -344,7 +346,9 @@ func (h *UploadAssetHandler) Write(s *pssh.SSHServerConnSession, entry *sendutil
13 curFileSize = info.Size
14 }
15 if obj != nil {
16- defer obj.Close()
17+ defer func() {
18+ _ = obj.Close()
19+ }()
20 }
21
22 denylist := getDenylist(s)
23@@ -381,8 +385,8 @@ func (h *UploadAssetHandler) Write(s *pssh.SSHServerConnSession, entry *sendutil
24 remaining := int64(storageMax) - int64(curStorageSize)
25 sizeRemaining := min(remaining+curFileSize, fileMax)
26 if sizeRemaining <= 0 {
27- fmt.Fprintln(s.Stderr(), "storage quota reached")
28- fmt.Fprintf(s.Stderr(), "\r")
29+ _, _ = fmt.Fprintln(s.Stderr(), "storage quota reached")
30+ _, _ = fmt.Fprintf(s.Stderr(), "\r")
31 _ = s.Exit(1)
32 _ = s.Close()
33 return "", fmt.Errorf("storage quota reached")
+12,
-4
1@@ -51,7 +51,9 @@ func (h *ApiAssetHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
2 logger.Info("_redirects not found in lru cache", "key", redirectsCacheKey)
3 redirectFp, redirectInfo, err := h.Cfg.Storage.GetObject(h.Bucket, filepath.Join(h.ProjectDir, "_redirects"))
4 if err == nil {
5- defer redirectFp.Close()
6+ defer func() {
7+ _ = redirectFp.Close()
8+ }()
9 if redirectInfo != nil && redirectInfo.Size > h.Cfg.MaxSpecialFileSize {
10 errMsg := fmt.Sprintf("_redirects file is too large (%d > %d)", redirectInfo.Size, h.Cfg.MaxSpecialFileSize)
11 logger.Error(errMsg)
12@@ -106,7 +108,9 @@ func (h *ApiAssetHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
13 if err != nil {
14 continue
15 }
16- defer obj.Close()
17+ defer func() {
18+ _ = obj.Close()
19+ }()
20 }
21 logger.Info(
22 "redirecting request",
23@@ -177,7 +181,9 @@ func (h *ApiAssetHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
24 http.Error(w, "404 not found", http.StatusNotFound)
25 return
26 }
27- defer contents.Close()
28+ defer func() {
29+ _ = contents.Close()
30+ }()
31
32 var headers []*HeaderRule
33
34@@ -190,7 +196,9 @@ func (h *ApiAssetHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
35 logger.Info("_headers not found in lru cache", "key", headersCacheKey)
36 headersFp, headersInfo, err := h.Cfg.Storage.GetObject(h.Bucket, filepath.Join(h.ProjectDir, "_headers"))
37 if err == nil {
38- defer headersFp.Close()
39+ defer func() {
40+ _ = headersFp.Close()
41+ }()
42 if headersInfo != nil && headersInfo.Size > h.Cfg.MaxSpecialFileSize {
43 errMsg := fmt.Sprintf("_headers file is too large (%d > %d)", headersInfo.Size, h.Cfg.MaxSpecialFileSize)
44 logger.Error(errMsg)
+2,
-2
1@@ -76,7 +76,7 @@ func (c *Cmd) logs(ctx context.Context) error {
2 if !ok {
3 return
4 }
5- fmt.Fprintln(c.SshSession, log)
6+ _, _ = fmt.Fprintln(c.SshSession, log)
7 }
8 }
9 }()
10@@ -127,7 +127,7 @@ func Middleware(handler *CliHandler) pssh.SSHServerMiddleware {
11
12 user, err := getUser(sesh, dbpool)
13 if err != nil {
14- fmt.Fprintf(sesh.Stderr(), "detected ssh command: %s\n", args)
15+ _, _ = fmt.Fprintf(sesh.Stderr(), "detected ssh command: %s\n", args)
16 s := fmt.Errorf("error: you need to create an account before using the remote cli: %w", err)
17 sesh.Fatal(s)
18 return s
+6,
-6
1@@ -244,12 +244,12 @@ func (h *UploadHandler) ProcessAuthorizedKeys(text []byte, logger *slog.Logger,
2 for _, pk := range diff.Add {
3 key := utils.KeyForKeyText(pk.Pk)
4
5- fmt.Fprintf(s.Stderr(), "adding pubkey (%s)\n", key)
6+ _, _ = fmt.Fprintf(s.Stderr(), "adding pubkey (%s)\n", key)
7 logger.Info("adding pubkey", "pubkey", key)
8
9 err = dbpool.InsertPublicKey(user.ID, key, pk.Comment, nil)
10 if err != nil {
11- fmt.Fprintf(s.Stderr(), "error: could not insert pubkey: %s (%s)\n", err.Error(), key)
12+ _, _ = fmt.Fprintf(s.Stderr(), "error: could not insert pubkey: %s (%s)\n", err.Error(), key)
13 logger.Error("could not insert pubkey", "err", err.Error())
14 }
15 }
16@@ -257,7 +257,7 @@ func (h *UploadHandler) ProcessAuthorizedKeys(text []byte, logger *slog.Logger,
17 for _, pk := range diff.Update {
18 key := utils.KeyForKeyText(pk.Pk)
19
20- fmt.Fprintf(s.Stderr(), "updating pubkey with comment: %s (%s)\n", pk.Comment, key)
21+ _, _ = fmt.Fprintf(s.Stderr(), "updating pubkey with comment: %s (%s)\n", pk.Comment, key)
22 logger.Info(
23 "updating pubkey with comment",
24 "pubkey", key,
25@@ -266,18 +266,18 @@ func (h *UploadHandler) ProcessAuthorizedKeys(text []byte, logger *slog.Logger,
26
27 _, err = dbpool.UpdatePublicKey(pk.ID, pk.Comment)
28 if err != nil {
29- fmt.Fprintf(s.Stderr(), "error: could not update pubkey: %s (%s)\n", err.Error(), key)
30+ _, _ = fmt.Fprintf(s.Stderr(), "error: could not update pubkey: %s (%s)\n", err.Error(), key)
31 logger.Error("could not update pubkey", "err", err.Error(), "key", key)
32 }
33 }
34
35 if len(diff.Rm) > 0 {
36- fmt.Fprintf(s.Stderr(), "removing pubkeys: %s\n", diff.Rm)
37+ _, _ = fmt.Fprintf(s.Stderr(), "removing pubkeys: %s\n", diff.Rm)
38 logger.Info("removing pubkeys", "pubkeys", diff.Rm)
39
40 err = dbpool.RemoveKeys(diff.Rm)
41 if err != nil {
42- fmt.Fprintf(s.Stderr(), "error: could not rm pubkeys: %s\n", err.Error())
43+ _, _ = fmt.Fprintf(s.Stderr(), "error: could not rm pubkeys: %s\n", err.Error())
44 logger.Error("could not remove pubkey", "err", err.Error())
45 }
46 }
+3,
-1
1@@ -50,7 +50,9 @@ func StartSshServer() {
2 defer cancel()
3
4 dbpool := postgres.NewDB(cfg.DbURL, cfg.Logger)
5- defer dbpool.Close()
6+ defer func() {
7+ _ = dbpool.Close()
8+ }()
9
10 handler := NewUploadHandler(
11 dbpool,
+12,
-8
1@@ -282,7 +282,9 @@ func handlePipe() http.HandlerFunc {
2 return
3 }
4
5- defer c.Close()
6+ defer func() {
7+ _ = c.Close()
8+ }()
9
10 clientInfo := shared.NewPicoPipeClient()
11 topic, _ := url.PathUnescape(shared.GetField(r, 0))
12@@ -326,7 +328,7 @@ func handlePipe() http.HandlerFunc {
13 if err != nil {
14 logger.Error("pipe remove error", "topic", topic, "info", clientInfo, "err", err.Error())
15 }
16- c.Close()
17+ _ = c.Close()
18 }()
19
20 var wg sync.WaitGroup
21@@ -334,8 +336,8 @@ func handlePipe() http.HandlerFunc {
22
23 go func() {
24 defer func() {
25- p.Close()
26- c.Close()
27+ _ = p.Close()
28+ _ = c.Close()
29 wg.Done()
30 }()
31
32@@ -356,8 +358,8 @@ func handlePipe() http.HandlerFunc {
33
34 go func() {
35 defer func() {
36- p.Close()
37- c.Close()
38+ _ = p.Close()
39+ _ = c.Close()
40 wg.Done()
41 }()
42
43@@ -415,7 +417,9 @@ func createMainRoutes(staticRoutes []shared.Route) []shared.Route {
44 func StartApiServer() {
45 cfg := NewConfigSite("pipe-web")
46 db := postgres.NewDB(cfg.DbURL, cfg.Logger)
47- defer db.Close()
48+ defer func() {
49+ _ = db.Close()
50+ }()
51 logger := cfg.Logger
52
53 staticRoutes := createStaticRoutes()
54@@ -443,7 +447,7 @@ func StartApiServer() {
55
56 go func() {
57 for {
58- _, err := fmt.Fprint(pingSession, "%s", fmt.Sprintf("%s: pipe-web ping\n", time.Now().UTC().Format(time.RFC3339)))
59+ _, err := fmt.Fprintf(pingSession, "%s: pipe-web ping\n", time.Now().UTC().Format(time.RFC3339))
60 if err != nil {
61 logger.Error("pipe ping error", "err", err.Error())
62 }
+15,
-15
1@@ -25,7 +25,7 @@ func flagSet(cmdName string, sesh *pssh.SSHServerConnSession) *flag.FlagSet {
2 cmd := flag.NewFlagSet(cmdName, flag.ContinueOnError)
3 cmd.SetOutput(sesh)
4 cmd.Usage = func() {
5- fmt.Fprintf(cmd.Output(), "Usage: %s <topic> [args...]\nArgs:\n", cmdName)
6+ _, _ = fmt.Fprintf(cmd.Output(), "Usage: %s <topic> [args...]\nArgs:\n", cmdName)
7 cmd.PrintDefaults()
8 }
9 return cmd
10@@ -156,7 +156,7 @@ func Middleware(handler *CliHandler) pssh.SSHServerMiddleware {
11 args := sesh.Command()
12
13 if len(args) == 0 {
14- fmt.Fprintln(sesh, helpStr(toSshCmd(handler.Cfg)))
15+ _, _ = fmt.Fprintln(sesh, helpStr(toSshCmd(handler.Cfg)))
16 return next(sesh)
17 }
18
19@@ -201,7 +201,7 @@ func Middleware(handler *CliHandler) pssh.SSHServerMiddleware {
20
21 cmd := strings.TrimSpace(args[0])
22 if cmd == "help" {
23- fmt.Fprintln(sesh, helpStr(toSshCmd(handler.Cfg)))
24+ _, _ = fmt.Fprintln(sesh, helpStr(toSshCmd(handler.Cfg)))
25 return next(sesh)
26 } else if cmd == "ls" {
27 if userName == "public" {
28@@ -234,7 +234,7 @@ func Middleware(handler *CliHandler) pssh.SSHServerMiddleware {
29 }
30
31 if len(channels) == 0 && len(waitingChannels) == 0 {
32- fmt.Fprintln(sesh, "no pubsub channels found")
33+ _, _ = fmt.Fprintln(sesh, "no pubsub channels found")
34 } else {
35 var outputData string
36 if len(channels) > 0 || len(waitingChannels) > 0 {
37@@ -403,7 +403,7 @@ func Middleware(handler *CliHandler) pssh.SSHServerMiddleware {
38 }
39
40 if !*clean {
41- fmt.Fprintf(
42+ _, _ = fmt.Fprintf(
43 sesh,
44 "subscribe to this channel:\n ssh %s sub %s%s\n",
45 toSshCmd(handler.Cfg),
46@@ -436,7 +436,7 @@ func Middleware(handler *CliHandler) pssh.SSHServerMiddleware {
47 }
48
49 if !*clean {
50- fmt.Fprintln(sesh, termMsg)
51+ _, _ = fmt.Fprintln(sesh, termMsg)
52 }
53
54 ready := make(chan struct{})
55@@ -482,7 +482,7 @@ func Middleware(handler *CliHandler) pssh.SSHServerMiddleware {
56 logger.Error("error exiting session", "err", err)
57 }
58
59- sesh.Close()
60+ _ = sesh.Close()
61 }
62 }
63
64@@ -507,7 +507,7 @@ func Middleware(handler *CliHandler) pssh.SSHServerMiddleware {
65 }
66
67 if !*clean {
68- fmt.Fprintln(sesh, "sending msg ...")
69+ _, _ = fmt.Fprintln(sesh, "sending msg ...")
70 }
71
72 err = pubsub.Pub(
73@@ -521,11 +521,11 @@ func Middleware(handler *CliHandler) pssh.SSHServerMiddleware {
74 )
75
76 if !*clean {
77- fmt.Fprintln(sesh, "msg sent!")
78+ _, _ = fmt.Fprintln(sesh, "msg sent!")
79 }
80
81 if err != nil && !*clean {
82- fmt.Fprintln(sesh.Stderr(), err)
83+ _, _ = fmt.Fprintln(sesh.Stderr(), err)
84 }
85 } else if cmd == "sub" {
86 subCmd := flagSet("sub", sesh)
87@@ -590,7 +590,7 @@ func Middleware(handler *CliHandler) pssh.SSHServerMiddleware {
88 } else if !*public {
89 name = toTopic(userName, withoutUser)
90 } else {
91- fmt.Fprintln(sesh.Stderr(), "access denied")
92+ _, _ = fmt.Fprintln(sesh.Stderr(), "access denied")
93 return err
94 }
95 }
96@@ -606,7 +606,7 @@ func Middleware(handler *CliHandler) pssh.SSHServerMiddleware {
97 )
98
99 if err != nil && !*clean {
100- fmt.Fprintln(sesh.Stderr(), err)
101+ _, _ = fmt.Fprintln(sesh.Stderr(), err)
102 }
103 } else if cmd == "pipe" {
104 pipeCmd := flagSet("pipe", sesh)
105@@ -684,7 +684,7 @@ func Middleware(handler *CliHandler) pssh.SSHServerMiddleware {
106 }
107
108 if isCreator && !*clean {
109- fmt.Fprintf(
110+ _, _ = fmt.Fprintf(
111 sesh,
112 "subscribe to this topic:\n ssh %s sub %s%s\n",
113 toSshCmd(handler.Cfg),
114@@ -704,11 +704,11 @@ func Middleware(handler *CliHandler) pssh.SSHServerMiddleware {
115 )
116
117 if readErr != nil && !*clean {
118- fmt.Fprintln(sesh.Stderr(), "error reading from pipe", readErr)
119+ _, _ = fmt.Fprintln(sesh.Stderr(), "error reading from pipe", readErr)
120 }
121
122 if writeErr != nil && !*clean {
123- fmt.Fprintln(sesh.Stderr(), "error writing to pipe", writeErr)
124+ _, _ = fmt.Fprintln(sesh.Stderr(), "error writing to pipe", writeErr)
125 }
126 }
127
+3,
-1
1@@ -29,7 +29,9 @@ func StartSshServer() {
2 defer cancel()
3
4 dbh := postgres.NewDB(cfg.DbURL, cfg.Logger)
5- defer dbh.Close()
6+ defer func() {
7+ _ = dbh.Close()
8+ }()
9
10 cfg.Port = port
11 cfg.PortOverride = portOverride
+3,
-1
1@@ -926,7 +926,9 @@ func createSubdomainRoutes(staticRoutes []shared.Route) []shared.Route {
2 func StartApiServer() {
3 cfg := NewConfigSite("prose-web")
4 dbpool := postgres.NewDB(cfg.DbURL, cfg.Logger)
5- defer dbpool.Close()
6+ defer func() {
7+ _ = dbpool.Close()
8+ }()
9 logger := cfg.Logger
10
11 var st storage.StorageServe
+3,
-1
1@@ -35,7 +35,9 @@ func StartSshServer() {
2 defer cancel()
3
4 dbh := postgres.NewDB(cfg.DbURL, cfg.Logger)
5- defer dbh.Close()
6+ defer func() {
7+ _ = dbh.Close()
8+ }()
9
10 hooks := &MarkdownHooks{
11 Cfg: cfg,
+3,
-1
1@@ -371,7 +371,9 @@ func (me *PsqlDB) RegisterUser(username, pubkey, comment string) (*db.User, erro
2 if err != nil {
3 return nil, err
4 }
5- defer stmt.Close()
6+ defer func() {
7+ _ = stmt.Close()
8+ }()
9
10 var id string
11 err = stmt.QueryRow(lowerName).Scan(&id)
+4,
-1
1@@ -135,7 +135,10 @@ func (s *StorageFS) PutObject(bucket Bucket, fpath string, contents io.Reader, e
2 return "", 0, err
3 }
4
5- f.Close()
6+ err = f.Close()
7+ if err != nil {
8+ return "", 0, err
9+ }
10
11 if entry.Mtime > 0 {
12 uTime := time.Unix(entry.Mtime, 0)
+13,
-7
1@@ -152,8 +152,8 @@ func (s *SSHServerConnSession) Exit(code int) error {
2 }
3
4 func (s *SSHServerConnSession) Fatal(err error) {
5- fmt.Fprintln(s.Stderr(), err)
6- fmt.Fprintf(s.Stderr(), "\r")
7+ _, _ = fmt.Fprintln(s.Stderr(), err)
8+ _, _ = fmt.Fprintf(s.Stderr(), "\r")
9 _ = s.Exit(1)
10 _ = s.Close()
11 }
12@@ -172,7 +172,9 @@ func (s *SSHServerConnSession) Pty() (*Pty, <-chan Window, bool) {
13 var _ context.Context = &SSHServerConnSession{}
14
15 func (sc *SSHServerConn) Handle(chans <-chan ssh.NewChannel, reqs <-chan *ssh.Request) error {
16- defer sc.Close()
17+ defer func() {
18+ _ = sc.Close()
19+ }()
20
21 for {
22 select {
23@@ -293,7 +295,7 @@ func (s *SSHServer) ListenAndServe() error {
24 go func() {
25 <-s.Ctx.Done()
26 s.Logger.Info("Prometheus server shutting down")
27- srv.Close()
28+ _ = srv.Close()
29 }()
30
31 s.Logger.Info("Starting Prometheus server", "addr", s.Config.PromListenAddr)
32@@ -317,11 +319,13 @@ func (s *SSHServer) ListenAndServe() error {
33 }
34
35 s.Listener = listen
36- defer s.Listener.Close()
37+ defer func() {
38+ _ = s.Listener.Close()
39+ }()
40
41 go func() {
42 <-s.Ctx.Done()
43- s.Close()
44+ _ = s.Close()
45 }()
46
47 var retErr error
48@@ -352,7 +356,9 @@ func (s *SSHServer) ListenAndServe() error {
49 }
50
51 func (s *SSHServer) HandleConn(conn net.Conn) error {
52- defer conn.Close()
53+ defer func() {
54+ _ = conn.Close()
55+ }()
56
57 sshConn, chans, reqs, err := ssh.NewServerConn(conn, s.Config.ServerConfig)
58 if err != nil {
+5,
-3
1@@ -167,7 +167,9 @@ func TestSSHServerHandleConn(t *testing.T) {
2
3 // Create a mock connection
4 client, server_conn := net.Pipe()
5- defer client.Close()
6+ defer func() {
7+ _ = client.Close()
8+ }()
9
10 // Start HandleConn in a goroutine
11 errChan := make(chan error, 1)
12@@ -190,8 +192,8 @@ func TestSSHServerHandleConn(t *testing.T) {
13 }
14
15 // Close connections to ensure HandleConn returns
16- client.Close()
17- server_conn.Close()
18+ _ = client.Close()
19+ _ = server_conn.Close()
20
21 // Wait for HandleConn to return
22 select {
+1,
-1
1@@ -51,7 +51,7 @@ func Middleware(writeHandler utils.CopyFromClientHandler, ext string) pssh.SSHSe
2 }
3
4 if result != "" {
5- _, err := fmt.Fprint(session, "%s\r\n", result)
6+ _, err := fmt.Fprintf(session, "%s\r\n", result)
7 if err != nil {
8 utils.ErrorHandler(session, err)
9 }
+5,
-5
1@@ -157,7 +157,7 @@ func (h *handler) Remove(willReceive []*rsyncutils.ReceiverFile) error {
2
3 for _, file := range toDelete {
4 errs = append(errs, h.writeHandler.Delete(h.session, &utils.FileEntry{Filepath: path.Join("/", h.root, file)}))
5- _, err = fmt.Fprint(h.session.Stderr(), "deleting %s\r\n", file)
6+ _, err = fmt.Fprintf(h.session.Stderr(), "deleting %s\r\n", file)
7 errs = append(errs, err)
8 }
9
10@@ -193,25 +193,25 @@ func Middleware(writeHandler utils.CopyFromClientHandler) pssh.SSHServerMiddlewa
11
12 optsCtx, err := rsyncopts.ParseArguments(cmdFlags[1:], true)
13 if err != nil {
14- fmt.Fprintf(session.Stderr(), "error parsing rsync arguments: %s\r\n", err.Error())
15+ _, _ = fmt.Fprintf(session.Stderr(), "error parsing rsync arguments: %s\r\n", err.Error())
16 return err
17 }
18
19 if optsCtx.Options.Compress() {
20 err := fmt.Errorf("compression is currently unsupported")
21- fmt.Fprintf(session.Stderr(), "error: %s\r\n", err.Error())
22+ _, _ = fmt.Fprintf(session.Stderr(), "error: %s\r\n", err.Error())
23 return err
24 }
25
26 if optsCtx.Options.AlwaysChecksum() {
27 err := fmt.Errorf("checksum is currently unsupported")
28- fmt.Fprintf(session.Stderr(), "error: %s\r\n", err.Error())
29+ _, _ = fmt.Fprintf(session.Stderr(), "error: %s\r\n", err.Error())
30 return err
31 }
32
33 if len(optsCtx.RemainingArgs) != 2 {
34 err := fmt.Errorf("missing source and destination arguments")
35- fmt.Fprintf(session.Stderr(), "error: %s\r\n", err.Error())
36+ _, _ = fmt.Fprintf(session.Stderr(), "error: %s\r\n", err.Error())
37 return err
38 }
39
+4,
-4
1@@ -149,28 +149,28 @@ type handlererr struct {
2 func (f *handlererr) Filecmd(r *sftp.Request) error {
3 err := f.Handler.Filecmd(r)
4 if err != nil {
5- fmt.Fprintln(f.Handler.session.Stderr(), err)
6+ _, _ = fmt.Fprintln(f.Handler.session.Stderr(), err)
7 }
8 return err
9 }
10 func (f *handlererr) Filelist(r *sftp.Request) (sftp.ListerAt, error) {
11 result, err := f.Handler.Filelist(r)
12 if err != nil {
13- fmt.Fprintln(f.Handler.session.Stderr(), err)
14+ _, _ = fmt.Fprintln(f.Handler.session.Stderr(), err)
15 }
16 return result, err
17 }
18 func (f *handlererr) Filewrite(r *sftp.Request) (io.WriterAt, error) {
19 result, err := f.Handler.Filewrite(r)
20 if err != nil {
21- fmt.Fprintln(f.Handler.session.Stderr(), err)
22+ _, _ = fmt.Fprintln(f.Handler.session.Stderr(), err)
23 }
24 return result, err
25 }
26 func (f *handlererr) Fileread(r *sftp.Request) (io.ReaderAt, error) {
27 result, err := f.Handler.Fileread(r)
28 if err != nil {
29- fmt.Fprintln(f.Handler.session.Stderr(), err)
30+ _, _ = fmt.Fprintln(f.Handler.session.Stderr(), err)
31 }
32 return result, err
33 }
+3,
-3
1@@ -31,13 +31,13 @@ func Middleware(writeHandler utils.CopyFromClientHandler) pssh.SSHServerMiddlewa
2 defer func() {
3 if r := recover(); r != nil {
4 logger.Error("error running sftp middleware", "err", r)
5- fmt.Fprintln(session, "error running sftp middleware, check the flags you are using")
6+ _, _ = fmt.Fprintln(session, "error running sftp middleware, check the flags you are using")
7 }
8 }()
9
10 err := writeHandler.Validate(session)
11 if err != nil {
12- fmt.Fprintln(session.Stderr(), err)
13+ _, _ = fmt.Fprintln(session.Stderr(), err)
14 return err
15 }
16
17@@ -59,7 +59,7 @@ func Middleware(writeHandler utils.CopyFromClientHandler) pssh.SSHServerMiddlewa
18
19 err = requestServer.Serve()
20 if err != nil && !errors.Is(err, io.EOF) {
21- fmt.Fprintln(session.Stderr(), err)
22+ _, _ = fmt.Fprintln(session.Stderr(), err)
23 logger.Error("Error serving sftp subsystem", "err", err)
24 }
25
+4,
-2
1@@ -70,6 +70,8 @@ func (f fakeWrite) Close() error {
2 nMsg := fmt.Sprintf("%s\r\n", msg)
3 _, err = f.handler.session.Stderr().Write([]byte(nMsg))
4 }
5- f.buf.Close()
6- return err
7+ if err != nil {
8+ return err
9+ }
10+ return f.buf.Close()
11 }
1@@ -21,7 +21,9 @@ func TestFsAdapter(t *testing.T) {
2 if err != nil {
3 t.Fatal(err)
4 }
5- defer os.RemoveAll(f)
6+ defer func() {
7+ _ = os.RemoveAll(f)
8+ }()
9
10 st, err := NewStorageFS(logger, f)
11 if err != nil {
+3,
-1
1@@ -444,7 +444,9 @@ func fetch(fqdn, auth string) (map[string]*TunsClient, error) {
2 if err != nil {
3 return mapper, err
4 }
5- defer resp.Body.Close()
6+ defer func() {
7+ _ = resp.Body.Close()
8+ }()
9
10 var data TunsClientApi
11 err = json.NewDecoder(resp.Body).Decode(&data)
+9,
-5
1@@ -66,10 +66,12 @@ func LocalForwardHandler(handler Tunnel) pssh.SSHServerChannelMiddleware {
2 downConn, err := handler.CreateConn(ctx)
3 if err != nil {
4 log.Error("unable to connect to conn", "err", err)
5- ch.Close()
6+ _ = ch.Close()
7 return
8 }
9- defer downConn.Close()
10+ defer func() {
11+ _ = downConn.Close()
12+ }()
13
14 var wg sync.WaitGroup
15 wg.Add(2)
16@@ -78,8 +80,8 @@ func LocalForwardHandler(handler Tunnel) pssh.SSHServerChannelMiddleware {
17 defer wg.Done()
18 defer func() {
19 _ = ch.CloseWrite()
20+ _ = downConn.Close()
21 }()
22- defer downConn.Close()
23 _, err := io.Copy(ch, downConn)
24 if err != nil {
25 if !errors.Is(err, net.ErrClosed) {
26@@ -89,8 +91,10 @@ func LocalForwardHandler(handler Tunnel) pssh.SSHServerChannelMiddleware {
27 }()
28 go func() {
29 defer wg.Done()
30- defer ch.Close()
31- defer downConn.Close()
32+ defer func() {
33+ _ = ch.Close()
34+ _ = downConn.Close()
35+ }()
36 _, err := io.Copy(downConn, ch)
37 if err != nil {
38 if !errors.Is(err, net.ErrClosed) {
+8,
-2
1@@ -62,9 +62,15 @@ func (wt *WebTunnelHandler) CreateListener(ctx *pssh.SSHServerConnSession) (net.
2 return nil, err
3 }
4
5- tempFile.Close()
6+ err = tempFile.Close()
7+ if err != nil {
8+ return nil, err
9+ }
10 address := tempFile.Name()
11- os.Remove(address)
12+ err = os.Remove(address)
13+ if err != nil {
14+ return nil, err
15+ }
16
17 connListener, err := net.Listen("unix", address)
18 if err != nil {