Skip to content

Releases: crowdsecurity/cs-blocklist-mirror

v0.0.6

27 Jan 16:33
b1fecec

Choose a tag to compare

v0.0.6


New features

Decision type filtering

You can limit mirrored blocklists to specific CrowdSec decision types (for example ban, captcha) either globally via config or per-request via query parameters.

Config (YAML):

crowdsec_config:
  supported_decisions_types:
    - ban

IP aggregation for blocklists

Add aggregate: true to merge individual IP decisions into minimal CIDR blocks, reducing blocklist size.

Example:

blocklists:
  - format: plain_text
    endpoint: /security/blocklist
    aggregate: true

Full Changelog: v0.0.5...v0.0.6

v0.0.6-rc3

27 Jan 15:32
b1fecec

Choose a tag to compare

v0.0.6-rc3 Pre-release
Pre-release

Highlights (rc3, rc2, rc1)

  • Go 1.25 base images for builds.
  • Release artifacts no longer include freebsd/riscv64.
  • Decision type filtering at source and per-request.
  • New blocklist option: aggregate: true to merge IP decisions into minimal CIDR blocks.
  • Ubuntu 25.10 install fixes and script updates.
  • Dependency refresh and minor lint/tooling cleanup.

What’s changed (v0.0.6-rc2 → v0.0.6-rc3)

Full Changelog: v0.0.6-rc2...v0.0.6-rc3

New feature: IP aggregation for blocklists

Add aggregate: true configuration option that merges individual IP decisions into minimal CIDR blocks, reducing blocklist size.

Behaviour

  • New aggregate field in blocklist config works with any format.
  • Adjacent IPs are merged into larger CIDR ranges (example: .0 + .1 becomes /31).
  • Overlapping prefixes are deduplicated (larger prefix absorbs smaller).
  • Supports both IPv4 and IPv6 with optimized bit operations.

Performance and runtime characteristics

  • Aggregation is pre-computed when decisions are added or deleted from LAPI.
  • HTTP requests read from a cached aggregated view (no per-request aggregation cost).
  • Only enabled if at least one blocklist has aggregate: true.
  • Uses an RWMutex to allow concurrent reads during update cycles.

Example configuration

blocklists:
  - format: plain_text
    endpoint: /security/blocklist
    aggregate: true

Previously introduced in rc1 and rc2 (for reference)

  • Decision type filtering (config and per-request).
  • Ubuntu 25.10 install fixes and updated scripts.
  • Go 1.25 in Dockerfile.
  • Drop freebsd/riscv64 from release artifacts.

rc2 changelog: v0.0.6-rc1...v0.0.6-rc2
rc1 changelog: v0.0.5...v0.0.6-rc1

v0.0.6-rc2

21 Oct 14:58
47d477d

Choose a tag to compare

v0.0.6-rc2 Pre-release
Pre-release

🚀 Highlights (rc2 + rc1)

  • Go 1.25 base images for builds (smaller, faster, up-to-date toolchain).
  • Dropped freebsd/riscv64 target from release artifacts.
  • Decision type filtering at source and per-request.
  • Ubuntu 25.10 install fixes and script updates.
  • Dependency refresh and minor tooling cleanup.

What’s Changed (since v0.0.6-rc1 → v0.0.6-rc2)

Full Changelog: v0.0.6-rc1...v0.0.6-rc2


Previously in v0.0.6-rc1

What’s Changed

Full Changelog: v0.0.5...v0.0.6-rc1


✨ New: Decision type filtering

Limit mirrored blocklists to specific decision types (e.g. ban, captcha) via config or per-request.

Config (YAML)

crowdsec_config:
  # ...
  supported_decisions_types:
    - ban
  • Empty/missing list → no type filtering (all types).
  • Case-insensitive matching.

Per-request overrides (query param)

  • /security/blocklist?supported_decisions_types=ban,captcha
  • /security/blocklist?supported_decisions_types=ban&supported_decisions_types=captcha

If omitted, the YAML value applies. To include all types, omit the param and leave the YAML list empty.

Combines with: ipv4only, ipv6only, origin, nosort.

Notes/Internals:

  • Uses stdlib slices (no x/exp).
  • Removed the "all" special-case—omit the param to include all types.

🛠️ Installation & Packaging

  • Ubuntu 25.10: install scripts updated and a prior install issue fixed.

🔧 Maintenance

  • Dependencies updated.
  • Python cstest workflow refreshed.
  • Go 1.25 in Dockerfile.
  • Release artifacts no longer include freebsd/riscv64.

Impact note: The platform drop only affects release artifact availability; runtime behavior for other platforms is unchanged.

v0.0.6-rc1

21 Oct 11:56
756ce6b

Choose a tag to compare

v0.0.6-rc1 Pre-release
Pre-release

🚀 Highlights

  • Decision type filtering at source and per-request.
  • Ubuntu 25.10 install fixes and script updates.
  • Dependency refresh and minor tooling cleanup.

What’s Changed

Full Changelog: v0.0.5...v0.0.6-rc1


✨ New: Decision type filtering

Keep your mirrored blocklists limited to specific decision types (e.g., ban, captcha) either via config or per request.

Config (YAML)

crowdsec_config:
  # ...
  supported_decisions_types:
    - ban
  • Empty/missing list → no type filtering (all types).
  • Case-insensitive matching.

Per-request overrides (query param)

You can override the YAML setting without changing server config:

  • /security/blocklist?supported_decisions_types=ban,captcha
  • /security/blocklist?supported_decisions_types=ban&supported_decisions_types=captcha

If the parameter is omitted, the YAML value applies.
To get all types, omit the parameter and leave the YAML list empty.

Combines with existing filters

Works alongside ipv4only, ipv6only, origin, nosort.

Notes / Internals

  • Uses stdlib slices (no x/exp).
  • Removed the previous "all" special-case; simply omit the param to include all types.

🛠️ Installation & Packaging

  • Ubuntu 25.10: install scripts updated and an install issue fixed to ensure smooth setup on 25.10.

🔧 Maintenance

  • Dependencies updated.
  • Python cstest workflow refreshed.

v0.0.5

08 Apr 14:27
f33db07

Choose a tag to compare

What's Changed

GZIP Compression middleware #110

The remediation now checks for incoming accepted encoding types and if the client support GZIP then the response will be compressed.

Example usage:

curl --compressed http://127.0.0.1:4141/security.txt

Full Changelog: v0.0.4...v0.0.5

v0.0.4

07 Jan 10:02
cb1396d

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.0.3...v0.0.4

v0.0.4-rc2

30 Dec 13:36
cb1396d

Choose a tag to compare

v0.0.4-rc2 Pre-release
Pre-release

What's Changed

New Contributors

Full Changelog: v0.0.3...v0.0.4-rc2

v0.0.4-rc1

26 Jun 13:29
78038ce

Choose a tag to compare

v0.0.4-rc1 Pre-release
Pre-release

What's Changed

New Contributors

Full Changelog: v0.0.3...v0.0.4-rc1

v0.0.3

19 Mar 09:44
a7871e6

Choose a tag to compare

What’s Changed

  • lint (#90) @mmetc
  • use go 1.21.6 (#87) @mmetc
  • Makefile: use GO macro if set, to check for version (#85) @mmetc
  • logging: full standard timestamp with timezone (yyyy-mm-dd) (#86) @mmetc
  • update golangci-lint, lint fixes (#84) @mmetc
  • add new formatter (#77) @LaurenceJJones
  • update dependency on crowdsec, go-cs-bouncer (#83) @mmetc
  • use go 1.21.5 (#82) @mmetc
  • Release action: fix asset upload (#81) @mmetc
  • update dependencies on crowdsec, go-cs-bouncer, go-cs-lib (#80) @mmetc
  • force raw output on cscli during install (#79) @mmetc
  • fix vendor packaging (#78) @mmetc
  • alternate vendor file (xz compression and version number) (#76) @mmetc
  • update go version, golangci-lint and test dependencies (#75) @mmetc
  • update crowdsec dependency (#74) @mmetc
  • Support option "retry_initial_connect" (#73) @mmetc
  • Use go 1.20.6 (#72) @mmetc
  • CI: run codeql in lint.yml (#70) @mmetc
  • cross-platform interrupt handler (#69) @mmetc
  • update go.mod to remove dependency from wasm (#71) @mmetc
  • add vendor.tgz to release (#68) @mmetc
  • Use go 1.20.5 (#66) @mmetc
  • test bouncer registration with tls (#65) @mmetc
  • update dependencies to crowdsec 1.5.2; allow build with devel version of go (#61) @mmetc
  • test tls: allowed ou in client cert (#64) @mmetc
  • notify systemd and handle SIGINT/SIGTERM (#62) @mmetc
  • respect log permissions if file already exists (#63) @mmetc
  • substitute envvars in config file (#34) @mmetc
  • use go-cs-lib (#59) @mmetc
  • move main entrypoint to cmd/root.go (#58) @mmetc
  • deb, rpm: handle api key creation (skip/ignore) with .yaml.local or remote LAPI (#57) @mmetc
  • include _bouncer.sh in release tarballs (#56) @mmetc

v0.0.3-rc6

18 Mar 17:14
a7871e6

Choose a tag to compare

v0.0.3-rc6 Pre-release
Pre-release

What’s Changed

  • revert preventing the build. This will be done pipeline side. (#92) @sabban
  • lint (#90) @mmetc
  • use go 1.21.6 (#87) @mmetc
  • static build require not to build at package creation time (#89) @sabban
  • Makefile: use GO macro if set, to check for version (#85) @mmetc
  • logging: full standard timestamp with timezone (yyyy-mm-dd) (#86) @mmetc
  • update golangci-lint, lint fixes (#84) @mmetc
  • add new formatter (#77) @LaurenceJJones
  • update dependency on crowdsec, go-cs-bouncer (#83) @mmetc
  • use go 1.21.5 (#82) @mmetc
  • Release action: fix asset upload (#81) @mmetc
  • update dependencies on crowdsec, go-cs-bouncer, go-cs-lib (#80) @mmetc
  • force raw output on cscli during install (#79) @mmetc
  • fix vendor packaging (#78) @mmetc
  • alternate vendor file (xz compression and version number) (#76) @mmetc
  • update go version, golangci-lint and test dependencies (#75) @mmetc
  • update crowdsec dependency (#74) @mmetc
  • Support option "retry_initial_connect" (#73) @mmetc
  • Use go 1.20.6 (#72) @mmetc
  • CI: run codeql in lint.yml (#70) @mmetc
  • cross-platform interrupt handler (#69) @mmetc
  • update go.mod to remove dependency from wasm (#71) @mmetc
  • add vendor.tgz to release (#68) @mmetc
  • Use go 1.20.5 (#66) @mmetc
  • test bouncer registration with tls (#65) @mmetc
  • update dependencies to crowdsec 1.5.2; allow build with devel version of go (#61) @mmetc
  • test tls: allowed ou in client cert (#64) @mmetc
  • notify systemd and handle SIGINT/SIGTERM (#62) @mmetc
  • respect log permissions if file already exists (#63) @mmetc
  • substitute envvars in config file (#34) @mmetc
  • use go-cs-lib (#59) @mmetc
  • move main entrypoint to cmd/root.go (#58) @mmetc
  • deb, rpm: handle api key creation (skip/ignore) with .yaml.local or remote LAPI (#57) @mmetc
  • include _bouncer.sh in release tarballs (#56) @mmetc