diff --git a/lib/anubis.go b/lib/anubis.go index 499747a..bd4038f 100644 --- a/lib/anubis.go +++ b/lib/anubis.go @@ -288,15 +288,15 @@ func (s *Server) MakeChallenge(w http.ResponseWriter, r *http.Request) { return } lg = lg.With("check_result", cr) - challenge := s.challengeFor(r, rule.Challenge.Difficulty) + chal := s.challengeFor(r, rule.Challenge.Difficulty) - s.SetCookie(w, anubis.TestCookieName, challenge, "/") + s.SetCookie(w, anubis.TestCookieName, chal, "/") err = encoder.Encode(struct { Rules *config.ChallengeRules `json:"rules"` Challenge string `json:"challenge"` }{ - Challenge: challenge, + Challenge: chal, Rules: rule.Challenge, }) if err != nil { @@ -304,7 +304,7 @@ func (s *Server) MakeChallenge(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusInternalServerError) return } - lg.Debug("made challenge", "challenge", challenge, "rules", rule.Challenge, "cr", cr) + lg.Debug("made challenge", "challenge", chal, "rules", rule.Challenge, "cr", cr) challengesIssued.WithLabelValues("api").Inc() } @@ -317,7 +317,7 @@ func (s *Server) PassChallenge(w http.ResponseWriter, r *http.Request) { cookiePath = strings.TrimSuffix(anubis.BasePrefix, "/") + "/" } - if _, err := r.Cookie(anubis.TestCookieName); err == http.ErrNoCookie { + if _, err := r.Cookie(anubis.TestCookieName); errors.Is(err, http.ErrNoCookie) { s.ClearCookie(w, s.cookieName, cookiePath) s.ClearCookie(w, anubis.TestCookieName, "/") lg.Warn("user has cookies disabled, this is not an anubis bug") @@ -365,7 +365,7 @@ func (s *Server) PassChallenge(w http.ResponseWriter, r *http.Request) { challengeStr := s.challengeFor(r, rule.Challenge.Difficulty) if err := impl.Validate(r, lg, rule, challengeStr); err != nil { - failedValidations.WithLabelValues(string(rule.Challenge.Algorithm)).Inc() + failedValidations.WithLabelValues(rule.Challenge.Algorithm).Inc() var cerr *challenge.Error s.ClearCookie(w, s.cookieName, cookiePath) lg.Debug("challenge validate call failed", "err", err) diff --git a/lib/config.go b/lib/config.go index f1f8d4e..06d613c 100644 --- a/lib/config.go +++ b/lib/config.go @@ -67,6 +67,9 @@ func LoadPoliciesOrDefault(fname string, defaultDifficulty int) (*policy.ParsedC }(fin) anubisPolicy, err := policy.ParseConfig(fin, fname, defaultDifficulty) + if err != nil { + return nil, fmt.Errorf("can't parse policy file %s: %w", fname, err) + } var validationErrs []error for _, b := range anubisPolicy.Bots { @@ -154,7 +157,7 @@ func New(opts Options) (*Server, error) { // make-challenge is only used in tests. Only enable while version is devel registerWithPrefix(anubis.APIPrefix+"make-challenge", http.HandlerFunc(result.MakeChallenge), "POST") } - + for _, implKind := range challenge.Methods() { impl, _ := challenge.Get(implKind) impl.Setup(mux) diff --git a/test/go.mod b/test/go.mod index 588a648..45f5e36 100644 --- a/test/go.mod +++ b/test/go.mod @@ -12,7 +12,7 @@ require ( require ( cel.dev/expr v0.24.0 // indirect - github.com/a-h/templ v0.3.865 // indirect + github.com/a-h/templ v0.3.898 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect @@ -32,9 +32,9 @@ require ( github.com/stoewer/go-strcase v1.3.0 // indirect github.com/yl2chen/cidranger v1.0.2 // indirect golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6 // indirect - golang.org/x/net v0.40.0 // indirect + golang.org/x/net v0.41.0 // indirect golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.25.0 // indirect + golang.org/x/text v0.26.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect google.golang.org/protobuf v1.36.6 // indirect diff --git a/test/go.sum b/test/go.sum index afdbd39..8e057af 100644 --- a/test/go.sum +++ b/test/go.sum @@ -2,6 +2,7 @@ cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= github.com/a-h/templ v0.3.865 h1:nYn5EWm9EiXaDgWcMQaKiKvrydqgxDUtT1+4zU2C43A= github.com/a-h/templ v0.3.865/go.mod h1:oLBbZVQ6//Q6zpvSMPTuBK0F3qOtBdFBcGRspcT+VNQ= +github.com/a-h/templ v0.3.898/go.mod h1:oLBbZVQ6//Q6zpvSMPTuBK0F3qOtBdFBcGRspcT+VNQ= github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ= github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -73,10 +74,12 @@ golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6 h1:y5zboxd6LQAqYIhHnB48p0ByQ golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6/go.mod h1:U6Lno4MTRCDY+Ba7aCcauB9T60gsv5s4ralQzP72ZoQ= golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0= google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto= google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34=