CodePress CMS v1.8.0: BotGuard security engine, HAProxy docs & ARIA fix

- Implement BotGuard security engine (Bot, AI, Scraper & Empty UA blocking)
- Add Admin Security page (/admin/security) with toggles, rate limiter & block/allowlists
- Add per-IP RateLimiter handoff in index.php with HTTP 429 response
- Add dynamic /robots.txt generation and noai/noimageai meta tags
- Add RequestLogger status column and blocked badges in admin request logs
- Fix ARIAComponents.php syntax errors on lines 67, 137, 262
- Add HAProxy / PFSense bot blocking & IP forwarding guide (docs/haproxy-bot-blocking.md)
- Update version to 1.8.0 with release notes in version.php and guides
This commit is contained in:
2026-07-29 14:26:48 +02:00
parent 5884877f18
commit 375a39c458
18 changed files with 618 additions and 117 deletions
+15 -3
View File
@@ -70,6 +70,7 @@
<th>IP</th>
<th>Pagina</th>
<th>Type / Gebruiker</th>
<th>Status</th>
<th>Taal</th>
<th>User agent</th>
<th>Referrer</th>
@@ -77,7 +78,7 @@
</thead>
<tbody>
<?php foreach ($requestLogs as $log): ?>
<tr>
<tr class="<?= str_starts_with($log['status'] ?? 'ok', 'blocked') ? 'table-danger' : '' ?>">
<td class="text-nowrap small text-muted"><?= htmlspecialchars($log['time']) ?></td>
<td><code class="small"><?= htmlspecialchars($log['ip']) ?></code></td>
<td><?= htmlspecialchars($log['page']) ?></td>
@@ -86,9 +87,20 @@
<i class="bi <?= $log['visitor_info']['icon'] ?>"></i> <?= $log['visitor_info']['label'] ?>
</span>
</td>
<td>
<?php if (str_starts_with($log['status'] ?? 'ok', 'blocked')): ?>
<span class="badge bg-danger" title="<?= htmlspecialchars($log['status']) ?>">
<i class="bi bi-shield-x"></i> Geblokkeerd
</span>
<?php else: ?>
<span class="badge bg-success" title="Toegestaan">
<i class="bi bi-check-circle"></i> OK
</span>
<?php endif; ?>
</td>
<td><?= htmlspecialchars($log['lang']) ?></td>
<td class="small text-muted" title="<?= htmlspecialchars($log['ua']) ?>"><?= htmlspecialchars(substr($log['ua'], 0, 60)) ?><?= strlen($log['ua']) > 60 ? '…' : '' ?></td>
<td class="small text-muted" title="<?= htmlspecialchars($log['referrer']) ?>"><?= htmlspecialchars(substr($log['referrer'], 0, 40)) ?><?= strlen($log['referrer']) > 40 ? '…' : '' ?></td>
<td class="small text-muted" title="<?= htmlspecialchars($log['ua']) ?>"><?= htmlspecialchars(substr($log['ua'], 0, 50)) ?><?= strlen($log['ua']) > 50 ? '…' : '' ?></td>
<td class="small text-muted" title="<?= htmlspecialchars($log['referrer']) ?>"><?= htmlspecialchars(substr($log['referrer'], 0, 30)) ?><?= strlen($log['referrer']) > 30 ? '…' : '' ?></td>
</tr>
<?php endforeach; ?>
</tbody>