You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/docs/CHANGELOG.md
+69-10Lines changed: 69 additions & 10 deletions
Original file line number
Diff line number
Diff line change
@@ -13,32 +13,89 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
13
13
14
14
<!-- This changes the project to: -->
15
15
16
+
## v1.21.0: Minfilia Warde
17
+
18
+
> Please, be at ease. You are among friends here.
19
+
20
+
In this release, Anubis becomes internationalized, gains the ability to use system load as input to issuing challenges,
21
+
22
+
### Big ticket changes
23
+
24
+
The biggest change is that the ["invalid response" after "success" bug](https://github.com/TecharoHQ/anubis/issues/564) is now finally fixed for good by totally rewriting how Anubis' challenge issuance flow works. Instead of generating challenge strings from request metadata (under the assumption that the values being compared against are stable), Anubis now generates random data for each challenge. This data is stored in the active [storage backend](./admin/policies.mdx#storage-backends) for up to 30 minutes. This also fixes [#746](https://github.com/TecharoHQ/anubis/issues/746) and other similar instances of this issue.
25
+
26
+
In order to reduce confusion, the "Success" interstitial that shows up when you pass a proof of work challenge has been removed.
27
+
28
+
#### Storage
29
+
30
+
Anubis now is able to store things persistently [in memory](./admin/policies.mdx#memory), [on the disk](./admin/policies.mdx#bbolt), or [in Valkey](./admin/policies.mdx#valkey) (this includes other compatible software). By default Anubis uses the in-memory backend. If you have an environment with mutable storage (even if it is temporary), be sure to configure the [`bbolt`](./admin/policies.mdx#bbolt) storage backend.
31
+
32
+
Anubis now supports localized responses. Locales can be added in [lib/localization/locales/](https://github.com/TecharoHQ/anubis/tree/main/lib/localization/locales). This release includes support for the following languages:
If facts or local regulations demand, you can set Anubis default language with the `FORCE_LANGUAGE` environment variable:
43
+
44
+
```sh
45
+
FORCE_LANGUAGE=de
46
+
```
47
+
48
+
Anubis can dynamically take action [based on the system load average](./admin/configuration/expressions.mdx#using-the-system-load-average), allowing you to write rules like this:
49
+
50
+
```yaml
51
+
## System load based checks.
52
+
# If the system is under high load for the last minute, add weight.
53
+
- name: high-load-average
54
+
action: WEIGH
55
+
expression: load_1m >= 10.0 # make sure to end the load comparison in a .0
56
+
weight:
57
+
adjust: 20
58
+
59
+
# If it is not for the last 15 minutes, remove weight.
60
+
- name: low-load-average
61
+
action: WEIGH
62
+
expression: load_15m <= 4.0 # make sure to end the load comparison in a .0
63
+
weight:
64
+
adjust: -10
65
+
```
66
+
67
+
Something to keep in mind about system load average is that it is not aware of the number of cores the system has. If you have a 16 core system that has 16 processes running but none of them is hogging the CPU, then you will get a load average below 16. If you are in doubt, make your "high load" metric at least two times the number of CPU cores and your "low load" metric at least half of the number of CPU cores. For example:
68
+
69
+
| Kind | Core count | Load threshold |
70
+
| --------: | :--------- | :------------- |
71
+
| high load | 4 | `8.0` |
72
+
| low load | 4 | `2.0` |
73
+
| high load | 16 | `32.0` |
74
+
| low load | 16 | `8` |
75
+
76
+
Also keep in mind that this does not account for other kinds of latency like I/O latency. A system can have its web applications unresponsive due to high latency from a MySQL server but still have that web application server report a load near or at zero.
77
+
78
+
### Other features and fixes
79
+
80
+
There are a bunch of other assorted features and fixes too:
81
+
16
82
- Add `COOKIE_SECURE` option to set the cookie [Secure flag](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Cookies#block_access_to_your_cookies)
17
83
- Sets cookie defaults to use [SameSite: None](https://web.dev/articles/samesite-cookies-explained)
18
84
- Determine the `BIND_NETWORK`/`--bind-network` value from the bind address ([#677](https://github.com/TecharoHQ/anubis/issues/677)).
19
-
- Implement localization system. Find locale files in lib/localization/locales/.
20
85
- Implement a [development container](https://containers.dev/) manifest to make contributions easier.
- Add option for custom cookie prefix ([#732](https://github.com/TecharoHQ/anubis/pull/732))
23
-
- Add translation for German language ([#741](https://github.com/TecharoHQ/anubis/pull/741))
24
-
- Remove the "Success" interstitial after a proof of work challenge is concluded.
25
-
- Anubis now has the concept of [storage backends](./admin/policies.mdx#storage-backends). These allow you to change how Anubis stores temporary data (in memory, on the disk, or in Valkey). If you run Anubis in an environment where you have a low amount of memory available for Anubis (eg: less than 64 megabytes), be sure to configure the [`bbolt`](./admin/policies.mdx#bbolt) storage backend.
26
-
- The challenge issuance and validation process has been rewritten from scratch. Instead of generating challenge strings from request metadata (under the assumption that the values being compared against are stable), Anubis now generates random data for each challenge. This data is stored in the active [storage backend](./admin/policies.mdx#storage-backends) for up to 30 minutes. Fixes [#564](https://github.com/TecharoHQ/anubis/issues/564), [#746](https://github.com/TecharoHQ/anubis/issues/746), and other similar instances of this issue.
27
88
- Make the [Open Graph](./admin/configuration/open-graph.mdx) subsystem and DNSBL subsystem use [storage backends](./admin/policies.mdx#storage-backends) instead of storing everything in memory by default.
28
-
- Add option for forcing a specific language ([#742](https://github.com/TecharoHQ/anubis/pull/742))
29
-
- Add translation for Turkish language ([#751](https://github.com/TecharoHQ/anubis/pull/751))
30
89
- Allow [Common Crawl](https://commoncrawl.org/) by default so scrapers have less incentive to scrape
31
90
- The [bbolt storage backend](./admin/policies.mdx#bbolt) now runs its cleanup every hour instead of every five minutes.
32
-
- Added the ability for Anubis to dynamically take action [based on the system load average](./admin/configuration/expressions.mdx#using-the-system-load-average).
33
-
- Add translation for Traditional Chinese ([#759](https://github.com/TecharoHQ/anubis/pull/759))
34
91
35
92
### Potentially breaking changes
36
93
37
94
The following potentially breaking change applies to native installs with systemd only:
38
95
39
96
Each instance of systemd service template now has a unique `RuntimeDirectory`, as opposed to each instance of the service sharing a `RuntimeDirectory`. This change was made to avoid [the `RuntimeDirectory` getting nuked any time one of the Anubis instances restarts](https://github.com/TecharoHQ/anubis/issues/748).
40
97
41
-
If you configured Anubis' unix sockets to listen on `/run/anubis/foo.sock` for instance `anubis@foo`, you will need to configure Anubis to listen on `/run/anubis/foo/sock` and additionally configure your HTTP load balancer as appropriate.
98
+
If you configured Anubis' unix sockets to listen on `/run/anubis/foo.sock` for instance `anubis@foo`, you will need to configure Anubis to listen on `/run/anubis/foo/foo.sock` and additionally configure your HTTP load balancer as appropriate.
42
99
43
100
If you need the legacy behaviour, install this [systemd unit dropin](https://www.flatcar.org/docs/latest/setup/systemd/drop-in-units/):
44
101
@@ -48,6 +105,8 @@ If you need the legacy behaviour, install this [systemd unit dropin](https://www
48
105
RuntimeDirectory=anubis
49
106
```
50
107
108
+
Just keep in mind that this will cause problems when Anubis restarts.
0 commit comments