diff --git a/README.md b/README.md index 9daf481..8994d48 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,9 @@ For any further questions, don't hesitate to contact me under bfstop@bfroehler.i - Sending the test email needs the permission to change the settings, and the .htaccess and GeoIP database path settings are validated. - Subnets with a prefix length like `1e1` or `0x8` are no longer accepted. +- The "Blocked IPs (database)" list now shows whether expired blocks are deleted + automatically ("Prune old attempts" setting), and the username statistics view says + that the table is limited to 10,000 usernames. ## 2.0.0: Joomla 5/6 migration diff --git a/admin/language/de-DE/de-DE.com_bfstop.ini b/admin/language/de-DE/de-DE.com_bfstop.ini index 968d0b9..35a4580 100644 --- a/admin/language/de-DE/de-DE.com_bfstop.ini +++ b/admin/language/de-DE/de-DE.com_bfstop.ini @@ -83,6 +83,8 @@ COM_BFSTOP_YOUR_IP_IS="Deine IP-Adresse aus der Sicht von BFStop ist %s." COM_BFSTOP_INSTALL_HINT="Bitte sicherstellen, dass BFStop aktiviert und richtig konfiguriert ist! Gehe zur Plugin-Übersicht, klicke auf den Eintrag 'System - Brute Force Stop' (du kannst auch danach oder Teilen des Namens suchen, um es in der langen Liste schneller zu finden), dann setze das Plugin auf 'Aktiviert' - gehe dann zur Einstellungen-Ansicht der Komponente, um es nach deinen Bedürfnissen zu konfigurieren!" COM_BFSTOP_FAILEDLOGIN_AUTOPURGE_ENABLED="Fehlgeschlagene Login-Versuche, die älter als %d Wochen sind, werden automatisch gelöscht. Dies kann über die Einstellung 'Löschen alter Einträge' im Reiter 'Advanced' der Einstellungen geändert werden." COM_BFSTOP_FAILEDLOGIN_AUTOPURGE_DISABLED="Alte fehlgeschlagene Login-Versuche werden derzeit nicht automatisch gelöscht. Um das zu aktivieren, 'Löschen alter Einträge' im Reiter 'Advanced' der Einstellungen setzen, oder mit dem Button 'Alte Einträge löschen' manuell aufräumen." +COM_BFSTOP_BLOCKLIST_AUTOPURGE_ENABLED="Abgelaufene Sperren (und ihre Entsperr-Einträge), die vor mehr als %d Wochen geendet haben, werden automatisch gelöscht. Dies kann über die Einstellung 'Löschen alter Einträge' im Reiter 'Advanced' der Einstellungen geändert werden. Permanente Sperren werden nie automatisch gelöscht." +COM_BFSTOP_BLOCKLIST_AUTOPURGE_DISABLED="Abgelaufene Sperren werden derzeit nicht automatisch gelöscht. Um das zu aktivieren, 'Löschen alter Einträge' im Reiter 'Advanced' der Einstellungen setzen. Permanente Sperren werden nie automatisch gelöscht." COM_BFSTOP_FAILEDLOGIN_PURGE_BUTTON="Alte Einträge löschen" COM_BFSTOP_FAILEDLOGIN_PURGE_TITLE="Alte fehlgeschlagene Login-Versuche löschen" COM_BFSTOP_FAILEDLOGIN_PURGE_DESC="Alle fehlgeschlagenen Login-Versuche, die älter als die angegebene Anzahl an Tagen sind, werden endgültig gelöscht. Dies kann nicht rückgängig gemacht werden. Sperren sind davon nicht betroffen." @@ -99,6 +101,7 @@ COM_BFSTOP_HEADING_RANK="#" COM_BFSTOP_HEADING_FAILED_ATTEMPTS="Fehlgeschlagene Logins" COM_BFSTOP_HEADING_FIRST_ATTEMPT="Erster Versuch" COM_BFSTOP_USERNAMESTATS_INFO="Die bei fehlgeschlagenen Login-Versuchen verwendeten Benutzernamen, und wie oft jeder davon verwendet wurde. Diese Statistik wird unabhängig von den fehlgeschlagenen Login-Versuchen geführt und ist daher nicht betroffen, wenn alte fehlgeschlagene Login-Versuche gelöscht werden; sie beginnt erst mit der Installation von (bzw. dem Update auf) BFStop 2.0.0, ausgehend von den zu diesem Zeitpunkt vorhandenen fehlgeschlagenen Login-Versuchen. Ein Klick auf einen Benutzernamen zeigt die dafür noch gespeicherten fehlgeschlagenen Login-Versuche." +COM_BFSTOP_USERNAMESTATS_AUTOTRIM="Es werden höchstens %d Benutzernamen gespeichert: darüber hinaus werden automatisch (einmal täglich) die Benutzernamen mit den wenigsten Versuchen gelöscht. Dieses Limit kann nicht geändert werden." COM_BFSTOP_USERNAMESTATS_EXISTING_ACCOUNT="Existierendes Konto" COM_BFSTOP_USERNAMESTATS_EXISTING_ACCOUNT_DESC="Auf dieser Seite existiert ein Benutzerkonto mit diesem Benutzernamen." COM_BFSTOP_USERNAMESTATS_PURGE_BUTTON="Veraltete Benutzernamen löschen" diff --git a/admin/language/en-GB/en-GB.com_bfstop.ini b/admin/language/en-GB/en-GB.com_bfstop.ini index cc7b6b1..e9b25bd 100644 --- a/admin/language/en-GB/en-GB.com_bfstop.ini +++ b/admin/language/en-GB/en-GB.com_bfstop.ini @@ -135,6 +135,8 @@ COM_BFSTOP_SETTINGS_RISK_MIN_BLOCK_NUMBER_LABEL="Minimum Allowed Attempts" COM_BFSTOP_SETTINGS_RISK_MIN_BLOCK_NUMBER_DESC="A hard floor on the risk-adjusted number of allowed failed attempts, so an extreme risk score can never reduce it to zero (or below) and effectively block on the very first attempt." COM_BFSTOP_FAILEDLOGIN_AUTOPURGE_ENABLED="Failed login entries older than %d weeks are deleted automatically. You can change this via the 'Prune old attempts' setting in the 'Advanced' tab of the Settings." COM_BFSTOP_FAILEDLOGIN_AUTOPURGE_DISABLED="Old failed login entries are currently not deleted automatically. To enable this, set 'Prune old attempts' in the 'Advanced' tab of the Settings, or use the 'Delete Old Entries' button to clean up manually." +COM_BFSTOP_BLOCKLIST_AUTOPURGE_ENABLED="Expired blocks (and their unblock records) which ended more than %d weeks ago are deleted automatically. You can change this via the 'Prune old attempts' setting in the 'Advanced' tab of the Settings. Permanent blocks are never deleted automatically." +COM_BFSTOP_BLOCKLIST_AUTOPURGE_DISABLED="Expired blocks are currently not deleted automatically. To enable this, set 'Prune old attempts' in the 'Advanced' tab of the Settings. Permanent blocks are never deleted automatically." COM_BFSTOP_FAILEDLOGIN_PURGE_BUTTON="Delete Old Entries" COM_BFSTOP_FAILEDLOGIN_PURGE_TITLE="Delete Old Failed Login Entries" COM_BFSTOP_FAILEDLOGIN_PURGE_DESC="All failed login entries older than the given number of days will be permanently deleted. This cannot be undone. Blocks are not affected." @@ -151,6 +153,7 @@ COM_BFSTOP_HEADING_RANK="#" COM_BFSTOP_HEADING_FAILED_ATTEMPTS="Failed logins" COM_BFSTOP_HEADING_FIRST_ATTEMPT="First attempt" COM_BFSTOP_USERNAMESTATS_INFO="The usernames used in failed login attempts, and how often each was used. These statistics are kept independently of the failed login entries, so they are not affected when old failed login entries are deleted; they only start with the installation of (or update to) BFStop 2.0.0, seeded from the failed login entries which existed at that time. Click a username to see its failed login entries that are still stored." +COM_BFSTOP_USERNAMESTATS_AUTOTRIM="At most %d usernames are kept: beyond that, the usernames with the fewest attempts are deleted automatically (once a day). This limit can't be changed." COM_BFSTOP_USERNAMESTATS_EXISTING_ACCOUNT="Existing account" COM_BFSTOP_USERNAMESTATS_EXISTING_ACCOUNT_DESC="A user account with this username exists on this site." COM_BFSTOP_USERNAMESTATS_PURGE_BUTTON="Delete Stale Usernames" diff --git a/admin/src/View/Blocklist/HtmlView.php b/admin/src/View/Blocklist/HtmlView.php index c207ebe..0c3b55b 100644 --- a/admin/src/View/Blocklist/HtmlView.php +++ b/admin/src/View/Blocklist/HtmlView.php @@ -29,6 +29,7 @@ function display($tpl = null) // with .htaccess blocking, blocked requests never reach Joomla, // so attempts can't be counted $this->attemptsTracked = ParamHelper::get('blockMode', 'params', 'full') !== 'htaccess'; + $this->autoPurgeWeeks = (int) ParamHelper::get('deleteOld', 'params', 0); $this->addToolBar(); parent::display($tpl); } diff --git a/admin/src/View/Usernamestats/HtmlView.php b/admin/src/View/Usernamestats/HtmlView.php index 6d1f7bd..8bedde9 100644 --- a/admin/src/View/Usernamestats/HtmlView.php +++ b/admin/src/View/Usernamestats/HtmlView.php @@ -11,6 +11,7 @@ defined('_JEXEC') or die; use Codeling\Component\Bfstop\Administrator\Helper\ToolbarHelper as BfstopToolbarHelper; +use Codeling\Plugin\System\Bfstop\Helper\DatabaseHelper; use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; @@ -27,6 +28,7 @@ function display($tpl = null) $this->sortColumn = $state->get('list.ordering'); $this->sortDirection = $state->get('list.direction'); $this->maxAttempts = $this->get('MaxAttempts'); + $this->maxUsernames = DatabaseHelper::$USERNAME_STATS_MAX_ROWS; $this->canPurge = Factory::getApplication()->getIdentity()->authorise('core.delete', 'com_bfstop'); if ($this->canPurge) { diff --git a/admin/tmpl/blocklist/default.php b/admin/tmpl/blocklist/default.php index e68de3e..72dfbcb 100644 --- a/admin/tmpl/blocklist/default.php +++ b/admin/tmpl/blocklist/default.php @@ -9,8 +9,15 @@ use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Text; +use Joomla\CMS\Router\Route; +$settingsUrl = Route::_('index.php?option=com_bfstop&view=settings', false); ?> +