7c73cb38dd
✨ Add parameter to configure the ban page Content-Type response header ( #325 )
...
* Add parameter to configure Ban Response Content-Type
* Add testing for new BanResponseContentType parameter
* Ensure there is a fallback to default Content-Type is user provided empty value
* Set Content-Type even if banTemplate is nil
* Add more edge cases for testing ban response Content-Type
* Add CR/LF validation for BanResponseContentType
* Add CaptchaResponseContentType to allow separate Content-Type configuration for captcha responses
* Add testing for new CaptchaResponseContentType
* Update README
* Split nil and CR/LF response Content-Type value validation into separate function
* Throw error instead of setting the default in case of empty parameter declaration
* Update testing accordingly
* ✨ remove HTML from var name, add tests and infer content type from filePath
* 🍱 fix lint ?
* 🍱 fix lint
* 🍱 fix lint
* 🍱 fix lint + naming
* 🍱 fix lint
* 🍱 fuck lint
---------
Co-authored-by: maxlerebourg <maxlerebourg@gmail.com >
2026-06-28 22:30:48 +02:00
71d845faae
✨ ️ Do not block middleware startup due to stream intialization ( #281 )
...
* 🍱 not block on stream startup
* 🍱 fix
* 🍱 fix lint
* 🍱 fix lint
* 🍱 fix lint
* 🍱 update readme
* 📚 clarify StreamStartupBlock warning in README
Make the fail-open implication of StreamStartupBlock=false explicit:
banned IPs are allowed through until the first stream sync completes.
* 🐛 clear isCrowdsecStreamStartup on alreadyUpdated path
When cacheTimeoutKey is already set (another instance/process has
populated the stream cache within the update window), the early return
in handleStreamCache used to leave isCrowdsecStreamStartup at true,
causing this instance to keep sending startup=true on subsequent ticks.
Flip the flag in the early-return path so startup is correctly tracked
across multi-instance deployments sharing a cache.
---------
Co-authored-by: mhx <mathieu@hanotaux.fr >
2026-06-06 11:07:18 +02:00
maxlerebourg and GitHub
0d8fd2a7a9
🍱 Header.Add -> Set, log Info -> Debug, version bump ( #324 )
2026-05-05 15:51:35 +02:00
maxlerebourg and GitHub
1f6a8991c8
🐛 fix appsec bypass with invalid content-length ( #321 )
2026-04-27 08:33:11 +02:00
7f776fe0fe
🔊 Improve Logging: move to slog and add trace level ( #276 )
...
* Add Warn and Trace loglevels
* Move to slog
* fixes
* missing test file
* Fix tests
* Add wrapper with trace
* fix
* fix lint
* LINT
* LINT
* 🍱 Use only 4 level of logs
* fix after merge
* 🍱 fix lint
* 🍱 fix lint + remove trace logger from tests
* 🍱 fix tests
* 🍱 fix lint
* 🍱 try to fix test
* 🍱 Fix tests
* 🍱 fix README + adjust logs
---------
Co-authored-by: maxlerebourg <maxlerebourg@gmail.com >
2026-03-13 18:03:12 +01:00
c2bbc4dac5
✨ cicd: Automate proper version tagging in the bouncer.go that is reported to Crowdsec LAPI ( #314 )
...
* cicd(versioning): Automate proper version tagging in the bouncer.go that is reported to Crowdsec LAPI
* cicd(versioning): Move pluginVersion to it's own file
* Disablie lint check for no global variables
* Remove trailing new-line
* Update pluginVersion declaration style
* 🍱 Simplify for tests
Removed the verification step after updating the version and modified the commit message to include an emoji.
---------
Co-authored-by: maxlerebourg <maxlerebourg@gmail.com >
2026-02-19 23:41:55 +01:00
892909b9b8
🐛 fix start up config error for appsec and review doc for appsec tls ( #300 )
...
* 🐛 fix start up config error for appsec
* :doc: add documentation on appsec variables and missing conf parameter
* 🍱 fix lint
* 🍱 fix lint
* 🍱 fix lint
* 🍱 fix after lot of tests
* update exemple tls with new variables tested
* fix exemple appsec with release and not localplugin
---------
Co-authored-by: mhx <mathieu@hanotaux.fr >
2025-12-21 21:52:19 +01:00
maxlerebourg and GitHub
a9d83f2097
✨ Separate TLS conf for LAPI and Appsec ( #293 )
...
* ✨ Separate TLS conf for LAPI and Appsec
* 🍱 fix lint
* 🍱 fix test
* 🍱 fix lint
* 🍱 fix lint
* 🍱 fix lint
* 🍱 fix lint ?
* 🍱 fix lint
* 🍱 Add default for traceCustomHeaders
2025-12-11 07:58:12 +01:00
omer and GitHub
e20ccc5d0c
✨ Add support for injecting request header value into ban HTML template ( #296 )
...
* Add parameter to specify Request header value to inject in HTML template
* Add documentation for specifying request header value
* Fix example in docs for CustomHeader
* Update parameter name to traceCustomHeader
* Ensure naming is consitent with project
2025-12-10 07:54:07 +01:00
maxlerebourg and GitHub
4ab4f3f183
✨ Transform banTemplate to add blocking reason and client IP ( #290 )
...
* ✨ Transform banTemplate to add blocking reason
* 🍱 fix test
* 🍱 fix lint
* 🍱 fix test
* 🍱 fix lint
* 🍱 fix lint
* 🍱 add doc and fix lint
* 🍱 fix lint
* 🍱 fix lint
* 🍱 fix lint
* 🍱 fix lint
* 🍱 fix lint
* 🍱 lint html
* 🍱 fix comments + fix wicketpeeker readme
* 🍱 Give ClientIP in ban page
* 🍱 fix test
2025-11-15 10:42:14 +01:00
a2d3708bc3
Do not cache decisions if DefaultDecisionSeconds=0 ( #280 )
...
* xx
* Remove outdated comment on decision caching
Remove comment about decision caching based on timeout.
---------
Co-authored-by: maxlerebourg <maxlerebourg@gmail.com >
2025-10-18 11:58:00 +02:00
65a2f79fb3
🐛 Not write response body for HEAD requests ( #277 )
...
* Fixes
* XX
* Fix
* 🍱 Lint
* 🍱 remove useless comments
---------
Co-authored-by: Max Lerebourg <maxlerebourg@gmail.com >
2025-10-06 11:19:19 +02:00
7c4f5163e9
✨ add custom selfhosted captcha ( #259 )
...
* ✨ Add wicketkeeper captcha
* ✨ Anom config
* 🍱 fix readme
* 🍱 fix lint
* 🍱 fix lint
* 🍱 normalize
* 🍱 fix lint
* 🍱 fix lint
* ✨ Add env for RemediationStatusCode (#250 )
* ✨ Add env for defaultStatusCode
* 📝 doc
* ✨ change name of the parameter
* 🔧 Add config check
* fix lint
* 📈 Report traffic dropped metrics to LAPI (#223 )
* Initial implementation
* fix
* fixes
* Fixes
* xx
* progress
* xx
* xx
* xx
* fix linter
* Progress
* Fixes
* xx
* xx
* Remove trace logger
* Last fix
* fix lint
* fix lint
* fix lint
---------
Co-authored-by: Max Lerebourg <maxlerebourg@gmail.com >
* ✨ Anom config
* 🍱 fix readme
* 🍱 fix lint
* 🍱 normalize
* 🍱 fix lint
* 📝 Add documentation
* 📝 Fix example and makefile and doc for wicketkeeper
* 🍱 fix last things
* 🍱 add disclaimer to use maxlerebourg docker image
* 🍱 Use official wicketpeeker image
* 🍱 revert unnecessary code
* 🍱 fix
---------
Co-authored-by: David <deivid.garcia.garcia@gmail.com >
Co-authored-by: max.lerebourg <max.lerebourg@monisnap.com >
Co-authored-by: mhx <mathieu@hanotaux.fr >
2025-09-01 19:41:45 +02:00
84a5674b14
📈 Report traffic dropped metrics to LAPI ( #223 )
...
* Initial implementation
* fix
* fixes
* Fixes
* xx
* progress
* xx
* xx
* xx
* fix linter
* Progress
* Fixes
* xx
* xx
* Remove trace logger
* Last fix
* fix lint
* fix lint
* fix lint
---------
Co-authored-by: Max Lerebourg <maxlerebourg@gmail.com >
2025-07-02 11:36:09 +02:00
maxlerebourg and GitHub
de7e382fde
✨ Add env for RemediationStatusCode ( #250 )
...
* ✨ Add env for defaultStatusCode
* 📝 doc
* ✨ change name of the parameter
* 🔧 Add config check
* fix lint
2025-07-01 21:59:12 +02:00
Lluís D. and GitHub
4bb6e830dc
Fix query of the GET /decisions endpoint ( #236 )
...
- banned=true query parameter doesn't exist based on LAPI
dcoumentation, remove it
2025-04-28 16:12:54 +02:00
mathieuHa and GitHub
78869ecf77
🔧 Add support for logLevel in any case ( #231 )
2025-04-06 10:41:16 +02:00
mathieuHa and GitHub
5418d35feb
✨ feat(logs) add supports write logs to files ( #217 )
...
* ✨ feat(logs) add supports write logs to files
* fix(lint) 🚨 fix go lint
* 🐛 fix(bug) check path is done only if provided
* 📝 doc(vars) add LogFilePath to vars
* 🦺 chore(review) update doc, configuration check and logger
2025-03-31 20:19:44 +02:00
blotus and GitHub
e4c84409e7
🔨 always set custom remediation header if configured for bans ( #218 )
2025-02-17 14:02:21 +01:00
maxlerebourg and GitHub
4708d76854
✨ Add variable to not block if redis is unreachable ( #214 )
...
* ✨ Add variable to not block if redis is unreachable
* 🚨 fix lint
* 📝 Update README.md
2025-02-10 20:10:29 +01:00
0e9620bfe9
👷 chore(ci) bump CI and automate dep updates ( #210 )
...
* 👷 chore(ci) bump CI and automate dep updates
* 🚨 chore(go) fix golang lint
* 🍱 fix lint
---------
Co-authored-by: Max Lerebourg <maxlerebourg@gmail.com >
2025-01-29 08:07:04 +01:00
maxlerebourg and GitHub
92f05b0ba5
✨ [BREAKING-CHANGE] Add CrowdsecAppsecBodyLimit ( #208 )
...
* ✨ Add CrowdsecAppsecBodyLimit
* 🍱 fix lint
* 🍱 fix lint
* 🍱 fix error on main
2025-01-24 21:04:45 +01:00
980a7dd05e
Add AppSec Path Variable ( #202 )
...
* Added Appsec Path config Variable
* ✨ Add path env var for lapi and appsec
* 🍱 Update README.md
---------
Co-authored-by: Tobias Heinze <tobias.heinze@telekom.de >
Co-authored-by: Max Lerebourg <maxlerebourg@gmail.com >
2025-01-24 20:12:30 +01:00
5c8a60118f
🐛 fix(user-agent) add version in ua to reduce warning logs from crowd… ( #195 )
...
* 🐛 fix(user-agent) add version in ua to reduce warning logs from crowdsec LAPI
* 🐛 fix(user-agent) add version in ua to reduce warning logs from crowdsec LAPI
* 🐛 fix(user-agent) remove whitespaces
* 🐛 fix(user-agent) Add Cap for Bouncer
---------
Co-authored-by: maxlerebourg <maxlerebourg@gmail.com >
2024-10-24 21:39:53 +02:00
mathieuHa and GitHub
8fb0a016b6
✨ Add Traefik Crowdsec Plugin Basic User Agent ( #192 )
...
* ✨ Add Traefik Crowdsec Plugin Basic User Agent
2024-10-05 13:15:34 +02:00
maxlerebourg and GitHub
45d5f38c4d
✨ add remediation header when plugin made decision ( #189 )
...
* ✨ add remediation header when plugin made decision
* 🍱 add documentation
2024-09-25 19:30:27 +02:00
mathieuHa and GitHub
36e6043c32
📝 doc(cache) Specify that local cache is in memory and not in the filesystem ( #177 )
2024-06-09 16:20:55 +02:00
maxlerebourg and GitHub
123cf15434
✨ Add CrowdsecAppsecUnreachableBlock ( #175 )
...
* ✨ Add CrowdsecAppsecUnreachableBlock
* 🍱 update readme
* 🍱 fix lint
* 🍱 fix lint
2024-06-09 10:59:45 +02:00
6187a722ca
167 feature update to go 122 ( #168 )
...
* ⬆️ Upgrade golang version
* 🚨 Optimize Lint for strings
* 🔒 ️ Add allow list of packages
* 🚨 Fix final lint
* 👷 Update ci
* 🍱 upgrade dependencies
* 🍱 fix comment
---------
Co-authored-by: Max Lerebourg <maxlerebourg@gmail.com >
2024-05-18 13:20:14 +02:00
70ad0365f0
🐛 fix content-type header for ban and captcha page ( #166 )
...
* 🍱 fix content-type header for ban and captcha page
* 🍱 Add comment to warn future developer
---------
Co-authored-by: max.lerebourg <max.lerebourg@monisnap.com >
2024-05-16 18:40:28 +02:00
ee97250acf
✨ Add grace period to reach LAPI without blocking further queries ( #153 )
...
* ✨ Add grace period to reach LAPI without blocking further queries
* 🐛 Fix config validation for maxFailedStreamUpdate
* 🚨 Fix some lint issue
* 🚨 Bypass lint complexity on ServeHTTP
* 🍱 fix and improve
* 🚨 Fix lint
* 🚨 Fix lint
* 🐛 Fix logic for update max failure
* 📝 Update doc and docker compose local reset
* 🍱 fix log nightmare
* 🍱 fix
---------
Co-authored-by: max.lerebourg <max.lerebourg@monisnap.com >
2024-05-01 18:07:44 +02:00
b6a0404efd
✨ Add user-agent header from crowdsec ( #149 )
...
* ✨ Add user-agent header from crowdsec
* 🐛 : https://github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin/issues/151
---------
Co-authored-by: maxlerebourg <maxlerebourg@gmail.com >
2024-04-16 13:26:46 +02:00
b8dd883bb6
130 feature custom html error page integration on 403 like captcha but for ban ( #145 )
...
* ✨ Add ban html template
* 📝 Add doc for custom ban page
* ⚰️ Remove old code due to merge
* ✏️ Fix merge remaining in html
* ✨ render banTemplate from html/template to string
* 🚨 : fix lint
---------
Co-authored-by: max.lerebourg <max.lerebourg@monisnap.com >
2024-04-04 21:32:31 +02:00
615e7ccf69
✨ Add ban html template ( #142 )
...
* ✨ Add ban html template
* 📝 Add doc for custom ban page
* 🍱 fix Mathieu work
* 🍱 fix lint
* 🍱 fix lint
* 🍱 fix lint
* 🍱 fix lint
---------
Co-authored-by: Max Lerebourg <maxlerebourg@gmail.com >
2024-04-03 17:58:18 +02:00
497d1a2928
✨ Implement captcha protection ( #139 )
...
* ✨ Implement captcha protection
* 🍱 fix lint
* 🍱 fix lint
* 🍱 fix lint
* 📝 Update exemple doc
Signed-off-by: Mathieu Hanotaux <mathieu@hanotaux.fr >
* 📝 Add doc for the captcha and update some exemples
Signed-off-by: Mathieu Hanotaux <mathieu@hanotaux.fr >
* 📝 Update doc readme with some arguments
Signed-off-by: Mathieu Hanotaux <mathieu@hanotaux.fr >
* 📝 Update doc
Signed-off-by: Mathieu Hanotaux <mathieu@hanotaux.fr >
* 📝 generic documentation in readme on catpcha feature
Signed-off-by: Mathieu Hanotaux <mathieu@hanotaux.fr >
* 📝 Update exemple captcha
Signed-off-by: Mathieu Hanotaux <mathieu@hanotaux.fr >
* 📝 Fix rendering and typos
Signed-off-by: Mathieu Hanotaux <mathieu@hanotaux.fr >
* 🍱 fix readme
* 📝 update doc ongoing
Signed-off-by: Mathieu Hanotaux <mathieu@hanotaux.fr >
* 📝 Add doc on crowdsec config
Signed-off-by: Mathieu Hanotaux <mathieu@hanotaux.fr >
* 📝 Add sequence diagram for captcha exemple
Signed-off-by: Mathieu Hanotaux <mathieu@hanotaux.fr >
* Fix rendering and typos
Signed-off-by: Mathieu Hanotaux <mathieu@hanotaux.fr >
* 📝 add mermaid basics graphs
Signed-off-by: Mathieu Hanotaux <mathieu@hanotaux.fr >
* 📝 Update first diagram
Signed-off-by: Mathieu Hanotaux <mathieu@hanotaux.fr >
* 📝 Update first seq diagram
Signed-off-by: Mathieu Hanotaux <mathieu@hanotaux.fr >
* 🐛 Fix bug in diagram syntax
Signed-off-by: Mathieu Hanotaux <mathieu@hanotaux.fr >
* 📝 rework all diagrams
Signed-off-by: Mathieu Hanotaux <mathieu@hanotaux.fr >
* 📝 Update a bit diagrams
Signed-off-by: Mathieu Hanotaux <mathieu@hanotaux.fr >
* 🌐 Fix lang fr
* 🚸 change advice on uniq lapi confusing for users
* ✅ Fix test du to rework on cache interface
* 🚨 Fix lint
---------
Signed-off-by: Mathieu Hanotaux <mathieu@hanotaux.fr >
Co-authored-by: max.lerebourg <max.lerebourg@monisnap.com >
Co-authored-by: Mathieu Hanotaux <mathieu@hanotaux.fr >
2024-04-01 11:41:28 +02:00
maxlerebourg and GitHub
575d3a02e5
✨ Add a logger instance to bouncer instance ( #134 )
...
* ✨ Add a logger instance to bouncer instance
* 🍱 fix test
* 🍱 fix lint
* 🍱 fix lint
* 🍱 fix lint
* 🍱 fix lint
* 🍱 fix lint
* 🍱 fix test
* 🍱 fix test
* 🍱 fix lint + test
* 🍱 fix test
* 🍱 fix test
* 🍱 fix test
* 🍱 fix lint
* 🍱 fix lint
2024-02-11 11:52:47 +01:00
maxlerebourg and GitHub
6c183d9231
✨ add a new mode to enable only appsec checking ( #128 )
...
* ✨ add a new mode to enable only appsec checking
* 🍱 fix comments
2024-02-06 19:42:28 +01:00
b68c692ed1
✨ add support for appsec in crowdsec ( #123 )
...
* ✨ add support for appsec in crowdsec
* 🐛 lint
* 🐛 fix lint
* 🐛 fix lint
* 🐛 fix lint
* fix: comments
* 🐛 lint and doc
* 🐛 fix comment and lint
* 📝 Start documentation for appsec with exemple
* 📝 Fix readme typos and update example
* 🚨 Fix Lint
---------
Co-authored-by: Mathieu Hanotaux <mathieu@hanotaux.fr >
2024-01-24 14:11:34 +01:00
07c8fae927
🔧 Add conf variable: CrowdsecStreamTimeout ( #110 )
...
* 🔧 Add conf variable: CrowdsecStreamTimeout
* 🥅 catch error from sscan
* ✨ fix ugly code
* 🐛 clean code
* ✨ fix type + wrong type assertion
* 🚨 fix lint go simplify
* 📝 Update readme with new variable
* 🍱 fix variable naming
* 🍱 revert vendor file
* 🍱 fix lint
---------
Co-authored-by: Max Lerebourg <maxlerebourg@gmail.com >
2023-08-20 15:49:49 +02:00
maxlerebourg and GitHub
0c2668d578
✨ add redis database selection ( #100 )
...
* ✨ add redis database selection
* 📝 update docs
* 📝 readme
2023-05-25 17:20:14 +02:00
maxlerebourg and GitHub
1fcd4f4e2f
✨ remove down at start if crowdsec unavailable ( #93 )
...
* ✨ remove down at start if crowdsec unavailable
* 🚨 fix lint
2023-03-12 20:49:00 +01:00
Max Lerebourg
46e581eca2
🍱 fix readme to add redis pass
2023-03-04 12:05:09 +01:00
maxlerebourg and GitHub
50690d1ac7
✨ handle redis password ( #87 )
...
* ✨ handle redis password
* 🍱 fix version
2023-03-04 11:51:54 +01:00
maxlerebourg and GitHub
b079073ff6
✨ handle isHealthy in the main function and log error became… ( #84 )
...
* ✨ handle isHealthy in the main function and log error became debug
* fix: lint
* fix: lint
2023-03-01 14:18:19 +01:00
maxlerebourg and GitHub
976cbb7d1f
81 bug stream mode stops blocking ( #82 )
...
* ✨ fix isHealthy issue at startup
* 🍱 not added in first commit ?
* 🍱 remove unused import
* 🍱 fix lint
* fix: lint
2023-01-30 14:03:10 +01:00
Max Lerebourg
80726df450
🐛 fix alone mode
2023-01-25 20:43:07 +01:00
maxlerebourg and GitHub
4132445a79
✨ cache decision in live mode for maximum defaultDecisionTimeout params ( #79 )
2023-01-18 21:03:09 +01:00
1b310b2c15
✨ Standalone mode come back ( #74 )
...
* ✨ Standalone mode come back
* 🍱 fix lint
* 🐛 fix tests cache
* 🐛 fix tests
* 🐛 fix tests
* 🚨 fix lint
* 🚨 fix lint
* 🍱 add logging
* :rotating-light: fix lint
* 🍱 fix comments
* 🐛 fix tests
* 🚨 Fix lint
Co-authored-by: Mathieu HANOTAUX <mathieu@hanotaux.fr >
2023-01-02 11:53:57 +01:00
maxlerebourg and GitHub
f14a4e3a68
✨ add external simpleredis and add log for cache ( #73 )
...
* ✨ add external simpleredis and add log for cache
* 🐛 fix comment
2022-12-31 16:18:08 +01:00
mathieuHa and GitHub
29878e837c
🐛 65 confused about configuring tls ( #69 )
...
* 🐛 Fix bug reading LAPIKEY, update exemples
* 🚨 Fix lint
2022-12-30 11:24:14 +01:00