Lighttpd y mod_rewrite

WordPress implementa una interesante función que se llama enlaces permanentes. Sin embargo, esta funcionalidad se apoya directamente en el mod_rewrite de apache2.

Ahora bien, algunos de nosotros tratamos en lo posible no usar apache por razones de uso de recursos (en especial en hosting donde la memoria va casi justa) y en su lugar nos decantamos por lighttpd, por ejemplo, lo cual hace que tengamos que trabajar un poco más a la hora de implementar o desplegar funcionalidades como la anteriormente descrita.

Así, al momento de migrar los blogs que estaban funcionando sobre apache y wordpress hacia lighttpd y wordpress, aparecía el detalle de que el panel de administración de wordpress no mostraba en las opciones de enlaces permanentes que  las direcciones fuesen del tipo URL+titulo_entrada sino que eran URL+index.php/+titulo_entrada

Para solventar este detalle se realizaron los siguientes pasos:

a) Se habilito el módulo de mod_rewrite

b) Se creó un nuevo bloque de configuración con una sintaxis como esta:

$HTTP["host"] =~ "(www.)?misitio.com" {
         url.rewrite = (
                         "^/(.*)\.(.+)$" => "$0",
                         "^/(.+)/?$" => "/index.php/$1"
                        )
}

Luego de reiniciar el servicio, entonces, se nos muestra una nueva opción en el panel de enlaces permanentes que se llama “enlaces personalizados”

Espero les sea útil la entrada.

 

Ip real detrás de proxy web

Una de las acciones más utilizadas en el mundo de la virtualización es la de tener un proxy web que reciba todas las peticiones web que llegan al dom0 y pasarlas a las correspondietes VM que estén bajo su control y que puedan respondar a las respectivas peticiones web.

Sin embargo, la configuración estandar impide que podaos ver, por ejemplo, las direcciones IP reales que llegan a la VM, obteniéndose, en su lugar, la IP del dom0:

  IP CLIENTE          IP DOM0          IP LOG EN VM
==============      ==============     ===============
|190.9.XX.XX | -->  | 192.168.0.1| --> | 192.168.0.1 |
==============      ==============     ===============

Lo anterior podemos verlo en el siguiente trozo de log de un servidor lighttpd que responde peticiones provenientes de un servidor proxy web que funciona en nginx

prueba.mydomain.net.ve 192.168.0.1 – – [05/Apr/2015:08:36:12 -0430] “GET / HTTP/1.0” 404 345 “-” “Mozilla/5.0 (X11; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0”

Lo que deseamos es que el campo de la ip nos muestre la ip real del cliente que hace la conexión y no la ip del dom0.

La solución correcta en lighttpd es a siguiente:

a) Configurar y activar el módulo accesslog de lighttpd; en debian este módulo tiene su archivo de configuración aparte, ubicado en /etc/lighttpd/conf-available:

a-1) Configurándolo: para ello agregar al archivo /etc/lighttpd/conf-available/10-accesslog.conf la siguiente cadena al final del mismo:

accesslog.format = “%{X-Forwarded-For}i %l %u %t “%r” %>s %b “%{Referer}i” “%{User-Agent}i””

a-2) Activar el módulo:

lighty-enable-mod accesslog

b) Configurar el módulo extforward, para ello, en su archivo de configuración de lighttpd coloque:

extforward.forwarder = (
     "192.168.0.1" => "trust"
  )
extforward.headers = ("X-Cluster-Client-Ip")

Nótese que la ip colocada acá es la del dom0 que se conecta con las VM, en nuestro caso es 192.168.0.1

c) Reiniciar lighttpd

Es muy importante el paso a-1 ya que muchos tutoriales no indican que debe colocarse la cadena %{X-Forwarded-For}i lo cual impide conocer la ip real.

Al finalizar esta configuración, el log del lighhtpd configurado en la VM debe mostrar algo como:

190.77.XX.XX – – [05/Apr/2015:08:52:45 -0430] “GET / HTTP/1.0” 200 2682 “-” “Mozilla/5.0 (X11; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0”

Quedando nuestro esquema, entonces, de la iguiente forma:

  IP CLIENTE          IP DOM0           IP LOG EN VM
==============      ==============     ===============
|190.9.XX.XX | -->  | 192.168.0.1| --> | 190.9.XX.XX |
==============      ==============     ===============

Espero disfruten la ayuda 😀

Optimizando recursos en tu computador

En aras de optimizar el uso de un minicomputador que estoy utilizando, he venido realizando una serie de instalaciones controladas obviando muchos de  los paquetes predefinidos que ofrece el instalador de Debian, en este caso.

Al momento de la instalación de Debian, utilicé la versión testing:

hector@helga:/tmp$ cat /etc/debian_version 
jessie/sid
hector@helga:/tmp$

Y como manejador de ventanas e17 junto con lightdm como gestor de inicio de sesión gráfica.

Esta combinación me ha permitido ahorrar recursos en el equipo VIT M1100, computador de procesador  Intel Atom CPU N270 a 1.60GHz con 2 Gb de RAM; por ejemplo, no es infrecuente que en ese equipo tenga funcionando, como ahora, LibreOffice, un navegador web con 10 ventanas abiertas, una consola (utilizo lxterminal) con 3 pestañas abiertas y el rendimiento del mismo sea bastante aceptable

 hector@helga:/tmp$ free
 total used free shared buffers cached
Mem: 2062084 1331972 730112 112288 48432 671848
-/+ buffers/cache: 611692 1450392
Swap: 3906556 0 3906556
hector@helga:/tmp$

Sin embargo, una de las cosas que extrañé fue una herramienta que me permitiese utilizar la webcam, para ello, utilicé la herramienta fswebcam, disponible en los repositorios de Debian y que se utiliza de la siguiente forma:

hector@helga:/tmp$ fswebcam -r 1024x768 --jpeg 200 -D 1 captura.jpg

Donde:

r es la resolución

–jpeg es la resolución de salida del formato a utilizar

-D es el retardo que se utilizará para que luego de activada la cámara se tome la fotografía, en algunos casos, este valor debe ser mayor para permitir que el sensor de la cámara calibre la luz exterior

Acá un ejemplo de la captura realizada.
captura

Espero les sea útil esta entrada.

Script para instalación de SeedDMS

SeedDMS [1] es un potente gestor documental que posee una gran cantidad de funcionalidades para ayudar en el manejo de repositorios documentales, tales indexación, visualización en línea, creación de flujos de trabajo, manejo de versiones, permisología bastante granular y otras.

Sin embargo, quienes lo hayan instalado, quizás recuerden lo tedioso que resulta ese proceso. Por ello, luego de varias pruebas, cree un pequeño script de instalación en bash que permite automati?ar casi toda la instalación de dicho software.

Pueden descargarlo en https://github.com/e1th0r/seeddms-install

Comentarios bienvenidos.

[1] http://www.seeddms.org

Lorem Ipsum

Neque porro quisquam est qui dolorem ipsum quia dolor sit amet consectetur adipisci velit

 Cicerón De finibus bonorum et malorum,  sección 1.10.32–3

El lorem ipsum es un texto bastante conocido cuando se intenta “rellenar” con un texto cualquiera  una publicación: nos interesa ver más como queda que qué contiene en este momento.

Sin embargo, quizás no muchos han averiguado más allá qué significa realmente dicha frase.

Ya Cicerón, unos 100 años antes de la era de Cristo, escribía parte de este texto, con el que empezamos este escrito, en su obra “De finibus bonorum et malorum”, texto que sería rescatado por Richard McClintock en los años 60 del siglo pasado y que la gente de Aldus, los creadores de Page Maker, incorporaron en las plantillas para mostrar su visualización previa.

Hace poco, a propósito de una discusión en twitter [1] necesité verificar ¿cuánto texto plano, aproximadamente, puede contener un archivo de 40 kb?

Lo primero que pensé fue ¿cómo obtengo un archivo de 40 kb de texto? La  respuesta que inmediatamente pensé fue “Lorem ipsum” Sin embargo, ¿cómo genero lorem ipsum para rellenar un archivo de texto de 40 kb? aptitude debe tener una respuesta, así que:

hector@olafo:/tmp$ aptitude search lorem
p   libtext-lorem-perl                                   - random faux Latin text generator
hector@olafo:/tmp$

Me muestra que hay un módulo de perl para generar el texto latino lorem

hector@olafo:/tmp$ aptitude show libtext-lorem-perl
Paquete: libtext-lorem-perl
Nuevo: sí
Estado: no
Instalado automáticamente: no
Versión: 0.3-1
Prioridad: opcional
Sección: perl
Desarrollador: Debian Perl Group <pkg-perl-maintainers@lists.alioth.debian.org>
Arquitectura: all
Tamaño sin comprimir: 81,9 k
Depende de: perl
Descripción: random faux Latin text generator
Often when developing a website or other application it's important to have placeholders for content. Text::Lorem
generates prescribed amounts of fake Latin text.
Página principal: http://search.cpan.org/dist/Text-Lorem/

hector@olafo:/tmp$

Lo instalé y fui a la página de cpan [2] donde se indica como usarlo, así que un simple código de menos de 8 líneas con el siguiente contenido cumplió mi cometido:

hector@olafo:/tmp$ cat generador.pl
#!/usr/bin/env perl
use Text::Lorem;
my $text = Text::Lorem->new();
$paragraphs = $text->paragraphs(190);
print $paragraphs;
hector@olafo:/tmp$

Le paso como argumento 190 que indica el número de párrafos que deseo generándome un archivo cualquiera, en mi caso, lo llamé lorem_ipsum.txt

hector@olafo:/tmp$ ls -l lorem_ipsum.txt
-rw-r--r-- 1 hector hector 39616 mar  2 08:32 lorem_ipsum.txt
hector@olafo:/tmp$

Archivo que contiene menos de 40 kb

Ahora bien, ese archivo tiene las siguientes características:

hector@olafo:/tmp$ cat lorem_ipsum.txt |wc -l
378
hector@olafo:/tmp$

378 líneas

hector@olafo:/tmp$ cat lorem_ipsum.txt |wc -c
39616

hector@olafo:/tmp$

39.616 palabras

Y para saber el número de páginas, lo abro en libreoffice (que reconoce caracteres con tamaño 10) y me indica que son 19 páginas de texto.

Ahora bien, si quieremos ser un poco más “técnicos” podemos usar enscript:

hector@olafo:/tmp$ enscript lorem_ipsum.txt -o lorem_ipsum.ps
[ 12 pages * 1 copy ] copiadas en lorem_ipsum.ps
189 lines were separadas
hector@olafo:/tmp$ ps2pdf lorem_ipsum.ps lorem_ipsum.pdf
hector@olafo:/tmp$ ls -l lorem_ipsum.pdf
-rw-r--r-- 1 hector hector 25942 mar  2 10:21 lorem_ipsum.pdf
hector@olafo:/tmp$

Optimizado y tal el pdf llega a los 25 kb con 12 páginas que poseen un promedio de 66 líneas por cada página

Espero que este ejercicio de “procastinación” les sirva de algo en un momento.

[1] https://twitter.com/e1th0r/status/440101294016307200

[2] http://cpansearch.perl.org/src/ADEOLA/Text-Lorem-0.3/README

DansguardianFilter group out of range

Hace poco incluí una nueva lista de acceso a un dansguardian que tenemos instalado. Al momento de reiniciar el servicio aparecía un error del tipo:

Restarting DansGuardian: dansguardianFilter group out of range; entry 192.168.100.2 = filter4; in /etc/dansguardian/lists/authplugins/ipgroups
Filter group out of range; entry 192.168.100.3 = filter4; in /etc/dansguardian/lists/authplugins/ipgroups

Y así con todas las ip que estaban dentro de esa acl.

Revisando concienzudamente encontré que el motivo de dicho mensaje es una omisión de mi parte al no haber aumentado el número de reglas existentes en el archivo de configuración de dansguardian. La solución fue ir al archivo de configuración dansguardian.conf  y buscar la línea:

filtergroups = X

Y aumentar el número allí presente para que concuerde con el número de la regla que se está creando, en mi caso dicho valor estaba en 3 y con subirlo a 4 fue suficiente.

Espero les sirva la ayuda.

 

Archivos .voc

Recientemente adquirí una grabadora digital RCA VR5330-A cuya relación precio valor me pareció buena. Tiene capacidad de grabación de 800 horas con una memoria interna de 2 Gb, activación automática por medio de detección de sonido, conector USB integrado mediante el cual se ahorra la necesidad de tener un cable adicional y otras.

No obstante, tiene un único defecto: el formato de grabación es anticuado, cerrado y no tiene soporte en Linux.

Sin embargo, una búsqueda en google me ayudó a solucionar dicho detalle, solución que paso a detallar a continuación

a) Deben tener instalado sox (en debian, aptitude install sox)

b) Necesitan descargar el software devoc.c desde el siguiente enlace

c) Compilen el archivo con gcc (gcc devoc.c -o devoc)

d) Coloquen el flag de ejecutable (chmod 755 devoc)

e) Utilicen el ejecutable sobre el archivo .VOC que deseen convertir (devoc archivo.VOC)

f) Esto generará un archivo .wav el cual podrán convertir a otro formato con las utilerías respectivas.

Espero que esta información pueda serles útil.

mailman y el mito de apache

Existe una extraña confusión, impulsada por muchos profesores de informática está demás decir, de que servidor web es sinónimo de apache: nada más alejado de la realidad.

En el mundo del Sofftware libre existen múltiples servidores web que cumplen a la perfección su trabajo: procesar código html y entregarlo a los clientes que lo soliciten. Así mismo, estos servidores permiten procesar código en php, python, perl u otros. Uno de los mecanismo más urilizados en ellos es el modo fast_cgi.

Hace poco, siguiendo la lógica que se ha usado en la plataforma de canaima de optimizar los recursos, se  optimizó el acceso vía web de una plataforma de listas de correo utilizando, para ello, thttpd [1].

thttpd es un servidor web extremadamente rápido, liviano [2], y disponible en debian [3].

Aunado a esto, para mi sorpresa, casi que funciona de “paquete” para servir el contenido web de mailman, la única modificación que necesité hacer fue cambiar en el archivo de configuración:

cgipat=/mailman/
por
cgipat=/mailman/**

 Estos dos asteriscos son fundamentales para que thttpd pueda procesar los cgi de la forma correcta que espera mailman.
Espero les sirva la ayuda

 

[1] http://acme.com/software/thttpd/

[2] Está programado en aproximadamente 7200 líneas de código

[3] http://packages.debian.org/squeeze/thttpd

Arreglando teclado en vit m2401 y canaima 3.0

Hace unos dìas escribía un post sobre el problema de la activaciòn de la tarjeta inalámbrica en una vit m2401; hoy escribiendo algunos artáculos en latex solucioné otro problema  que por un motivo u otro había pospuesto: la disposición del teclado.

Las vit m2401 poseen una disposición de teclados correspondiente a un teclado en español y no a un teclado latinoamericano lo cual puede ser fácilmente comprobable mirando la tecla ubicada en la esquina superior izquierda donde está la tecla del “” : si su máquina tiene una tecla parecida a esta:

Entonces usted tiene un teclado con disposición español-español caso contarario será español-latinomericano

Así el Canaima 3.0 que viene instalado en estos quipos traen configurado el teclado Español-latinoamericano.

Para solventar esto, basta con cambiar la disposición del teclado a españo-español utilizando Sistema–Preferencias–Teclado–Distribuciones–España y listo…

AltGr+\\\\\\\\\\\\\

Error wireless en vit m2401 sobre Canaima

Hace poco me facilitaron una máquina de este tipo y uno de los problemas que tuve fue que no reconocía la tarjeta inalámbrica.

Un lspci me indicó que la tarjeta inalámbrica es

04:00.0 Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01)

Sin embargo, un ifconfig eth4 me devolvía

root@canaima-popular:/etc# ifconfig wlan4 up
SIOCSIFFLAGS: Error desconocido 132

¿A qué se debe este error?

El problema es que el sistema no sabe manejar la activación y desactivación de forma directa de esta tarjeta por lo que se requiere una herramienta extra de nombre rfkill

Luego de instalarla, con el siguiente comando habilito la tarjeta

root@canaima-popular:/etc# rfkill unblock all

Listo,

root@canaima-popular:/etc# rfkill list all
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no

Y a rodar, a rodar mi vida…