novo sistema de validação de campos obrigatorios e configurações

This commit is contained in:
Renan Bernordi 2025-01-06 18:30:25 -03:00
parent 891c6df97a
commit 55ac7fe018

View file

@ -1,66 +1,111 @@
<?php <?php
/** /**
* Main configuration file
* Arquivo de configuração principal * Arquivo de configuração principal
* *
* This file contains all global system settings, including:
* Este arquivo contém todas as configurações globais do sistema, incluindo: * Este arquivo contém todas as configurações globais do sistema, incluindo:
* - Carregamento de variáveis de ambiente *
* - Definições de constantes do sistema * - Environment variables loading / Carregamento de variáveis de ambiente
* - Configurações de segurança * - System constants definition / Definições de constantes do sistema
* - Configurações de bots e user agents * - Security settings / Configurações de segurança
* - Lista de domínios bloqueados * - Bot and user agent settings / Configurações de bots e user agents
* - Configurações de cache S3 * - Blocked domains list / Lista de domínios bloqueados
* - S3 cache settings / Configurações de cache S3
*/ */
require_once __DIR__ . '/vendor/autoload.php'; require_once __DIR__ . '/vendor/autoload.php';
// Carrega as variáveis de ambiente do arquivo .env try {
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__); // Initialize environment variables
$dotenv->load(); // Inicializa as variáveis de ambiente
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
/** // Validate required fields
* Configurações básicas do sistema // Valida campos obrigatórios
*/ $dotenv->required([
define('SITE_NAME', isset($_ENV['SITE_NAME']) ? $_ENV['SITE_NAME'] : 'Marreta'); 'SITE_NAME',
define('SITE_DESCRIPTION', isset($_ENV['SITE_DESCRIPTION']) ? $_ENV['SITE_DESCRIPTION'] : 'Chapéu de paywall é marreta!'); 'SITE_DESCRIPTION',
define('SITE_URL', isset($_ENV['SITE_URL']) ? $_ENV['SITE_URL'] : 'https://' . $_SERVER['HTTP_HOST']); 'SITE_URL'
define('DNS_SERVERS', isset($_ENV['DNS_SERVERS']) ? $_ENV['DNS_SERVERS'] : '1.1.1.1, 8.8.8.8'); ])->notEmpty();
define('DISABLE_CACHE', isset($_ENV['DISABLE_CACHE']) ? filter_var($_ENV['DISABLE_CACHE'], FILTER_VALIDATE_BOOLEAN) : false);
define('SELENIUM_HOST', isset($_ENV['SELENIUM_HOST']) ? $_ENV['SELENIUM_HOST'] : 'localhost:4444');
define('CACHE_DIR', __DIR__ . '/cache');
define('DEBUG', isset($_ENV['DEBUG']) ? filter_var($_ENV['DEBUG'], FILTER_VALIDATE_BOOLEAN) : false);
define('LANGUAGE', isset($_ENV['LANGUAGE']) ? $_ENV['LANGUAGE'] : 'pt-br');
/** // Custom URL validation
* Configurações de Redis // Validação personalizada de URL
*/ if (!filter_var($_ENV['SITE_URL'], FILTER_VALIDATE_URL)) {
define('REDIS_HOST', isset($_ENV['REDIS_HOST']) ? $_ENV['REDIS_HOST'] : 'localhost'); throw new Exception('SITE_URL must be a valid URL');
define('REDIS_PORT', isset($_ENV['REDIS_PORT']) ? $_ENV['REDIS_PORT'] : 6379); }
define('REDIS_PREFIX', isset($_ENV['REDIS_PREFIX']) ? $_ENV['REDIS_PREFIX'] : 'marreta:');
/** /**
* Configurações do Hawk.so * Basic system settings
*/ * Configurações básicas do sistema
define('HAWK_TOKEN', isset($_ENV['HAWK_TOKEN']) ? $_ENV['HAWK_TOKEN'] : null); */
define('SITE_NAME', $_ENV['SITE_NAME']);
define('SITE_DESCRIPTION', $_ENV['SITE_DESCRIPTION']);
define('SITE_URL', $_ENV['SITE_URL']);
// Optional settings with default values
// Configurações opcionais com valores padrão
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('DEBUG', isset($_ENV['DEBUG']) ?
filter_var($_ENV['DEBUG'], FILTER_VALIDATE_BOOLEAN) : false);
define('LANGUAGE', $_ENV['LANGUAGE'] ?? 'pt-br');
/** /**
* Configurações de Cache S3 * Redis settings
*/ * Configurações do Redis
define('S3_CACHE_ENABLED', isset($_ENV['S3_CACHE_ENABLED']) ? filter_var($_ENV['S3_CACHE_ENABLED'], FILTER_VALIDATE_BOOLEAN) : false); */
if (S3_CACHE_ENABLED) { define('REDIS_HOST', $_ENV['REDIS_HOST'] ?? 'localhost');
define('S3_ACCESS_KEY', $_ENV['S3_ACCESS_KEY'] ?? ''); define('REDIS_PORT', $_ENV['REDIS_PORT'] ?? 6379);
define('S3_SECRET_KEY', $_ENV['S3_SECRET_KEY'] ?? ''); define('REDIS_PREFIX', $_ENV['REDIS_PREFIX'] ?? 'marreta:');
define('S3_BUCKET', $_ENV['S3_BUCKET'] ?? '');
define('S3_REGION', $_ENV['S3_REGION'] ?? 'us-east-1'); /**
define('S3_FOLDER', $_ENV['S3_FOLDER'] ?? 'cache/'); * Hawk.so settings
define('S3_ACL', $_ENV['S3_ACL'] ?? 'private'); * Configurações do Hawk.so
define('S3_ENDPOINT', $_ENV['S3_ENDPOINT'] ?? null); */
define('HAWK_TOKEN', $_ENV['HAWK_TOKEN'] ?? null);
/**
* S3 Cache settings
* Configurações de Cache S3
*/
define('S3_CACHE_ENABLED', isset($_ENV['S3_CACHE_ENABLED']) ?
filter_var($_ENV['S3_CACHE_ENABLED'], FILTER_VALIDATE_BOOLEAN) : false);
if (S3_CACHE_ENABLED) {
// Validate required S3 settings when S3 cache is enabled
// Valida configurações obrigatórias do S3 quando o cache S3 está ativado
$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 system configurations
* Carrega as configurações do sistema
*/
define('USER_AGENTS', require __DIR__ . '/data/user_agents.php');
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());
} }
/**
* Carrega as configurações do sistema
*/
define('USER_AGENTS', require __DIR__ . '/data/user_agents.php');
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');