Fix newest homepage detection, file creation dates, real IP, and request log visitor type
- Fix detectNewestPage() to search subdirectories recursively and handle language prefixes - Fix getFileInfo() to preserve frontmatter created date or ctime instead of overwriting with mtime - Automatically store created date in frontmatter when creating/editing files - Add RequestLogger::getClientIp() with proxy and Cloudflare header support - Replace domain column in request log with visitor/bot type badges (Human, AI, Search, Scraper) - Update 'Activiteitenlog' to 'Activiteiten log' in UI and guide
This commit is contained in:
+5
-21
@@ -21,6 +21,7 @@ if (file_exists($autoloader)) {
|
||||
// Load admin components
|
||||
$appConfig = require __DIR__ . '/../admin/config/app.php';
|
||||
require_once __DIR__ . '/../admin/src/AdminAuth.php';
|
||||
require_once __DIR__ . '/../cms/core/class/RequestLogger.php';
|
||||
|
||||
$auth = new AdminAuth($appConfig);
|
||||
|
||||
@@ -220,22 +221,8 @@ function handleDashboard(AdminAuth $auth, array $config): void
|
||||
|
||||
// Load recent request log
|
||||
$requestLogFile = $config['request_log'];
|
||||
$recentRequests = [];
|
||||
if (file_exists($requestLogFile)) {
|
||||
$lines = file($requestLogFile);
|
||||
$lines = array_slice($lines, -20);
|
||||
foreach ($lines as $line) {
|
||||
if (preg_match('/^\[([^\]]+)\] \[([^\]]+)\] \[([^\]]+)\] \[([^\]]*)\] \[([^\]]+)\] \[([^\]]*)\] \[([^\]]*)\]$/', trim($line), $m)) {
|
||||
$recentRequests[] = [
|
||||
'time' => $m[1],
|
||||
'ip' => $m[2],
|
||||
'page' => $m[5],
|
||||
'ua' => $m[6],
|
||||
];
|
||||
}
|
||||
}
|
||||
$recentRequests = array_reverse($recentRequests);
|
||||
}
|
||||
$requestLogger = new RequestLogger($requestLogFile);
|
||||
$recentRequests = $requestLogger->getLogs(20);
|
||||
|
||||
require __DIR__ . '/../admin/templates/layout.php';
|
||||
}
|
||||
@@ -318,10 +305,7 @@ function adminLog(array $config, string $level, string $message): void
|
||||
@mkdir($dir, 0755, true);
|
||||
}
|
||||
$timestamp = date('Y-m-d H:i:s');
|
||||
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['HTTP_X_REAL_IP'] ?? $_SERVER['REMOTE_ADDR'] ?? 'cli';
|
||||
if (($commaPos = strpos($ip, ',')) !== false) {
|
||||
$ip = trim(substr($ip, 0, $commaPos));
|
||||
}
|
||||
$ip = RequestLogger::getClientIp();
|
||||
@file_put_contents($logFile, "[{$timestamp}] [{$level}] [{$ip}] {$message}\n", FILE_APPEND);
|
||||
}
|
||||
|
||||
@@ -1489,7 +1473,7 @@ function handleLogs(AdminAuth $auth, array $config): void
|
||||
if (isset($_GET['clear'])) {
|
||||
$target = $activeTab === 'admin' ? $adminLogFile : $requestLogFile;
|
||||
@file_put_contents($target, '');
|
||||
$message = $activeTab === 'admin' ? 'Activiteitenlog gewist.' : 'Requestlog gewist.';
|
||||
$message = $activeTab === 'admin' ? 'Activiteiten log gewist.' : 'Requestlog gewist.';
|
||||
header('Location: /admin/logs?tab=' . $activeTab);
|
||||
exit;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user