diff options
| author | Shulhan <ms@kilabit.info> | 2024-03-26 23:58:33 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2024-03-27 00:15:33 +0700 |
| commit | 88085dfc4f3b38489968038ce33533d87ed55876 (patch) | |
| tree | f87bd930db4ca53384e64258d8b4482639a05ba6 | |
| parent | 4048680d115cfd3ac7f682f02565efb42237d05e (diff) | |
| download | rescached-88085dfc4f3b38489968038ce33533d87ed55876.tar.xz | |
all: comply with linters
Fix the code as recommended by linters, for example using context for
HTTP client request, using 0600 for file permission, using string
concatenation instead of fmt, using "%w" for error, and reorder defer.
| -rw-r--r-- | Makefile | 8 | ||||
| -rw-r--r-- | blockd.go | 27 | ||||
| -rw-r--r-- | client_test.go | 2 | ||||
| -rw-r--r-- | environment.go | 8 | ||||
| -rw-r--r-- | httpd.go | 23 | ||||
| -rw-r--r-- | rescached_test.go | 6 |
6 files changed, 40 insertions, 34 deletions
@@ -71,10 +71,14 @@ test.prof: .PHONY: lint lint: - -go vet ./... -fieldalignment ./... -shadow ./... - -revive ./... + -golangci-lint run \ + --presets bugs,metalinter,performance,unused \ + --disable exhaustive \ + --disable musttag \ + --disable bodyclose \ + ./... -reuse --suppress-deprecation lint @@ -5,6 +5,7 @@ package rescached import ( "bytes" + "context" "fmt" "io" "log" @@ -100,13 +101,7 @@ func (hb *Blockd) update() (err error) { return nil } - var ( - logp = "Blockd.update" - - res *http.Response - body []byte - errClose error - ) + var logp = `Blockd.update` fmt.Printf("%s %s: updating ...\n", logp, hb.Name) @@ -115,17 +110,27 @@ func (hb *Blockd) update() (err error) { return fmt.Errorf("%s %s: %w", logp, hb.Name, err) } - res, err = http.Get(hb.URL) + var ( + req *http.Request + res *http.Response + ) + req, err = http.NewRequestWithContext(context.Background(), http.MethodGet, hb.URL, nil) + if err != nil { + return fmt.Errorf(`%s %s: %w`, logp, hb.Name, err) + } + res, err = http.DefaultClient.Do(req) if err != nil { return fmt.Errorf("%s %s: %w", logp, hb.Name, err) } defer func() { - errClose = res.Body.Close() + var errClose = res.Body.Close() if errClose != nil { log.Printf("%s %q: %s", logp, hb.Name, err) } }() + var body []byte + body, err = io.ReadAll(res.Body) if err != nil { return fmt.Errorf("%s %q: %w", logp, hb.Name, err) @@ -134,9 +139,9 @@ func (hb *Blockd) update() (err error) { body = bytes.ReplaceAll(body, []byte("\r\n"), []byte("\n")) if hb.IsEnabled { - err = os.WriteFile(hb.file, body, 0644) + err = os.WriteFile(hb.file, body, 0600) } else { - err = os.WriteFile(hb.fileDisabled, body, 0644) + err = os.WriteFile(hb.fileDisabled, body, 0600) } if err != nil { return fmt.Errorf("%s %q: %w", logp, hb.Name, err) diff --git a/client_test.go b/client_test.go index 8398004..711b626 100644 --- a/client_test.go +++ b/client_test.go @@ -108,7 +108,7 @@ func TestClient_BlockdFetch(t *testing.T) { // Revert the content of a.block. t.Cleanup(func() { - err = os.WriteFile(affectedBlockd.fileDisabled, []byte("127.0.0.1 a.block\n"), 0644) + err = os.WriteFile(affectedBlockd.fileDisabled, []byte("127.0.0.1 a.block\n"), 0600) }) expString = `BlockdFetch: 400 httpAPIBlockdFetch: unknown hosts block.d name: xxx` diff --git a/environment.go b/environment.go index be46b94..22a8ef1 100644 --- a/environment.go +++ b/environment.go @@ -98,12 +98,12 @@ func LoadEnvironment(dirBase, fileConfig string) (env *Environment, err error) { if len(fileConfig) > 0 { cfg, err = ini.Open(env.fileConfig) if err != nil { - return nil, fmt.Errorf("%s: %q: %s", logp, env.fileConfig, err) + return nil, fmt.Errorf(`%s: %q: %w`, logp, env.fileConfig, err) } err = cfg.Unmarshal(env) if err != nil { - return nil, fmt.Errorf("%s: %q: %s", logp, env.fileConfig, err) + return nil, fmt.Errorf(`%s: %q: %w`, logp, env.fileConfig, err) } } @@ -254,8 +254,8 @@ func (env *Environment) save(file string) (in *ini.Ini, err error) { in.Set(sectionNameDNS, subNameServer, keyTLSPort, strconv.Itoa(int(env.TLSPort))) in.Set(sectionNameDNS, subNameServer, keyTLSCertificate, env.TLSCertFile) in.Set(sectionNameDNS, subNameServer, keyTLSPrivateKey, env.TLSPrivateKey) - in.Set(sectionNameDNS, subNameServer, keyTLSAllowInsecure, fmt.Sprintf("%t", env.TLSAllowInsecure)) - in.Set(sectionNameDNS, subNameServer, keyDohBehindProxy, fmt.Sprintf("%t", env.DoHBehindProxy)) + in.Set(sectionNameDNS, subNameServer, keyTLSAllowInsecure, strconv.FormatBool(env.TLSAllowInsecure)) + in.Set(sectionNameDNS, subNameServer, keyDohBehindProxy, strconv.FormatBool(env.DoHBehindProxy)) in.Set(sectionNameDNS, subNameServer, keyCachePruneDelay, env.PruneDelay.String()) in.Set(sectionNameDNS, subNameServer, keyCachePruneThreshold, env.PruneThreshold.String()) @@ -370,7 +370,7 @@ func (srv *Server) httpAPIBlockdDisable(epr *libhttp.EndpointRequest) (resBody [ hb = srv.env.HostBlockd[hbName] if hb == nil { res.Code = http.StatusBadRequest - res.Message = fmt.Sprintf("hosts block.d name not found: %s", hbName) + res.Message = `hosts block.d name not found: ` + hbName return nil, &res } @@ -419,7 +419,7 @@ func (srv *Server) httpAPIBlockdEnable(epr *libhttp.EndpointRequest) (resBody [] hb = srv.env.HostBlockd[hbName] if hb == nil { res.Code = http.StatusBadRequest - res.Message = fmt.Sprintf("hosts block.d name not found: %s", hbName) + res.Message = `hosts block.d name not found: ` + hbName return nil, &res } @@ -1197,10 +1197,6 @@ func (srv *Server) apiZonedDelete(epr *libhttp.EndpointRequest) (resb []byte, er var ( res = libhttp.EndpointResponse{} zoneName = epr.HTTPRequest.Form.Get(paramNameName) - - zone *dns.Zone - names []string - name string ) res.Code = http.StatusBadRequest @@ -1210,13 +1206,16 @@ func (srv *Server) apiZonedDelete(epr *libhttp.EndpointRequest) (resb []byte, er return nil, &res } - zone = srv.env.zoned[zoneName] + var zone = srv.env.zoned[zoneName] if zone == nil { res.Message = "zone file not found: " + zoneName return nil, &res } - names = make([]string, 0, len(zone.Records)) + var ( + names = make([]string, 0, len(zone.Records)) + name string + ) for name = range zone.Records { names = append(names, name) } @@ -1331,7 +1330,7 @@ func (srv *Server) apiZonedRRAdd(epr *libhttp.EndpointRequest) (resb []byte, err err = json.Unmarshal(epr.RequestBody, &req) if err != nil { - res.Message = fmt.Sprintf("invalid request: %s", err.Error()) + res.Message = `invalid request: ` + err.Error() return nil, &res } @@ -1355,7 +1354,7 @@ func (srv *Server) apiZonedRRAdd(epr *libhttp.EndpointRequest) (resb []byte, err req.recordRaw, err = base64.StdEncoding.DecodeString(req.Record) if err != nil { - res.Message = fmt.Sprintf("invalid record value: %s", err.Error()) + res.Message = `invalid record value: ` + err.Error() return nil, &res } @@ -1417,7 +1416,7 @@ func (srv *Server) apiZonedRRAdd(epr *libhttp.EndpointRequest) (resb []byte, err } res.Code = http.StatusOK - res.Message = fmt.Sprintf("%s record has been saved", dns.RecordTypeNames[rr.Type]) + res.Message = dns.RecordTypeNames[rr.Type] + ` record has been saved` res.Data = rr return json.Marshal(&res) @@ -1477,7 +1476,7 @@ func (srv *Server) apiZonedRRDelete(epr *libhttp.EndpointRequest) (resbody []byt req.Record = epr.HTTPRequest.Form.Get(paramNameRecord) req.recordRaw, err = base64.StdEncoding.DecodeString(req.Record) if err != nil { - res.Message = fmt.Sprintf("invalid record value: %s", err.Error()) + res.Message = `invalid record value: ` + err.Error() return nil, &res } diff --git a/rescached_test.go b/rescached_test.go index d312c2a..0e51afa 100644 --- a/rescached_test.go +++ b/rescached_test.go @@ -46,8 +46,6 @@ func TestMain(m *testing.M) { log.Fatal(err) } - defer testServer.Stop() - resc = NewClient("http://"+testEnv.WUIListen, false) // Loop 10 times until server ready for testing. @@ -61,7 +59,7 @@ func TestMain(m *testing.M) { } testStatus = m.Run() - + testServer.Stop() os.Exit(testStatus) } @@ -103,6 +101,6 @@ func mockBlockdServer() { err = mockServer.Start() if err != nil { - log.Fatal(err) + log.Println(err) } } |
