gotosocial/internal/middleware
kim 326e04283a [feature] update proof-of-work to allow setting required rounds (#4186)
# Description

This updates our proof-of-work middleware, NoLLaMas, to work on a more easily configurable algorithm (thank you f0x for bringing this to my attention!). Instead of requiring that a solution with pre-determined number of '0' chars be found, it now pre-computes a result with a pre-determined nonce value that it expects the client to iterate up-to. (though with some level of jitter applied, to prevent it being too-easily gamed). This allows the user to configure roughly how many hash-encode rounds they want their clients to have to complete.

## Checklist

- [x] I/we have read the [GoToSocial contribution guidelines](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/CONTRIBUTING.md).
- [x] I/we have discussed the proposed changes already, either in an issue on the repository, or in the Matrix chat.
- [x] I/we have not leveraged AI to create the proposed changes.
- [x] I/we have performed a self-review of added code.
- [x] I/we have written code that is legible and maintainable by others.
- [x] I/we have commented the added code, particularly in hard-to-understand areas.
- [x] I/we have made any necessary changes to documentation.
- [ ] I/we have added tests that cover new code.
- [x] I/we have run tests and they pass locally with the changes.
- [x] I/we have run `go fmt ./...` and `golangci-lint run`.

Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4186
Co-authored-by: kim <grufwub@gmail.com>
Co-committed-by: kim <grufwub@gmail.com>
2025-05-26 11:57:50 +02:00
..
cachecontrol.go [bugfix] Set Vary header correctly on cache-control (#1988) 2023-07-13 21:27:25 +02:00
contentsecuritypolicy.go [feature] Add ListenBrainz functionality on the web view (#4184) 2025-05-22 12:34:39 +02:00
contentsecuritypolicy_test.go [feature] Add ListenBrainz functionality on the web view (#4184) 2025-05-22 12:34:39 +02:00
cors.go [chore] Rewrite all remaining Github links 2025-04-27 13:40:22 +02:00
extraheaders.go [feature] Use X-Robots-Tag headers to instruct scrapers/crawlers (#3737) 2025-02-05 12:47:13 +01:00
gzip.go [chore] Improve copyright header handling (#1608) 2023-03-12 16:00:57 +01:00
headerfilter.go [feature] proof of work scraper deterrence (#4043) 2025-04-28 20:12:27 +00:00
headerfilter_test.go [chore] Upgrade to Go 1.24 (#4187) 2025-05-22 12:26:11 +02:00
logger.go [bugfix] ensure timeline limit query is respected (#4141) 2025-05-06 13:30:23 +00:00
nollamas.go [feature] update proof-of-work to allow setting required rounds (#4186) 2025-05-26 11:57:50 +02:00
nollamas_test.go [feature] update proof-of-work to allow setting required rounds (#4186) 2025-05-26 11:57:50 +02:00
ratelimit.go [feature] Move to code.superseriousbusiness.org 2025-04-26 15:38:43 +02:00
ratelimit_test.go [feature] Move to code.superseriousbusiness.org 2025-04-26 15:38:43 +02:00
requestid.go [feature] Move to code.superseriousbusiness.org 2025-04-26 15:38:43 +02:00
robots.go [feature] Move to code.superseriousbusiness.org 2025-04-26 15:38:43 +02:00
session.go [chore] tweak NoLLaMas proof-of-work algorithm (#4090) 2025-04-29 13:57:26 +00:00
session_test.go [feature] Move to code.superseriousbusiness.org 2025-04-26 15:38:43 +02:00
signaturecheck.go [feature] Move to code.superseriousbusiness.org 2025-04-26 15:38:43 +02:00
throttling.go [feature] Move to code.superseriousbusiness.org 2025-04-26 15:38:43 +02:00
throttling_test.go [feature] Move to code.superseriousbusiness.org 2025-04-26 15:38:43 +02:00
tokencheck.go [feature] Move to code.superseriousbusiness.org 2025-04-26 15:38:43 +02:00
useragent.go [feature] Move to code.superseriousbusiness.org 2025-04-26 15:38:43 +02:00
util.go [feature] Move to code.superseriousbusiness.org 2025-04-26 15:38:43 +02:00