Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Qué hacer si WordPress no sale del modo mantenimiento

Mientras se lleva a cabo una actualización en WordPress se activa el modo mantenimiento. Si hay algún problema durante el proceso nuestra web puede quedar atrapada en modo mantenimiento. Lo sabremos porque al visitarla nos aparecerá el siguiente mensaje en lugar de la web: «No disponible por mantenimiento programado. Vuelve a comprobar el sitio en unos minutos.», o en inglés: «Briefly unavailable for scheduled maintenance. Check back in a minute.»

WordPress activa el modo mantenimiento generando un archivo llamado .maintenance en la raíz del árbol de carpetas. Para salir del modo mantenimiento lo único que hay que hacer es eliminarlo, vía FTP por ejemplo.

En cambio, para entrar en modo mantenimiento manualmente no basta con crear el archivo .maintenance.

32 ó 64 bits: ¿qué tipo de procesador CPU y Linux tengo?

¿Tengo un ordenador con un procesador de 32 o de 64 bits? En Linux, teclea lo siguiente en una terminal:

grep flags /proc/cpuinfo

Cada línea de la salida te está dando información de un procesador: si tienes un procesador de dos núcleos, verás dos líneas. Si la salida del comando incluye lm, el procesador es de 64 bits. Por ejemplo:

flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm lahf_lm ida tpr_shadow vnmi flexpriority
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm lahf_lm ida tpr_shadow vnmi flexpriority

¿Tengo una instalación de Linux de 32 o de 64 bits? De nuevo abrimos una terminal y tecleamos:

uname -m

Si la salida es x86_64, la instalación es de 64 bits; si es i386, i486, i586 o i686, la instalación es de 32.

Por último, el comando lscpu nos da las dos informaciones juntas. Al teclear lscpu nos fijamos en las dos líneas siguientes:

Architecture:          i686
CPU op-mode(s):        32-bit, 64-bit

En este caso, tenemos un sistema de 32 bits (i686) instalado en una máquina con un procesador de 64 bits.

Permitir incrustar servicios externos (embed) en el contenido de un post en WordPress Multisite: la capacidad unfiltered_html y los filtros kses

Imago voragine.net
• Por

Por seguridad WordPress Multisite desactiva la capacidad de incluir determinado código HTML para usuarios que no sean superadministradores (administradores de la red de sitios). Es una medida lógica para evitar que un usuario incluya código malicioso a través de la caja de contenido de un post. Sin embargo en redes de sitios controladas, con una comunidad de usuarios de confianza, puede tener sentido activar esta capacidad.

Lo que hace WordPress Multisite añadir los filtros KSES, que normalmente solo se aplican a colaboradores y autores, a los usuarios editores y administradores. También desactiva la capacidad unfiltered_html para editores y administradores.

El plugin Unfiltered MU elimina esta limitación. Para quien prefiera prescindir de plugin se puede incluir la activación en el theme que se esté usando.

Cómo eliminar el slug «blog» de la estructura de permalinks de WordPress Multisite

Imago voragine.net
[actualizado el ] • Por Enlace permanente

WorPress Multisite añade el slug «blog» a los permalinks del sitio principal bajo la configuración de subdirectorios, no de subdominios, y lo hace por una razón: para evitar conflictos al coincidir la URL de un contenido del sitio principal (el que está alojado en el dominio) y la URL de otro de los sitios del Multisite (los que están alojados en un subdirectorio).

Eliminar «blog» de los permalinks puede traer problemas: tenemos que estar atentos para que ningún slug de un post, etiqueta o categoría del sitio principal sea igual al slug de uno de los sitios.

Si aún así se necesita eliminar la palabra blog, se puede hacer de la siguiente manera:

  1. Ir a la sección Permalinks dentro de Ajustes del sitio principal. Elegir la opción Predeterminado.
  2. Ir a la sección Sitios dentro de Administrador de la red. Allí seleccionar la opción Editar del sitio principal.
  3. En la pestaña Ajustes modificar la opción Permalink Structure, Category Base y Tag Base.

Eso sí, si se actualiza en el sitio principal la estructura de permalinks, «blog» volverá a aparecer en ellos. Si se quiere actualizar por alguna razón (por ejemplo cuando añadimos un nuevo post type hay que actualizar los permalinks para que el nuevo post type funcione), habrá que repetir el procedimiento.

Ecología, software libre y Ciudad Escuela. Sesión de Ecología a debate

Imago voragine.net
• Por
Ecología a debate es un ciclo de sesiones para abordar colectivamente temas entre la ecología y la arquitectura. Las llevan organizando Iñaki Alonso y Ana González, de la Asociación Ecómetro, desde el año 2012. El pasado 3 de febrero participé en la sesión dedicada a debatir sobre las relaciones entre software libre y ecología. Además conté el proyecto Ciudad Escuela y el sistema de reconocimiento de aprendizajes no reglados basado en los Open Badges que usamos en él.

Expresiones regulares de vi y Perl para sustituir comas por puntos en números decimales, y cómo aplicarlo en PHP

Imago voragine.net
• Por

Los lenguajes de programación fueron inventados por gente que hablaba y escribía en inglés, así que están pensados para funcionar con las convenciones lingüisticas y matemáticas inglesas. Cuando cualquier lenguaje de programación tiene que relacionarse con bases de datos en idiomas diferentes siempre hay problemas.

Uno típico se da cuando se utiliza una base de datos en español que contiene números racionales en su expresión decimal. Para notar los decimales en inglés se utiliza el punto (0.45) y en español la coma (0,45). Así que antes de operar con estos números hay que convertir esas comas en puntos para que el lenguaje de programación entienda los números como decimales.

Este problema lo encontramos por ejemplo cuando queremos insertar datos que tenemos en un CSV a una base de datos SQL, utilizando PHP. Pondré como ejemplo el CSV de un proyecto en el que estoy trabajando, una herramienta para medir las emisiones de dióxido de carbono en los procesos constructivos.

Podemos transformar los números fácilmente usando expresiones regulares de vi en el editor vim, o expresiones regulares Perl en PHP mediante la función preg_replace.

Por qué Aaron Swartz no fue un criminal, por qué lo que hizo no fue robar

Uno de los abogados de Aaron Swartz cuenta en Boing Boing por qué no se le puede considerar un criminal. Razones que ya se contaban en el documental The Internet’s Owns Boy:

  1. Aaron hizo uso de la red de ordenadores del MIT como cualquiera puede usarla, de hecho como el MIT permite usarla: accedió a ella como invitado, navego a través de su base de datos de material académico JSTOR y descargó artículos. Esto lo puede hacer cualquiera que esté en el campus del MIT. La única diferencia es que no lo hizo manualmente, sino a través de un pequeño script que descargaba masivamente toda la base de datos.
  2. Aaron no robó ya que no quitó nada a nadie. Cada uno de los artículos que descargó de la base de datos JSTOR sigue en ella para que cualquiera siga aprovechándolos.

Como dice Dan Purcell, el abogado de Aaron, dos razones de sentido común.

Cómo «encolar» o cargar hojas de estilo antes que el CSS del theme en WordPress

Imago voragine.net
[actualizado el ] • Por Enlace permanente

En WordPress las hojas de estilo de un theme o un plugin se deben cargar usando las funciones wp_register_style y wp_enqueue_style. En el caso de un theme estas funciones se llaman desde el archivo functions.php. La hoja de estilo principal del theme, style.css, no hace falta cargarla ya que WordPress la carga automáticamente.

Cuando llamamos otra hoja de estilo, además de style.css, ésta se carga por omisión después que style.css. Para invertir este orden hay que indicar que style.css tiene como dependencia la otra hoja de estilo.

Por ejemplo, si estamos desarrollando un theme con el framework Bootstrap de Twitter y queremos cargar su CSS antes que el style.css del theme:

add_action( 'wp_enqueue_scripts', 'prefix_load_css_files' );
function prefix_load_css_files() {
   wp_register_style( 'bootstrap-css', get_template_directory_uri() . '/bootstrap/css/bootstrap.min.css' );
   wp_register_style( 'theme-css', get_stylesheet_uri(), array('bootstrap-css') );
   wp_enqueue_style('theme-css');
}

El tercer parámetro que pasamos a la función wp_register_script son las dependencias. En la línea 4 estamos indicando que la hoja de estilos del theme tiene como dependencia la hoja de estilos de bootstrap, así que debe cargarse después.

Deshabilitar los pingbacks vía XML-RPC para impedir ataques de fuerza bruta a WordPress

Imago voragine.net
[actualizado el ] • Por Enlace permanente

Actualización septiembre 2022. Esta solución da error en las últimas versiones de WordPress y PHP. No funciona con WordPress 6 o superior y con PHP8. Puedes encontrar una solución actualizada en este otro post.


Parece ser que para evitar potenciales ataques de fuerza bruta a sitios con WordPress a través del protocolo XML-RPC, basta deshabilitar los pingbacks y no todo el sistema XML-RPC, como cuentan en WP-Tavern.

Si en tu sitio utilizas servicios que utilizan XML-RPC, como algunos plugins como Jetpack o la aplicación móvil de WordPress quizás te interese deshabilitar únicamente los pingbacks, que son en realidad la puerta de entrada de los ataques de fuerza bruta a WordPress.

Añade la siguiente función al functions.php de tu theme:

add_filter( 'xmlrpc_methods', 'remove_xmlrpc_pingback_ping' );
function remove_xmlrpc_pingback_ping( $methods ) {
   unset( $methods['pingback.ping'] );
   return $methods;
} ;

Evitar y resolver ataques de fuerza bruta a sitios con WordPress: la vulnerabilidad XML-RPC

Imago voragine.net
• Por

Hace unos seis meses se descubrió que el archivo xmlrpc.php de WordPress, responsable de las comunicaciones remotas vía XML-RPC, convertía a los servidores donde estuviese instalado este gestor de contenidos en potenciales participantes de ataques DoSS. Hace un par de meses esta vulnerabilidad se empezó a usar también como puerta de entrada de ataques de fuerza bruta a los propios servidores.

Desde la versión 3.5, el protocolo XML-RPC viene activado por omisión en WordPress lo que hace que cualquier instalación de WordPress sea vulnerable. Para eliminar esta vulnerabilidad no queda otra que desactivar completamente el soporte XML-RPC de WordPress.