Píldoras PrestaShop de mayo de 2024: 8.1.6 y bots
Las ideas sueltas de mayo de 2024: la versión 8.1.6 y su arreglo de seguridad, por qué un feed no ve ciertos descuentos, cómo encontrar qué gasta la CPU, los métodos de pago de Redsys y una copia de la base de datos cada hora sin tablas que sobran.
Mayo de 2024 trajo versión nueva de PrestaShop y bastante diagnóstico de servidores. Lo que merece guardarse:
PrestaShop 8.1.6: actualiza si tienes formulario de contacto
Rekire compartió el anuncio de la versión de mantenimiento 8.1.6 y señaló uno de los arreglos: tenía que ver con los ficheros que se pueden subir desde el formulario de contacto. Es el aviso de seguridad GHSA-45vm-3j38-7p78 (CVE-2024-34716), calificado como crítico: afecta a la 8.1.0 y posteriores con la funcionalidad de hilos de cliente activada y se corrige en la 8.1.6. Otro compañero añadió que no debería dar problemas al actualizar.
Descuentos que un feed o un marketplace no ven
Un compañero vio que su conector con un marketplace no leía los descuentos creados con un módulo de precios por grupo. El desarrollador de ese módulo lo explicó: sus descuentos no se guardan en la tabla de precios específicos, se calculan al vuelo sustituyendo la función de precio de PrestaShop. Un módulo que lee directamente esa tabla no los ve; uno que pide el precio con Product::getPriceStatic(), sí. Gustavo: es lo que pasa cuando un módulo no usa las clases de PrestaShop.
Servidor al 95 % de CPU: el culpable era el panel
Un compañero tenía el servidor al 95 % de carga y no sabía de dónde venía. Le recomendaron htop para ver qué proceso consumía, y vigilar que no fuera un bot. Con calma lo encontró: dos procesos iguales de una extensión del panel Plesk para gestionarlo desde el móvil, que no usaba. La desactivó. Ya puesto, subió la memoria de intercambio, que tenía en 1 GB con 32 GB de RAM.
Usar el código de otro módulo desde el tuyo
Un desarrollador del grupo necesitaba usar una clase de un módulo dentro de otro. Gustavo compartió cómo lo hace: obtener la instancia con Module::getInstanceByName('nombre_del_modulo'), que además carga sus ficheros, y después usar sus clases. Con módulos que usan espacios de nombres y Composer, el compañero prefería algo más limpio, pero como solución rápida funciona. Comprueba siempre que el módulo está instalado antes de usarlo.
Redsys: tarjeta, Bizum, Apple Pay y Google Pay como opciones separadas
Varios compañeros querían mostrar cada método de pago de Redsys como una opción propia en el checkout. El desarrollador de un módulo de Redsys explicó que, por redirección, se pueden mostrar por separado tarjeta, Google Pay, Apple Pay y Bizum, y la pasarela enseña el método elegido. La integración dentro de la tienda (insite) tiene sus propias condiciones por método, y Apple Pay depende del dispositivo y del navegador del cliente: confirma con tu banco qué métodos tiene activados tu TPV en cada modalidad.
Clientes de fuera: pedido sin pago hasta calcular el envío
Un cliente quería que los compradores extranjeros pudieran pedir sin pagar, para presupuestarles el envío. Un compañero lo resolvió sin módulo: un transportista llamado «Envío pendiente de cotizar», a 0 €, solo para esas zonas, y las formas de pago desactivadas para ellas. Otro miembro propuso usar el pago contra reembolso cambiándole el texto en las traducciones. Después, desde el back-office, se añade el porte y se envía al cliente el enlace para pagar.
El back-office entra en bucle al iniciar sesión
Otro miembro del grupo no podía entrar al back-office: la pantalla volvía al inicio de sesión una y otra vez. Gustavo dio el orden: borrar caché y cookies, probar en una ventana privada y en otro navegador. En otro sitio había leído que renombrar temporalmente la carpeta del módulo de gamificación lo arreglaba en algunos casos. Si nada de eso funciona, Gustavo avisó de que puede ser un hackeo y hay que revisar la tienda.
Copia de la base de datos cada hora, sin las tablas que se regeneran
Un compañero compartió su script de copias: cada hora vuelca las bases de datos críticas a un FTP externo y guarda tres meses de histórico. El truco está en excluir las tablas que se pueden regenerar o cuya pérdida no es un drama y que ocupan mucho: conexiones, visitas, registros de errores, correos enviados, estadísticas de búsqueda, páginas no encontradas, el índice de búsqueda y cachés de módulos. Una vez al día hace además la copia completa.
Bots que cargan el servidor: frénalos por su identificador
Otro compañero compartió su lista de bots bloqueados en el .htaccess por el identificador del navegador: rastreadores de herramientas SEO, buscadores de otros mercados y algunos bots de IA. A la pregunta de si los rastreadores ralentizan una tienda, un especialista en servidores respondió que depende de la optimización, pero en muchos casos sí. Bloquea solo los que no te traen nada, y nunca los de Google ni Bing si quieres posicionar.
Esto salió en @PrestashopEsp, la mayor comunidad PrestaShop de España en Telegram. Ver la conversación