<?php
/**
 * Configuracion - Backup a Wasabi S3 v2.0
 * =========================================
 * Copia de seguridad de public_html al bucket nicc-sistema en Wasabi.
 * Excluye data/media/ (ya almacenado en nicc-archivos).
 *
 * Modos:
 * 1. Manual: el usuario ejecuta desde la UI del deployer (aplicar.php)
 * 2. Programado: cron del servidor ejecuta backup_cron.php
 *
 * Estrategia v2: Upload por lotes (batches de 30 archivos) para
 * evitar timeout de Cloudflare (100s). Cada request AJAX < 60s.
 */

// Ruta base de escaneo
define('SEARCH_PATH', '/home/systeng3/public_html');

// Token de seguridad (solo para cron/CLI, NO para UI web)
define('SECURITY_TOKEN', 'nicc2026backup');

// Tiempo maximo por request AJAX (segundos) - debe ser < 90s por Cloudflare
define('MAX_REQUEST_TIME', 90);

// Memoria maxima
define('MEMORY_LIMIT', '512M');

// Directorio de logs
define('LOG_DIR', __DIR__ . '/logs');

// Archivo de progreso (para mostrar ultimo cron en la UI)
define('PROGRESS_FILE', __DIR__ . '/progreso_backup.json');

// Archivo de lock
define('LOCK_FILE', __DIR__ . '/backup.lock');

// Timeout del lock en segundos (si el lock tiene mas de esto, se ignora)
define('LOCK_TIMEOUT', 600);

// Tamano maximo de batch (archivos por request AJAX)
define('BATCH_SIZE', 100);

// Uploads simultaneos con curl_multi (por batch)
define('PARALLEL_UPLOADS', 5);

// ============================================================
// WASABI S3 - BUCKET DESTINO (nicc-sistema)
// ============================================================
define('WASABI_ACCESS_KEY', '6BS5CH0SFZO5A3IX9RIS');
define('WASABI_SECRET_KEY', 'P0w3qMNneAtDVl6afrN1IZgsoEIVa0ntpVui5CWP');
define('WASABI_BUCKET', 'nicc-sistema');
define('WASABI_REGION', 'us-east-1');
define('WASABI_ENDPOINT', 'https://s3.wasabisys.com');

// ============================================================
// EXCLUSIONES
// ============================================================
// Carpetas a excluir (relativas a cada wiki)
$EXCLUDE_DIRS = [
    'data/media',           // Media ya esta en nicc-archivos
    'data/media_attic',     // Historial de versiones de media
    'data/media_meta',      // Metadata de media
    'data/attic',           // Historial de versiones de paginas (puede ser enorme)
    'data/tmp',             // Archivos temporales
    'data/cache',           // Cache regenerable
    'data/locks',           // Locks temporales
    'data/index',           // Indice regenerable
];

// Archivos a excluir (por nombre)
$EXCLUDE_FILES = [
    '.htaccess.bak',
    'Thumbs.db',
    '.DS_Store',
    '.gitignore',
];

// Extensiones a excluir
$EXCLUDE_EXTENSIONS = [];

// Tamano maximo por archivo (100 MB)
define('MAX_FILE_SIZE', 100 * 1024 * 1024);

// ============================================================
// v2.1 - OPTIMIZACIONES
// ============================================================

// Directorio de manifiestos locales (para skip rapido sin consultar Wasabi)
define('MANIFEST_DIR', __DIR__ . '/manifests');

// Wikis a procesar en paralelo desde la UI
define('WIKI_CONCURRENCY', 3);

// Compresion gzip para archivos de texto antes de subir
define('COMPRESS_ENABLED', true);
define('COMPRESS_MIN_SIZE', 1024); // Solo comprimir archivos > 1KB

// Extensiones comprimibles
$COMPRESS_EXTENSIONS = [
    'php', 'html', 'htm', 'css', 'js', 'json', 'xml', 'txt',
    'less', 'conf', 'svg', 'sql', 'md', 'log', 'ini', 'htaccess',
];
