<?php
/**
 * Configuracion de la Herramienta de Limpieza NICC v1
 * ====================================================
 * Elimina archivos obsoletos de cada subdominio DokuWiki
 * ANTES de aplicar el parche de distribucion (backup sie).
 *
 * Este archivo es compartido por limpiar.php y estado.php.
 */

// ============================================================
// RUTAS Y LIMITES
// ============================================================

// Ruta base de escaneo (produccion cPanel)
define('SEARCH_PATH', '/home4/systeng3/public_html');

// Profundidad maxima de escaneo
define('MAX_DEPTH', 3);

// Token de seguridad (requerido en cada peticion AJAX)
define('SECURITY_TOKEN', 'nicc2026limpieza');

// Tiempo maximo por subdominio (segundos)
define('MAX_EXECUTION_TIME', 300);

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

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

// Archivo de progreso
define('PROGRESS_FILE', __DIR__ . '/progreso_limpieza.json');

// Archivo de exclusion por subdominio
define('EXCLUSION_FILE', 'exclusion.txt');

// ============================================================
// PROTECCION: Directorios completos (arbol entero protegido)
// ============================================================
$PROTECTED_DIRS = [
    'data/media',       // Archivos subidos por usuarios
    'data/pages',       // Contenido de paginas wiki
    'data/meta',        // Bases de datos y metadatos del sistema
    'web',              // Contenido web personalizado del subdominio
];

// ============================================================
// PROTECCION: Archivos especificos (40 entradas: 34 originales + 2 .htaccess Riesgo 5 + 4 template style)
// ============================================================
$PROTECTED_FILES = [
    // --- data/meta/ (bases de datos) ---
    'data/meta/b3p.sqlite3',
    'data/meta/do.sqlite3',
    'data/meta/struct.sqlite3',

    // --- Raiz ---
    'favicon.ico',
    'index.html',

    // --- lib/images/smileys/ (logos personalizados) ---
    'lib/images/smileys/logo.gif',
    'lib/images/smileys/logo.png',

    // --- conf/ (configuracion critica por sitio) ---
    'conf/acl.auth.php',
    'conf/local.php',
    'conf/users.auth.php',
    'conf/.htaccess',           // Riesgo 5: proteccion de acceso web
    'data/.htaccess',           // Riesgo 5: proteccion de acceso web

    // --- lib/tpl/20cones/ (template personalizado) ---
    'lib/tpl/20cones/style.ini',
    'lib/tpl/20cones/css/20cones.less',
    'lib/tpl/20cones/favicon.ico',
    'lib/tpl/20cones/images/apple-touch-icon.png',
    'lib/tpl/20cones/images/dokuwiki-128.png',
    'lib/tpl/20cones/images/favicon.ico',
    'lib/tpl/20cones/images/logo_sie_asesorias.png',
    'lib/tpl/20cones/images/header-gradient.png',
    'lib/tpl/20cones/images/icon.png',
    'lib/tpl/20cones/images/logo.png',
    'lib/tpl/20cones/images/page-gradient.png',

    // --- lib/tpl/21cones/ (template personalizado) ---
    'lib/tpl/21cones/style.ini',
    'lib/tpl/21cones/css/20cones.less',
    'lib/tpl/21cones/favicon.ico',
    'lib/tpl/21cones/icon.png',
    'lib/tpl/21cones/images/apple-touch-icon.png',
    'lib/tpl/21cones/images/dokuwiki-128.png',
    'lib/tpl/21cones/images/favicon.ico',
    'lib/tpl/21cones/images/header-gradient.png',
    'lib/tpl/21cones/images/icon.png',
    'lib/tpl/21cones/images/logo.png',
    'lib/tpl/21cones/images/page-gradient.png',
    'lib/tpl/21cones/images/logo_sie_asesorias.png',

    // --- lib/plugins/bez/ (archivos personalizados por cliente) ---
    'lib/plugins/bez/tpl/thread_report.php',
    'lib/plugins/bez/tpl/thread.php',
    'lib/plugins/bez/tpl/thread_box.php',
    'lib/plugins/bez/meta/ajax_handler.php',
    'lib/plugins/bez/meta/crear_paginas_proyecto.php',

    // --- lib/plugins/niccproyectos/ ---
    'lib/plugins/niccproyectos/images/logo_sie_asesorias.png',
];

// ============================================================
// PROTECCION: Extensiones protegidas
// Riesgo 2: proteger archivos .comments del plugin Discussion
// ============================================================
$PROTECTED_EXTENSIONS = [
    'comments',         // data/meta/*.comments - datos del plugin Discussion
];

// ============================================================
// FASE 1 - RAIZ: Lista blanca de archivos permitidos
// Todo archivo en la raiz del subdominio que NO este en esta lista
// sera ELIMINADO. Las carpetas no se tocan (solo archivos).
// Los archivos de $PROTECTED_FILES tambien se conservan.
// ============================================================
$KEEP_ROOT_FILES = [
    'COPYING',
    'doku.php',
    'dokus.php',
    'feed.php',
    'index.php',
    'index.html',
    'VERSION',
    'README',
    'nota.txt',
    'exclusion.txt',
    'operativo.txt',
    '.datos.php',
    'favicon.ico',          // Tambien en $PROTECTED_FILES
];

// ============================================================
// FASE 2 - ELIMINACION: Solo ARCHIVOS dentro de estos directorios
// Borra los archivos (*.* ) pero conserva la carpeta como cascaron vacio.
// NO recursa en subdirectorios. Respeta protecciones.
// ============================================================
$DELETE_FILES_IN_DIRS = [
    'bin',
    'cgi-bin',
    'inc',
    'vendor',
    'data/log',
    'data/tmp',
    'data/cache',
    'data/index',
];

// ============================================================
// FASE 3 - ELIMINACION: Carpetas COMPLETAS (se borran con todo su contenido)
// Se elimina la carpeta entera incluyendo subcarpetas.
// Respeta protecciones ($PROTECTED_FILES, $PROTECTED_DIRS).
// ============================================================
$DELETE_FULL_DIRS = [
    'lib/exe',
    'lib/plugins',
    'lib/scripts',
    'lib/styles',
    'lib/tpl/20cones',          // Borra todo excepto archivos en $PROTECTED_FILES
    'lib/tpl/21cones',          // Borra todo excepto archivos en $PROTECTED_FILES
    'lib/tpl/dokuwiki',         // Template por defecto: se borra completo
    'conf/tpl',
];

// ============================================================
// EXCLUSION: Clientes especiales (12)
// Estos subdominios se saltan automaticamente.
// Tambien se salta cualquier subdominio con exclusion.txt
// ============================================================
$EXCLUSION_LIST = [
    'afca',
    'am',
    'auditoresyrevisoresls',
    'cbravo',
    'coltan',
    'consulaudit',
    'garzoncontadores',
    'ofq',
    'royal',
    'ryaccounting',
    'valpsconsulting',
    'xr',
];
