diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index e2f83d6..0000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -patreon: cadey \ No newline at end of file diff --git a/.github/workflows/docker-pr.yml b/.github/workflows/docker-pr.yml deleted file mode 100644 index 8461366..0000000 --- a/.github/workflows/docker-pr.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: Docker image builds (pull requests) - -on: - pull_request: - branches: [ "main" ] - -env: - DOCKER_METADATA_SET_OUTPUT_ENV: "true" - -permissions: - contents: read - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - fetch-tags: true - fetch-depth: 0 - - - uses: actions/setup-go@v5 - with: - go-version: '1.24.x' - - - uses: ko-build/setup-ko@v0.8 - - - name: Docker meta - id: meta - uses: docker/metadata-action@v5 - with: - images: ghcr.io/techarohq/anubis - - - name: Build and push - id: build - run: | - go run ./cmd/containerbuild --docker-repo ghcr.io/techarohq/anubis --slog-level debug - env: - PULL_REQUEST_ID: ${{ github.event.number }} - - - run: | - echo "Test this with:" - echo "docker pull ${{ steps.build.outputs.docker_image }}" \ No newline at end of file diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml deleted file mode 100644 index bfb095c..0000000 --- a/.github/workflows/docker.yml +++ /dev/null @@ -1,59 +0,0 @@ -name: Docker image builds - -on: - workflow_dispatch: - push: - branches: [ "main" ] - tags: [ "v*" ] - -env: - DOCKER_METADATA_SET_OUTPUT_ENV: "true" - -permissions: - contents: read - packages: write - attestations: write - id-token: write - pull-requests: write - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - fetch-tags: true - fetch-depth: 0 - - - uses: actions/setup-go@v5 - with: - go-version: '1.24.x' - - - uses: ko-build/setup-ko@v0.8 - - - name: Log into registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: techarohq - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Docker meta - id: meta - uses: docker/metadata-action@v5 - with: - images: ghcr.io/techarohq/anubis - - - name: Build and push - id: build - run: | - go run ./cmd/containerbuild --docker-repo ghcr.io/techarohq/anubis --slog-level debug - - - name: Generate artifact attestation - uses: actions/attest-build-provenance@v2 - if: ${{github.event_name == 'pull_request'}} - with: - subject-name: ghcr.io/techarohq/anubis - subject-digest: ${{ steps.build.outputs.digest }} - push-to-registry: true \ No newline at end of file diff --git a/.github/workflows/docs-deploy.yml b/.github/workflows/docs-deploy.yml deleted file mode 100644 index 1636c48..0000000 --- a/.github/workflows/docs-deploy.yml +++ /dev/null @@ -1,61 +0,0 @@ -name: Docs deploy - -on: - workflow_dispatch: - push: - branches: [ "main" ] - -permissions: - contents: read - packages: write - attestations: write - id-token: write - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Log into registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: techarohq - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Docker meta - id: meta - uses: docker/metadata-action@v5 - with: - images: ghcr.io/techarohq/anubis/docs - - - name: Build and push - id: build - uses: docker/build-push-action@v6 - with: - context: ./docs - cache-to: type=gha - cache-from: type=gha - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - platforms: linux/amd64 - push: true - - - name: Apply k8s manifests to aeacus - uses: actions-hub/kubectl@master - env: - KUBE_CONFIG: ${{ secrets.AEACUS_KUBECONFIG }} - with: - args: apply -k docs/manifest - - - name: Apply k8s manifests to aeacus - uses: actions-hub/kubectl@master - env: - KUBE_CONFIG: ${{ secrets.AEACUS_KUBECONFIG }} - with: - args: rollout restart -n default deploy/anubis-docs diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml deleted file mode 100644 index d112342..0000000 --- a/.github/workflows/go.yml +++ /dev/null @@ -1,76 +0,0 @@ -name: Go - -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - -permissions: - contents: read - actions: write - -jobs: - build: - #runs-on: alrest-techarohq - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: build essential - run: | - sudo apt-get update - sudo apt-get install -y build-essential - - - name: Set up Homebrew - uses: Homebrew/actions/setup-homebrew@master - - - name: Setup Homebrew cellar cache - uses: actions/cache@v4 - with: - path: | - /home/linuxbrew/.linuxbrew/Cellar - /home/linuxbrew/.linuxbrew/bin - /home/linuxbrew/.linuxbrew/etc - /home/linuxbrew/.linuxbrew/include - /home/linuxbrew/.linuxbrew/lib - /home/linuxbrew/.linuxbrew/opt - /home/linuxbrew/.linuxbrew/sbin - /home/linuxbrew/.linuxbrew/share - /home/linuxbrew/.linuxbrew/var - key: ${{ runner.os }}-go-homebrew-cellar-${{ hashFiles('go.sum') }} - restore-keys: | - ${{ runner.os }}-go-homebrew-cellar- - - - name: Install Brew dependencies - run: | - brew bundle - - - name: Setup Golang caches - uses: actions/cache@v4 - with: - path: | - ~/.cache/go-build - ~/go/pkg/mod - key: ${{ runner.os }}-golang-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-golang- - - - name: Cache playwright binaries - uses: actions/cache@v3 - id: playwright-cache - with: - path: | - ~/.cache/ms-playwright - key: ${{ runner.os }}-playwright-${{ hashFiles('**/go.sum') }} - - - name: install playwright browsers - run: | - npx --yes playwright@1.50.1 install --with-deps - npx --yes playwright@1.50.1 run-server --port 3000 & - - - name: Build - run: go build ./... - - - name: Test - run: go test -v ./... diff --git a/Brewfile b/Brewfile deleted file mode 100644 index 2b6b486..0000000 --- a/Brewfile +++ /dev/null @@ -1,4 +0,0 @@ -# programming languages -brew "go@1.24" -brew "node" -brew "ko" \ No newline at end of file diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 8906bd4..0000000 --- a/Dockerfile +++ /dev/null @@ -1,23 +0,0 @@ -FROM docker.io/library/golang:1.24 AS build -ARG BUILDKIT_SBOM_SCAN_CONTEXT=true BUILDKIT_SBOM_SCAN_STAGE=true - -WORKDIR /app -COPY go.mod go.sum /app/ -RUN go mod download - -COPY . . -RUN --mount=type=cache,target=/root/.cache \ - VERSION=$(git describe --tags --always --dirty) \ - && go build -o /app/bin/anubis -ldflags="-X github.com/TecharoHQ/anubis.Version=${VERSION}" ./cmd/anubis - -FROM docker.io/library/debian:bookworm AS runtime -ARG BUILDKIT_SBOM_SCAN_STAGE=true -RUN apt-get update \ - && apt-get -y install ca-certificates - -COPY --from=build /app/bin/anubis /app/bin/anubis - -HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 CMD ["/app/bin/anubis", "--healthcheck"] -CMD ["/app/bin/anubis"] - -LABEL org.opencontainers.image.source="https://github.com/TecharoHQ/anubis" diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 488b74f..0000000 --- a/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2025 Xe Iaso - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 78992fa..0000000 --- a/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,6 +0,0 @@ - - -Checklist: - -- [ ] Added a description of the changes to the `[Unreleased]` section of docs/docs/CHANGELOG.md -- [ ] Tested this at least manually diff --git a/README.md b/README.md deleted file mode 100644 index 3ff5b00..0000000 --- a/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# Anubis - -
-A smiling chibi dark-skinned anthro jackal with brown hair and tall ears looking victorious with a thumbs-up -
- -![enbyware](https://pride-badges.pony.workers.dev/static/v1?label=enbyware&labelColor=%23555&stripeWidth=8&stripeColors=FCF434%2CFFFFFF%2C9C59D1%2C2C2C2C) -![GitHub Issues or Pull Requests by label](https://img.shields.io/github/issues/TecharoHQ/anubis) -![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/TecharoHQ/anubis) -![language count](https://img.shields.io/github/languages/count/TecharoHQ/anubis) -![repo size](https://img.shields.io/github/repo-size/TecharoHQ/anubis) - -Anubis [weighs the soul of your connection](https://en.wikipedia.org/wiki/Weighing_of_souls) using a sha256 proof-of-work challenge in order to protect upstream resources from scraper bots. - -Installing and using this will likely result in your website not being indexed by some search engines. This is considered a feature of Anubis, not a bug. - -This is a bit of a nuclear response, but AI scraper bots scraping so aggressively have forced my hand. I hate that I have to do this, but this is what we get for the modern Internet because bots don't conform to standards like robots.txt, even when they claim to. - -In most cases, you should not need this and can probably get by using Cloudflare to protect a given origin. However, for circumstances where you can't or won't use Cloudflare, Anubis is there for you. - -If you want to try this out, connect to [anubis.techaro.lol](https://anubis.techaro.lol). - -## Support - -If you run into any issues running Anubis, please [open an issue](https://github.com/TecharoHQ/anubis/issues/new?template=Blank+issue) and tag it with the Anubis tag. Please include all the information I would need to diagnose your issue. - -For live chat, please join the [Patreon](https://patreon.com/cadey) and ask in the Patron discord in the channel `#anubis`. - -## Star History - -[![Star History Chart](https://api.star-history.com/svg?repos=TecharoHQ/anubis&type=Date)](https://www.star-history.com/#TecharoHQ/anubis&Date) diff --git a/VERSION b/VERSION deleted file mode 100644 index 42cf067..0000000 --- a/VERSION +++ /dev/null @@ -1 +0,0 @@ -1.15.2 diff --git a/docs/.dockerignore b/docs/.dockerignore deleted file mode 100644 index 13ad2b9..0000000 --- a/docs/.dockerignore +++ /dev/null @@ -1,23 +0,0 @@ -# Dependencies -/node_modules - -# Production -/build - -# Generated files -.docusaurus -.cache-loader - -# Misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Kubernetes manifests -/manifest \ No newline at end of file diff --git a/docs/.gitignore b/docs/.gitignore deleted file mode 100644 index b2d6de3..0000000 --- a/docs/.gitignore +++ /dev/null @@ -1,20 +0,0 @@ -# Dependencies -/node_modules - -# Production -/build - -# Generated files -.docusaurus -.cache-loader - -# Misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/docs/Dockerfile b/docs/Dockerfile deleted file mode 100644 index aef0fb6..0000000 --- a/docs/Dockerfile +++ /dev/null @@ -1,10 +0,0 @@ -FROM docker.io/library/node AS build - -WORKDIR /app -COPY . . - -RUN npm ci && npm run build - -FROM docker.io/library/nginx:alpine -COPY --from=build /app/build /usr/share/nginx/html -LABEL org.opencontainers.image.source="https://github.com/TecharoHQ/anubis" \ No newline at end of file diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 0c6c2c2..0000000 --- a/docs/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# Website - -This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator. - -### Installation - -``` -$ yarn -``` - -### Local Development - -``` -$ yarn start -``` - -This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. - -### Build - -``` -$ yarn build -``` - -This command generates static content into the `build` directory and can be served using any static contents hosting service. - -### Deployment - -Using SSH: - -``` -$ USE_SSH=true yarn deploy -``` - -Not using SSH: - -``` -$ GIT_USER= yarn deploy -``` - -If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. diff --git a/docs/blog/2019-05-28-first-blog-post.md b/docs/blog/2019-05-28-first-blog-post.md deleted file mode 100644 index d3032ef..0000000 --- a/docs/blog/2019-05-28-first-blog-post.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -slug: first-blog-post -title: First Blog Post -authors: [slorber, yangshun] -tags: [hola, docusaurus] ---- - -Lorem ipsum dolor sit amet... - - - -...consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet diff --git a/docs/blog/2019-05-29-long-blog-post.md b/docs/blog/2019-05-29-long-blog-post.md deleted file mode 100644 index eb4435d..0000000 --- a/docs/blog/2019-05-29-long-blog-post.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -slug: long-blog-post -title: Long Blog Post -authors: yangshun -tags: [hello, docusaurus] ---- - -This is the summary of a very long blog post, - -Use a `` comment to limit blog post size in the list view. - - - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet diff --git a/docs/blog/2021-08-01-mdx-blog-post.mdx b/docs/blog/2021-08-01-mdx-blog-post.mdx deleted file mode 100644 index 0c4b4a4..0000000 --- a/docs/blog/2021-08-01-mdx-blog-post.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -slug: mdx-blog-post -title: MDX Blog Post -authors: [slorber] -tags: [docusaurus] ---- - -Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/). - -:::tip - -Use the power of React to create interactive blog posts. - -::: - -{/* truncate */} - -For example, use JSX to create an interactive button: - -```js - -``` - - diff --git a/docs/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg b/docs/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg deleted file mode 100644 index 11bda09..0000000 Binary files a/docs/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg and /dev/null differ diff --git a/docs/blog/2021-08-26-welcome/index.md b/docs/blog/2021-08-26-welcome/index.md deleted file mode 100644 index 349ea07..0000000 --- a/docs/blog/2021-08-26-welcome/index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -slug: welcome -title: Welcome -authors: [slorber, yangshun] -tags: [facebook, hello, docusaurus] ---- - -[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog). - -Here are a few tips you might find useful. - - - -Simply add Markdown files (or folders) to the `blog` directory. - -Regular blog authors can be added to `authors.yml`. - -The blog post date can be extracted from filenames, such as: - -- `2019-05-30-welcome.md` -- `2019-05-30-welcome/index.md` - -A blog post folder can be convenient to co-locate blog post images: - -![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg) - -The blog supports tags as well! - -**And if you don't want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config. diff --git a/docs/blog/authors.yml b/docs/blog/authors.yml deleted file mode 100644 index 8bfa5c7..0000000 --- a/docs/blog/authors.yml +++ /dev/null @@ -1,23 +0,0 @@ -yangshun: - name: Yangshun Tay - title: Front End Engineer @ Facebook - url: https://github.com/yangshun - image_url: https://github.com/yangshun.png - page: true - socials: - x: yangshunz - github: yangshun - -slorber: - name: Sébastien Lorber - title: Docusaurus maintainer - url: https://sebastienlorber.com - image_url: https://github.com/slorber.png - page: - # customize the url of the author page at /blog/authors/ - permalink: '/all-sebastien-lorber-articles' - socials: - x: sebastienlorber - linkedin: sebastienlorber - github: slorber - newsletter: https://thisweekinreact.com diff --git a/docs/blog/tags.yml b/docs/blog/tags.yml deleted file mode 100644 index bfaa778..0000000 --- a/docs/blog/tags.yml +++ /dev/null @@ -1,19 +0,0 @@ -facebook: - label: Facebook - permalink: /facebook - description: Facebook tag description - -hello: - label: Hello - permalink: /hello - description: Hello tag description - -docusaurus: - label: Docusaurus - permalink: /docusaurus - description: Docusaurus tag description - -hola: - label: Hola - permalink: /hola - description: Hola tag description diff --git a/docs/docs/CHANGELOG.md b/docs/docs/CHANGELOG.md deleted file mode 100644 index a9f23cf..0000000 --- a/docs/docs/CHANGELOG.md +++ /dev/null @@ -1,144 +0,0 @@ ---- -sidebar_position: 999 ---- - -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [Unreleased] - -## v1.15.2 - -Zenos yae Galvus: Echo 2 - -The mascot has been updated with art by [CELPHASE](https://bsky.app/profile/celphase.bsky.social). - -## v1.15.1 - -Zenos yae Galvus: Echo 1 - -Fixes a recurrence of [CVE-2025-24369](https://github.com/Xe/x/security/advisories/GHSA-56w8-8ppj-2p4f) -due to an incorrect logic change in a refactor. This allows an attacker to mint a valid -access token by passing any SHA-256 hash instead of one that matches the proof-of-work -test. - -This case has been added as a regression test. It was not when CVE-2025-24369 was released -due to the project not having the maturity required to enable this kind of regression testing. - -## v1.15.0 - -Zenos yae Galvus - -> Yes...the coming days promise to be most interesting. Most interesting. - -Headline changes: - -- ed25519 signing keys for Anubis can be stored in the flag `--ed25519-private-key-hex` or envvar `ED25519_PRIVATE_KEY_HEX`; if one is not provided when Anubis starts, a new one is generated and logged -- Add the ability to set the cookie domain with the envvar `COOKIE_DOMAIN=techaro.lol` for all domains under `techaro.lol` -- Add the ability to set the cookie partitioned flag with the envvar `COOKIE_PARTITIONED=true` - -Many other small changes were made, including but not limited to: - -- Fixed and clarified installation instructions -- Introduced integration tests using Playwright -- Refactor & Split up Anubis into cmd and lib.go -- Fixed bot check to only apply if address range matches -- Fix default difficulty setting that was broken in a refactor -- Linting fixes -- Make dark mode diff lines readable in the documentation -- Fix CI based browser smoke test - -Users running Anubis' test suite may run into issues with the integration tests on Windows hosts. This is a known issue and will be fixed at some point in the future. In the meantime, use the Windows Subsystem for Linux (WSL). - -## v1.14.2 - -Livia sas Junius: Echo 2 - -- Remove default RSS reader rule as it may allow for a targeted attack against rails apps - [#67](https://github.com/TecharoHQ/anubis/pull/67) -- Whitelist MojeekBot in botPolicies [#47](https://github.com/TecharoHQ/anubis/issues/47) -- botPolicies regex has been cleaned up [#66](https://github.com/TecharoHQ/anubis/pull/66) - -## v1.14.1 - -Livia sas Junius: Echo 1 - -- Set the `X-Real-Ip` header based on the contents of `X-Forwarded-For` - [#62](https://github.com/TecharoHQ/anubis/issues/62) - -## v1.14.0 - -Livia sas Junius - -> Fail to do as my lord commands...and I will spare him the trouble of blocking you. - -- Add explanation of what Anubis is doing to the challenge page [#25](https://github.com/TecharoHQ/anubis/issues/25) -- Administrators can now define artificially hard challenges using the "slow" algorithm: - - ```json - { - "name": "generic-bot-catchall", - "user_agent_regex": "(?i:bot|crawler)", - "action": "CHALLENGE", - "challenge": { - "difficulty": 16, - "report_as": 4, - "algorithm": "slow" - } - } - ``` - - This allows administrators to cause particularly malicious clients to use unreasonable amounts of CPU. The UI will also lie to the client about the difficulty. - -- Docker images now explicitly call `docker.io/library/` to increase compatibility with Podman et. al - [#21](https://github.com/TecharoHQ/anubis/pull/21) -- Don't overflow the image when browser windows are small (eg. on phones) - [#27](https://github.com/TecharoHQ/anubis/pull/27) -- Lower the default difficulty to 4 from 5 -- Don't duplicate work across multiple threads [#36](https://github.com/TecharoHQ/anubis/pull/36) -- Documentation has been moved to https://anubis.techaro.lol/ with sources in docs/ -- Removed several visible AI artifacts (e.g., 6 fingers) [#37](https://github.com/TecharoHQ/anubis/pull/37) -- [KagiBot](https://kagi.com/bot) is allowed through the filter [#44](https://github.com/TecharoHQ/anubis/pull/44) -- Fixed hang when navigator.hardwareConcurrency is undefined -- Support Unix domain sockets [#45](https://github.com/TecharoHQ/anubis/pull/45) -- Allow filtering by remote addresses: - - ```json - { - "name": "qwantbot", - "user_agent_regex": "\\+https\\:\\/\\/help\\.qwant\\.com/bot/", - "action": "ALLOW", - "remote_addresses": ["91.242.162.0/24"] - } - ``` - - This also works at an IP range level: - - ```json - { - "name": "internal-network", - "action": "ALLOW", - "remote_addresses": ["100.64.0.0/10"] - } - ``` - -## 1.13.0 - -- Proof-of-work challenges are drastically sped up [#19](https://github.com/TecharoHQ/anubis/pull/19) -- Docker images are now built with the timestamp set to the commit timestamp -- The README now points to TecharoHQ/anubis instead of Xe/x -- Images are built using ko instead of `docker buildx build` - [#13](https://github.com/TecharoHQ/anubis/pull/13) - -## 1.12.1 - -- Phrasing in the `