[READ-ONLY] Mirror of https://github.com/jmrplens/cs-routeros-bouncer. CrowdSec bouncer for MikroTik RouterOS — manages address lists and firewall rules via the RouterOS API jmrplens.github.io/cs-routeros-bouncer/
bouncer crowdsec firewall go mikrotik network-security routeros
0

Configure Feed

Select the types of activity you want to include in your feed.

Tags

Release v1.4.5

- Fix Grafana "Reconciliation Duration" panel: add
crowdsec_bouncer_last_operation_duration_seconds gauge so it shows the
most recent cycle instead of the cumulative histogram _sum (#44, #47)
- Bump Go to 1.26.4, fixing two stdlib vulnerabilities (GO-2026-5039
net/textproto, GO-2026-5037 crypto/x509)
- Update dependencies: Go modules, alpine 3.24, docs npm (#49)

Artifacts

v1.4.4
aadcf1f7 jmrplens

v1.4.4

Artifacts

v1.4.3
a0c5e626 jmrplens

Release v1.4.3

Artifacts

v1.4.2
c4c52ef8 jmrplens

Release v1.4.2

Artifacts

v1.4.1
8c902ba1 jmrplens

Release v1.4.1

Artifacts

v1.4.0
dbda3ef6 jmrplens

Release v1.4.0

Artifacts

v1.3.4
35f70c85 José Manuel Requena Plens

v1.3.4

Bug fixes:
- Fix infinite reconnect loop on RouterOS device errors (#14)
- Fix Docker health check failure when metrics are disabled (#16)
- Fix incorrect language attribution in README (#15)
- Restore missing firewall rule placement fix in changelog
- Bind health/metrics listener synchronously for reliable startup
- Fix comparison table: other bouncers are Go, not Python

Artifacts

v1.3.0
3992edde jmrplens

v1.3.0: miscellaneous improvements, firewall customization, and documentation audit

Artifacts

v1.2.0
89fc5f36 jmrplens

v1.2.0: Input interface filtering, LAPI metrics, test coverage, and dashboard improvements

New Features:
- Input interface filtering (block_input.interface / block_input.interface_list)
- LAPI metrics: dropped bytes/packets and per-origin active decisions to CrowdSec console
- 3 new Prometheus metrics: dropped_bytes_total, dropped_packets_total, active_decisions_by_origin
- 13 new Grafana dashboard panels (Dropped Traffic, Decisions by Origin, Process Resources)

Bug Fixes:
- Fix max-sessions documentation (1000, not 100)
- Fix rule placement to iterate all positions
- Fix go-cs-lib version ldflags for correct bouncer metadata
- Fix test coverage gaps

Improvements:
- Test coverage ~24% → ~90%+ across all packages (~200+ new tests)
- Extract interfaces for testability (RouterOSClient, RouterConn, BouncerEngine, CrowdSecStream)
- Extract applyInputRuleOptions() helper to deduplicate firewall rule setup
- Documentation updates

Artifacts

v1.1.0
d77756ba jmrplens

Release v1.1.0: Optimize reconciliation with connection pooling (~97x speedup)

Key changes:
- Connection pool with configurable size (1-20, default 4)
- Address cache with RWMutex replacing repeated API queries
- Script-based bulk add (chunks of 100) with parallel removes
- Auto-detection of router max-sessions limit
- Bash functional test suite (44 tests, 8 groups)
- CI: shellcheck analysis for test scripts
- Comprehensive documentation with real benchmark data

Performance (RB5009UG+S+):
- Full reconciliation: ~13 min → ~9-26s (~97x speedup)
- Steady-state CPU: ~27% → ~10%
- CAPI (~25k IPs): ~2m50s reconciliation

Artifacts

v1.0.0
ea06717a jmrplens

v1.0.0

Artifacts