From e48534c69d13487fc594b2e11e026ec3b15d6541 Mon Sep 17 00:00:00 2001 From: Tower Date: Tue, 2 Jun 2026 18:28:06 +0200 Subject: [PATCH] add custom block templates and logging --- init.php | 150 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 140 insertions(+), 10 deletions(-) diff --git a/init.php b/init.php index b66826b..6542f36 100644 --- a/init.php +++ b/init.php @@ -43,6 +43,7 @@ $dirs = [ 'WEBROOT/src/MVC/Middleware', 'WEBROOT/src/MVC/Layout', 'WEBROOT/src/MVC/Layout/Templates', + 'WEBROOT/src/MVC/Layout/Block', 'WEBROOT/storage', 'WEBROOT/storage/uploads', 'WEBROOT/logs', @@ -396,6 +397,11 @@ DB_LIVE_DATABASE = "" [mail] MAIL_FROM = "bruno.eckhardt07@gmail.com" MAIL_TO = "bruno.eckhardt07@gmail.com" + +[logging] +LOG_ACCESS = true +LOG_SECURITY = true +BLOCK_PAGE_TEMPLATE = "modern" INI; // --- DB: databaseConnect.php --- @@ -557,19 +563,42 @@ PHP; $files['WEBROOT/src/MVC/Classes/Logger.php'] = <<<'PHP' getMessage(), $e->getFile(), $e->getLine(), $e->getTraceAsString()); - self::log($msg, 'CRITICAL', 'error.log'); + $message = sprintf("Uncaught Exception: '%s' with message '%s' in %s:%d\nStack trace:\n%s", get_class($e), $e->getMessage(), $e->getFile(), $e->getLine(), $e->getTraceAsString()); + self::log($message, 'CRITICAL', 'error.log'); } + public static function logError($errno, $errstr, $errfile, $errline) { $levels = [E_ERROR => 'ERROR', E_WARNING => 'WARNING', E_PARSE => 'PARSE_ERROR', E_NOTICE => 'NOTICE', E_USER_ERROR => 'USER_ERROR', E_USER_WARNING => 'USER_WARNING', E_USER_NOTICE => 'USER_NOTICE', E_DEPRECATED => 'DEPRECATED', E_USER_DEPRECATED => 'USER_DEPRECATED']; self::log("$errstr in $errfile on line $errline", $levels[$errno] ?? 'UNKNOWN', 'error.log'); @@ -1340,12 +1369,25 @@ use MVC\Classes\Client; */ class BlockMiddleware implements MiddlewareInterface { public function handle() { - $blockedIps = ['127.0.0.2']; + $blockedIps = ['127.0.0.1']; $ip = Client::ip(); if (in_array($ip, $blockedIps)) { Logger::log("Blocked IP attempt: $ip", 'SECURITY', 'blocked.log'); + + // Lade Konfiguration für das Template + $configFile = dirname(__DIR__, 2) . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'env.ini'; + $config = file_exists($configFile) ? parse_ini_file($configFile) : []; + $template = $config['BLOCK_PAGE_TEMPLATE'] ?? 'standard'; + + $templatePath = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'Layout' . DIRECTORY_SEPARATOR . 'Block' . DIRECTORY_SEPARATOR . $template . '.php'; + http_response_code(403); - die("Ihre IP-Adresse wurde blockiert."); + if (file_exists($templatePath)) { + include $templatePath; + } else { + die("Ihre IP-Adresse wurde blockiert."); + } + exit; } } } @@ -1358,18 +1400,28 @@ namespace MVC\Middleware; use MVC\Core\MiddlewareInterface; use MVC\Classes\Logger; +use MVC\Classes\Client; /** * Beispiel-Middleware: Wird bei jedem Request ausgeführt (Global) */ class EveryRequestMiddleware implements MiddlewareInterface { public function handle() { - $ip = $_SERVER['REMOTE_ADDR'] ?? 'unknown'; - $service = $_GET['service'] ?? 'home'; + $ip = Client::ip(); + + // Bestimme Service (Logik konsistent mit index.php) + $service = $_GET['service'] ?? null; + if ($service === null) { + $uri = parse_url($_SERVER['REQUEST_URI'] ?? '', PHP_URL_PATH); + $service = trim($uri, '/'); + if (empty($service)) { + $service = 'home'; + } + } + Logger::log("IP: $ip - Service: $service", 'ACCESS', 'access.log'); } } - PHP; $files['WEBROOT/src/MVC/Layout/Layout.php'] = <<<'PHP' @@ -2885,7 +2937,85 @@ $files['WEBROOT/src/MVC/View/test1.php'] = "

Service 1

HTML; - // --- CONFIG: routes.php --- + $files['WEBROOT/src/MVC/Layout/Block/standard.php'] = <<<'HTML' + + + + + + Zugriff verweigert + + + +
+

403 - Zugriff verweigert

+

Ihre IP-Adresse wurde aufgrund von Sicherheitsrichtlinien vorübergehend blockiert.

+

Bitte wenden Sie sich an den Administrator, falls Sie glauben, dass dies ein Fehler ist.

+
IP:
+
+ + +HTML; + +$files['WEBROOT/src/MVC/Layout/Block/modern.php'] = <<<'HTML' + + + + + + Systemmeldung + + + +
+
🛡️
+

ZUGRIFF GESPERRT

+

Ihre Verbindung wurde aus Sicherheitsgründen unterbrochen.

+ +
+ + +HTML; + +$files['WEBROOT/src/MVC/Layout/Block/minimal.php'] = <<<'HTML' + + + + + 403 Forbidden + + + +

403 Forbidden

+

Access to this resource is denied.

+
+
+Status: Blocked
+Source: 
+Time:   
+    
+ + +HTML; + +// --- CONFIG: routes.php --- $files['WEBROOT/src/config/routes.php'] = <<<'PHP'