From 1e2d6baff9e9a5acc300543784323924adca7088 Mon Sep 17 00:00:00 2001
From: Julien Loizelet
Date: Fri, 16 May 2025 17:19:25 +0900
Subject: [PATCH 1/7] feat(settings): Add intro before settings
---
inc/Admin/settings.php | 15 ++++++++++++++-
inc/assets/crowdsec.css | 27 +++++++++++++++++++++++++++
2 files changed, 41 insertions(+), 1 deletion(-)
diff --git a/inc/Admin/settings.php b/inc/Admin/settings.php
index c0474206..a1cd049f 100644
--- a/inc/Admin/settings.php
+++ b/inc/Admin/settings.php
@@ -59,9 +59,22 @@ function crowdsec_multi_save_settings()
** Section "Connection details" **
*********************************/
+ function getIntro()
+ {
+
+ $intro ='Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam at magna vitae nunc commodo lacinia sit
+ amet et dolor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam at magna vitae nunc
+ commodo lacinia sit amet et dolor.
+
Subscribe
+
';
+
+ return $intro;
+ }
+
add_settings_section('crowdsec_admin_connection', 'Connection details', function () {
echo 'Connect WordPress to your CrowdSec Local API.';
- }, 'crowdsec_settings', ['after_section' => ' ']);
+ }, 'crowdsec_settings', ['after_section' => ' ', 'before_section' => getIntro()]);
// Field "crowdsec_api_url"
addFieldString('crowdsec_api_url', 'Local API URL', 'crowdsec_plugin_settings', 'crowdsec_settings', 'crowdsec_admin_connection', function ($input, $default ='') {
diff --git a/inc/assets/crowdsec.css b/inc/assets/crowdsec.css
index ee81a35a..ff367223 100644
--- a/inc/assets/crowdsec.css
+++ b/inc/assets/crowdsec.css
@@ -108,3 +108,30 @@ div.ui-toggle label>div:hover {
.time-text {
width: 5%;
}
+
+.crowdsec-button.button-primary {
+ height: 48px;
+ box-shadow: 0 2px 24px 0 rgba(248,171,19,.1),0 2px 12px 0 rgba(248,171,19,.25),0 2px 8px 0 rgba(248,171,19,.3),0 2px 4px 0 rgba(4,4,31,.15),0 1px 2px 0 rgba(4,4,31,.2),inset 0 1px 2px 0 hsla(48,95%,74%,.5);
+ background-image: linear-gradient(180deg,hsla(0,0%,100%,.1) 0,hsla(0,0%,100%,0) 92%),linear-gradient(180deg,#f8ab13,#f8ab13);
+ display: inline-flex;
+ cursor: pointer;
+ align-items: center;
+ justify-content: center;
+ border-radius: .5rem;
+ padding: .5rem 1.25rem;
+ font-size: 1rem;
+ font-weight: 500;
+ line-height: 1.5rem;
+ color: rgb(17, 24, 28);
+ transition-property: all;
+ transition-timing-function: cubic-bezier(.4,0,.2,1);
+ transition-duration: .3s;
+ opacity: .9;
+}
+
+.crowdsec-button.button-primary:hover {
+ opacity: 1;
+ background-image: linear-gradient(180deg,hsla(0,0%,100%,.1) 0,hsla(0,0%,100%,0) 92%),linear-gradient(180deg,#f8ab13,#f8ab13);
+ color: rgb(17, 24, 28);
+}
+
From c7c59d080060e0b5dff6f189640551957cbc4385 Mon Sep 17 00:00:00 2001
From: Julien Loizelet
Date: Fri, 23 May 2025 16:55:58 +0900
Subject: [PATCH 2/7] feat(metrics): Rename usage metrics into remediation
metrics
---
README.md | 13 +++++++++++++
docs/USER_GUIDE.md | 22 +++++++++++-----------
inc/Admin/advanced-settings.php | 13 +++++++------
inc/Admin/init.php | 4 ++--
4 files changed, 33 insertions(+), 19 deletions(-)
diff --git a/README.md b/README.md
index 13570d1e..14c666f1 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,16 @@
+
+
+**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)*
+
+- [CrowdSec WordPress Bouncer](#crowdsec-wordpress-bouncer)
+ - [Usage](#usage)
+ - [Installation](#installation)
+ - [Technical notes](#technical-notes)
+ - [Developer guide](#developer-guide)
+ - [License](#license)
+
+
+
# CrowdSec WordPress Bouncer

diff --git a/docs/USER_GUIDE.md b/docs/USER_GUIDE.md
index ade552f2..b9254f70 100644
--- a/docs/USER_GUIDE.md
+++ b/docs/USER_GUIDE.md
@@ -12,7 +12,7 @@
- [Usage](#usage)
- [Features](#features)
- [Apply a remediation: captcha or ban](#apply-a-remediation-captcha-or-ban)
- - [Usage metrics](#usage-metrics)
+ - [Remediation metrics](#remediation-metrics)
- [Understanding the limitations of the bouncer](#understanding-the-limitations-of-the-bouncer)
- [Configurations](#configurations)
- [General settings](#general-settings)
@@ -71,9 +71,9 @@ Please note that it is possible to customize all the colors of these pages in a
On the other hand, all texts are also fully customizable. This will allow you, for example, to present translated pages in your users’ language.
-#### Usage metrics
+#### Remediation metrics
-If you activate usage metrics push, the bouncer will provide usage data to the Local API, allowing for a unified view of its behavior and insights.
+If you activate remediation metrics push, the bouncer will provide usage data to the Local API, allowing for a unified view of its behavior and insights.
Please see [below setting](#advanced-settings) and [CrowdSec documentation](https://doc.crowdsec.net/docs/next/observability/usage_metrics/) for more information.
@@ -140,8 +140,8 @@ If you are using a Block as a Service (BLaaS) LAPI URL (i.e. starting with `http
note the following:
- The Authentication type must be "Bouncer API key"
-- Stream mode must be enabled (see Communication mode with the Local API in Advanced Settings)
-- Usage Metrics cannot be sent (see Usage Metrics in [Advanced settings](#advanced-settings)).
+- Stream mode must be enabled (see Communication mode with the Local API in [Advanced settings](#advanced-settings)).
+- Remediation Metrics cannot be sent (see Remediation Metrics in [Advanced settings](#advanced-settings)).
- AppSec component cannot be used (see Appsec Component in [Advanced settings](#advanced-settings))
***
@@ -272,7 +272,7 @@ In the `Theme customization` part, you can modify texts and colors of ban and ca
#### Advanced settings
-In the `Advanced` part, you can enable/disable the stream mode, enable/disable usage metrics, choose your cache system for your CrowdSec Local API, handle your remediation policy, manage geolocation feature, adjust some debug parameters and testing parameters.
+In the `Advanced` part, you can enable/disable the stream mode, enable/disable remediation metrics, choose your cache system for your CrowdSec Local API, handle your remediation policy, manage geolocation feature, adjust some debug parameters and testing parameters.

@@ -298,17 +298,17 @@ With the stream mode, every decision is retrieved in an asynchronous way. Here y
***
-
+
***
-`Usage Metrics → Enable the Usage Metrics`
+`Remediation Metrics → Enable the Remediation Metrics`
-Enable usage metrics to gain visibility: monitor incoming traffic and blocked threats for better security insights.
+Enable remediation metrics to gain visibility: monitor incoming traffic and blocked threats for better security insights.
-If this option is enabled, a cron job will push usage metrics to the Local API every 15 minutes.
+If this option is enabled, a cron job will push remediation metrics to the Local API every 15 minutes.
-**N.B** : There is also a push button if you want to push usage metrics manually.
+**N.B** : There is also a push button if you want to push remediation metrics manually.
***
diff --git a/inc/Admin/advanced-settings.php b/inc/Admin/advanced-settings.php
index fda5768a..cf778a98 100644
--- a/inc/Admin/advanced-settings.php
+++ b/inc/Admin/advanced-settings.php
@@ -157,15 +157,16 @@ function crowdsec_multi_save_advanced_settings()
** Section "Usage Metrics" **
**************************/
$isUsageMetricsEnabled = is_multisite() ? get_site_option('crowdsec_usage_metrics') : get_option('crowdsec_usage_metrics');
- add_settings_section('crowdsec_admin_advanced_usage_metrics', 'Usage Metrics', function () {
+ add_settings_section('crowdsec_admin_advanced_usage_metrics', 'Remediation Metrics', function () {
}, 'crowdsec_advanced_settings',['after_section' => ' ']);
// Field "crowdsec_usage_metrics"
- addFieldCheckbox('crowdsec_usage_metrics', 'Enable Usage Metrics', 'crowdsec_plugin_advanced_settings', 'crowdsec_advanced_settings', 'crowdsec_admin_advanced_usage_metrics', function () {
+ addFieldCheckbox('crowdsec_usage_metrics', 'Enable Remediation Metrics', 'crowdsec_plugin_advanced_settings', 'crowdsec_advanced_settings', 'crowdsec_admin_advanced_usage_metrics', function () {
// Usage metrics push just activated.
$lapiUrl = is_multisite() ? get_site_option('crowdsec_api_url') : get_option('crowdsec_api_url');
if (0 === strpos($lapiUrl, Constants::BAAS_URL)) {
- AdminNotice::displayError('Pushing usage metrics with a Block as a Service LAPI ('.esc_html($lapiUrl).') is not supported. ');
+ AdminNotice::displayError('Pushing remediation metrics with a Block as a Service LAPI ('.esc_html
+ ($lapiUrl).') is not supported. ');
return false;
}
scheduleUsageMetricsPush();
@@ -175,9 +176,9 @@ function crowdsec_multi_save_advanced_settings()
unscheduleUsageMetricsPush();
return false;
}, '
- Enable usage metrics to gain visibility: monitor incoming traffic and blocked threats for better security insights.
- If this option is enabled, a cron job will push usage metrics to the Local API every 15 minutes.
- For more information about usage metrics, please refer to the documentation .
+ Enable remediation metrics to gain visibility: monitor incoming traffic and blocked threats for better security insights.
+ If this option is enabled, a cron job will push remediation metrics to the Local API every 15 minutes.
+ For more information about remediation metrics, please refer to the documentation .
'.displayBouncerMetricsInAdminPage().'
diff --git a/inc/Admin/init.php b/inc/Admin/init.php
index d6c825fc..d53cd014 100644
--- a/inc/Admin/init.php
+++ b/inc/Admin/init.php
@@ -301,9 +301,9 @@ function displayPushMetricsInAdminPage($isPushEnabled = false)
return '';
}
if( $isPushEnabled) {
- return '
';
+ return '
';
}
- return '
';
+ return '
';
}
catch (Exception $e) {
From 0006e7dabeb917af9c043ada738f14ed04d94f4d Mon Sep 17 00:00:00 2001
From: Julien Loizelet
Date: Fri, 23 May 2025 17:06:28 +0900
Subject: [PATCH 3/7] chore(*): Prepare release 2.11.0
---
CHANGELOG.md | 13 ++++++++++++-
crowdsec.php | 4 ++--
.../screenshots/config-usage-metrics.png | Bin 65512 -> 68283 bytes
inc/Constants.php | 4 ++--
readme.txt | 6 +++++-
5 files changed, 21 insertions(+), 6 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 286febc8..6fa91935 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,17 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+---
+
+## [2.11.0](https://github.com/crowdsecurity/cs-wordpress-bouncer/releases/tag/v2.11.0) - 2025-05-30
+[_Compare with previous release_](https://github.com/crowdsecurity/cs-wordpress-bouncer/compare/v2.10.0...v2.11.0)
+
+
+### Added
+
+- Add Blocklist as a Service (BLaaS) subscription button
+
+
---
## [2.10.0](https://github.com/crowdsecurity/cs-wordpress-bouncer/releases/tag/v2.10.0) - 2025-05-09
@@ -312,7 +323,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
[_Compare with previous release_](https://github.com/crowdsecurity/cs-wordpress-bouncer/compare/v1.11.0...v2.0.0)
### Changed
-- All source code has been refactored using new CrowdSec PHP librairies:
+- All source code has been refactored using new CrowdSec PHP libraries:
- Logs messages have been changed
- User Agent sent to CrowdSec LAPI has been changed to `csphplapi_WordPress/vX.Y.Z`
diff --git a/crowdsec.php b/crowdsec.php
index 7dcc468f..7a49c5bd 100644
--- a/crowdsec.php
+++ b/crowdsec.php
@@ -4,7 +4,7 @@
* Plugin URI: https://github.com/crowdsecurity/cs-wordpress-bouncer
* Description: Safer Together. Protect your WordPress application with CrowdSec.
* Tags: security, captcha, ip-blocker, crowdsec, hacker-protection, appsec
- * Version: 2.10.0
+ * Version: 2.11.0
* Author: CrowdSec
* Author URI: https://www.crowdsec.net/
* Github: https://github.com/crowdsecurity/cs-wordpress-bouncer
@@ -13,7 +13,7 @@
* Requires PHP: 7.2
* Requires at least: 4.9
* Tested up to: 6.8
- * Stable tag: 2.10.0
+ * Stable tag: 2.11.0
* Text Domain: crowdsec-wp
* First release: 2021.
*/
diff --git a/docs/images/screenshots/config-usage-metrics.png b/docs/images/screenshots/config-usage-metrics.png
index 15c9be271e20e0f11b9985a6360569894ebd973c..14b3c9a9d5bbc67e07c97e4f1bde453d85cb2ca3 100644
GIT binary patch
literal 68283
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
z