diff --git a/decaymap/decaymap.go b/decaymap/decaymap.go index edcbd1a..7498bb5 100644 --- a/decaymap/decaymap.go +++ b/decaymap/decaymap.go @@ -64,7 +64,7 @@ func (m *Impl[K, V]) Get(key K) (V, bool) { m.lock.Lock() // Since previously reading m.data[key], the value may have been updated. // Delete the entry only if the expiry time is still the same. - if m.data[key].expiry == value.expiry { + if m.data[key].expiry.Equal(value.expiry) { delete(m.data, key) } m.lock.Unlock() diff --git a/docs/docs/CHANGELOG.md b/docs/docs/CHANGELOG.md index 10ddf29..86e3c78 100644 --- a/docs/docs/CHANGELOG.md +++ b/docs/docs/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Refactor & Split up Anubis into cmd and lib.go - Fixed bot check to only apply if address range matches - Fix default difficulty setting that was broken in a refactor +- Linting fixes ## v1.14.2 diff --git a/internal/test/playwright_test.go b/internal/test/playwright_test.go index b8b6cac..e41a10a 100644 --- a/internal/test/playwright_test.go +++ b/internal/test/playwright_test.go @@ -153,7 +153,7 @@ func startPlaywright(t *testing.T) { daemonize(t, fmt.Sprintf("npx --yes playwright@%s run-server --port %d", playwrightVersion, *playwrightPort)) - for true { + for { if _, err := http.Get(fmt.Sprintf("http://localhost:%d", *playwrightPort)); err != nil { time.Sleep(500 * time.Millisecond) continue @@ -355,7 +355,7 @@ func pwTimeout(tc testCase, deadline time.Time) *float64 { max = *playwrightMaxHardTime } - d := deadline.Sub(time.Now()) + d := time.Until(deadline) if d <= 0 || d > max { return playwright.Float(float64(max.Milliseconds())) } diff --git a/lib/anubis.go b/lib/anubis.go index 43993bb..d56c608 100644 --- a/lib/anubis.go +++ b/lib/anubis.go @@ -98,10 +98,6 @@ func New(opts Options) (*Server, error) { return nil, fmt.Errorf("failed to generate ed25519 key: %w", err) } - if err != nil { - return nil, err // parseConfig sets a fancy error for us - } - result := &Server{ next: opts.Next, priv: priv, diff --git a/lib/policy/config/config.go b/lib/policy/config/config.go index 67eddbf..b23af70 100644 --- a/lib/policy/config/config.go +++ b/lib/policy/config/config.go @@ -51,7 +51,7 @@ func (b BotConfig) Valid() error { errs = append(errs, ErrBotMustHaveName) } - if b.UserAgentRegex == nil && b.PathRegex == nil && (b.RemoteAddr == nil || len(b.RemoteAddr) == 0) { + if b.UserAgentRegex == nil && b.PathRegex == nil && len(b.RemoteAddr) == 0 { errs = append(errs, ErrBotMustHaveUserAgentOrPath) } @@ -71,7 +71,7 @@ func (b BotConfig) Valid() error { } } - if b.RemoteAddr != nil && len(b.RemoteAddr) > 0 { + if len(b.RemoteAddr) > 0 { for _, cidr := range b.RemoteAddr { if _, _, err := net.ParseCIDR(cidr); err != nil { errs = append(errs, ErrInvalidCIDR, err) diff --git a/lib/policy/policy.go b/lib/policy/policy.go index 51b23ff..3f80fa3 100644 --- a/lib/policy/policy.go +++ b/lib/policy/policy.go @@ -46,24 +46,23 @@ func ParseConfig(fin io.Reader, fname string, defaultDifficulty int) (*ParsedCon return nil, err } - var err error + var validationErrs []error result := NewParsedConfig(c) result.DefaultDifficulty = defaultDifficulty for _, b := range c.Bots { if berr := b.Valid(); berr != nil { - err = errors.Join(err, berr) + validationErrs = append(validationErrs, berr) continue } - var botParseErr error parsedBot := Bot{ Name: b.Name, Action: b.Action, } - if b.RemoteAddr != nil && len(b.RemoteAddr) > 0 { + if len(b.RemoteAddr) > 0 { parsedBot.Ranger = cidranger.NewPCTrieRanger() for _, cidr := range b.RemoteAddr { @@ -79,7 +78,7 @@ func ParseConfig(fin io.Reader, fname string, defaultDifficulty int) (*ParsedCon if b.UserAgentRegex != nil { userAgent, err := regexp.Compile(*b.UserAgentRegex) if err != nil { - botParseErr = errors.Join(botParseErr, fmt.Errorf("while compiling user agent regexp: %w", err)) + validationErrs = append(validationErrs, fmt.Errorf("while compiling user agent regexp: %w", err)) continue } else { parsedBot.UserAgent = userAgent @@ -89,7 +88,7 @@ func ParseConfig(fin io.Reader, fname string, defaultDifficulty int) (*ParsedCon if b.PathRegex != nil { path, err := regexp.Compile(*b.PathRegex) if err != nil { - botParseErr = errors.Join(botParseErr, fmt.Errorf("while compiling path regexp: %w", err)) + validationErrs = append(validationErrs, fmt.Errorf("while compiling path regexp: %w", err)) continue } else { parsedBot.Path = path @@ -112,8 +111,8 @@ func ParseConfig(fin io.Reader, fname string, defaultDifficulty int) (*ParsedCon result.Bots = append(result.Bots, parsedBot) } - if err != nil { - return nil, fmt.Errorf("errors validating policy config JSON %s: %w", fname, err) + if len(validationErrs) > 0 { + return nil, fmt.Errorf("errors validating policy config JSON %s: %w", fname, errors.Join(validationErrs...)) } result.DNSBL = c.DNSBL