diff --git a/backend/config/config.php b/backend/config/config.php index ea8ee0f..60968a7 100644 --- a/backend/config/config.php +++ b/backend/config/config.php @@ -1,6 +1,17 @@ diff --git a/backend/config/mail-config.php b/backend/config/mail-config.php index bb883dc..48e59f6 100644 --- a/backend/config/mail-config.php +++ b/backend/config/mail-config.php @@ -1,25 +1,30 @@ 'HexaHost.de Contact Form', 'X-Priority' => '3', @@ -30,35 +35,22 @@ define('ADDITIONAL_HEADERS', [ 'Precedence' => 'bulk' ]); - - +// Erlaubte Domains für E-Mail-Adressen (optional) define('ALLOWED_EMAIL_DOMAINS', [ - - - - - - - - - - + // Leer lassen für alle Domains zu erlauben + // 'gmail.com', + // 'outlook.com', + // 'web.de', + // 'gmx.de' ]); - - +// Blacklist für E-Mail-Adressen (optional) define('BLACKLISTED_EMAILS', [ - - - - + // 'spam@example.com', + // 'test@test.com' ]); - -if (!defined('SMTP_HOST') || !defined('SMTP_USERNAME') || !defined('SMTP_PASSWORD')) { - die('SMTP-Konfiguration ist unvollständig. Bitte überprüfen Sie die mail-config.php'); -} - +// Überprüfung der E-Mail-Adressen if (!filter_var(SMTP_FROM_EMAIL, FILTER_VALIDATE_EMAIL)) { die('Ungültige SMTP_FROM_EMAIL Adresse'); } @@ -67,7 +59,7 @@ if (!filter_var(SMTP_TO_EMAIL, FILTER_VALIDATE_EMAIL)) { die('Ungültige SMTP_TO_EMAIL Adresse'); } - +// Logging-Funktion function logEmail($type, $data) { if (!LOG_EMAILS) return; @@ -84,21 +76,18 @@ function logEmail($type, $data) { file_put_contents($logFile, $logEntry, FILE_APPEND | LOCK_EX); } - - +// Hilfsfunktion für E-Mail-Validierung function isValidEmail($email) { if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { return false; } - - + // Prüfe Blacklist if (in_array($email, BLACKLISTED_EMAILS)) { return false; } - - + // Prüfe Domain-Whitelist (falls gesetzt) if (!empty(ALLOWED_EMAIL_DOMAINS)) { $domain = substr(strrchr($email, "@"), 1); if (!in_array($domain, ALLOWED_EMAIL_DOMAINS)) { @@ -109,26 +98,29 @@ function isValidEmail($email) { return true; } - - +/** + * Hilfsfunktion zum Abrufen der Konfiguration als Array + * Kompatibilität mit contact-handler.php + * + * @param string|null $key Optional: einzelner Schlüssel + * @return mixed Konfigurationsarray oder einzelner Wert + */ function getHexaHostConfig($key = null) { $config = [ - + // Absender/Empfänger 'from_email' => SMTP_FROM_EMAIL, 'from_name' => 'HexaHost.de Kontaktformular', 'to_email' => SMTP_TO_EMAIL, 'to_name' => 'HexaHost Support', - - + // Sicherheit 'max_requests_per_hour' => MAX_REQUESTS_PER_HOUR, 'honeypot_field' => 'website', 'enable_csrf' => ENABLE_CSRF_PROTECTION, 'min_message_length' => MIN_MESSAGE_LENGTH, 'max_message_length' => MAX_MESSAGE_LENGTH, - - + // Debug 'debug_mode' => DEBUG_MODE, 'log_errors' => LOG_EMAILS, ]; diff --git a/backend/config/products-config.php b/backend/config/products-config.php index 9d703aa..3f9db46 100644 --- a/backend/config/products-config.php +++ b/backend/config/products-config.php @@ -1,9 +1,18 @@ 'Virtual Private Container', 'short_name' => 'VPC', @@ -103,9 +112,9 @@ $PRODUCTS['vpc'] = [ ], ]; - - - +// ============================================================================ +// VIRTUAL PRIVATE SERVER (VPS) +// ============================================================================ $PRODUCTS['vps'] = [ 'name' => 'Virtual Private Server', 'short_name' => 'VPS', @@ -205,9 +214,9 @@ $PRODUCTS['vps'] = [ ], ]; - - - +// ============================================================================ +// MAIL GATEWAY +// ============================================================================ $PRODUCTS['mail-gateway'] = [ 'name' => 'Mail Gateway', 'short_name' => 'Mail', @@ -307,9 +316,9 @@ $PRODUCTS['mail-gateway'] = [ ], ]; - - - +// ============================================================================ +// WEBHOSTING +// ============================================================================ $PRODUCTS['webhosting'] = [ 'name' => 'Webhosting', 'short_name' => 'Webhosting', @@ -417,52 +426,68 @@ $PRODUCTS['webhosting'] = [ ], ]; +// ============================================================================ +// HILFSFUNKTIONEN +// ============================================================================ - - - - +/** + * Alle Produkte abrufen + */ function getAllProducts() { global $PRODUCTS; return $PRODUCTS; } - +/** + * Ein Produkt abrufen + */ function getProduct($productId) { global $PRODUCTS; return $PRODUCTS[$productId] ?? null; } - +/** + * Alle Pakete eines Produkts abrufen + */ function getProductPackages($productId) { global $PRODUCTS; return $PRODUCTS[$productId]['packages'] ?? []; } - +/** + * Ein bestimmtes Paket abrufen + */ function getPackage($productId, $packageId) { global $PRODUCTS; return $PRODUCTS[$productId]['packages'][$packageId] ?? null; } - +/** + * Preis eines Pakets abrufen + */ function getPackagePrice($productId, $packageId) { $package = getPackage($productId, $packageId); return $package['price'] ?? null; } - +/** + * Minimalen Preis eines Produkts abrufen + */ function getMinPrice($productId) { global $PRODUCTS; return $PRODUCTS[$productId]['min_price'] ?? null; } - +/** + * Preis formatiert ausgeben + */ function formatPrice($price, $withCurrency = true) { return $withCurrency ? $price . '€' : $price; } - +/** + * Generiert HTML für eine Paket-Karte + */ function renderPackageCard($productId, $packageId, $package) { $featuredClass = $package['featured'] ? ' featured' : ''; $featuredBadge = $package['featured'] ? '