Habemus Galería

Monalisa Pues ya por fin pude crear la galería y es que quería ponerla de cierta forma en particular, ya saben, soy de esos que si no cuestan uno y la mitad del otro no me sabe. Quería poner la galería de forma que no usara un servicio externo como Flicker, que se crearan los thumbs de forma dinámica y que no tuviera que usar el MySQL.

Encontré el Tiny Web Gallery que sobrepasó mis expectativas, aparte de que es realmente fácil de utilizar y administrar. ¿No te ha pasado que tienes cientos de pics pero el problema es que hiciste respaldo en multiples directorios en diferentes partes de tu sistema? En fin, hice un script que me automatiza la creación de la galeria escalando las imágenes a 800×600, ordenándolas y etiquetándolos con una leyenda que describa la situación del evento, para muestra un botón:

Adrian con lentes

En mi caso me bajé el XAMPP que es un excelente proyecto de que incluye Apache, PHP 4 o 5 y MySQL extremadamente amigable para administrar. Vamos a descargarlo aqui y seguimos las instrucciones, es importante cambiarle las contraseñas a los servicios de XAMPP para un servidor en producción sino luego no chilles si te cambian la página de inicio. Recuerda que el TWG funciona con PHP4 al menos yo no lo he probado con el PHP5 asi que cambiamos con el siguiente comando:

sudo /opt/lampp/lampp security
sudo /opt/lampp/lampp php4
sudo /opt/lampp/lampp restart

Ahora descargamos el TWG de aqui lo descargamos en /tmp y lo ponemos en la siguiente carpeta /opt/lampp/htdocs. Es importante cambiarle el grupo y darle permisos de escritura al apache pues de otra forma no podremos administar e TWG.

cd /opt/lampp/htdocs/
unzip -a /tmp/twg*.zip
mv twg* galeria
chgrp -R nobody galeria
chmod -R g+w galeria

Listo! ya tenemos instalado el Apache con el PHP4 y el TWG en nuestra máquina y podemos verlo andar en la siguiente direccion http://localhost/galeria . Debes de poder ver la galería de prueba, cosa que queremos pues significa que el “juguete” está andando, después puedes borrar esta galeria para sólo dejar la tuya. Ahora vamos a administrarla, RECUERDA CAMBIAR LOS PERMISOS. entramos a la siguiente dirección http://localhost/galeria/admin/index.php con el usuario admin y la contraseña twg_admin y nos llevará a la primera página de administración donde no exhorta cambiar el passwd cosa que recomiendo ampliamente así como cambiar el login del usuario por defecto por uno menos convencional, ya sabes, vivo en la paranoia.

Para irnos directo: en el menú izquierdo vemos una liga que dice “Configure TWG” la pulsamos y en la opción “Enable session caching of directorys and files” le damos false. Cuando estamos actualizando la galeria es bueno tenerlo en false así regenera el caché y podemos ver la galeria terminada. Cuando acabemos no olvides poner en true esta opción, es mucho mas óptimo tenerlo habilitado cuando ya se encuentra en producción. Las imágenes se guardan en carpetas en la siguiente dirección /opt/lampp/htdocs/galeria/pictures Cada galeria le puedes poner una carpeta y dentro de cada carpeta puedes poner una imagen llamada folder.png para que sea el ícono de la Galeria así como un archivo foldername.txt para la descripción donde puedes poner HTML y hacerlo mas “eye candy“.

Vamos al famoso Script que nos automatizará la tarea de procesamiento de imágenes. Es importente tener el comando convert del Imagemagick. El script doGallery

#!/bin/bash
# Script hecho por Adrian Puente.

if [ $# -lt 2 ]
then
        echo -e "Sintaxis: `basename ${0}` [Prefix Pics] ["Desc"]"
        echo -e "Ejemplo: `basename ${0}` navidad.familia.2007 \\"Navidad con la Familia 2007\\".\\n" 
        echo -e "Es importante poner las descripciones con espacios entre comillas."
        echo -e "Terminando el script una carpeta 800x600 contendra las imagenes procesadas."
        exit 0
fi

[ -f PROCESADO.TXT ] \&\& cat PROCESADO.TXT \&\& echo "Borrar el archivo PROCESADO.TXT" \&\& exit 

PREF=${1}
DESC=${2}
OK="\\033[5;32;1mHECHO\\033[0m"
NO="\\033[5;31;1mERROR\\033[0m"

[ ! -d 800x600 ] \&\& mkdir 800x600
# Renombramos las pics para mayor comodidad.
CTR=0;
for i in `ls -1 *.jpg *.JPG`
do
        if [ ${CTR} -lt 10 ]
        then
                NUM=00${CTR}
        else if [ ${CTR} -lt 100 ]
        then
                        NUM=0${CTR}
                else
                        NUM=${CTR}
                fi
        fi
        CTR=`expr ${CTR} + 1`
        echo -en "Convirtiendo ${i} --> ${PREF}-${NUM}.jpg "
        convert ${i} -scale 800x600 -fill white \\
                     -box \\#00000080 -gravity South \\
                     -pointsize 25 -annotate +0+5 "${DESC}" \\
                     800x600/${PREF}-${NUM}.jpg \&\& echo -e [${OK}] || echo -e [${NO}]
done

echo ${DESC} > 800x600/foldername.txt
echo -e "Directorio procesado para galeria el "`date +%F` > PROCESADO.TXT

El script te crea un archivo foldername.txt con la descripción que escogimos que es compatible con el TWG, también crea un archivo llamado PROCESADO.TXT que guarda la fecha en que esa carpeta fue procesada para no tener múltiples instancias de las carpetas procesadas. Ahora renombramos la carpeta 800×600 con un nombre que describa la situación, no sé, mi_cumple_2007, cuando termino restauro la opción del cache y en mi caso sincronizo los directorios con rsync, así puedo tener la galeria “en desarrollo” en mi máquina y cuando queda como quiero la subo, así tengo respaldo y no consumo el ancho de banda de mi site, ok muy ñoño pero no hay porqué ser ineficientes.

rsync --progress -avz -e ssh /opt/lampp/htdocs/galeria usuario@sitioweb:camino/a/los/htdocs

Si tienes algún problema extraño recuerda los permisos . En mi caso mi usuario y grupo en el sitio web es diferente al que tengo en mi máquina así que es bueno verificar los permisos de los grupos. Si quieres aumentarle la seguridad a tu sitio cambia el nombre de la carpeta admin por algún nombre difícil de adivinary accesa por la misma carpeta /index.php. Listo! la galeria ha sido creada. Enjoy

La galería de este su Blog es: http://www.hackarandas.com/galeria

Adrián Puente Z.

Share

About ch0ks

Untamable cybersecurity enthusiast focused on DevOps and automatization. Former Pentester, CTFer, Linux fanboy, full time nerd and compulsive SciFy reader.
This entry was posted in Articles, Code. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.