Say how to allow a refused private target address (closes #398)
check / check (push) Waiting to run

Adding or editing an http or slack target whose address is private or
reserved was refused with no hint that the refusal is deliberate or
that it can be lifted. The refusal now adds that such addresses are
refused by default and that the server's ALLOWED_EGRESS_CIDRS setting
allows named networks, naming the README section "Allowing egress to
your own network". Metadata refusals do not get it.

The default blocklist's public addresses move to a list of their own,
still checked after the allowlist, and are refused as cloud metadata
addresses. The private-and-reserved error is exported as
ErrBlockedPrivateOrReservedIP so the handler can tell them apart.

Model: opus-5-5
This commit is contained in:
clawbot
2026-10-02 05:24:32 +00:00
committed by sneak
parent 7d360babed
commit 1c0e3cdda2
6 changed files with 282 additions and 41 deletions
+6 -4
View File
@@ -10,7 +10,7 @@ import (
"sneak.berlin/go/webhooker/internal/delivery"
)
func TestIsBlockedIP_PrivateRanges(t *testing.T) {
func TestGuardCheckIP_PrivateRanges(t *testing.T) {
t.Parallel()
tests := []struct {
@@ -56,12 +56,14 @@ func TestIsBlockedIP_PrivateRanges(t *testing.T) {
"failed to parse IP %s", tt.ip,
)
refused := delivery.NewTestGuard().ExportCheckIP(ip) != nil
assert.Equal(t,
tt.blocked,
delivery.ExportIsBlockedIP(ip),
"isBlockedIP(%s) = %v, want %v",
refused,
"default guard refuses %s = %v, want %v",
tt.ip,
delivery.ExportIsBlockedIP(ip),
refused,
tt.blocked,
)
})