Skip to content

Commit 1d1bef4

Browse files
authored
chore: fix staticcheck issues (#164)
Use [staticcheck](https://staticcheck.dev/) to find and fix correctness issues. ❯ go run honnef.co/go/tools/cmd/staticcheck@latest ./... internal/iptables/iptables.go:61:3: should replace loop with rules = append(rules, EgressNetworkPolicyToIpTableRules(policy, peerChain)...) (S1011) internal/iptables/iptables.go:80:22: unnecessary use of fmt.Sprintf (S1039) internal/it/suite_test.go:32:5: var cfg is unused (U1000) internal/it/suite_test.go:34:5: var testEnv is unused (U1000) internal/it/suite_test.go:172:2: this value of b is never used (SA4006) internal/it/suite_test.go:185:2: this value of b is never used (SA4006) internal/it/suite_test.go:222:2: this value of err is never used (SA4006) pkg/api/v1alpha1/wireguard_types.go:26:2: only the first constant in this group has an explicit type (SA9004) pkg/controllers/suite_test.go:41:5: var cfg is unused (U1000) pkg/controllers/wireguard_controller.go:151:13: error strings should not be capitalized (ST1005) pkg/controllers/wireguard_controller.go:407:3: this value of port is never used (SA4006) pkg/controllers/wireguard_controller.go:407:10: Sprint doesn't have side effects and its return value is ignored (SA4017) pkg/wireguard/wireguard.go:63:2: this value of err is never used (SA4006) pkg/wireguard/wireguard.go:104:2: this value of link is never used (SA4006) pkg/wireguard/wireguard.go:155:2: this value of err is never used (SA4006) pkg/wireguard/wireguard.go:293:6: should omit comparison to bool constant, can be simplified to peer.Spec.Disabled (S1002) pkg/wireguard/wireguard.go:343:2: this value of err is never used (SA4006) exit status 1 Refs: #160
1 parent acd2e77 commit 1d1bef4

File tree

6 files changed

+57
-49
lines changed

6 files changed

+57
-49
lines changed

internal/iptables/iptables.go

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -38,29 +38,30 @@ func (it *Iptables) Sync(state agent.State) error {
3838
}
3939

4040
func GenerateIptableRulesFromNetworkPolicies(policies v1alpha1.EgressNetworkPolicies, peerIp string, kubeDnsIp string, wgServerIp string) string {
41-
var rules []string
41+
peerChain := strings.ReplaceAll(peerIp, ".", "-")
4242

43-
// add a comment
44-
rules = append(rules, fmt.Sprintf("# start of rules for peer %s", peerIp))
43+
rules := []string{
44+
// add a comment
45+
fmt.Sprintf("# start of rules for peer %s", peerIp),
4546

46-
peerChain := strings.ReplaceAll(peerIp, ".", "-")
47+
// create chain for peer
48+
fmt.Sprintf(":%s - [0:0]", peerChain),
4749

48-
// create chain for peer
49-
rules = append(rules, fmt.Sprintf(":%s - [0:0]", peerChain))
50-
// associate peer chain to FORWARD chain
51-
rules = append(rules, fmt.Sprintf("-A FORWARD -s %s -j %s", peerIp, peerChain))
50+
// associate peer chain to FORWARD chain
51+
fmt.Sprintf("-A FORWARD -s %s -j %s", peerIp, peerChain),
5252

53-
// allow peer to ping (ICMP) wireguard server for debugging purposes
54-
rules = append(rules, fmt.Sprintf("-A %s -d %s -p icmp -j ACCEPT", peerChain, wgServerIp))
55-
// allow peer to communicate with itself
56-
rules = append(rules, fmt.Sprintf("-A %s -d %s -j ACCEPT", peerChain, peerIp))
57-
// allow peer to communicate with kube-dns
58-
rules = append(rules, fmt.Sprintf("-A %s -d %s -p UDP --dport 53 -j ACCEPT", peerChain, kubeDnsIp))
53+
// allow peer to ping (ICMP) wireguard server for debugging purposes
54+
fmt.Sprintf("-A %s -d %s -p icmp -j ACCEPT", peerChain, wgServerIp),
55+
56+
// allow peer to communicate with itself
57+
fmt.Sprintf("-A %s -d %s -j ACCEPT", peerChain, peerIp),
58+
59+
// allow peer to communicate with kube-dns
60+
fmt.Sprintf("-A %s -d %s -p UDP --dport 53 -j ACCEPT", peerChain, kubeDnsIp),
61+
}
5962

6063
for _, policy := range policies {
61-
for _, rule := range EgressNetworkPolicyToIpTableRules(policy, peerChain) {
62-
rules = append(rules, rule)
63-
}
64+
rules = append(rules, EgressNetworkPolicyToIpTableRules(policy, peerChain)...)
6465
}
6566

6667
// if policies are defined impose an implicit deny all
@@ -77,14 +78,14 @@ func GenerateIptableRulesFromNetworkPolicies(policies v1alpha1.EgressNetworkPoli
7778
func GenerateIptableRulesFromPeers(wgHostName string, dns string, peers []v1alpha1.WireguardPeer) string {
7879
var rules []string
7980

80-
var natTableRules = fmt.Sprintf(`
81+
var natTableRules = `
8182
*nat
8283
:PREROUTING ACCEPT [0:0]
8384
:INPUT ACCEPT [0:0]
8485
:OUTPUT ACCEPT [0:0]
8586
:POSTROUTING ACCEPT [0:0]
8687
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
87-
COMMIT`)
88+
COMMIT`
8889

8990
for _, peer := range peers {
9091

internal/it/suite_test.go

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,8 @@ import (
1616
v12 "k8s.io/api/apps/v1"
1717
"k8s.io/apimachinery/pkg/types"
1818
"k8s.io/client-go/kubernetes/scheme"
19-
"k8s.io/client-go/rest"
2019
"k8s.io/client-go/tools/clientcmd"
2120
"sigs.k8s.io/controller-runtime/pkg/client"
22-
"sigs.k8s.io/controller-runtime/pkg/envtest"
2321
"sigs.k8s.io/kind/pkg/apis/config/v1alpha4"
2422
kind "sigs.k8s.io/kind/pkg/cluster"
2523
log2 "sigs.k8s.io/kind/pkg/log"
@@ -29,9 +27,7 @@ import (
2927
// These tests use Ginkgo (BDD-style Go testing framework). Refer to
3028
// http://onsi.github.io/ginkgo/ to learn more about Ginkgo.
3129

32-
var cfg *rest.Config
3330
var k8sClient client.Client
34-
var testEnv *envtest.Environment
3531
var releasePath string
3632
var agentImage string
3733
var managerImage string
@@ -169,9 +165,9 @@ var _ = BeforeSuite(func() {
169165
}
170166

171167
// load locally built images
172-
cmd := exec.Command(kindBinary, "load", "docker-image", managerImage, "--name", testClusterName)
173-
b, err := cmd.Output()
174-
if err != nil {
168+
if _, err := exec.
169+
Command(kindBinary, "load", "docker-image", managerImage, "--name", testClusterName).
170+
Output(); err != nil {
175171
if err != nil {
176172
if exitError, ok := err.(*exec.ExitError); ok {
177173
log.Info(string(exitError.Stderr))
@@ -182,17 +178,18 @@ var _ = BeforeSuite(func() {
182178
log.Error(err, "unable to load local image manager:dev")
183179
Expect(err).NotTo(HaveOccurred())
184180
}
185-
cmd = exec.Command(kindBinary, "load", "docker-image", agentImage, "--name", testClusterName)
186-
b, err = cmd.Output()
187-
if err != nil {
181+
182+
if _, err := exec.
183+
Command(kindBinary, "load", "docker-image", agentImage, "--name", testClusterName).
184+
Output(); err != nil {
188185
log.Error(err, "unable to load local image agent:dev")
189186
return
190187
}
191188

192189
// simulate what users exactly do in real life.
193-
cmd = exec.Command("kubectl", "apply", "-f", releasePath, "--context", testKindContextName)
194-
b, err = cmd.Output()
195-
190+
b, err := exec.
191+
Command("kubectl", "apply", "-f", releasePath, "--context", testKindContextName).
192+
Output()
196193
if err != nil {
197194
log.Error(err, "unable to apply release.yaml")
198195
return
@@ -221,6 +218,7 @@ var _ = BeforeSuite(func() {
221218
Expect(err).NotTo(HaveOccurred())
222219

223220
k8sClient, err = client.New(c, client.Options{Scheme: scheme.Scheme})
221+
Expect(err).NotTo(HaveOccurred())
224222

225223
// wait until operator is ready
226224
Eventually(func() int {

pkg/api/v1alpha1/wireguard_types.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ import (
2323
)
2424

2525
const (
26-
Pending string = "pending"
27-
Error = "error"
28-
Ready = "ready"
26+
Pending = "pending"
27+
Error = "error"
28+
Ready = "ready"
2929
)
3030

3131
type WgStatusReport struct {

pkg/controllers/suite_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import (
2626
. "github.com/onsi/ginkgo"
2727
. "github.com/onsi/gomega"
2828
"k8s.io/client-go/kubernetes/scheme"
29-
"k8s.io/client-go/rest"
3029
ctrl "sigs.k8s.io/controller-runtime"
3130
"sigs.k8s.io/controller-runtime/pkg/client"
3231
"sigs.k8s.io/controller-runtime/pkg/envtest"
@@ -38,7 +37,6 @@ import (
3837
// These tests use Ginkgo (BDD-style Go testing framework). Refer to
3938
// http://onsi.github.io/ginkgo/ to learn more about Ginkgo.
4039

41-
var cfg *rest.Config
4240
var k8sClient client.Client
4341
var testEnv *envtest.Environment
4442
var wgTestImage = "test-image"

pkg/controllers/wireguard_controller.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"context"
2222
"encoding/json"
2323
"fmt"
24+
"strconv"
2425
"time"
2526

2627
"github.com/jodevsa/wireguard-operator/pkg/agent"
@@ -148,7 +149,7 @@ func getAvaialbleIp(cidr string, usedIps []string) (string, error) {
148149
}
149150
}
150151

151-
return "", fmt.Errorf("No available ip found in %s", cidr)
152+
return "", fmt.Errorf("no available ip found in %s", cidr)
152153
}
153154

154155
func (r *WireguardReconciler) getUsedIps(peers *v1alpha1.WireguardPeerList) []string {
@@ -404,8 +405,7 @@ func (r *WireguardReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
404405
return ctrl.Result{}, nil
405406
}
406407

407-
port = fmt.Sprint(svcFound.Spec.Ports[0].NodePort)
408-
port = fmt.Sprint(svcFound.Spec.Ports[0].NodePort)
408+
port = strconv.Itoa(int(svcFound.Spec.Ports[0].NodePort))
409409

410410
ips, err := r.getNodeIps(ctx, req)
411411

pkg/wireguard/wireguard.go

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ package wireguard
22

33
import (
44
"fmt"
5-
"github.com/go-logr/logr"
65
"net"
76
"os/exec"
87
"syscall"
98

9+
"github.com/go-logr/logr"
10+
1011
"github.com/jodevsa/wireguard-operator/pkg/agent"
1112
"github.com/jodevsa/wireguard-operator/pkg/api/v1alpha1"
1213
"github.com/vishvananda/netlink"
@@ -60,9 +61,12 @@ func syncAddress(_ agent.State, iface string) error {
6061
if len(addresses) != 0 {
6162
return nil
6263
}
63-
err = netlink.AddrAdd(link, &netlink.Addr{
64+
65+
if err := netlink.AddrAdd(link, &netlink.Addr{
6466
IPNet: &net.IPNet{IP: net.ParseIP("10.8.0.1")},
65-
})
67+
}); err != nil {
68+
return fmt.Errorf("netlink addr add: %w", err)
69+
}
6670

6771
if err := netlink.LinkSetUp(link); err != nil {
6872
return err
@@ -101,7 +105,7 @@ func createLinkUsingKernalModule(iface string) error {
101105
}
102106

103107
func SyncLink(_ agent.State, iface string, wgUserspaceImplementationFallback string, wgUseUserspaceImpl bool) error {
104-
link, err := netlink.LinkByName(iface)
108+
_, err := netlink.LinkByName(iface)
105109
if err != nil {
106110
if _, ok := err.(netlink.LinkNotFoundError); !ok {
107111
return err
@@ -128,7 +132,8 @@ func SyncLink(_ agent.State, iface string, wgUserspaceImplementationFallback str
128132
}
129133
}
130134

131-
link, err = netlink.LinkByName(iface)
135+
// TODO: Can this be removed?
136+
link, err := netlink.LinkByName(iface)
132137
if err != nil {
133138
return err
134139
}
@@ -137,7 +142,7 @@ func SyncLink(_ agent.State, iface string, wgUserspaceImplementationFallback str
137142
}
138143
}
139144

140-
link, err = netlink.LinkByName(iface)
145+
link, err := netlink.LinkByName(iface)
141146
if err != nil {
142147
if _, ok := err.(netlink.LinkNotFoundError); !ok {
143148
return err
@@ -152,9 +157,12 @@ func SyncLink(_ agent.State, iface string, wgUserspaceImplementationFallback str
152157
if len(addresses) != 0 {
153158
return nil
154159
}
155-
err = netlink.AddrAdd(link, &netlink.Addr{
160+
161+
if err := netlink.AddrAdd(link, &netlink.Addr{
156162
IPNet: &getIP("10.8.0.1/32")[0],
157-
})
163+
}); err != nil {
164+
return fmt.Errorf("netlink addr add: %w", err)
165+
}
158166

159167
if err := netlink.LinkSetUp(link); err != nil {
160168
return err
@@ -290,7 +298,7 @@ func createPeersConfiguration(state agent.State, iface string) ([]wgtypes.PeerCo
290298

291299
// add new peers
292300
for _, peer := range state.Peers {
293-
if peer.Spec.Disabled == true {
301+
if peer.Spec.Disabled {
294302
continue
295303
}
296304
if peer.Spec.PublicKey == "" {
@@ -341,6 +349,9 @@ func CreateWireguardConfiguration(state agent.State, iface string, listenPort in
341349
cfg.ListenPort = &listenPort
342350

343351
peers, err := createPeersConfiguration(state, iface)
352+
if err != nil {
353+
return wgtypes.Config{}, err
354+
}
344355

345356
cfg.Peers = peers
346357

0 commit comments

Comments
 (0)