Commit graph

15 commits

Author SHA1 Message Date
Remilia Da Costa Faro
d6d879133e
Allow filtering by remote addresses (#52)
* Added the possibility to define rules for remote addresses

* Added change in changelog

* Added check for X-Real-Ip and X-Forwarded-For when checking for remote address filtering

* cmd/anubis: refine IP filtering logic

* Optimize the configuration so that the IP trie is created once at
  application start instead of dynamically being created every request.
* Document the changes in the changelog and docs site.
* Allow pure IP range filtering.
* Allow user agent based IP range filtering.
* Allow path based IP range filtering.
* Create --debug-x-real-ip-default flag for testing Anubis locally
  without a HTTP load balancer.

---------

Co-authored-by: Xe Iaso <me@xeiaso.net>
2025-03-21 15:39:34 -04:00
Xe Iaso
e7b9b17b92
cmd/anubis: explain why users are seeing Anubis (#55)
* cmd/anubis: explain why users are seeing Anubis

Closes #25
Closes #38

Also includes the beginnings of a "user guides" section in the docs for
user-facing documentation.

* Update docs/docs/user/known-broken-extensions.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Xe Iaso <me@xeiaso.net>

* cmd/anubis: fix indentation in index.templ

Signed-off-by: Xe Iaso <me@xeiaso.net>

---------

Signed-off-by: Xe Iaso <me@xeiaso.net>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-03-21 14:21:59 -04:00
Xe Iaso
d3e509517c
cmd/anubis: configurable difficulty per-bot rule (#53)
Closes #30

Introduces the "challenge" field in bot rule definitions:

```json
{
  "name": "generic-bot-catchall",
  "user_agent_regex": "(?i:bot|crawler)",
  "action": "CHALLENGE",
  "challenge": {
    "difficulty": 16,
    "report_as": 4,
    "algorithm": "slow"
  }
}
```

This makes Anubis return a challenge page for every user agent with
"bot" or "crawler" in it (case-insensitively) with difficulty 16 using
the old "slow" algorithm but reporting in the client as difficulty 4.

This is useful when you want to make certain clients in particular
suffer.

Additional validation and testing logic has been added to make sure
that users do not define "impossible" challenge settings.

If no algorithm is specified, Anubis defaults to the "fast" algorithm.

Signed-off-by: Xe Iaso <me@xeiaso.net>
2025-03-21 13:48:00 -04:00
makeworld
90049001e9
Add kagibot (#44)
* Add kagibot

Signed-off-by: makeworld <25111343+makew0rld@users.noreply.github.com>

* Update CHANGELOG.md

Signed-off-by: makeworld <25111343+makew0rld@users.noreply.github.com>

---------

Signed-off-by: makeworld <25111343+makew0rld@users.noreply.github.com>
Signed-off-by: Xe Iaso <me@xeiaso.net>
Co-authored-by: Xe Iaso <me@xeiaso.net>
2025-03-21 11:16:19 -04:00
soopyc
1c00431098
general unix domain sockets support (#45)
* feat: allow binding to unix domain sockets

this is useful when the user does not want to expose more tcp ports than
needed. also simplifes configuration in some situation, like with nixos
modules as the socket paths can be automatically configured.

docs updated with additional configuration flags.

Signed-off-by: Cassie Cheung <me@soopy.moe>

* feat: graceful shutdown and cleanup on signal

this is needed to clean up left-over unix sockets, else on the next boot
listener panics with `address already in use`.

Co-authored-by: cat <cat@gensokyo.uk>
Signed-off-by: Cassie Cheung <me@soopy.moe>

* feat: support unix socket upstream targets

adds support for proxying unix socket upstreams, essentially allowing
anubis to run without listening on tcp sockets at all*.

*for metrics, neither prometheus and victoriametrics supports scraping
from unix sockets. if metrics are desired, tcp sockets are still needed.

Co-authored-by: cat <cat@gensokyo.uk>
Signed-off-by: Cassie Cheung <me@soopy.moe>

* docs: add changelog entry

---------

Signed-off-by: Cassie Cheung <me@soopy.moe>
Co-authored-by: cat <cat@gensokyo.uk>
2025-03-21 10:58:05 -04:00
Callum Thomson
f1220ecc57
Fix when hardwareConcurrency is undefined (#42) 2025-03-21 08:51:19 -04:00
Xe Iaso
94f43c7200
docs/design: add note on why anubis uses proof of work
Signed-off-by: Xe Iaso <me@xeiaso.net>
2025-03-20 17:53:52 -04:00
Dennis ten Hoove
f41b21b3cf
Explicitely define image sources in Dockerfile (#21)
* Explicitely define image sources

Explicitely refering to docker.io will make the build succeed on software such as podman which does not default to docker.io as the standard image source

* Dockerfiles: use the full legal docker.io/library name just in case

Signed-off-by: Xe Iaso <me@xeiaso.net>

* update CHANGELOG

Signed-off-by: Xe Iaso <me@xeiaso.net>

---------

Signed-off-by: Xe Iaso <me@xeiaso.net>
Co-authored-by: Xe Iaso <me@xeiaso.net>
2025-03-20 17:28:30 -04:00
Dennis ten Hoove
d1512a1f79
Ensure content flows and stays centered on small screens (#27)
* Ensure content flows and stays centered on small screens

Fixes #18

* Do not overflow image, instead resize with page

* update CHANGELOG

Signed-off-by: Xe Iaso <me@xeiaso.net>

---------

Signed-off-by: Xe Iaso <me@xeiaso.net>
Co-authored-by: Xe Iaso <me@xeiaso.net>
2025-03-20 17:19:45 -04:00
Xe Iaso
c88775bb8a
cmd/anubis: lower default difficulty to 4
Signed-off-by: Xe Iaso <me@xeiaso.net>
2025-03-20 16:58:49 -04:00
Donatas
eeaed6a317
fix: no duplicate work when exceeding hardcoded int (#36)
* fix: no duplicate work when exceeding that 1xxx number

* run go generate and update CHANGELOG

Signed-off-by: Xe Iaso <me@xeiaso.net>

---------

Signed-off-by: Xe Iaso <me@xeiaso.net>
Co-authored-by: Xe Iaso <me@xeiaso.net>
2025-03-20 16:20:53 -04:00
Federico Gaggero
3e9a93f629
Fix: Removed several visible AI artifacts (e.g., 6 fingers) (#37)
* Fix: Removed several visible AI artifacts (e.g., 6 fingers)

* Add an entry to docs/docs/CHANGELOG.md
2025-03-20 16:09:49 -04:00
Xe Iaso
5258492101
oops
Signed-off-by: Xe Iaso <me@xeiaso.net>
2025-03-20 15:38:41 -04:00
Xe Iaso
d82c12de28
docs: add funding page
Signed-off-by: Xe Iaso <me@xeiaso.net>
2025-03-20 15:36:34 -04:00
Xe Iaso
c47347ff76
add docs site based on docusarus (#35)
* add docs site based on docusarus

Closes #2

Signed-off-by: Xe Iaso <me@xeiaso.net>

* docs: deploy to aeacus

Signed-off-by: Xe Iaso <me@xeiaso.net>

* ready for merge

Signed-off-by: Xe Iaso <me@xeiaso.net>

* docs: fix anubis port

Signed-off-by: Xe Iaso <me@xeiaso.net>

---------

Signed-off-by: Xe Iaso <me@xeiaso.net>
2025-03-20 15:06:58 -04:00