aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2024-03-26 23:58:33 +0700
committerShulhan <ms@kilabit.info>2024-03-27 00:15:33 +0700
commit88085dfc4f3b38489968038ce33533d87ed55876 (patch)
treef87bd930db4ca53384e64258d8b4482639a05ba6
parent4048680d115cfd3ac7f682f02565efb42237d05e (diff)
downloadrescached-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--Makefile8
-rw-r--r--blockd.go27
-rw-r--r--client_test.go2
-rw-r--r--environment.go8
-rw-r--r--httpd.go23
-rw-r--r--rescached_test.go6
6 files changed, 40 insertions, 34 deletions
diff --git a/Makefile b/Makefile
index 0bc49c8..a13040b 100644
--- a/Makefile
+++ b/Makefile
@@ -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
diff --git a/blockd.go b/blockd.go
index f1d4b9b..021f7c3 100644
--- a/blockd.go
+++ b/blockd.go
@@ -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())
diff --git a/httpd.go b/httpd.go
index b872f30..f42a2b3 100644
--- a/httpd.go
+++ b/httpd.go
@@ -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)
}
}