main/app/config.php
2025-02-28 11:29:46 -03:00

74 lines
2.6 KiB
PHP

<?php
/**
* System configuration manager
* - Loads and validates environment variables
* - Defines global constants for system settings
* - Manages security rules and external service configs
*/
require_once __DIR__ . '/vendor/autoload.php';
try {
// Load environment variables
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
// Validate required fields
$dotenv->required([
'SITE_NAME',
'SITE_DESCRIPTION',
'SITE_URL'
])->notEmpty();
// Validate URL format
if (!filter_var($_ENV['SITE_URL'], FILTER_VALIDATE_URL)) {
throw new Exception('SITE_URL must be a valid URL');
}
// Core system settings
define('SITE_NAME', $_ENV['SITE_NAME']);
define('SITE_DESCRIPTION', $_ENV['SITE_DESCRIPTION']);
define('SITE_URL', $_ENV['SITE_URL']);
define('CLEANUP_DAYS', $_ENV['CLEANUP_DAYS'] ?? 0);
// Optional settings with defaults
define('DNS_SERVERS', $_ENV['DNS_SERVERS'] ?? '1.1.1.1, 8.8.8.8');
define('DISABLE_CACHE', isset($_ENV['DISABLE_CACHE']) ? filter_var($_ENV['DISABLE_CACHE'], FILTER_VALIDATE_BOOLEAN) : false);
define('SELENIUM_HOST', $_ENV['SELENIUM_HOST'] ?? 'localhost:4444');
define('CACHE_DIR', __DIR__ . '/cache');
define('LANGUAGE', $_ENV['LANGUAGE'] ?? 'pt-br');
// Logging configuration
define('LOG_LEVEL', $_ENV['LOG_LEVEL'] ?? 'WARNING'); // DEBUG, INFO, WARNING, ERROR, CRITICAL
define('LOG_DAYS_TO_KEEP', 7);
// S3 cache configuration
define('S3_CACHE_ENABLED', isset($_ENV['S3_CACHE_ENABLED']) ? filter_var($_ENV['S3_CACHE_ENABLED'], FILTER_VALIDATE_BOOLEAN) : false);
if (S3_CACHE_ENABLED) {
$dotenv->required([
'S3_ACCESS_KEY',
'S3_SECRET_KEY',
'S3_BUCKET'
])->notEmpty();
define('S3_ACCESS_KEY', $_ENV['S3_ACCESS_KEY']);
define('S3_SECRET_KEY', $_ENV['S3_SECRET_KEY']);
define('S3_BUCKET', $_ENV['S3_BUCKET']);
define('S3_REGION', $_ENV['S3_REGION'] ?? 'us-east-1');
define('S3_FOLDER', $_ENV['S3_FOLDER'] ?? 'cache/');
define('S3_ACL', $_ENV['S3_ACL'] ?? 'private');
define('S3_ENDPOINT', $_ENV['S3_ENDPOINT'] ?? null);
}
// Load security rules
define('BLOCKED_DOMAINS', require __DIR__ . '/data/blocked_domains.php');
define('DOMAIN_RULES', require __DIR__ . '/data/domain_rules.php');
define('GLOBAL_RULES', require __DIR__ . '/data/global_rules.php');
} catch (Dotenv\Exception\ValidationException $e) {
die('Environment Error: ' . $e->getMessage());
} catch (Exception $e) {
die('Configuration Error: ' . $e->getMessage());
}