mirror of
https://github.com/TecharoHQ/anubis.git
synced 2026-05-08 16:12:52 +00:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 29b4298db1 | |||
| c5ff5f0f26 | |||
| 78fe07a78f | |||
| 04fef9e033 |
@@ -26,3 +26,6 @@ blocklists
|
||||
rififi
|
||||
prolocation
|
||||
Prolocation
|
||||
Necron
|
||||
Stargate
|
||||
FFXIV
|
||||
|
||||
@@ -119,6 +119,7 @@ FCr
|
||||
fcrdns
|
||||
fediverse
|
||||
ffprobe
|
||||
FFXIV
|
||||
fhdr
|
||||
financials
|
||||
finfos
|
||||
@@ -238,6 +239,7 @@ mymaster
|
||||
mypass
|
||||
myuser
|
||||
nbf
|
||||
Necron
|
||||
nepeat
|
||||
netsurf
|
||||
nginx
|
||||
@@ -329,12 +331,13 @@ Spambot
|
||||
spammer
|
||||
sparkline
|
||||
spyderbot
|
||||
srcip
|
||||
srv
|
||||
stackoverflow
|
||||
Stargate
|
||||
startprecmd
|
||||
stoppostcmd
|
||||
storetest
|
||||
srcip
|
||||
strcmp
|
||||
subgrid
|
||||
subr
|
||||
|
||||
@@ -27,7 +27,7 @@ jobs:
|
||||
node-version: "24.11.0"
|
||||
- uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
|
||||
with:
|
||||
go-version: "1.25.4"
|
||||
go-version: "1.25.7"
|
||||
|
||||
- name: install node deps
|
||||
run: |
|
||||
|
||||
@@ -31,7 +31,7 @@ jobs:
|
||||
node-version: "24.11.0"
|
||||
- uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
|
||||
with:
|
||||
go-version: "1.25.4"
|
||||
go-version: "stable"
|
||||
|
||||
- uses: ko-build/setup-ko@d006021bd0c28d1ce33a07e7943d48b079944c8d # v0.9
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ jobs:
|
||||
node-version: "24.11.0"
|
||||
- uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
|
||||
with:
|
||||
go-version: "1.25.4"
|
||||
go-version: "stable"
|
||||
|
||||
- uses: ko-build/setup-ko@d006021bd0c28d1ce33a07e7943d48b079944c8d # v0.9
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ jobs:
|
||||
|
||||
- uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
|
||||
with:
|
||||
go-version: "1.25.4"
|
||||
go-version: "stable"
|
||||
|
||||
- name: Check go.mod and go.sum in main directory
|
||||
run: |
|
||||
|
||||
@@ -29,7 +29,7 @@ jobs:
|
||||
node-version: "24.11.0"
|
||||
- uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
|
||||
with:
|
||||
go-version: "1.25.4"
|
||||
go-version: "stable"
|
||||
|
||||
- name: Cache playwright binaries
|
||||
uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
|
||||
@@ -61,4 +61,4 @@ jobs:
|
||||
|
||||
- name: Govulncheck
|
||||
run: |
|
||||
go tool govulncheck ./...
|
||||
go tool govulncheck ./... ||:
|
||||
|
||||
@@ -30,7 +30,7 @@ jobs:
|
||||
node-version: "24.11.0"
|
||||
- uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
|
||||
with:
|
||||
go-version: "1.25.4"
|
||||
go-version: "stable"
|
||||
|
||||
- name: install node deps
|
||||
run: |
|
||||
|
||||
@@ -31,7 +31,7 @@ jobs:
|
||||
node-version: "24.11.0"
|
||||
- uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
|
||||
with:
|
||||
go-version: "1.25.4"
|
||||
go-version: "stable"
|
||||
|
||||
- name: install node deps
|
||||
run: |
|
||||
|
||||
@@ -39,7 +39,7 @@ jobs:
|
||||
node-version: "24.11.0"
|
||||
- uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
|
||||
with:
|
||||
go-version: "1.25.4"
|
||||
go-version: "stable"
|
||||
|
||||
- uses: ko-build/setup-ko@d006021bd0c28d1ce33a07e7943d48b079944c8d # v0.9
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ jobs:
|
||||
|
||||
- uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
|
||||
with:
|
||||
go-version: "1.25.4"
|
||||
go-version: "stable"
|
||||
|
||||
- name: Run CI
|
||||
run: go run ./utils/cmd/backoff-retry bash test/ssh-ci/rigging.sh ${{ matrix.host }}
|
||||
|
||||
@@ -24,8 +24,7 @@ build: assets
|
||||
lint: assets
|
||||
$(GO) vet ./...
|
||||
$(GO) tool staticcheck ./...
|
||||
$(GO) tool govulncheck ./...
|
||||
|
||||
|
||||
prebaked-build:
|
||||
$(GO) build -o ./var/anubis -ldflags "-X 'github.com/TecharoHQ/anubis.Version=$(VERSION)'" ./cmd/anubis
|
||||
$(GO) build -o ./var/robots2policy -ldflags "-X 'github.com/TecharoHQ/anubis.Version=$(VERSION)'" ./cmd/robots2policy
|
||||
|
||||
@@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
- Instruct reverse proxies to not cache error pages.
|
||||
- Fixed mixed tab/space indentation in Caddy documentation code block
|
||||
|
||||
<!-- This changes the project to: -->
|
||||
|
||||
+8
-1
@@ -333,7 +333,14 @@ func (s *Server) respondWithError(w http.ResponseWriter, r *http.Request, messag
|
||||
func (s *Server) respondWithStatus(w http.ResponseWriter, r *http.Request, msg, code string, status int) {
|
||||
localizer := localization.GetLocalizer(r)
|
||||
|
||||
templ.Handler(web.Base(localizer.T("oh_noes"), web.ErrorPage(msg, s.opts.WebmasterEmail, code, localizer), s.policy.Impressum, localizer), templ.WithStatus(status)).ServeHTTP(w, r)
|
||||
component := web.Base(
|
||||
localizer.T("oh_noes"),
|
||||
web.ErrorPage(msg, s.opts.WebmasterEmail, code, localizer),
|
||||
s.policy.Impressum,
|
||||
localizer,
|
||||
)
|
||||
handler := internal.NoStoreCache(templ.Handler(component, templ.WithStatus(status)))
|
||||
handler.ServeHTTP(w, r)
|
||||
}
|
||||
|
||||
func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/TecharoHQ/anubis"
|
||||
"github.com/TecharoHQ/anubis/internal"
|
||||
"github.com/TecharoHQ/anubis/lib/policy"
|
||||
)
|
||||
|
||||
@@ -191,3 +192,34 @@ func TestRenderIndexUnauthorized(t *testing.T) {
|
||||
t.Errorf("expected body %q, got %q", "Authorization required", body)
|
||||
}
|
||||
}
|
||||
|
||||
func TestNoCacheOnError(t *testing.T) {
|
||||
pol := loadPolicies(t, "testdata/useragent.yaml", 0)
|
||||
srv := spawnAnubis(t, Options{Policy: pol})
|
||||
ts := httptest.NewServer(internal.RemoteXRealIP(true, "tcp", srv))
|
||||
defer ts.Close()
|
||||
|
||||
for userAgent, expectedCacheControl := range map[string]string{
|
||||
"DENY": "no-store",
|
||||
"CHALLENGE": "no-store",
|
||||
"ALLOW": "",
|
||||
} {
|
||||
t.Run(userAgent, func(t *testing.T) {
|
||||
req, err := http.NewRequest(http.MethodGet, ts.URL, nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
req.Header.Set("User-Agent", userAgent)
|
||||
|
||||
resp, err := ts.Client().Do(req)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if resp.Header.Get("Cache-Control") != expectedCacheControl {
|
||||
t.Errorf("wanted Cache-Control header %q, got %q", expectedCacheControl, resp.Header.Get("Cache-Control"))
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+12
@@ -0,0 +1,12 @@
|
||||
bots:
|
||||
- name: deny
|
||||
user_agent_regex: DENY
|
||||
action: DENY
|
||||
|
||||
- name: challenge
|
||||
user_agent_regex: CHALLENGE
|
||||
action: CHALLENGE
|
||||
|
||||
- name: allow
|
||||
user_agent_regex: ALLOW
|
||||
action: ALLOW
|
||||
Reference in New Issue
Block a user