BusiRocket

ZoneMirror, código abierto

ZoneMirror: sincronizar DNS de cPanel a Cloudflare en tiempo real

Plugin de cPanel y WHM con licencia MIT, multiinquilino, con tokens cifrados por usuario y un demonio supervisado por systemd. Sin cron.

de análisis estático con PHPStan

Nivel 8

de análisis estático con PHPStan

métodos de test en verde en PHP 8.2, 8.3 y 8.4

690

métodos de test en verde en PHP 8.2, 8.3 y 8.4

licencia

MIT

licencia

Lo normal para llevar el DNS de cPanel a Cloudflare es un script a mano ejecutado por cron: exporta la zona, la transforma y la envía. Funciona para una zona, un administrador y un servidor, y se rompe en cuanto varios usuarios de cPanel necesitan su propia cuenta de Cloudflare, propagación en tiempo real o una vuelta atrás segura cuando la API limita el ritmo.

El planteamiento

ZoneMirror lo sustituye por un plugin orientado a eventos: los cambios en el editor de zonas de cPanel disparan los hooks estándar, caen en colas SQLite por usuario, y un demonio de root supervisado por systemd las vacía contra la API de Cloudflare, con una instantánea de zona por ciclo, presupuesto de límite de ritmo por servidor y modo de simulación.

Lo que protege

Cada usuario de cPanel da de alta sus zonas con su propio token de Cloudflare, así que un servidor puede replicar N usuarios por N zonas.

Los tokens van cifrados en reposo con libsodium XChaCha20-Poly1305, con AES-256-GCM de reserva, y los hooks de usuario nunca leen la clave maestra, que es solo de root. Un redactor de logs limpia cabeceras de autorización e identificadores largos de cada línea antes de escribirla.

El motor de diferencias protege lo que la sincronización no debe destruir: registros de autenticación de correo, registros que solo existen en Cloudflare y entradas ACME o DMARC que nunca deben ir por proxy. Además hay bloqueos de registro con cinco alcances para dejar registros concretos fuera de la sincronización.

Cómo se publica

El repositorio se lleva como un proyecto de producción: PHPStan en nivel 8, 690 métodos de test en integración continua sobre tres versiones de PHP, controles de shellcheck y formato, versionado semántico con verificación SHA-256 y un instalador de una línea que registra los hooks, arranca el demonio y deja una CLI con autoactualización.

Con qué está hecho

  • php
  • cpanel

Siguiente paso

¿Se parece a lo que tienes entre manos?

Cuéntanoslo y te decimos cómo lo abordaríamos, en qué orden y con qué coste.