From a2b7a68af01c0e68d2d0d4f2909e20b125eee540 Mon Sep 17 00:00:00 2001 From: O K Date: Sun, 7 Dec 2025 14:13:06 +0200 Subject: [PATCH] added log rotation. fix use class --- classes/BotLogger.php | 31 ++++++++++++++++++++++++++++--- classes/rules/FilterTrapRule.php | 1 - controllers/front/verify.php | 2 +- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/classes/BotLogger.php b/classes/BotLogger.php index 56046d6..438b547 100644 --- a/classes/BotLogger.php +++ b/classes/BotLogger.php @@ -3,13 +3,38 @@ class BotLogger { const LOG_FILE = _PS_ROOT_DIR_ . '/var/logs/botlimiter_ban.log'; + const MAX_SIZE = 10485760; // 10 MB public static function logBan($ip, $reason) { + // 1. Check file size before writing (The Safety Valve) + if (file_exists(self::LOG_FILE) && filesize(self::LOG_FILE) > self::MAX_SIZE) { + self::rotateLog(); + } + $date = date('Y-m-d H:i:s'); $message = sprintf("[%s] [IP:%s] [REASON:%s]" . PHP_EOL, $date, $ip, $reason); - - // Append to log file + + // 2. Append to log file file_put_contents(self::LOG_FILE, $message, FILE_APPEND | LOCK_EX); } -} \ No newline at end of file + + /** + * Rotates the log: + * 1. Deletes the .old file + * 2. Renames current .log to .old + * 3. Current logging continues in new empty file + */ + private static function rotateLog() + { + $backup_file = self::LOG_FILE . '.old'; + + // Remove ancient backup + if (file_exists($backup_file)) { + @unlink($backup_file); + } + + // Rename current to backup + @rename(self::LOG_FILE, $backup_file); + } +} diff --git a/classes/rules/FilterTrapRule.php b/classes/rules/FilterTrapRule.php index c5e5e81..b257f2c 100644 --- a/classes/rules/FilterTrapRule.php +++ b/classes/rules/FilterTrapRule.php @@ -1,5 +1,4 @@