mirror of
https://github.com/TecharoHQ/anubis.git
synced 2025-08-03 01:38:14 -04:00

* feat(lib): ensure that clients store cookies If a client is misconfigured and does not store cookies, then they can get into a proof of work death spiral with Anubis. This fixes the problem by setting a test cookie whenever the user gets hit with a challenge page. If the test cookie is not there at challenge pass time, then they are blocked. Administrators will also get a log message explaining that the user intentionally broke cookie support and that this behavior is not an Anubis bug. Additionally, this ensures that clients being shown a challenge support gzip-compressed responses by showing the challenge page at gzip level 1. This level is intentionally chosen in order to minimize system impacts. The ClearCookie function is made more generic to account for cookie names as an argument. A correlating SetCookie function was also added to make it easier to set cookies. * chore(lib): clean up test code Signed-off-by: Xe Iaso <me@xeiaso.net> --------- Signed-off-by: Xe Iaso <me@xeiaso.net>
36 lines
1.3 KiB
Go
36 lines
1.3 KiB
Go
// Package anubis contains the version number of Anubis.
|
|
package anubis
|
|
|
|
import "time"
|
|
|
|
// Version is the current version of Anubis.
|
|
//
|
|
// This variable is set at build time using the -X linker flag. If not set,
|
|
// it defaults to "devel".
|
|
var Version = "devel"
|
|
|
|
// CookieName is the name of the cookie that Anubis uses in order to validate
|
|
// access.
|
|
const CookieName = "techaro.lol-anubis-auth"
|
|
|
|
// WithDomainCookieName is the name that is prepended to the per-domain cookie used when COOKIE_DOMAIN is set.
|
|
const WithDomainCookieName = "techaro.lol-anubis-auth-for-"
|
|
|
|
const TestCookieName = "techaro.lol-anubis-cookie-test-if-you-block-this-anubis-wont-work"
|
|
|
|
// CookieDefaultExpirationTime is the amount of time before the cookie/JWT expires.
|
|
const CookieDefaultExpirationTime = 7 * 24 * time.Hour
|
|
|
|
// BasePrefix is a global prefix for all Anubis endpoints. Can be emptied to remove the prefix entirely.
|
|
var BasePrefix = ""
|
|
|
|
// StaticPath is the location where all static Anubis assets are located.
|
|
const StaticPath = "/.within.website/x/cmd/anubis/"
|
|
|
|
// APIPrefix is the location where all Anubis API endpoints are located.
|
|
const APIPrefix = "/.within.website/x/cmd/anubis/api/"
|
|
|
|
// DefaultDifficulty is the default "difficulty" (number of leading zeroes)
|
|
// that must be met by the client in order to pass the challenge.
|
|
const DefaultDifficulty = 4
|