WPVulnerability 4.1.0 (plugin de WordPress)

·

Lanzar una nueva versión de un plugin de WordPress siempre es razón de felicidad, y en este caso, estoy contento porque han pasado casi 6 meses desde la última release.

Hay muchas razones por el retardo en este lanzamiento, que en realidad, aunque llevaba en mi cabeza meses, nunca era el momento adecuado de ponerme con ello…

Pero hace unas semanas retomé algunas de las ideas que ya estaban más o menos sobre el papel código, y gracias al Códex de ChatGPT, las cosas han ido más o menos razonables. Porque, si una máquina puede darte ideas de código, ¿por qué no? Eso sí, mucha revisión y mucho darle vueltas al porqué hacer las cosas de la manera en las que las hacía (y, claro está, mucho reescribir código).

Descarga

Retrocompatibilidad

Uno de los focos de esta versión era seguir trabajando en la retrocompatibilidad. Y aprovechando que ahora WordPress da soporte desde la versión 4.7.0 (y no 4.1.0) tenía la opción de mejorar los «fallback» de parte del código. Esto también lo he podido hacer gracias a WP Since que me ayudó a encontrar algunas funciones y crear código que revise su existencia y, si no está, poner una alternativa.

Detallitos

También tenía dos cosas de siempre pendientes de corregir. Una era que al guardar, no aparecieran dos mensajes de «se ha guardado». La otra era que al actualizar un plugin con vulnerabilidades, las vulnerabilidades que aparecen justo debajo, desaparezcan, a que no tiene sentido, en principio, que eso pase.

Configuración

Otra de las cosas que a mí mismo me faltaba era la posibilidad de configurar el plugin «fuera del plugin», es decir: wp-config.php y WP-CLI.

En el caso del WP-Config, he añadido varias constantes que permiten la gestión de ocultar vulnerabilidades de un tipo y cambiar la caché.

En la recámara ahora estarán algunas otras constantes que, por ganas de lanzar ya una versión funcional, he acabado dejando para la próxima (como cambiar la frecuencia o los lugares donde hacer las notificaciones).

En el caso de WP-CLI he añadido la opción «config» que permite hacer cambios por consola, de forma que se pueda gestionar el plugin offline, aunque como antes, queda por añadir alguna que otra opción que supongo que vendrá en el futuro.

Las novedades

Aunque ya he dejado caer un poco algunas cosas, el foco de las novedades era la gestión. Una mayor gestión y control por parte del usuario (que seguirá en los siguientes lanzamientos).

Para empezar, algo que creo que no había quedado claro hasta ahora. Si eliminabas la dirección de correo del cajetín, se dejaban de mandar correos. Pero parece que la gente no lo entendió, así que ahora hay una opción de «Nunca», que directamente bloquea el envío de notificaciones.

Otra cosa que me habían pedido era la posibilidad de cambiar la fecha y hora de envío de las notificaciones. Así que ahora, si seleccionas diario, te permite elegir la hora y minuto, y si eliges semanal, demás, el día de la semana a recibir las notificaciones.

Otra de las novedades es la posibilidad de seleccionar por qué canal recibir las notificaciones. Hasta ahora solo se enviaban por correo electrónico, y ahora tenemos la opción de Slack o Microsoft Teams.

Como decía antes, se han añadido varias constantes al WP-Config, lo que permite forzar la desactivación de vulnerabilidades de Apache, nginx, o lo que sea. Esto es muy útil para los usuarios que tocan mucho y luego te dicen «que yo no he tocado nada».

Las pruebas

Aunque todavía sigo trabajando en ello, esta versión también lleva muchas pruebas (no en el plugin, pero sí en el código de GitHub).

Por un lado, he comenzado a integrar algunos test de PHPUnit, lo que permitirá controlar que si hay cambios en el código, no se rompa nada, o las cosas devuelvan lo que ha de devolver.

También he integrado mejoras en los tests propios de GitHub, y actualizado todo lo referente a PHP Coding Standars.

Lo que todavía no acabo de tener lista es la parte de PHPStan, aunque la verdad es que con los tests que estoy haciendo, ahora mismo estoy tranquilo y contento.

Blueprint

Otra cosa que todavía se me está atragantando es el blueprint para poder hacer pruebas con WordPress Playground y que la gente pueda probar el plugin, con algún plugin o tema que tenga vulnerabilidades (vamos, cargando versiones antiguas de algún plugin).

Supongo que esto es de esas cosas que también vendrán en versiones nuevas.

Lanzamiento planificado

Otra de las cosas es que esta versión la he lanzado con el nuevo sistema de lanzamiento planificado de WordPress.org, que permite que durante 24 horas el plugin no se actualice automáticamente, sino que aparezca que está pendiente… aunque se puede actualizar de forma manual. Así tendré un margen hasta mañana para detectar posibles errores y que la gente reporte avisos (ya sea en GitHub como en la página de soporte del plugin).

Próximas versiones

Aunque ahora mismo no tengo mucha previsión de lanzar la siguiente versión mayor (espero que sea antes de final de 2025, más o menos de cara al lanzamiento de WordPress 6.9), así a lo grande, la lista de tareas debería ir en esta línea:

  • Todo se debe poder configurar con constantes en WP-Config.
  • Todo se debe poder configurar con WP-CLI.
  • Se ha de poder desactivar una vulnerabilidad en concreto.
    • Crear una lista de vulnerabilidades desactivadas (para poder reactivarlas).
    • Se ha de poder desactivar una vulnerabilidad desde el Salud del Sitio.
    • Se ha de poder desactivar una vulnerabilidad desde el listado de plugins / temas.

Si se te ocurre alguna idea más, no dude en abrir un ticket, y a ver qué sale de eso.

Para ir acabando

Esta versión 4.1.0 es de las que tienen muchas novedades, de las que tiene mucho cambio en el código, y de las versiones que, para lo que hace, estoy contento.

Por ahora, seguir trabajando en revisiones del código, simplificación, optimización y en general en dejar algo lo más perfecto posible para todos.

Comments

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *