diff --git a/.golangci.yml b/.golangci.yml index 3ff98a4c..ca124b07 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -7,27 +7,12 @@ issues: - path: _test\.go linters: - dupl - - goerr113 + - err113 - containedctx - - goconst - maintidx - path: "internal\\/server\\/.+\\.go" linters: - dupl - - path: "internal\\/configuration\\/settings\\/.+\\.go" - linters: - - dupl - - text: "^mnd: Magic number: 0[0-9]{3}, in detected$" - source: "^.+= os\\.OpenFile\\(.+, .+, 0[0-9]{3}\\)" - linters: - - gomnd - - text: "^mnd: Magic number: 0[0-9]{3}, in detected$" - source: "^.+= os\\.MkdirAll\\(.+, 0[0-9]{3}\\)" - linters: - - gomnd - - linters: - - lll - source: "^//go:generate .+$" - text: "returns interface \\(github\\.com\\/vishvananda\\/netlink\\.Link\\)" linters: - ireturn @@ -35,18 +20,14 @@ issues: text: "newCipherDESCBCBlock returns interface \\(github\\.com\\/youmark\\/pkcs8\\.Cipher\\)" linters: - ireturn - - path: "internal\\/firewall\\/.*\\.go" - text: "string `-i ` has [1-9][0-9]* occurrences, make it a constant" + - path: "internal\\/configuration" + text: "printf: non-constant format string in call to \\(\\*github.com\\/qdm12\\/gotree\\.Node\\)\\.Appendf" linters: - - goconst - - path: "internal\\/provider\\/ipvanish\\/updater\\/servers.go" - text: "string ` in ` has 3 occurrences, make it a constant" + - govet + - path: "internal\\/configuration" + text: "non-constant format string in call to github\\.com\\/qdm12\\/gotree\\.New" linters: - - goconst - - path: "internal\\/vpn\\/portforward.go" - text: 'directive `//nolint:ireturn` is unused for linter "ireturn"' - linters: - - nolintlint + - govet linters: enable: @@ -62,11 +43,10 @@ linters: - dupl - dupword - durationcheck + - err113 - errchkjson - errname - - execinquery - exhaustive - - exportloopref - forcetypeassert - gci - gocheckcompilerdirectives @@ -77,10 +57,8 @@ linters: - gocritic - gocyclo - godot - - goerr113 - goheader - goimports - - gomnd - gomoddirectives - goprintffuncname - gosec @@ -94,6 +72,7 @@ linters: - makezero - mirror - misspell + - mnd - musttag - nakedret - nestif diff --git a/Dockerfile b/Dockerfile index 396b40f8..b651a289 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ ARG ALPINE_VERSION=3.20 ARG GO_ALPINE_VERSION=3.20 ARG GO_VERSION=1.22 ARG XCPUTRANSLATE_VERSION=v0.6.0 -ARG GOLANGCI_LINT_VERSION=v1.56.2 +ARG GOLANGCI_LINT_VERSION=v1.61.0 ARG MOCKGEN_VERSION=v1.6.0 ARG BUILDPLATFORM=linux/amd64 diff --git a/cmd/gluetun/main.go b/cmd/gluetun/main.go index a6403ca3..1d965976 100644 --- a/cmd/gluetun/main.go +++ b/cmd/gluetun/main.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "io/fs" "net/http" "os" "os/exec" @@ -287,10 +288,13 @@ func _main(ctx context.Context, buildInfo models.BuildInformation, logger.Warn(warning) } - if err := os.MkdirAll("/tmp/gluetun", 0644); err != nil { + const permission = fs.FileMode(0644) + err = os.MkdirAll("/tmp/gluetun", permission) + if err != nil { return err } - if err := os.MkdirAll("/gluetun", 0644); err != nil { + err = os.MkdirAll("/gluetun", permission) + if err != nil { return err } diff --git a/internal/alpine/users.go b/internal/alpine/users.go index 3e267075..fa02db34 100644 --- a/internal/alpine/users.go +++ b/internal/alpine/users.go @@ -3,6 +3,7 @@ package alpine import ( "errors" "fmt" + "io/fs" "os" "os/user" "strconv" @@ -39,7 +40,8 @@ func (a *Alpine) CreateUser(username string, uid int) (createdUsername string, e ErrUserAlreadyExists, username, u.Uid, uid) } - file, err := os.OpenFile(a.passwdPath, os.O_APPEND|os.O_WRONLY, 0644) + const permission = fs.FileMode(0644) + file, err := os.OpenFile(a.passwdPath, os.O_APPEND|os.O_WRONLY, permission) if err != nil { return "", err } diff --git a/internal/cli/formatservers.go b/internal/cli/formatservers.go index 4014ace1..3f6121a3 100644 --- a/internal/cli/formatservers.go +++ b/internal/cli/formatservers.go @@ -4,6 +4,7 @@ import ( "errors" "flag" "fmt" + "io/fs" "os" "path/filepath" "strings" @@ -90,7 +91,8 @@ func (c *CLI) FormatServers(args []string) error { } output = filepath.Clean(output) - file, err := os.OpenFile(output, os.O_TRUNC|os.O_WRONLY|os.O_CREATE, 0644) + const permission = fs.FileMode(0644) + file, err := os.OpenFile(output, os.O_TRUNC|os.O_WRONLY|os.O_CREATE, permission) if err != nil { return fmt.Errorf("opening output file: %w", err) } diff --git a/internal/cli/genkey.go b/internal/cli/genkey.go index ac161cf0..0b50ab00 100644 --- a/internal/cli/genkey.go +++ b/internal/cli/genkey.go @@ -34,7 +34,7 @@ func base58Encode(data []byte) string { } // integer simplification of ceil(log(256)/log(58)) - ceilLog256Div58 := (len(data)-zcount)*555/406 + 1 //nolint:gomnd + ceilLog256Div58 := (len(data)-zcount)*555/406 + 1 //nolint:mnd size := zcount + ceilLog256Div58 output := make([]byte, size) @@ -43,7 +43,7 @@ func base58Encode(data []byte) string { for _, b := range data { i := size - 1 for carry := uint32(b); i > high || carry != 0; i-- { - carry += 256 * uint32(output[i]) //nolint:gomnd + carry += 256 * uint32(output[i]) //nolint:mnd output[i] = byte(carry % radix) carry /= radix } diff --git a/internal/configuration/sources/files/wireguard_test.go b/internal/configuration/sources/files/wireguard_test.go index 73240881..93fe5b2b 100644 --- a/internal/configuration/sources/files/wireguard_test.go +++ b/internal/configuration/sources/files/wireguard_test.go @@ -1,6 +1,7 @@ package files import ( + "io/fs" "os" "path/filepath" "testing" @@ -77,7 +78,8 @@ PresharedKey = YJ680VN+dGrdsWNjSFqZ6vvwuiNhbq502ZL3G7Q3o3g= t.Parallel() configFile := filepath.Join(t.TempDir(), "wg.conf") - err := os.WriteFile(configFile, []byte(testCase.fileContent), 0600) + const permission = fs.FileMode(0600) + err := os.WriteFile(configFile, []byte(testCase.fileContent), permission) require.NoError(t, err) wireguard, err := ParseWireguardConf(configFile) diff --git a/internal/configuration/sources/secrets/reader_test.go b/internal/configuration/sources/secrets/reader_test.go index 4e7a4508..db12c55b 100644 --- a/internal/configuration/sources/secrets/reader_test.go +++ b/internal/configuration/sources/secrets/reader_test.go @@ -1,6 +1,7 @@ package secrets import ( + "io/fs" "os" "path/filepath" "testing" @@ -38,7 +39,8 @@ func Test_Source_Get(t *testing.T) { "empty_secret_file": { makeSource: func(tempDir string) (source *Source, err error) { secretFilepath := filepath.Join(tempDir, "test_file") - err = os.WriteFile(secretFilepath, nil, os.ModePerm) + const permission = fs.FileMode(0600) + err = os.WriteFile(secretFilepath, nil, permission) if err != nil { return nil, err } @@ -53,7 +55,8 @@ func Test_Source_Get(t *testing.T) { "default_secret_file": { makeSource: func(tempDir string) (source *Source, err error) { secretFilepath := filepath.Join(tempDir, "test_file") - err = os.WriteFile(secretFilepath, []byte{'A'}, os.ModePerm) + const permission = fs.FileMode(0600) + err = os.WriteFile(secretFilepath, []byte{'A'}, permission) if err != nil { return nil, err } @@ -69,7 +72,8 @@ func Test_Source_Get(t *testing.T) { "env_specified_secret_file": { makeSource: func(tempDir string) (source *Source, err error) { secretFilepath := filepath.Join(tempDir, "test_file_custom") - err = os.WriteFile(secretFilepath, []byte{'A'}, os.ModePerm) + const permission = fs.FileMode(0600) + err = os.WriteFile(secretFilepath, []byte{'A'}, permission) if err != nil { return nil, err } diff --git a/internal/firewall/list.go b/internal/firewall/list.go index 2f6e3512..c47f0d84 100644 --- a/internal/firewall/list.go +++ b/internal/firewall/list.go @@ -355,7 +355,7 @@ func parseMetricSize(size string) (n uint64, err error) { return n, fmt.Errorf("%w: empty string", ErrMetricSizeMalformed) } - //nolint:gomnd + //nolint:mnd multiplerLetterToValue := map[byte]uint64{ 'K': 1000, 'M': 1000000, diff --git a/internal/httpproxy/auth.go b/internal/httpproxy/auth.go index 105dcdd8..cb90a4a8 100644 --- a/internal/httpproxy/auth.go +++ b/internal/httpproxy/auth.go @@ -8,7 +8,7 @@ import ( ) func (h *handler) isAuthorized(responseWriter http.ResponseWriter, request *http.Request) (authorized bool) { - if h.username == "" || (request.Method != "CONNECT" && !request.URL.IsAbs()) { + if h.username == "" || (request.Method != http.MethodConnect && !request.URL.IsAbs()) { return true } basicAuth := request.Header.Get("Proxy-Authorization") diff --git a/internal/natpmp/checks.go b/internal/natpmp/checks.go index 4ac4b3f2..fddb0656 100644 --- a/internal/natpmp/checks.go +++ b/internal/natpmp/checks.go @@ -35,7 +35,7 @@ func checkResponse(response []byte, expectedOperationCode byte, ErrResponseSizeTooSmall, minResponseSize, len(response)) } - if len(response) != int(expectedResponseSize) { + if uint(len(response)) != expectedResponseSize { return fmt.Errorf("%w: expected %d bytes and got %d byte(s)", ErrResponseSizeUnexpected, expectedResponseSize, len(response)) } @@ -73,7 +73,7 @@ var ( // if the result code is not a success (0). // See https://www.ietf.org/rfc/rfc6886.html#section-3.5 // -//nolint:gomnd +//nolint:mnd func checkResultCode(resultCode uint16) (err error) { switch resultCode { case 0: diff --git a/internal/natpmp/externaladdress_test.go b/internal/natpmp/externaladdress_test.go index 526f5b49..ddef6798 100644 --- a/internal/natpmp/externaladdress_test.go +++ b/internal/natpmp/externaladdress_test.go @@ -53,7 +53,7 @@ func Test_Client_ExternalAddress(t *testing.T) { remoteAddress := launchUDPServer(t, testCase.exchanges) client := Client{ - serverPort: uint16(remoteAddress.Port), + serverPort: uint16(remoteAddress.Port), //nolint:gosec initialConnectionDuration: testCase.initialConnDuration, maxRetries: 1, } diff --git a/internal/natpmp/portmapping_test.go b/internal/natpmp/portmapping_test.go index c07edfc5..3bbbb923 100644 --- a/internal/natpmp/portmapping_test.go +++ b/internal/natpmp/portmapping_test.go @@ -122,7 +122,7 @@ func Test_Client_AddPortMapping(t *testing.T) { remoteAddress := launchUDPServer(t, testCase.exchanges) client := Client{ - serverPort: uint16(remoteAddress.Port), + serverPort: uint16(remoteAddress.Port), //nolint:gosec initialConnectionDuration: testCase.initialConnectionDuration, maxRetries: 1, } diff --git a/internal/natpmp/rpc_test.go b/internal/natpmp/rpc_test.go index 08d5a3ae..072c0db3 100644 --- a/internal/natpmp/rpc_test.go +++ b/internal/natpmp/rpc_test.go @@ -145,7 +145,7 @@ func Test_Client_rpc(t *testing.T) { remoteAddress := launchUDPServer(t, testCase.exchanges) client := Client{ - serverPort: uint16(remoteAddress.Port), + serverPort: uint16(remoteAddress.Port), //nolint:gosec initialConnectionDuration: testCase.initialConnectionDuration, maxRetries: 1, } diff --git a/internal/netlink/link.go b/internal/netlink/link.go index c697fbf4..d810e47e 100644 --- a/internal/netlink/link.go +++ b/internal/netlink/link.go @@ -82,7 +82,7 @@ func netlinkLinkToLink(netlinkLink netlink.Link) Link { Name: attributes.Name, Index: attributes.Index, EncapType: attributes.EncapType, - MTU: uint16(attributes.MTU), + MTU: uint16(attributes.MTU), //nolint:gosec } } diff --git a/internal/openvpn/config.go b/internal/openvpn/config.go index 07e2c8fb..33ecbf33 100644 --- a/internal/openvpn/config.go +++ b/internal/openvpn/config.go @@ -6,7 +6,8 @@ import ( ) func (c *Configurator) WriteConfig(lines []string) error { - file, err := os.OpenFile(c.configPath, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0644) + const permission = 0644 + file, err := os.OpenFile(c.configPath, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, permission) if err != nil { return err } diff --git a/internal/openvpn/extract/extract.go b/internal/openvpn/extract/extract.go index cac663be..590985ee 100644 --- a/internal/openvpn/extract/extract.go +++ b/internal/openvpn/extract/extract.go @@ -88,7 +88,7 @@ var ( func extractProto(line string) (protocol string, err error) { fields := strings.Fields(line) - if len(fields) != 2 { //nolint:gomnd + if len(fields) != 2 { //nolint:mnd return "", fmt.Errorf("%w: %s", errProtoLineFieldsCount, line) } @@ -124,7 +124,7 @@ func extractRemote(line string) (ip netip.Addr, port uint16, // the firewall before the VPN is up. } - if n > 2 { //nolint:gomnd + if n > 2 { //nolint:mnd portInt, err := strconv.Atoi(fields[2]) if err != nil { return netip.Addr{}, 0, "", fmt.Errorf("%w: %s", errPortNotValid, line) @@ -134,7 +134,7 @@ func extractRemote(line string) (ip netip.Addr, port uint16, port = uint16(portInt) } - if n > 3 { //nolint:gomnd + if n > 3 { //nolint:mnd switch fields[3] { case "tcp", "udp": protocol = fields[3] diff --git a/internal/openvpn/logs.go b/internal/openvpn/logs.go index c20cc9a1..d1245ba3 100644 --- a/internal/openvpn/logs.go +++ b/internal/openvpn/logs.go @@ -75,6 +75,6 @@ That error usually happens because either: level = levelWarn } - filtered = constants.ColorOpenvpn().Sprintf(filtered) + filtered = constants.ColorOpenvpn().Sprint(filtered) return filtered, level } diff --git a/internal/openvpn/pkcs8/descbc.go b/internal/openvpn/pkcs8/descbc.go index 104f6ad4..3c9d0cc6 100644 --- a/internal/openvpn/pkcs8/descbc.go +++ b/internal/openvpn/pkcs8/descbc.go @@ -25,7 +25,7 @@ func (c cipherDESCBC) IVSize() int { } func (c cipherDESCBC) KeySize() int { - return 8 //nolint:gomnd + return 8 //nolint:mnd } func (c cipherDESCBC) OID() asn1.ObjectIdentifier { diff --git a/internal/provider/airvpn/connection.go b/internal/provider/airvpn/connection.go index 0755d895..72c0471b 100644 --- a/internal/provider/airvpn/connection.go +++ b/internal/provider/airvpn/connection.go @@ -8,7 +8,7 @@ import ( func (p *Provider) GetConnection(selection settings.ServerSelection, ipv6Supported bool) ( connection models.Connection, err error) { - defaults := utils.NewConnectionDefaults(443, 1194, 1637) //nolint:gomnd + defaults := utils.NewConnectionDefaults(443, 1194, 1637) //nolint:mnd return utils.GetConnection(p.Name(), p.storage, selection, defaults, ipv6Supported, p.randSource) } diff --git a/internal/provider/cyberghost/connection.go b/internal/provider/cyberghost/connection.go index 2d2dc21d..2a58d2ad 100644 --- a/internal/provider/cyberghost/connection.go +++ b/internal/provider/cyberghost/connection.go @@ -8,7 +8,7 @@ import ( func (p *Provider) GetConnection(selection settings.ServerSelection, ipv6Supported bool) ( connection models.Connection, err error) { - defaults := utils.NewConnectionDefaults(443, 443, 0) //nolint:gomnd + defaults := utils.NewConnectionDefaults(443, 443, 0) //nolint:mnd return utils.GetConnection(p.Name(), p.storage, selection, defaults, ipv6Supported, p.randSource) } diff --git a/internal/provider/cyberghost/openvpnconf.go b/internal/provider/cyberghost/openvpnconf.go index ad152104..8302b58c 100644 --- a/internal/provider/cyberghost/openvpnconf.go +++ b/internal/provider/cyberghost/openvpnconf.go @@ -9,7 +9,7 @@ import ( func (p *Provider) OpenVPNConfig(connection models.Connection, settings settings.OpenVPN, ipv6Supported bool) (lines []string) { - //nolint:gomnd + //nolint:mnd providerSettings := utils.OpenVPNProviderSettings{ RemoteCertTLS: true, AuthUserPass: true, diff --git a/internal/provider/example/connection.go b/internal/provider/example/connection.go index 87724c6c..68b74713 100644 --- a/internal/provider/example/connection.go +++ b/internal/provider/example/connection.go @@ -10,7 +10,7 @@ func (p *Provider) GetConnection(selection settings.ServerSelection, ipv6Support connection models.Connection, err error) { // TODO: Set the default ports for each VPN protocol+network protocol // combination. If one combination is not supported, set it to `0`. - defaults := utils.NewConnectionDefaults(443, 1194, 51820) //nolint:gomnd + defaults := utils.NewConnectionDefaults(443, 1194, 51820) //nolint:mnd return utils.GetConnection(p.Name(), p.storage, selection, defaults, ipv6Supported, p.randSource) } diff --git a/internal/provider/example/openvpnconf.go b/internal/provider/example/openvpnconf.go index fc65cabe..4ad238e6 100644 --- a/internal/provider/example/openvpnconf.go +++ b/internal/provider/example/openvpnconf.go @@ -11,7 +11,7 @@ func (p *Provider) OpenVPNConfig(connection models.Connection, settings settings.OpenVPN, ipv6Supported bool) (lines []string) { // TODO: Set the necessary fields in `providerSettings` to // generate the right OpenVPN configuration file. - //nolint:gomnd + //nolint:mnd providerSettings := utils.OpenVPNProviderSettings{ AuthUserPass: true, Ciphers: []string{ diff --git a/internal/provider/example/updater/servers.go b/internal/provider/example/updater/servers.go index 56065774..4e4689d6 100644 --- a/internal/provider/example/updater/servers.go +++ b/internal/provider/example/updater/servers.go @@ -91,7 +91,7 @@ func (u *Updater) FetchServers(ctx context.Context, minServers int) ( common.ErrNotEnoughServers, len(servers), minServers) } - maxServers := 2 * len(data.Servers) //nolint:gomnd + maxServers := 2 * len(data.Servers) //nolint:mnd servers = make([]models.Server, 0, maxServers) for _, serverData := range data.Servers { baseServer := models.Server{ diff --git a/internal/provider/expressvpn/connection.go b/internal/provider/expressvpn/connection.go index 1644a33d..02fab186 100644 --- a/internal/provider/expressvpn/connection.go +++ b/internal/provider/expressvpn/connection.go @@ -8,7 +8,7 @@ import ( func (p *Provider) GetConnection(selection settings.ServerSelection, ipv6Supported bool) ( connection models.Connection, err error) { - defaults := utils.NewConnectionDefaults(0, 1195, 0) //nolint:gomnd + defaults := utils.NewConnectionDefaults(0, 1195, 0) //nolint:mnd return utils.GetConnection(p.Name(), p.storage, selection, defaults, ipv6Supported, p.randSource) } diff --git a/internal/provider/expressvpn/openvpnconf.go b/internal/provider/expressvpn/openvpnconf.go index e1d324cd..68981ef7 100644 --- a/internal/provider/expressvpn/openvpnconf.go +++ b/internal/provider/expressvpn/openvpnconf.go @@ -9,7 +9,7 @@ import ( func (p *Provider) OpenVPNConfig(connection models.Connection, settings settings.OpenVPN, ipv6Supported bool) (lines []string) { - //nolint:gomnd + //nolint:mnd providerSettings := utils.OpenVPNProviderSettings{ RemoteCertTLS: true, AuthUserPass: true, diff --git a/internal/provider/fastestvpn/connection.go b/internal/provider/fastestvpn/connection.go index 3dd36cc8..6e6ff482 100644 --- a/internal/provider/fastestvpn/connection.go +++ b/internal/provider/fastestvpn/connection.go @@ -8,7 +8,7 @@ import ( func (p *Provider) GetConnection(selection settings.ServerSelection, ipv6Supported bool) ( connection models.Connection, err error) { - defaults := utils.NewConnectionDefaults(4443, 4443, 51820) //nolint:gomnd + defaults := utils.NewConnectionDefaults(4443, 4443, 51820) //nolint:mnd return utils.GetConnection(p.Name(), p.storage, selection, defaults, ipv6Supported, p.randSource) } diff --git a/internal/provider/fastestvpn/openvpnconf.go b/internal/provider/fastestvpn/openvpnconf.go index 4441869d..9367316d 100644 --- a/internal/provider/fastestvpn/openvpnconf.go +++ b/internal/provider/fastestvpn/openvpnconf.go @@ -9,7 +9,7 @@ import ( func (p *Provider) OpenVPNConfig(connection models.Connection, settings settings.OpenVPN, ipv6Supported bool) (lines []string) { - //nolint:gomnd + //nolint:mnd providerSettings := utils.OpenVPNProviderSettings{ AuthUserPass: true, Ciphers: []string{ diff --git a/internal/provider/fastestvpn/updater/hosttoserver.go b/internal/provider/fastestvpn/updater/hosttoserver.go index 3510f1f8..f2be88be 100644 --- a/internal/provider/fastestvpn/updater/hosttoserver.go +++ b/internal/provider/fastestvpn/updater/hosttoserver.go @@ -66,7 +66,7 @@ func (hts hostToServerData) adaptWithIPs(hostToIPs map[string][]netip.Addr) { } func (hts hostToServerData) toServersSlice() (servers []models.Server) { - servers = make([]models.Server, 0, 2*len(hts)) //nolint:gomnd + servers = make([]models.Server, 0, 2*len(hts)) //nolint:mnd for hostname, serverData := range hts { baseServer := models.Server{ Hostname: hostname, diff --git a/internal/provider/giganews/connection.go b/internal/provider/giganews/connection.go index 655c7a79..fef88a9b 100644 --- a/internal/provider/giganews/connection.go +++ b/internal/provider/giganews/connection.go @@ -8,7 +8,7 @@ import ( func (p *Provider) GetConnection(selection settings.ServerSelection, ipv6Supported bool) ( connection models.Connection, err error) { - defaults := utils.NewConnectionDefaults(0, 443, 0) //nolint:gomnd + defaults := utils.NewConnectionDefaults(0, 443, 0) //nolint:mnd return utils.GetConnection(p.Name(), p.storage, selection, defaults, ipv6Supported, p.randSource) } diff --git a/internal/provider/giganews/openvpnconf.go b/internal/provider/giganews/openvpnconf.go index d2fa43a0..93d1e1db 100644 --- a/internal/provider/giganews/openvpnconf.go +++ b/internal/provider/giganews/openvpnconf.go @@ -9,7 +9,7 @@ import ( func (p *Provider) OpenVPNConfig(connection models.Connection, settings settings.OpenVPN, ipv6Supported bool) (lines []string) { - //nolint:gomnd + //nolint:mnd providerSettings := utils.OpenVPNProviderSettings{ RemoteCertTLS: true, AuthUserPass: true, diff --git a/internal/provider/hidemyass/connection.go b/internal/provider/hidemyass/connection.go index 7768841a..d949b9fa 100644 --- a/internal/provider/hidemyass/connection.go +++ b/internal/provider/hidemyass/connection.go @@ -8,7 +8,7 @@ import ( func (p *Provider) GetConnection(selection settings.ServerSelection, ipv6Supported bool) ( connection models.Connection, err error) { - defaults := utils.NewConnectionDefaults(8080, 553, 0) //nolint:gomnd + defaults := utils.NewConnectionDefaults(8080, 553, 0) //nolint:mnd return utils.GetConnection(p.Name(), p.storage, selection, defaults, ipv6Supported, p.randSource) } diff --git a/internal/provider/hidemyass/openvpnconf.go b/internal/provider/hidemyass/openvpnconf.go index 7f8bebca..05e75e46 100644 --- a/internal/provider/hidemyass/openvpnconf.go +++ b/internal/provider/hidemyass/openvpnconf.go @@ -9,7 +9,7 @@ import ( func (p *Provider) OpenVPNConfig(connection models.Connection, settings settings.OpenVPN, ipv6Supported bool) (lines []string) { - //nolint:gomnd + //nolint:mnd providerSettings := utils.OpenVPNProviderSettings{ AuthUserPass: true, Ciphers: []string{ diff --git a/internal/provider/hidemyass/updater/url.go b/internal/provider/hidemyass/updater/url.go index 0c0dd866..b9976c58 100644 --- a/internal/provider/hidemyass/updater/url.go +++ b/internal/provider/hidemyass/updater/url.go @@ -18,7 +18,7 @@ func parseOpenvpnURL(url, protocol string) (country, region, city string) { case 1: country = parts[0] return country, "", "" - case 2: //nolint:gomnd + case 2: //nolint:mnd country = parts[0] city = parts[1] default: diff --git a/internal/provider/ipvanish/connection.go b/internal/provider/ipvanish/connection.go index fd6c095c..d90fecb2 100644 --- a/internal/provider/ipvanish/connection.go +++ b/internal/provider/ipvanish/connection.go @@ -8,7 +8,7 @@ import ( func (p *Provider) GetConnection(selection settings.ServerSelection, ipv6Supported bool) ( connection models.Connection, err error) { - defaults := utils.NewConnectionDefaults(0, 443, 0) //nolint:gomnd + defaults := utils.NewConnectionDefaults(0, 443, 0) //nolint:mnd return utils.GetConnection(p.Name(), p.storage, selection, defaults, ipv6Supported, p.randSource) } diff --git a/internal/provider/ivpn/connection.go b/internal/provider/ivpn/connection.go index 498c7067..0633467f 100644 --- a/internal/provider/ivpn/connection.go +++ b/internal/provider/ivpn/connection.go @@ -8,7 +8,7 @@ import ( func (p *Provider) GetConnection(selection settings.ServerSelection, ipv6Supported bool) ( connection models.Connection, err error) { - defaults := utils.NewConnectionDefaults(443, 1194, 58237) //nolint:gomnd + defaults := utils.NewConnectionDefaults(443, 1194, 58237) //nolint:mnd return utils.GetConnection(p.Name(), p.storage, selection, defaults, ipv6Supported, p.randSource) } diff --git a/internal/provider/ivpn/openvpnconf.go b/internal/provider/ivpn/openvpnconf.go index c5fd8e56..6578eded 100644 --- a/internal/provider/ivpn/openvpnconf.go +++ b/internal/provider/ivpn/openvpnconf.go @@ -9,7 +9,7 @@ import ( func (p *Provider) OpenVPNConfig(connection models.Connection, settings settings.OpenVPN, ipv6Supported bool) (lines []string) { - //nolint:gomnd + //nolint:mnd providerSettings := utils.OpenVPNProviderSettings{ AuthUserPass: true, Ciphers: []string{ diff --git a/internal/provider/mullvad/connection.go b/internal/provider/mullvad/connection.go index a7110767..f01ed783 100644 --- a/internal/provider/mullvad/connection.go +++ b/internal/provider/mullvad/connection.go @@ -8,7 +8,7 @@ import ( func (p *Provider) GetConnection(selection settings.ServerSelection, ipv6Supported bool) ( connection models.Connection, err error) { - defaults := utils.NewConnectionDefaults(443, 1194, 51820) //nolint:gomnd + defaults := utils.NewConnectionDefaults(443, 1194, 51820) //nolint:mnd return utils.GetConnection(p.Name(), p.storage, selection, defaults, ipv6Supported, p.randSource) } diff --git a/internal/provider/mullvad/openvpnconf.go b/internal/provider/mullvad/openvpnconf.go index 27297dd0..6ddfffcc 100644 --- a/internal/provider/mullvad/openvpnconf.go +++ b/internal/provider/mullvad/openvpnconf.go @@ -9,7 +9,7 @@ import ( func (p *Provider) OpenVPNConfig(connection models.Connection, settings settings.OpenVPN, ipv6Supported bool) (lines []string) { - //nolint:gomnd + //nolint:mnd providerSettings := utils.OpenVPNProviderSettings{ AuthUserPass: true, Ciphers: []string{ diff --git a/internal/provider/nordvpn/connection.go b/internal/provider/nordvpn/connection.go index 3099b004..ad4ed28f 100644 --- a/internal/provider/nordvpn/connection.go +++ b/internal/provider/nordvpn/connection.go @@ -8,7 +8,7 @@ import ( func (p *Provider) GetConnection(selection settings.ServerSelection, ipv6Supported bool) ( connection models.Connection, err error) { - defaults := utils.NewConnectionDefaults(443, 1194, 51820) //nolint:gomnd + defaults := utils.NewConnectionDefaults(443, 1194, 51820) //nolint:mnd return utils.GetConnection(p.Name(), p.storage, selection, defaults, ipv6Supported, p.randSource) } diff --git a/internal/provider/nordvpn/openvpnconf.go b/internal/provider/nordvpn/openvpnconf.go index f126c1fe..e5f721ba 100644 --- a/internal/provider/nordvpn/openvpnconf.go +++ b/internal/provider/nordvpn/openvpnconf.go @@ -9,7 +9,7 @@ import ( func (p *Provider) OpenVPNConfig(connection models.Connection, settings settings.OpenVPN, ipv6Supported bool) (lines []string) { - //nolint:gomnd + //nolint:mnd providerSettings := utils.OpenVPNProviderSettings{ AuthUserPass: true, Ciphers: []string{ diff --git a/internal/provider/nordvpn/updater/models.go b/internal/provider/nordvpn/updater/models.go index e2f389d1..bc531100 100644 --- a/internal/provider/nordvpn/updater/models.go +++ b/internal/provider/nordvpn/updater/models.go @@ -26,7 +26,7 @@ type serverData struct { // IPv6Station is mostly empty, so we ignore it for now. IPv6Station netip.Addr `json:"station_ipv6"` // Hostname is the server hostname, for example 'pl128.nordvpn.com' - Hostname string + Hostname string `json:"hostname"` // Status is the server status, for example 'online' Status string `json:"status"` // Locations is the list of location IDs for the server. diff --git a/internal/provider/perfectprivacy/connection.go b/internal/provider/perfectprivacy/connection.go index 778f6e29..a9dfa6a8 100644 --- a/internal/provider/perfectprivacy/connection.go +++ b/internal/provider/perfectprivacy/connection.go @@ -8,7 +8,7 @@ import ( func (p *Provider) GetConnection(selection settings.ServerSelection, ipv6Supported bool) ( connection models.Connection, err error) { - defaults := utils.NewConnectionDefaults(443, 443, 0) //nolint:gomnd + defaults := utils.NewConnectionDefaults(443, 443, 0) //nolint:mnd return utils.GetConnection(p.Name(), p.storage, selection, defaults, ipv6Supported, p.randSource) } diff --git a/internal/provider/perfectprivacy/openvpnconf.go b/internal/provider/perfectprivacy/openvpnconf.go index addf57fd..235968e5 100644 --- a/internal/provider/perfectprivacy/openvpnconf.go +++ b/internal/provider/perfectprivacy/openvpnconf.go @@ -9,7 +9,7 @@ import ( func (p *Provider) OpenVPNConfig(connection models.Connection, settings settings.OpenVPN, ipv6Supported bool) (lines []string) { - //nolint:gomnd + //nolint:mnd providerSettings := utils.OpenVPNProviderSettings{ AuthUserPass: true, Ciphers: []string{ diff --git a/internal/provider/perfectprivacy/portforward.go b/internal/provider/perfectprivacy/portforward.go index db4bbb9d..fc0f0f5c 100644 --- a/internal/provider/perfectprivacy/portforward.go +++ b/internal/provider/perfectprivacy/portforward.go @@ -34,7 +34,7 @@ func internalIPToPorts(internalIP netip.Addr) (ports []uint16) { last16Bits[0] & 0b00001111, // only keep 4 bits last16Bits[1], } - basePort := uint16(last12Bits[0])<<8 + uint16(last12Bits[1]) //nolint:gomnd + basePort := uint16(last12Bits[0])<<8 + uint16(last12Bits[1]) //nolint:mnd return []uint16{ 10000 + basePort, 20000 + basePort, diff --git a/internal/provider/privado/connection.go b/internal/provider/privado/connection.go index a237b318..bbc3dff3 100644 --- a/internal/provider/privado/connection.go +++ b/internal/provider/privado/connection.go @@ -8,7 +8,7 @@ import ( func (p *Provider) GetConnection(selection settings.ServerSelection, ipv6Supported bool) ( connection models.Connection, err error) { - defaults := utils.NewConnectionDefaults(0, 1194, 0) //nolint:gomnd + defaults := utils.NewConnectionDefaults(0, 1194, 0) //nolint:mnd return utils.GetConnection(p.Name(), p.storage, selection, defaults, ipv6Supported, p.randSource) } diff --git a/internal/provider/privado/openvpnconf.go b/internal/provider/privado/openvpnconf.go index 86f94031..7eed6d7f 100644 --- a/internal/provider/privado/openvpnconf.go +++ b/internal/provider/privado/openvpnconf.go @@ -9,7 +9,7 @@ import ( func (p *Provider) OpenVPNConfig(connection models.Connection, settings settings.OpenVPN, ipv6Supported bool) (lines []string) { - //nolint:gomnd + //nolint:mnd providerSettings := utils.OpenVPNProviderSettings{ AuthUserPass: true, Ciphers: []string{ diff --git a/internal/provider/privateinternetaccess/httpclient.go b/internal/provider/privateinternetaccess/httpclient.go index 535b69d1..ebd07679 100644 --- a/internal/provider/privateinternetaccess/httpclient.go +++ b/internal/provider/privateinternetaccess/httpclient.go @@ -25,7 +25,7 @@ func newHTTPClient(serverName string) (client *http.Client, err error) { panic("cannot load custom PIA certificate") } - //nolint:gomnd + //nolint:mnd return &http.Client{ Transport: &http.Transport{ // Settings taken from http.DefaultTransport diff --git a/internal/provider/privateinternetaccess/portforward.go b/internal/provider/privateinternetaccess/portforward.go index 61352d28..4af365dc 100644 --- a/internal/provider/privateinternetaccess/portforward.go +++ b/internal/provider/privateinternetaccess/portforward.go @@ -7,6 +7,7 @@ import ( "errors" "fmt" "io" + "io/fs" "net" "net/http" "net/netip" @@ -202,7 +203,8 @@ func readPIAPortForwardData(portForwardPath string) (data piaPortForwardData, er } func writePIAPortForwardData(portForwardPath string, data piaPortForwardData) (err error) { - file, err := os.OpenFile(portForwardPath, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0644) + const permission = fs.FileMode(0644) + file, err := os.OpenFile(portForwardPath, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, permission) if err != nil { return err } diff --git a/internal/provider/privatevpn/connection.go b/internal/provider/privatevpn/connection.go index 55de3b62..95f0ff61 100644 --- a/internal/provider/privatevpn/connection.go +++ b/internal/provider/privatevpn/connection.go @@ -8,7 +8,7 @@ import ( func (p *Provider) GetConnection(selection settings.ServerSelection, ipv6Supported bool) ( connection models.Connection, err error) { - defaults := utils.NewConnectionDefaults(443, 1194, 0) //nolint:gomnd + defaults := utils.NewConnectionDefaults(443, 1194, 0) //nolint:mnd return utils.GetConnection(p.Name(), p.storage, selection, defaults, ipv6Supported, p.randSource) } diff --git a/internal/provider/protonvpn/connection.go b/internal/provider/protonvpn/connection.go index 5fd09490..c5bf13b6 100644 --- a/internal/provider/protonvpn/connection.go +++ b/internal/provider/protonvpn/connection.go @@ -8,7 +8,7 @@ import ( func (p *Provider) GetConnection(selection settings.ServerSelection, ipv6Supported bool) ( connection models.Connection, err error) { - defaults := utils.NewConnectionDefaults(443, 1194, 51820) //nolint:gomnd + defaults := utils.NewConnectionDefaults(443, 1194, 51820) //nolint:mnd return utils.GetConnection(p.Name(), p.storage, selection, defaults, ipv6Supported, p.randSource) } diff --git a/internal/provider/protonvpn/openvpnconf.go b/internal/provider/protonvpn/openvpnconf.go index 955125af..07604c3c 100644 --- a/internal/provider/protonvpn/openvpnconf.go +++ b/internal/provider/protonvpn/openvpnconf.go @@ -9,7 +9,7 @@ import ( func (p *Provider) OpenVPNConfig(connection models.Connection, settings settings.OpenVPN, ipv6Supported bool) (lines []string) { - //nolint:gomnd + //nolint:mnd providerSettings := utils.OpenVPNProviderSettings{ RemoteCertTLS: true, AuthUserPass: true, diff --git a/internal/provider/purevpn/connection.go b/internal/provider/purevpn/connection.go index ab06b3eb..1b9d337a 100644 --- a/internal/provider/purevpn/connection.go +++ b/internal/provider/purevpn/connection.go @@ -8,7 +8,7 @@ import ( func (p *Provider) GetConnection(selection settings.ServerSelection, ipv6Supported bool) ( connection models.Connection, err error) { - defaults := utils.NewConnectionDefaults(80, 53, 0) //nolint:gomnd + defaults := utils.NewConnectionDefaults(80, 53, 0) //nolint:mnd return utils.GetConnection(p.Name(), p.storage, selection, defaults, ipv6Supported, p.randSource) } diff --git a/internal/provider/purevpn/openvpnconf.go b/internal/provider/purevpn/openvpnconf.go index 25d87e5a..cd925d83 100644 --- a/internal/provider/purevpn/openvpnconf.go +++ b/internal/provider/purevpn/openvpnconf.go @@ -16,7 +16,7 @@ func (p *Provider) OpenVPNConfig(connection models.Connection, openvpn.AES256gcm, }, KeyDirection: "1", - //nolint:gomnd + //nolint:mnd Ping: 10, CAs: []string{"MIIE6DCCA9CgAwIBAgIJAMjXFoeo5uSlMA0GCSqGSIb3DQEBCwUAMIGoMQswCQYDVQQGEwJISzEQMA4GA1UECBMHQ2VudHJhbDELMAkGA1UEBxMCSEsxGDAWBgNVBAoTD1NlY3VyZS1TZXJ2ZXJDQTELMAkGA1UECxMCSVQxGDAWBgNVBAMTD1NlY3VyZS1TZXJ2ZXJDQTEYMBYGA1UEKRMPU2VjdXJlLVNlcnZlckNBMR8wHQYJKoZIhvcNAQkBFhBtYWlsQGhvc3QuZG9tYWluMB4XDTE2MDExNTE1MzQwOVoXDTI2MDExMjE1MzQwOVowgagxCzAJBgNVBAYTAkhLMRAwDgYDVQQIEwdDZW50cmFsMQswCQYDVQQHEwJISzEYMBYGA1UEChMPU2VjdXJlLVNlcnZlckNBMQswCQYDVQQLEwJJVDEYMBYGA1UEAxMPU2VjdXJlLVNlcnZlckNBMRgwFgYDVQQpEw9TZWN1cmUtU2VydmVyQ0ExHzAdBgkqhkiG9w0BCQEWEG1haWxAaG9zdC5kb21haW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDluufhyLlyvXzPUL16kAWAdivl1roQv3QHbuRshyKacf/1Er1JqEbtW3Mx9Fvr/u27qU2W8lQI6DaJhU2BfijPe/KHkib55mvHzIVvoexxya26nk79F2c+d9PnuuMdThWQO3El5a/i2AASnM7T7piIBT2WRZW2i8RbfJaTT7G7LP7OpMKIV1qyBg/cWoO7cIWQW4jmzqrNryIkF0AzStLN1DxvnQZwgXBGv0CwuAkfQuNSLu0PQgPp0PhdukNZFllv5D29IhPr0Z+kwPtrAgPQo+lHlOBHBMUpDT4XChTPeAvMaUSBsqmonAE8UUHEabWrqYN/kWNHCNkYXMkiVmK1AgMBAAGjggERMIIBDTAdBgNVHQ4EFgQU456ijsFrYnzHBShLAPpOUqQ+Z2cwgd0GA1UdIwSB1TCB0oAU456ijsFrYnzHBShLAPpOUqQ+Z2ehga6kgaswgagxCzAJBgNVBAYTAkhLMRAwDgYDVQQIEwdDZW50cmFsMQswCQYDVQQHEwJISzEYMBYGA1UEChMPU2VjdXJlLVNlcnZlckNBMQswCQYDVQQLEwJJVDEYMBYGA1UEAxMPU2VjdXJlLVNlcnZlckNBMRgwFgYDVQQpEw9TZWN1cmUtU2VydmVyQ0ExHzAdBgkqhkiG9w0BCQEWEG1haWxAaG9zdC5kb21haW6CCQDI1xaHqObkpTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQCvga2HMwOtUxWH/inL2qk24KX2pxLg939JNhqoyNrUpbDHag5xPQYXUmUpKrNJZ0z+o/ZnNUPHydTSXE7Z7E45J0GDN5E7g4pakndKnDLSjp03NgGsCGW+cXnz6UBPM5FStFvGdDeModeSUyoS9fjk+mYROvmiy5EiVDP91sKGcPLR7Ym0M7zl2aaqV7bb98HmMoBOxpeZQinof67nKrCsgz/xjktWFgcmPl4/PQSsmqQD0fTtWxGuRX+FzwvF2OCMCAJgp1RqJNlk2g50/kBIoJVPPCfjDFeDU5zGaWGSQ9+z1L6/z7VXdjUiHL0ouOcHwbiS4ZjTr9nMn6WdAHU2"}, //nolint:lll Cert: "MIIEnzCCA4egAwIBAgIBAzANBgkqhkiG9w0BAQsFADCBqDELMAkGA1UEBhMCSEsxEDAOBgNVBAgTB0NlbnRyYWwxCzAJBgNVBAcTAkhLMRgwFgYDVQQKEw9TZWN1cmUtU2VydmVyQ0ExCzAJBgNVBAsTAklUMRgwFgYDVQQDEw9TZWN1cmUtU2VydmVyQ0ExGDAWBgNVBCkTD1NlY3VyZS1TZXJ2ZXJDQTEfMB0GCSqGSIb3DQEJARYQbWFpbEBob3N0LmRvbWFpbjAeFw0xNjAxMTUxNjE1MzhaFw0yNjAxMTIxNjE1MzhaMIGdMQswCQYDVQQGEwJISzEQMA4GA1UECBMHQ2VudHJhbDELMAkGA1UEBxMCSEsxFjAUBgNVBAoTDVNlY3VyZS1DbGllbnQxCzAJBgNVBAsTAklUMRYwFAYDVQQDEw1TZWN1cmUtQ2xpZW50MREwDwYDVQQpEwhjaGFuZ2VtZTEfMB0GCSqGSIb3DQEJARYQbWFpbEBob3N0LmRvbWFpbjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxsnyn4v6xxDPnuDaYS0b9M1N8nxgg7OBPBlK+FWRxdTQ8yxt5U5CZGm7riVp7fya2J2iPZIgmHQEv/KbxztsHAVlYSfYYlalrnhEL3bDP2tY+N43AwB1k5BrPq2s1pPLT2XG951drDKG4PUuFHUP1sHzW5oQlfVCmxgIMAP8OYkCAwEAAaOCAV8wggFbMAkGA1UdEwQCMAAwLQYJYIZIAYb4QgENBCAWHkVhc3ktUlNBIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU9MwUnUDbQKKZKjoeieD2OD5NlAEwgd0GA1UdIwSB1TCB0oAU456ijsFrYnzHBShLAPpOUqQ+Z2ehga6kgaswgagxCzAJBgNVBAYTAkhLMRAwDgYDVQQIEwdDZW50cmFsMQswCQYDVQQHEwJISzEYMBYGA1UEChMPU2VjdXJlLVNlcnZlckNBMQswCQYDVQQLEwJJVDEYMBYGA1UEAxMPU2VjdXJlLVNlcnZlckNBMRgwFgYDVQQpEw9TZWN1cmUtU2VydmVyQ0ExHzAdBgkqhkiG9w0BCQEWEG1haWxAaG9zdC5kb21haW6CCQDI1xaHqObkpTATBgNVHSUEDDAKBggrBgEFBQcDAjALBgNVHQ8EBAMCB4AwDQYJKoZIhvcNAQELBQADggEBAFyFo2VUX/UFixsdPdK9/Yt6mkCWc+XS1xbapGXXb9U1d+h1iBCIV9odUHgNCXWpz1hR5Uu/OCzaZ0asLE4IFMZlQmJs8sMT0c1tfPPGW45vxbL0lhqnQ8PNcBH7huNK7VFjUh4szXRKmaQPaM4S91R3L4CaNfVeHfAg7mN2m9Zn5Gto1Q1/CFMGKu2hxwGEw5p+X1czBWEvg/O09ckx/ggkkI1NcZsNiYQ+6Pz8DdGGX3+05YwLZu94+O6iIMrzxl/il0eK83g3YPbsOrASARvw6w/8sOnJCK5eOacl21oww875KisnYdWjHB1FiI+VzQ1/gyoDsL5kPTJVuu2CoG8=", //nolint:lll diff --git a/internal/provider/slickvpn/connection.go b/internal/provider/slickvpn/connection.go index 901773ac..3a54131a 100644 --- a/internal/provider/slickvpn/connection.go +++ b/internal/provider/slickvpn/connection.go @@ -8,6 +8,6 @@ import ( func (p *Provider) GetConnection(selection settings.ServerSelection, ipv6Supported bool) ( connection models.Connection, err error) { - defaults := utils.NewConnectionDefaults(443, 443, 0) //nolint:gomnd + defaults := utils.NewConnectionDefaults(443, 443, 0) //nolint:mnd return utils.GetConnection(p.Name(), p.storage, selection, defaults, ipv6Supported, p.randSource) } diff --git a/internal/provider/surfshark/connection.go b/internal/provider/surfshark/connection.go index d6ff6ee5..60e7be6c 100644 --- a/internal/provider/surfshark/connection.go +++ b/internal/provider/surfshark/connection.go @@ -8,7 +8,7 @@ import ( func (p *Provider) GetConnection(selection settings.ServerSelection, ipv6Supported bool) ( connection models.Connection, err error) { - defaults := utils.NewConnectionDefaults(1443, 1194, 51820) //nolint:gomnd + defaults := utils.NewConnectionDefaults(1443, 1194, 51820) //nolint:mnd return utils.GetConnection(p.Name(), p.storage, selection, defaults, ipv6Supported, p.randSource) } diff --git a/internal/provider/surfshark/openvpnconf.go b/internal/provider/surfshark/openvpnconf.go index 92628eae..94fa6c66 100644 --- a/internal/provider/surfshark/openvpnconf.go +++ b/internal/provider/surfshark/openvpnconf.go @@ -9,7 +9,7 @@ import ( func (p *Provider) OpenVPNConfig(connection models.Connection, settings settings.OpenVPN, ipv6Supported bool) (lines []string) { - //nolint:gomnd + //nolint:mnd providerSettings := utils.OpenVPNProviderSettings{ RemoteCertTLS: true, AuthUserPass: true, diff --git a/internal/provider/torguard/connection.go b/internal/provider/torguard/connection.go index 67c2d913..8dfd077f 100644 --- a/internal/provider/torguard/connection.go +++ b/internal/provider/torguard/connection.go @@ -8,7 +8,7 @@ import ( func (p *Provider) GetConnection(selection settings.ServerSelection, ipv6Supported bool) ( connection models.Connection, err error) { - defaults := utils.NewConnectionDefaults(1912, 1912, 0) //nolint:gomnd + defaults := utils.NewConnectionDefaults(1912, 1912, 0) //nolint:mnd return utils.GetConnection(p.Name(), p.storage, selection, defaults, ipv6Supported, p.randSource) } diff --git a/internal/provider/torguard/openvpnconf.go b/internal/provider/torguard/openvpnconf.go index d37eb9fa..52fa269b 100644 --- a/internal/provider/torguard/openvpnconf.go +++ b/internal/provider/torguard/openvpnconf.go @@ -18,7 +18,7 @@ func (p *Provider) OpenVPNConfig(connection models.Connection, openvpn.AES128cbc, // For OpenVPN 2.5, see https://github.com/qdm12/gluetun/issues/2271#issuecomment-2103349935 }, Auth: openvpn.SHA256, - TunMTUExtra: 32, //nolint:gomnd + TunMTUExtra: 32, //nolint:mnd KeyDirection: "1", CAs: []string{ "MIIDMTCCAhmgAwIBAgIJAKnGGJK6qLqSMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNVBAMMCVRHLVZQTi1DQTAgFw0xOTA1MjExNDIzMTFaGA8yMDU5MDUxMTE0MjMxMVowFDESMBAGA1UEAwwJVEctVlBOLUNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlv0UgPD3xVAvhhP6q1HCmeAWbH+9HPkyQ2P6qM5oHY5dntjmq8YT48FZGHWv7+s9O47v6Bv7rEc4UwQx15cc2LByivX2JwmE8JACvNfwEnZXYAPq9WU3ZgRrAGvA09ItuLqK2fQ4A7h8bFhmyxCbSzP1sSIT/zJY6ebuh5rDQSMJRMaoI0t1zorEZ7PlEmh+o0w5GPs0D0vY50UcnEzB4GOdWC9pJREwEqppWYLN7RRdG8JyIqmA59mhARCnQFUo38HWic4trxFe71jtD7YInNV7ShQtg0S0sXo36Rqfz72Jo08qqI70dNs5DN1aGNkQ/tRK9DhL5DLmTkaCw7mEFQIDAQABo4GDMIGAMB0GA1UdDgQWBBR7DcymXBp6u/jAaZOPUjUhEyhXfjBEBgNVHSMEPTA7gBR7DcymXBp6u/jAaZOPUjUhEyhXfqEYpBYwFDESMBAGA1UEAwwJVEctVlBOLUNBggkAqcYYkrqoupIwDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAE79ngbdSlP7IBbfnJ+2Ju7vqt9/GyhcsYtjibp6gsMUxKlD8HuvlSGj5kNO5wiwN7XXqsjYtJfdhmzzVbXksi8Fnbnfa8GhFl4IAjLJ5cxaWOxjr6wx2AhIs+BVVARjaU7iTK91RXJnl6u7UDHTkQylBTl7wgpMeG6GjhaHfcOL1t7D2w8x23cTO+p+n53P3cBq+9TiAUORdzXJvbCxlPMDSDArsgBjC57W7dtdnZo7gTfQG77JTDFBeSwPwLF7PjBB4S6rzU/4fcYwy83XKP6zDn9tgUJDnpFb/7jJ/PbNkK4BWYJp3XytOtt66v9SEKw+v/fJ+VkjU16vE/9Q3h4=", //nolint:lll diff --git a/internal/provider/vpnsecure/connection.go b/internal/provider/vpnsecure/connection.go index 2eae481c..ea480972 100644 --- a/internal/provider/vpnsecure/connection.go +++ b/internal/provider/vpnsecure/connection.go @@ -8,7 +8,7 @@ import ( func (p *Provider) GetConnection(selection settings.ServerSelection, ipv6Supported bool) ( connection models.Connection, err error) { - defaults := utils.NewConnectionDefaults(110, 1282, 0) //nolint:gomnd + defaults := utils.NewConnectionDefaults(110, 1282, 0) //nolint:mnd return utils.GetConnection(p.Name(), p.storage, selection, defaults, ipv6Supported, p.randSource) } diff --git a/internal/provider/vpnsecure/openvpnconf.go b/internal/provider/vpnsecure/openvpnconf.go index ce82649e..0fd848b7 100644 --- a/internal/provider/vpnsecure/openvpnconf.go +++ b/internal/provider/vpnsecure/openvpnconf.go @@ -9,7 +9,7 @@ import ( func (p *Provider) OpenVPNConfig(connection models.Connection, settings settings.OpenVPN, ipv6Supported bool) (lines []string) { - //nolint:gomnd + //nolint:mnd providerSettings := utils.OpenVPNProviderSettings{ RemoteCertTLS: true, AuthUserPass: true, diff --git a/internal/provider/vpnunlimited/connection.go b/internal/provider/vpnunlimited/connection.go index 00354f51..4147f13b 100644 --- a/internal/provider/vpnunlimited/connection.go +++ b/internal/provider/vpnunlimited/connection.go @@ -8,7 +8,7 @@ import ( func (p *Provider) GetConnection(selection settings.ServerSelection, ipv6Supported bool) ( connection models.Connection, err error) { - defaults := utils.NewConnectionDefaults(1197, 1197, 0) //nolint:gomnd + defaults := utils.NewConnectionDefaults(1197, 1197, 0) //nolint:mnd return utils.GetConnection(p.Name(), p.storage, selection, defaults, ipv6Supported, p.randSource) } diff --git a/internal/provider/vpnunlimited/openvpnconf.go b/internal/provider/vpnunlimited/openvpnconf.go index a49ff6a3..9cdda7a9 100644 --- a/internal/provider/vpnunlimited/openvpnconf.go +++ b/internal/provider/vpnunlimited/openvpnconf.go @@ -12,7 +12,7 @@ func (p *Provider) OpenVPNConfig(connection models.Connection, providerSettings := utils.OpenVPNProviderSettings{ RemoteCertTLS: true, AuthUserPass: false, - Ping: 5, //nolint:gomnd + Ping: 5, //nolint:mnd RenegDisabled: true, Ciphers: []string{openvpn.AES256cbc}, Auth: openvpn.SHA512, diff --git a/internal/provider/vyprvpn/connection.go b/internal/provider/vyprvpn/connection.go index 9785dfc5..e7a0dd09 100644 --- a/internal/provider/vyprvpn/connection.go +++ b/internal/provider/vyprvpn/connection.go @@ -8,7 +8,7 @@ import ( func (p *Provider) GetConnection(selection settings.ServerSelection, ipv6Supported bool) ( connection models.Connection, err error) { - defaults := utils.NewConnectionDefaults(0, 443, 0) //nolint:gomnd + defaults := utils.NewConnectionDefaults(0, 443, 0) //nolint:mnd return utils.GetConnection(p.Name(), p.storage, selection, defaults, ipv6Supported, p.randSource) } diff --git a/internal/provider/vyprvpn/openvpnconf.go b/internal/provider/vyprvpn/openvpnconf.go index e4b355ec..80fe21be 100644 --- a/internal/provider/vyprvpn/openvpnconf.go +++ b/internal/provider/vyprvpn/openvpnconf.go @@ -9,7 +9,7 @@ import ( func (p *Provider) OpenVPNConfig(connection models.Connection, settings settings.OpenVPN, ipv6Supported bool) (lines []string) { - //nolint:gomnd + //nolint:mnd providerSettings := utils.OpenVPNProviderSettings{ RemoteCertTLS: true, AuthUserPass: true, diff --git a/internal/provider/wevpn/connection.go b/internal/provider/wevpn/connection.go index 081ba539..5961a600 100644 --- a/internal/provider/wevpn/connection.go +++ b/internal/provider/wevpn/connection.go @@ -8,7 +8,7 @@ import ( func (p *Provider) GetConnection(selection settings.ServerSelection, ipv6Supported bool) ( connection models.Connection, err error) { - defaults := utils.NewConnectionDefaults(1195, 1194, 0) //nolint:gomnd + defaults := utils.NewConnectionDefaults(1195, 1194, 0) //nolint:mnd return utils.GetConnection(p.Name(), p.storage, selection, defaults, ipv6Supported, p.randSource) } diff --git a/internal/provider/wevpn/openvpnconf.go b/internal/provider/wevpn/openvpnconf.go index 18dcc440..cf9231ba 100644 --- a/internal/provider/wevpn/openvpnconf.go +++ b/internal/provider/wevpn/openvpnconf.go @@ -16,7 +16,7 @@ func (p *Provider) OpenVPNConfig(connection models.Connection, openvpn.AES256gcm, }, Auth: openvpn.SHA512, - Ping: 30, //nolint:gomnd + Ping: 30, //nolint:mnd RenegDisabled: true, CAs: []string{"MIIDQjCCAiqgAwIBAgIUPppqnRZfvGGrT4GjXFE4Q29QzgowDQYJKoZIhvcNAQELBQAwEzERMA8GA1UEAwwIQ2hhbmdlTWUwHhcNMTkxMTA1MjMzMzIzWhcNMjkxMTAyMjMzMzIzWjATMREwDwYDVQQDDAhDaGFuZ2VNZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL5DFBJlTqhXukJFWlI8TNW9+HEQCZXhyVFvQhJFF2xIGVNx51XzqxiRANjVJZJrA68kV8az0v2Dxj0SFnRWDR6pOjjdp2CyHFcgHyfv+4MrsreAtkue86bB/1ECPWaoIwtaLnwI6SEmFZl98RlI9v4M/8IE4chOnMrM/F22+2OXI//TduvTcbyOMUiiouIP8UG1FB3J5FyuaW6qPZz2G0efDoaOI+E9LSxE87OoFrII7UqdHlWxRb3nUuPU1Ee4rN/d4tFyP4AvPKfsGhVOwyGG21IdRnbXIuDi0xytkCGOZ4j2bq5zqudnp4Izt6yJgdzZpQQWK3kSHB3qTT/Yzl8CAwEAAaOBjTCBijAdBgNVHQ4EFgQUXYkoo4WbkkvbgLVdGob9RScRf3AwTgYDVR0jBEcwRYAUXYkoo4WbkkvbgLVdGob9RScRf3ChF6QVMBMxETAPBgNVBAMMCENoYW5nZU1lghQ+mmqdFl+8YatPgaNcUThDb1DOCjAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAOr1XmyWBRYfTQPNvZZ+DjCfiRYzLOi2AGefZt/jETqPDF8deVbyL1fLhXZzuX+5Etlsil3PflJjpzc/FSeZRuYRaShtwF3j6I08Eww9rBkaCnsukMUcLtMOvhdAU8dUakcRA2wkQ7Z+TWdMBv5+/6MnX10An1fIz7bAy3btMEOPTEFLo8Bst1SxJtUMaqhUteSOJ1VorpK3CWfOFaXxbJAb4E0+3zt6Vsc8mY5tt6wAi8IqiN4WD79ZdvKxENK4FMkR1kNpBY97mvdf82rzpwiBuJgN5ywmH78Ghj+9T8nI6/UIqJ1y22IRYGv6dMif8fHo5WWhCv3qmCqqY8vwuxw=="}, //nolint:lll Cert: "MIIDTDCCAjSgAwIBAgIRAKxt8SMIXezjmHm2KDCAQdIwDQYJKoZIhvcNAQELBQAwEzERMA8GA1UEAwwIQ2hhbmdlTWUwHhcNMTkxMTA1MjMzMzI0WhcNMjkxMTAyMjMzMzI0WjAOMQwwCgYDVQQDDAN0Y3AwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvEwY2erLhMm3Mpsnybm3G6zvGyeblUAaehQVEUs+KM2/5np0Ovx0y8Iz9pIC9ITaWM0B3dM6uBsNEtylZIe4Dd9aFujunSeCFsLRf8i9AbrUombpQ6P4jzYFBxwcEw//UShwa4HZI6JuSYikdpx/dyXdBH2skahwDVc8VUFdBLLSglfKGbuzP9GsdSwQCeBRWgA3dvIzIkQkBwfnt9WQKUfRAe8e5NybaAn8Yuu9sjLkQe6eyV7toxkZTcEXdABG2vtdTEzlAsQilZzIxg3jcdeEgMgRKngng+YNP0rR5nofZ1iDlp+vBj0nuqTTJLHMrRWPIc7bdYFD/f2J49WORAgMBAAGjgZ8wgZwwCQYDVR0TBAIwADAdBgNVHQ4EFgQUmSAFmCo1FAKVq8RQF7jMxMxcMtUwTgYDVR0jBEcwRYAUXYkoo4WbkkvbgLVdGob9RScRf3ChF6QVMBMxETAPBgNVBAMMCENoYW5nZU1lghQ+mmqdFl+8YatPgaNcUThDb1DOCjATBgNVHSUEDDAKBggrBgEFBQcDAjALBgNVHQ8EBAMCB4AwDQYJKoZIhvcNAQELBQADggEBADPqdEgL+0kou8P974QEaNg1XOAXpwP0NNqbkZ/Oj9+Lp96YAhAHOAJig+RWbBktK8zu8oUUGR1qLXAWCmirlXErVuBRnadTEh3A7SOuY02BcsYAtpQ2EU9j5K/LV7nTfagkVdWy7x/av361UD4t9fv1j4YYTh4XLRp7KVXs6AGZ7T1hqPYFMUIoPpFhPzFxH4euJjfazr4SkTR6k6Vhw3pyFd6HP65vcqpzHGxFytSa8HtltBk2DpzIf8yV9TEy+gOXFaaGss0YKQ5OU1ieqZRuLVEGiu17lByYiQGyemIETJbdkyiSg93dDJRxjaTk7c8CEdpipt07ndSIPldMtXA=", //nolint:lll diff --git a/internal/provider/windscribe/connection.go b/internal/provider/windscribe/connection.go index d8319ad4..135f0ce1 100644 --- a/internal/provider/windscribe/connection.go +++ b/internal/provider/windscribe/connection.go @@ -8,7 +8,7 @@ import ( func (p *Provider) GetConnection(selection settings.ServerSelection, ipv6Supported bool) ( connection models.Connection, err error) { - defaults := utils.NewConnectionDefaults(443, 1194, 1194) //nolint:gomnd + defaults := utils.NewConnectionDefaults(443, 1194, 1194) //nolint:mnd return utils.GetConnection(p.Name(), p.storage, selection, defaults, ipv6Supported, p.randSource) } diff --git a/internal/provider/windscribe/openvpnconf.go b/internal/provider/windscribe/openvpnconf.go index 1e252b57..598f1da3 100644 --- a/internal/provider/windscribe/openvpnconf.go +++ b/internal/provider/windscribe/openvpnconf.go @@ -18,7 +18,7 @@ func (p *Provider) OpenVPNConfig(connection models.Connection, openvpn.AES128gcm, }, Auth: openvpn.SHA512, - Ping: 10, //nolint:gomnd + Ping: 10, //nolint:mnd VerifyX509Type: "name", KeyDirection: "1", RenegDisabled: true, diff --git a/internal/provider/windscribe/updater/servers.go b/internal/provider/windscribe/updater/servers.go index 0cd39926..6246dff1 100644 --- a/internal/provider/windscribe/updater/servers.go +++ b/internal/provider/windscribe/updater/servers.go @@ -30,7 +30,7 @@ func (u *Updater) FetchServers(ctx context.Context, minServers int) ( x5090Name := group.OvpnX509 wgPubKey := group.WgPubKey for _, node := range group.Nodes { - ips := make([]netip.Addr, 0, 2) //nolint:gomnd + ips := make([]netip.Addr, 0, 2) //nolint:mnd if node.IP.IsValid() { ips = append(ips, node.IP) } diff --git a/internal/publicip/fs.go b/internal/publicip/fs.go index 750d97d0..929191f4 100644 --- a/internal/publicip/fs.go +++ b/internal/publicip/fs.go @@ -1,11 +1,13 @@ package publicip import ( + "io/fs" "os" ) func persistPublicIP(path string, content string, puid, pgid int) error { - file, err := os.OpenFile(path, os.O_TRUNC|os.O_WRONLY|os.O_CREATE, 0644) + const permission = fs.FileMode(0644) + file, err := os.OpenFile(path, os.O_TRUNC|os.O_WRONLY|os.O_CREATE, permission) if err != nil { return err } diff --git a/internal/server/middlewares/auth/middleware.go b/internal/server/middlewares/auth/middleware.go index 7a6c18bc..0a04d7eb 100644 --- a/internal/server/middlewares/auth/middleware.go +++ b/internal/server/middlewares/auth/middleware.go @@ -13,7 +13,6 @@ func New(settings Settings, debugLogger DebugLogger) ( return nil, fmt.Errorf("converting settings to lookup maps: %w", err) } - //nolint:goconst return func(handler http.Handler) http.Handler { return &authHandler{ childHandler: handler, diff --git a/internal/storage/flush.go b/internal/storage/flush.go index 2f0fd4ad..32d0262a 100644 --- a/internal/storage/flush.go +++ b/internal/storage/flush.go @@ -21,12 +21,13 @@ func (s *Storage) FlushToFile(path string) error { // flushToFile flushes the merged servers data to the file // specified by path, as indented JSON. It is not thread-safe. func (s *Storage) flushToFile(path string) error { + const permission = 0644 dirPath := filepath.Dir(path) - if err := os.MkdirAll(dirPath, 0644); err != nil { + if err := os.MkdirAll(dirPath, permission); err != nil { return err } - file, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0644) + file, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, permission) if err != nil { return err } diff --git a/internal/tun/create.go b/internal/tun/create.go index c428534c..809d4bad 100644 --- a/internal/tun/create.go +++ b/internal/tun/create.go @@ -4,6 +4,7 @@ package tun import ( "fmt" + "math" "os" "path/filepath" @@ -11,9 +12,10 @@ import ( ) // Create creates a TUN device at the path specified. -func (t *Tun) Create(path string) error { +func (t *Tun) Create(path string) (err error) { parentDir := filepath.Dir(path) - if err := os.MkdirAll(parentDir, 0751); err != nil { + err = os.MkdirAll(parentDir, 0751) //nolint:mnd + if err != nil { return err } @@ -22,7 +24,10 @@ func (t *Tun) Create(path string) error { minor = 200 ) dev := unix.Mkdev(major, minor) - err := unix.Mknod(path, unix.S_IFCHR, int(dev)) + if dev > math.MaxInt { + panic("dev is too high") + } + err = unix.Mknod(path, unix.S_IFCHR, int(dev)) if err != nil { return fmt.Errorf("creating TUN device file node: %w", err) } diff --git a/internal/version/github.go b/internal/version/github.go index 7d413ef8..a8fce85c 100644 --- a/internal/version/github.go +++ b/internal/version/github.go @@ -22,7 +22,7 @@ type githubCommit struct { Committer struct { Date time.Time `json:"date"` } `json:"committer"` - } + } `json:"commit"` } var errHTTPStatusCode = errors.New("bad response HTTP status code")