Módulo VPSManager para WHMCS con configuración externa, acceso seguro al panel y métricas Graphite para LX.
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

3.5 KiB

Regresión de Copias de seguridad

Código consolidado

La lógica de acceso, contratación, transporte, parser, caché, callback y plantilla Smarty coincide por SHA-256 con el runtime de la validación real. Se conserva CurrentUser::user()->getClientsByPermission(‘products’), exigiendo la cuenta actual antes de comprobar pertenencia del servicio. No se usa Client::hasPermission.

Única diferencia visual posterior a esa validación: templates/backups.php añade tarjetas de resumen, etiquetas de tipo, tabla responsive, alineación numérica y estados de indisponibilidad/datos antiguos. CSS acotado a .o6h-copies, sin JavaScript ni peticiones nuevas. El diseño se probó localmente; todavía no se ha desplegado ni validado visualmente en el tema productivo.

Verificaciones ejecutadas en la consolidación

Comprobación Resultado
tests/run.php, PHP sin cURL real PASS: 192 aserciones
tests/backups.php PASS: 227 aserciones adicionales
tests/frontend.cjs PASS: 24 aserciones
php -l PASS: 19 archivos PHP
git diff --check PASS
tools/audit.py PASS heurístico, sin hallazgos
Render vacío/stale/indisponible PASS local sin warnings PHP

Mocks de WHMCS y cURL: los tests no ejecutan operaciones VPS ni consultas upstream. Las pruebas negativas incluyen deleteBackup, Start_Full_Backup, Start_Incr_Backup, Stop_Dequeue_Backup, keepBackup, browse y editConfig. Se rechazan host/endpoint con parámetros inyectados; GET exacto, sin cuerpo, sin redirects ni ejecución de enlaces/formularios. Permisos en otra cuenta o modelos inesperados no conceden acceso. Los fixtures incluidos son exclusivamente los HTML saneados y resultados esperados de prueba.

Evidencia real y límites

PASS real: HTTPS/TLS/Basic/200 y parser sobre un host autorizado; callback con integer1; página con cinco filas; acceso no contratado sin datos, servicio ajeno redirigido y sin sesión enviado a login (evidencia manual/capturas). DOM inspeccionado directamente; Network/consola confirmados por administrador. Caché con directorio0700/archivos0600; aislamiento HTTP confirmado por administrador. Logs accesibles revisados sin secretos atribuibles al módulo durante la ventana.

La sesión web de inspección usó Login as Client. Delegados NO APLICABLE en la instalación actual; deben probarse realmente si se incorporan. Revocación, vacío y stale conservan cobertura sintética. No se alteraron contrataciones. No se afirma revisión integral de emails/plantillas personalizadas ni de todos los logs/APM. El aspecto nuevo requiere comprobación en el tema real tras despliegue autorizado.

Contrato operativo

Cuenta administrativa upstream admitida como riesgo residual aceptado; preferir identidad separada de integración. Credenciales solo server-side y privadas. Única interfaz cerrada getHostSummary y único GET fijo con host administrativo validado tras autenticar, comprobar permiso/cuenta/pertenencia y Backup diario === integer1. NO_GO ante secretos expuestos, host/endpoint del cliente, proxy genérico, redirects, acciones inyectables, logs sensibles o consultas de servicios ajenos.

No se incluyen controles temporales, observadores de validación, datos de servicios reales, credenciales, rutas privadas de evidencia ni HTML original. Los códigos administrativos fijos de errores forman parte del comportamiento permanente y no contienen respuestas o excepciones del origen.

Configuración de ejemplo enabled=false. No merge/push a main ni activación automática. Instalación y rollback: BACKUPS.md.