Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Cómo hacer un contador en un loop (range) de Hugo

Esa operación básica en casi cualquier lenguaje que es poner en funcionamiento un contador en Go no lo es en absoluto. Estoy aprendiendo la sintaxis que usa Hugo para construir sus templates, Go templates, y pensé que definir una variable numérica, asignarle el valor 0, e incrementar su valor con cada iteración se haría igual que en cualquier otro lenguaje, pero no. De hecho hasta que ha salido la versión 0.48 de Hugo no se podía ni redefinir el valor de una variable. Para versiones anteriores hay que recurrir a Scratch, una serie de métodos que permiten salvar esta limitación en Go Template.

Usando Scratch hacer un counter vuelve a ser posible:

{{ $.Scratch.Set "counter" 0 }}
{{range $array }}
    {{ $.Scratch.Set "counter" (add ($.Scratch.Get "counter") 1) }}
    Valor de $counter en esta vuelta del loop: {{$.Scratch.Get "counter"}}
{{end}}

Redes sociales verticales open source

Imago voragine.net
• Por

Las redes sociales verticales o redes sociales de nicho son aquellas que están limitadas a un contexto temático, geográfico... Suelen ser cerradas, accesibles bajo registro. Academia.edu para académicos, Github para programadores, Doximity para médicos y otros profesionales de la salud en Estados Unidos.

Estamos montando la infraestructura de la Civic Innovation School (CIS), el entorno colaborativo de aprendizaje de Civicwise. Uno de sus espacios será una red social vertical que funcione como lugar de encuentro e intercambio de toda la red en torno a la CIS.

Queremos una solución que sea de código abierto, fácilmente accesible desde dispositivos móviles y que no requiera una inversión de trabajo muy grande para ponerla en marcha o mantenerla. A continuación algunas opciones que barajamos.

Cómo solucionar el error ‘File not found’ en WordPress Multisite funcionando con Apache 2.4 y PHP-FPM 5.6

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

Las instalaciones de WordPress Multisite que estén configuradas para mostrar los sitios como subdirectorios pueden dar error en un servidor funcionando con Apache 2.4 y PHP-FPM 5.6. Cuando se visita el panel de administración de cualquier sitio que no sea el principal: File not found.

Si se consulta el log de FPM se verán multitud de respuestas 404. Y si se consulta el log de Apache se encontrarán errores de este tipo: Got error 'Primary script unknown'

Para solucionarlo hay que modificar ligeramente la configuración de Apache. La siguiente línea configura la conexión con FPM:

ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/ruta/hasta/el/php5-fpm.socket.sock|fcgi://localhost/ruta/hasta/el/hroot/

Hay que añadir otra regla (antes que la anterior) para cubrir el caso de los sitios secundarios del Multisite:

ProxyPassMatch ^/([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes)/.*\.php(/.*)?)$ unix:/ruta/hasta/el/socket.sock|fcgi://localhost/ruta/hasta/el/hroot/$2

Aunque esta solución funciona sigue arrojando los mismos errores, así que yo prefiero eliminar la configuración de FPM mediante ProxyPassMatch e incluir un handler dentro del entorno Directory. Así:

<Directory "/ruta/hasta/el/hroot">
  # otras configuraciones
   <FilesMatch \.php$>
      SetHandler "proxy:unix:/ruta/hasta/el/socket.sock|fcgi://localhost"
   </FileMarch>
</Directory>

Certificado TSL para conexión segura HTTPS con Let’s Encrypt y certbot

Imago voragine.net
[actualizado el ] • Por

Los certificados TSL permiten conectarse de manera segura a un sitio web usando el protocolo HTTPS (secure HTTP). Son conexiones seguras porque los datos que viajan desde el ordenandor del visitante hasta el servidor donde está alojado el sitio web, y viceversa, están encriptados y nadie puede inspeccionarlos.

El protocolo HTTPS encripta los datos utilizando criptografía asimétrica, que utiliza un par de claves: una pública para cifrar la información y otra privada para descifrarla. El servidor HTTPS difunde su clave pública a cualquier ordenador cliente que quiera conectarse a él, y guarda en secreto su clave privada.

El problema con la criptografía asimétrica es estar seguros de que la clave pública corresponde efectivamente al servidor al que se quiere conectar. De lo contrario existe el peligro de conectarse a un servidor que suplante al original.

Para asegurar la autenticidad de la clave pública de un servidor lo más eficaz es conocer una de las personas que gestionan el servidor, encontrarla presencialmente y que nos dé la clave. En un sistema global como internet en el se visitan servidores que están en otros continentes hubo que buscar otra manera. Es en este punto donde entran en juego las entidades de certificación: organizaciones de confianza que certifican la autenticidad de una clave pública.

Let's Encrypt es la primera entidad de certificación que emite certificados gratuitos y de manera automática. El proceso para obtener un certificado se puede hacer íntegramente desde la línea de comandos usando certbot.

Proteger archivos o directorios con contraseña en Apache

Imago voragine.net
[actualizado el ] • Por
Proteger carpetas o archivos accesibles vía HTTP con contraseña permite añadir una capa de seguridad en un servidor web. Se puede hacer usando cualquier gestor de contenidos como WordPress o Drupal de manera trivial, sin embargo hacerlo directamente usando el servidor web, Apache en este caso, evita ejecutar PHP y ahorra recursos de hardware. Esto es especialmente útil si se está intentando evitar un ataque de fuerza bruta.