Skip to content

Commit ea2e76c

Browse files
committed
chore: tag version 1.21.0-pre1
Signed-off-by: Xe Iaso <[email protected]>
1 parent 4ea0add commit ea2e76c

File tree

4 files changed

+73
-14
lines changed

4 files changed

+73
-14
lines changed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.20.0
1+
1.21.0-pre1

docs/docs/CHANGELOG.md

Lines changed: 69 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,32 +13,89 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1313

1414
<!-- This changes the project to: -->
1515

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:
33+
34+
- [Brazilian Portugese](https://github.com/TecharoHQ/anubis/pull/726)
35+
- [Chinese (Traditional)](https://github.com/TecharoHQ/anubis/pull/759)
36+
- English
37+
- [French](https://github.com/TecharoHQ/anubis/pull/716)
38+
- [German](https://github.com/TecharoHQ/anubis/pull/741)
39+
- [Spanish](https://github.com/TecharoHQ/anubis/pull/716)
40+
- [Turkish](https://github.com/TecharoHQ/anubis/pull/751)
41+
42+
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+
1682
- 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)
1783
- Sets cookie defaults to use [SameSite: None](https://web.dev/articles/samesite-cookies-explained)
1884
- 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/.
2085
- Implement a [development container](https://containers.dev/) manifest to make contributions easier.
2186
- Fix dynamic cookie domains functionality ([#731](https://github.com/TecharoHQ/anubis/pull/731))
2287
- 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.
2788
- 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))
3089
- Allow [Common Crawl](https://commoncrawl.org/) by default so scrapers have less incentive to scrape
3190
- 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))
3491

3592
### Potentially breaking changes
3693

3794
The following potentially breaking change applies to native installs with systemd only:
3895

3996
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).
4097

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.
4299

43100
If you need the legacy behaviour, install this [systemd unit dropin](https://www.flatcar.org/docs/latest/setup/systemd/drop-in-units/):
44101

@@ -48,6 +105,8 @@ If you need the legacy behaviour, install this [systemd unit dropin](https://www
48105
RuntimeDirectory=anubis
49106
```
50107

108+
Just keep in mind that this will cause problems when Anubis restarts.
109+
51110
## v1.20.0: Thancred Waters
52111

53112
The big ticket items are as follows:

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@techaro/anubis",
3-
"version": "1.20.0",
3+
"version": "1.21.0-pre1",
44
"description": "",
55
"main": "index.js",
66
"scripts": {

0 commit comments

Comments
 (0)