From 400affe429fd419e3c6b28d3f1ff17daa605beee Mon Sep 17 00:00:00 2001 From: "Quentin McGaw (desktop)" Date: Sun, 20 Jun 2021 16:12:39 +0000 Subject: [PATCH] Maintenance: add revive linter --- .golangci.yml | 4 +++ internal/configuration/dnsblacklist.go | 6 +--- internal/configuration/firewall.go | 6 +--- internal/configuration/settings.go | 32 +++++++++++++------ internal/constants/addresses.go | 1 + internal/constants/openvpn.go | 1 + internal/constants/paths.go | 6 ++-- internal/constants/privado.go | 1 + internal/constants/status.go | 1 + internal/constants/vpn.go | 4 +-- internal/constants/vyprvpn.go | 1 + internal/constants/windscribe.go | 1 + internal/openvpn/loop.go | 5 +-- .../privateinternetaccess/portforward.go | 1 + internal/routing/outboundsubnets.go | 6 +--- internal/unix/constants.go | 2 +- 16 files changed, 44 insertions(+), 34 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 949a0d7c..5af912cd 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -17,6 +17,9 @@ issues: - path: internal/configuration/ linters: - dupl + - text: "exported: exported var Err*" + linters: + - revive linters: disable-all: true enable: @@ -55,6 +58,7 @@ linters: - nolintlint - prealloc - predeclared + - revive - rowserrcheck - sqlclosecheck - staticcheck diff --git a/internal/configuration/dnsblacklist.go b/internal/configuration/dnsblacklist.go index 0d4600c9..01056aad 100644 --- a/internal/configuration/dnsblacklist.go +++ b/internal/configuration/dnsblacklist.go @@ -29,11 +29,7 @@ func (settings *DNS) readBlacklistBuilding(r reader) (err error) { return err } - if err := settings.readBlacklistUnblockedHostnames(r); err != nil { - return err - } - - return nil + return settings.readBlacklistUnblockedHostnames(r) } var ( diff --git a/internal/configuration/firewall.go b/internal/configuration/firewall.go index 9606eed3..831a5189 100644 --- a/internal/configuration/firewall.go +++ b/internal/configuration/firewall.go @@ -69,11 +69,7 @@ func (settings *Firewall) read(r reader) (err error) { return err } - if err := settings.readOutboundSubnets(r); err != nil { - return err - } - - return nil + return settings.readOutboundSubnets(r) } func (settings *Firewall) readVPNInputPorts(env params.Env) (err error) { diff --git a/internal/configuration/settings.go b/internal/configuration/settings.go index 386e9040..21ccaede 100644 --- a/internal/configuration/settings.go +++ b/internal/configuration/settings.go @@ -1,6 +1,8 @@ package configuration import ( + "errors" + "fmt" "strings" "github.com/qdm12/golibs/logging" @@ -43,6 +45,18 @@ func (settings *Settings) lines() (lines []string) { return lines } +var ( + ErrOpenvpn = errors.New("cannot read Openvpn settings") + ErrSystem = errors.New("cannot read System settings") + ErrDNS = errors.New("cannot read DNS settings") + ErrFirewall = errors.New("cannot read firewall settings") + ErrHTTPProxy = errors.New("cannot read HTTP proxy settings") + ErrShadowsocks = errors.New("cannot read Shadowsocks settings") + ErrControlServer = errors.New("cannot read control server settings") + ErrUpdater = errors.New("cannot read Updater settings") + ErrPublicIP = errors.New("cannot read Public IP getter settings") +) + // Read obtains all configuration options for the program and returns an error as soon // as an error is encountered reading them. func (settings *Settings) Read(env params.Env, os os.OS, logger logging.Logger) (err error) { @@ -54,35 +68,35 @@ func (settings *Settings) Read(env params.Env, os os.OS, logger logging.Logger) } if err := settings.OpenVPN.read(r); err != nil { - return err + return fmt.Errorf("%w: %s", ErrOpenvpn, err) } if err := settings.System.read(r); err != nil { - return err + return fmt.Errorf("%w: %s", ErrSystem, err) } if err := settings.DNS.read(r); err != nil { - return err + return fmt.Errorf("%w: %s", ErrDNS, err) } if err := settings.Firewall.read(r); err != nil { - return err + return fmt.Errorf("%w: %s", ErrFirewall, err) } if err := settings.HTTPProxy.read(r); err != nil { - return err + return fmt.Errorf("%w: %s", ErrHTTPProxy, err) } if err := settings.ShadowSocks.read(r); err != nil { - return err + return fmt.Errorf("%w: %s", ErrShadowsocks, err) } if err := settings.ControlServer.read(r); err != nil { - return err + return fmt.Errorf("%w: %s", ErrControlServer, err) } if err := settings.Updater.read(r); err != nil { - return err + return fmt.Errorf("%w: %s", ErrUpdater, err) } if ip := settings.DNS.PlaintextAddress; ip != nil { @@ -90,7 +104,7 @@ func (settings *Settings) Read(env params.Env, os os.OS, logger logging.Logger) } if err := settings.PublicIP.read(r); err != nil { - return err + return fmt.Errorf("%w: %s", ErrPublicIP, err) } return nil diff --git a/internal/constants/addresses.go b/internal/constants/addresses.go index 240bfbad..28c1f716 100644 --- a/internal/constants/addresses.go +++ b/internal/constants/addresses.go @@ -1,5 +1,6 @@ package constants const ( + // HealthcheckAddress is the default listening address for the healthcheck server. HealthcheckAddress = "127.0.0.1:9999" ) diff --git a/internal/constants/openvpn.go b/internal/constants/openvpn.go index 6b66b1f8..ca179256 100644 --- a/internal/constants/openvpn.go +++ b/internal/constants/openvpn.go @@ -1,3 +1,4 @@ +//nolint:revive package constants const ( diff --git a/internal/constants/paths.go b/internal/constants/paths.go index 9cf716b6..2a118b7c 100644 --- a/internal/constants/paths.go +++ b/internal/constants/paths.go @@ -21,10 +21,10 @@ const ( RootHints string = "/etc/unbound/root.hints" // RootKey is the filepath to the root.key file used by Unbound. RootKey string = "/etc/unbound/root.key" - // Client key filepath, used by Cyberghost. + // ClientKey is the client key filepath. ClientKey string = "/gluetun/client.key" - // Client certificate filepath, used by Cyberghost. + // ClientCertificate is the client certificate filepath. ClientCertificate string = "/gluetun/client.crt" - // Servers information filepath. + // ServersData is the server information filepath. ServersData = "/gluetun/servers.json" ) diff --git a/internal/constants/privado.go b/internal/constants/privado.go index 65c0999f..558bb37c 100644 --- a/internal/constants/privado.go +++ b/internal/constants/privado.go @@ -48,6 +48,7 @@ func PrivadoHostnameChoices() (choices []string) { } //nolint:lll +// PrivadoServers returns a slice of all the Privado servers. func PrivadoServers() []models.PrivadoServer { return []models.PrivadoServer{ {Country: "Argentina", Region: "Buenos Aires F.D.", City: "Buenos Aires", Hostname: "eze-001.vpn.privado.io", IP: net.IP{168, 205, 93, 211}}, diff --git a/internal/constants/status.go b/internal/constants/status.go index f045c43f..015c8bb5 100644 --- a/internal/constants/status.go +++ b/internal/constants/status.go @@ -1,3 +1,4 @@ +//nolint:revive package constants import ( diff --git a/internal/constants/vpn.go b/internal/constants/vpn.go index d4e225df..b821830c 100644 --- a/internal/constants/vpn.go +++ b/internal/constants/vpn.go @@ -11,7 +11,7 @@ const ( Ivpn = "ivpn" // Mullvad is a VPN provider. Mullvad = "mullvad" - // NordVPN is a VPN provider. + // Nordvpn is a VPN provider. Nordvpn = "nordvpn" // Privado is a VPN provider. Privado = "privado" @@ -21,7 +21,7 @@ const ( Privatevpn = "privatevpn" // Protonvpn is a VPN provider. Protonvpn = "protonvpn" - // PureVPN is a VPN provider. + // Purevpn is a VPN provider. Purevpn = "purevpn" // Surfshark is a VPN provider. Surfshark = "surfshark" diff --git a/internal/constants/vyprvpn.go b/internal/constants/vyprvpn.go index 848ad957..54ac3bfd 100644 --- a/internal/constants/vyprvpn.go +++ b/internal/constants/vyprvpn.go @@ -21,6 +21,7 @@ func VyprvpnRegionChoices() (choices []string) { } //nolint:lll +// VyprvpnServers returns a slice of all the VyprVPN servers. func VyprvpnServers() []models.VyprvpnServer { return []models.VyprvpnServer{ {Region: "Algeria", Hostname: "dz1.vyprvpn.com", TCP: false, UDP: true, IPs: []net.IP{{209, 99, 75, 20}}}, diff --git a/internal/constants/windscribe.go b/internal/constants/windscribe.go index 144e166c..3676e1b0 100644 --- a/internal/constants/windscribe.go +++ b/internal/constants/windscribe.go @@ -40,6 +40,7 @@ func WindscribeHostnameChoices() (choices []string) { } //nolint:lll +// WindscribeServers returns a slice of all the Windscribe servers. func WindscribeServers() []models.WindscribeServer { return []models.WindscribeServer{ {Region: "Albania", City: "Tirana", Hostname: "al-002.whiskergalaxy.com", IPs: []net.IP{{31, 171, 152, 178}, {31, 171, 152, 179}, {31, 171, 152, 180}}}, diff --git a/internal/openvpn/loop.go b/internal/openvpn/loop.go index a98dd668..1a3f8a6e 100644 --- a/internal/openvpn/loop.go +++ b/internal/openvpn/loop.go @@ -327,8 +327,5 @@ func writeOpenvpnConf(lines []string, openFile os.OpenFileFunc) error { if err != nil { return err } - if err := file.Close(); err != nil { - return err - } - return nil + return file.Close() } diff --git a/internal/provider/privateinternetaccess/portforward.go b/internal/provider/privateinternetaccess/portforward.go index 52ba7dca..e9a2feb4 100644 --- a/internal/provider/privateinternetaccess/portforward.go +++ b/internal/provider/privateinternetaccess/portforward.go @@ -25,6 +25,7 @@ var ( ErrBindPort = errors.New("cannot bind port") ) +// PortForward obtains a VPN server side port forwarded from PIA. //nolint:gocognit func (p *PIA) PortForward(ctx context.Context, client *http.Client, openFile os.OpenFileFunc, logger logging.Logger, gateway net.IP, fw firewall.Configurator, diff --git a/internal/routing/outboundsubnets.go b/internal/routing/outboundsubnets.go index 19795e48..8a9ee458 100644 --- a/internal/routing/outboundsubnets.go +++ b/internal/routing/outboundsubnets.go @@ -31,11 +31,7 @@ func (r *routing) setOutboundRoutes(outboundSubnets []net.IPNet, } r.removeOutboundSubnets(subnetsToRemove, defaultInterfaceName, defaultGateway) - if err := r.addOutboundSubnets(subnetsToAdd, defaultInterfaceName, defaultGateway); err != nil { - return err - } - - return nil + return r.addOutboundSubnets(subnetsToAdd, defaultInterfaceName, defaultGateway) } func (r *routing) removeOutboundSubnets(subnets []net.IPNet, diff --git a/internal/unix/constants.go b/internal/unix/constants.go index bc139f7c..c6337bd8 100644 --- a/internal/unix/constants.go +++ b/internal/unix/constants.go @@ -5,5 +5,5 @@ import sysunix "golang.org/x/sys/unix" // Constants used for convenience so "os" does not have to be imported const ( - S_IFCHR = sysunix.S_IFCHR //nolint:golint + S_IFCHR = sysunix.S_IFCHR //nolint:revive )