Skip to content

Conversation

@BrewTestBot
Copy link
Member

Created by brew bump


Created with brew bump-formula-pr.

release notes
Sorry this took so long, work has been wiping me out. If you know of any companies that are hiring for someone of my skillset, please let me know.
  • Add default tencent cloud DENY rule.
  • Added (data)/meta/default-config.yaml for importing the entire default configuration at once.
  • Add -custom-real-ip-header flag to get the original request IP from a different header than x-real-ip.
  • Add contentLength variable to bot expressions.
  • Add COOKIE_SAME_SITE_MODE to force anubis cookies SameSite value, and downgrade automatically from None to Lax if cookie is insecure.
  • Fix lock convoy problem in decaymap (#1103).
  • Fix lock convoy problem in bbolt by implementing the actor pattern (#1103).
  • Remove bbolt actorify implementation due to causing production issues.
  • Document missing environment variables in installation guide: SLOG_LEVEL, COOKIE_PREFIX, FORCED_LANGUAGE, and TARGET_DISABLE_KEEPALIVE (#1086).
  • Add validation warning when persistent storage is used without setting signing keys.
  • Fixed robots2policy to properly group consecutive user agents into any: instead of only processing the last one (#925).
  • Make the fast algorithm prefer purejs when running in an insecure context.
  • Add the s3api storage backend to allow Anubis to use S3 API compatible object storage as its storage backend.
  • Fix a "stutter" in the cookie name prefix so the auth cookie is named techaro.lol-anubis-auth instead of techaro.lol-anubis-auth-auth.
  • Make cmd/containerbuild support commas for separating elements of the --docker-tags argument as well as newlines.
  • Add the DIFFICULTY_IN_JWT option, which allows one to add the difficulty field in the JWT claims which indicates the difficulty of the token (#1063).
  • Ported the client-side JS to TypeScript to avoid egregious errors in the future.
  • Fixes concurrency problems with very old browsers (#1082).
  • Randomly use the Refresh header instead of the meta refresh tag in the metarefresh challenge.
  • Update OpenRC service to truncate the runtime directory before starting Anubis.
  • Make the git client profile more strictly match how the git client behaves.
  • Make the default configuration reward users using normal browsers.
  • Allow multiple consecutive slashes in a row in application paths (#754).
  • Add option to set targetSNI to special keyword 'auto' to indicate that it should be automatically set to the request Host name (424).
  • The Preact challenge has been removed from the default configuration. It will be deprecated in the future.
  • An open redirect when in subrequest mode has been fixed.

Potentially breaking changes

Multiple checks at once has and-like semantics instead of or-like semantics

Anubis lets you stack multiple checks at once with blocks like this:

name: allow-prometheus
action: ALLOW
user_agent_regex: ^prometheus-probe$
remote_addresses:
  - 192.168.2.0/24

Previously, this only returned ALLOW if any one of the conditions matched. This behaviour has changed to only return ALLOW if all of the conditions match. I expect this to have some issues with user configs, however this fix is grave enough that it's worth the risk of breaking configs. If this bites you, please let me know so we can make an escape hatch.

Better error messages

In order to make it easier for legitimate clients to debug issues with their browser configuration and Anubis, Anubis will emit internal error detail in base 64 so that administrators can chase down issues. Future versions of this may also include a variant that encrypts the error detail messages.

Bug Fixes

Sometimes the enhanced temporal assurance in #1038 and #1068 could backfire because Chromium and its ilk randomize the amount of time they wait in order to avoid a timing side channel attack. This has been fixed by both increasing the amount of time a client has to wait for the metarefresh and preact challenges as well as making the server side logic more permissive.

What's Changed

New Contributors

Full Changelog: TecharoHQ/anubis@v1.22.0...v1.23.0

View the full release notes at https://github.com/TecharoHQ/anubis/releases/tag/v1.23.0.


@github-actions github-actions bot added go Go use is a significant feature of the PR or issue nodejs Node or npm use is a significant feature of the PR or issue bump-formula-pr PR was created using `brew bump-formula-pr` labels Oct 30, 2025
@chenrui333
Copy link
Member

  ./web/build.sh
  ./web/build.sh: line 42: shopt: globstar: invalid shell option name
  make: *** [assets] Error 1

@chenrui333 chenrui333 added the build failure CI fails while building the software label Oct 30, 2025
@alebcay
Copy link
Member

alebcay commented Nov 1, 2025

==> curl --silent http://localhost:57321/robots.txt
Error: anubis: failed
An exception occurred within a child process:
  Minitest::Assertion: Expected "Homebrew\n" to include "User-agent: *\nDisallow: /".
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.4.0/gems/minitest-5.26.0/lib/minitest/assertions.rb:176:in 'Minitest::Assertions#assert'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.4.0/gems/minitest-5.26.0/lib/minitest/assertions.rb:259:in 'Minitest::Assertions#assert_includes'
/opt/homebrew/Library/Taps/homebrew/homebrew-core/Formula/a/anubis.rb:53:in 'block in <class:Anubis>'
/opt/homebrew/Library/Homebrew/formula.rb:2981:in 'block (3 levels) in Formula#run_test'
/opt/homebrew/Library/Homebrew/extend/kernel.rb:303:in 'Kernel#with_env'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.4.0/gems/sorbet-runtime-0.6.12689/lib/types/private/methods/call_validation.rb:282:in 'UnboundMethod#bind_call'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.4.0/gems/sorbet-runtime-0.6.12689/lib/types/private/methods/call_validation.rb:282:in 'T::Private::Methods::CallValidation.validate_call'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.4.0/gems/sorbet-runtime-0.6.12689/lib/types/private/methods/_methods.rb:259:in 'block in Kernel#_on_method_added'
/opt/homebrew/Library/Homebrew/formula.rb:2980:in 'block (2 levels) in Formula#run_test'
/opt/homebrew/Library/Homebrew/formula.rb:1309:in 'Formula#with_logging'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.4.0/gems/sorbet-runtime-0.6.12689/lib/types/private/methods/call_validation.rb:282:in 'UnboundMethod#bind_call'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.4.0/gems/sorbet-runtime-0.6.12689/lib/types/private/methods/call_validation.rb:282:in 'T::Private::Methods::CallValidation.validate_call'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.4.0/gems/sorbet-runtime-0.6.12689/lib/types/private/methods/_methods.rb:259:in 'block in Formula#_on_method_added'
/opt/homebrew/Library/Homebrew/formula.rb:2979:in 'block in Formula#run_test'
/opt/homebrew/Library/Homebrew/mktemp.rb:92:in 'block in Mktemp#run'
/opt/homebrew/Library/Homebrew/mktemp.rb:92:in 'Dir.chdir'
/opt/homebrew/Library/Homebrew/mktemp.rb:92:in 'Mktemp#run'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.4.0/gems/sorbet-runtime-0.6.12689/lib/types/private/methods/call_validation.rb:282:in 'UnboundMethod#bind_call'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.4.0/gems/sorbet-runtime-0.6.12689/lib/types/private/methods/call_validation.rb:282:in 'T::Private::Methods::CallValidation.validate_call'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.4.0/gems/sorbet-runtime-0.6.12689/lib/types/private/methods/_methods.rb:259:in 'block in Mktemp#_on_method_added'
/opt/homebrew/Library/Homebrew/formula.rb:3318:in 'Formula#mktemp'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.4.0/gems/sorbet-runtime-0.6.12689/lib/types/private/methods/call_validation.rb:282:in 'UnboundMethod#bind_call'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.4.0/gems/sorbet-runtime-0.6.12689/lib/types/private/methods/call_validation.rb:282:in 'T::Private::Methods::CallValidation.validate_call'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.4.0/gems/sorbet-runtime-0.6.12689/lib/types/private/methods/_methods.rb:259:in 'block in Formula#_on_method_added'
/opt/homebrew/Library/Homebrew/formula.rb:2973:in 'Formula#run_test'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.4.0/gems/sorbet-runtime-0.6.12689/lib/types/private/methods/call_validation.rb:282:in 'UnboundMethod#bind_call'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.4.0/gems/sorbet-runtime-0.6.12689/lib/types/private/methods/call_validation.rb:282:in 'T::Private::Methods::CallValidation.validate_call'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.4.0/gems/sorbet-runtime-0.6.12689/lib/types/private/methods/_methods.rb:259:in 'block in Formula#_on_method_added'
/opt/homebrew/Library/Homebrew/test.rb:53:in 'block in <main>'
/opt/homebrew/Library/Homebrew/vendor/portable-ruby/3.4.5/lib/ruby/3.4.0/timeout.rb:185:in 'block in Timeout.timeout'
/opt/homebrew/Library/Homebrew/vendor/portable-ruby/3.4.5/lib/ruby/3.4.0/timeout.rb:38:in 'Timeout::Error.handle_timeout'
/opt/homebrew/Library/Homebrew/vendor/portable-ruby/3.4.5/lib/ruby/3.4.0/timeout.rb:194:in 'Timeout.timeout'
/opt/homebrew/Library/Homebrew/test.rb:59:in '<main>'

@chenrui333 chenrui333 added the help wanted Task(s) needing PRs from the community or maintainers label Nov 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

build failure CI fails while building the software bump-formula-pr PR was created using `brew bump-formula-pr` go Go use is a significant feature of the PR or issue help wanted Task(s) needing PRs from the community or maintainers nodejs Node or npm use is a significant feature of the PR or issue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants