Archive for the ‘programacion’ Category

Framework PHP symfony en Debian Lenny

Thursday, July 24th, 2008

Que es Symfony ?

Libro Symfony - La guia definitiva

Symfony es un framework para desarrollo de aplicaciones Web. Tiene una arquitectura MVC (model view controller), ORM (object relational mapper), y un monton de clases predefinidas que nos simplifican la creacion de una aplicacion.
En este articulo les muestro lo facil que se instala en Debian Lenny GNU/Linux, y les dejo el link para que descarguen el libro en forma gratuita.

El libro en su version en castellano lo pueden descargar del siguiente link, en donde ademas encontraran otros libros interesantes:
Libros gratuitos y originales sobre HTML, CSS, JavaScript, AJAX y otras tecnologías web.

La version en ingles:
The Definitive Guide to symfony

Instalacion de symfony en Debian Lenny

Como prerequisitos, debes tener instalado Apache, PHP5 y casi seguro que Mysql tambien.
Aqui supondre que ya tienes instalados y configurados estos programas.

Para una instalacion simple, lo mejor es primero instalar PEAR.

$ sudo aptitude install php-pear

$ dpkg -l *pear*
php-pear      5.2.6-2    PEAR - PHP Extension and Application Repository

El paquete symfony de PEAR contiene las librerias symfony y todas sus dependencias. Tambien contiene un script que extiende la linea de comandos e incluye el comando symfony.
La instalacion a traves del paquete PEAR es la forma de instalacion recomendada en la documentacion.

El primer paso para instalarlo es agregar el canal symfony a PEAR, con este comando:
( notar que lo ejecuto en modo root)

# pear channel-discover pear.symfony-project.com

Ahora estamos listos para instalar symfony, con este comando:

# pear install symfony/symfony

downloading symfony-1.1.0.tgz ...
Starting to download symfony-1.1.0.tgz (2,130,238 bytes)
.......done: 2,130,238 bytes
install ok: channel://pear.symfony-project.com/symfony-1.1.0

Creando un proyecto

Cada proyecto symfony sigue una estrucutra de directorios predefinida. El comando symfony automatiza la creacion de nuevos proyectos al inicializar el esqueleto del proyecto, con la estructura de directorios y permisos correctos. Asi que para crear un proyecto, simplemente hay que crear un directorio y pedirle a symfony que cree el proyecto:

# mkdir ~/myproject
# cd ~/myproject
# symfony generate:project myproject

Creando la aplicacion

El proyecto aun no esta listo para se visto, porque requiere al menos una aplicacion. Para inicializarla, hay que usar el comando generate:app y pasar como parametro el nombre de la aplicacion:

# php symfony generate:app frontend

Eso creara el directorio frontend/ en la carpeta apps/ en la raiz del proyecto, con una configuracion de aplicacion default y un conjunto de directorios listos para hostear los archivos del sitio web.

Bueno, y hasta aqui llegamos. Si quieres ver como configurar Apache para empezar a probar tu nueva aplicacion, o empezar a estudiar como funciona el framework Symfony, existe excelente documentacion. Puedes empezar por descargar el libro :-)

Backup Wordpress: Scripts para automatizar el backup de tu blog o sitio web usando cron.

Thursday, May 22nd, 2008

Veremos como usar shell scripts para realizar el backup de un sitio web. Automatizaremos la tarea de realizar el backup tanto de la base de datos MySQL como de los archivos del sitio — paginas, imagenes, videos, etc. Si bien existe un plugin de Wordpress para automatizar el backup de la base de datos, no nos viene mal tener a mano estos scripts.
Si me han seguido durante algun tiempo, sabran que este sitio se encuentra hosteado en la computadora de mi casa. Lo cual tiene sus ventajas y desventajas. El porque de mi eleccion de autohosting esta fundamentada en el siguiente post: Soberania Informatica
Una de las tareas habituales de mantenimiento es la de realizar los backups periodicos tanto del sitio como de archivos importantes. En la automatizacion de tareas repetitivas es justamente donde brillan los scripts de shell y, si a esto le sumamos el cron, podremos olvidarnos de hacer tareas rutinarias para concentrarnos en hacer tareas que requieran mayor creatividad, o simplemente disponer de mas tiempo libre.
En esta nota no expondre en detalle el funcionamiento del sistema cron, sino que nos concentraremos en los scripts que realizan la tarea. Baste saber que poniendo un shell script dentro de la carpeta /etc/cron.daily este se ejecutara diariamente.
Tambien disponemos de la carpeta /etc/cron.weekly para frecuencias semanales y la carpeta /etc/cron.montly para tareas que requieran una ejecucion mensual.

(more…)

Firebug en Firefox 3 Beta 5 ff3b5 y Ubuntu 8.04 Hardy Heron: Disponible la correccion firebug en los repositorios

Saturday, May 10th, 2008

Firebug en Firefox 3 Beta 5 ff3b5
Si tuviste problemas con Firebug y Firefox 3 beta 5, te alegraras al saber que el problema ya esta corregido.
Ya esta disponible en los repositorios de Ubuntu 8.04 Hardy Heron la actualizacion a la version del firebug 1.2.0a21X
Esta version funciona correctamente.
Comento esto porque hace unos dias lei en algunos blogs que Firebug tenia problemas para funcionar en ff3 Firefox 3 Beta 5.
Simplemente lo he instalado desde los repositorios de Ubuntu.
Lo primero que se me habia ocurrido fue descargarlo directamente desde www.getfirebug.com, pero desde ahi no se instala, da un error.
Luego googlee un poco y empece a leer algunos blogs con distantas formas de instalarlo …

(more…)

BASH Debugger - Como depurar shell scripts

Friday, April 11th, 2008

¿ Conocias el BASH Debugger ? Yo lo descubri hoy casualmente.

El objetivo de un depurador como el BASH debugger es permitirte ver que es lo que esta pasando “dentro” de un script bash mientras este se ejecuta.

El depurador tiene una interface de comandos similar a gdb, o Perl’s perl5db debugger.

El depurador BASH puede hacer principalmente 4 cosas ( ademas de otras cosas en soporte de estas ) para ayudarte a encontrar bugs o errores en el acto:

* Comenzar tu script, especificando cualquier cosa que pudiera afectar su comportamiento.
* Hacer que el script pare cuando se cumplan condiciones especificadas.
* Examinar que ha pasado, cuando tu escript se haya detenido.
* Cambiar cosas al vuelo en tu script, de manera que puedas experimentar corrigiendo los efectos de un bug o error y continuar aprendiendo sobre otro.

Aunque puedes usar el BASH debugger para depurar scripts escritos en BASH, tambien puede ser usado simplemente como un front-end para aprender mas acerca de la programacion en BASH. Como una ayuda adicional, el depurador puede ser usado dentro del contexto de un script existente con sus funciones y variables que ya han sido inicializadas; se puede experimentar con los fragmentos ingresandolos dentro del depurador.

El nombre del paquete para instalarlo es bashdb

seba@snarvaez:~$ apt-cache search bashdb
bashdb - BASH debugger

Para usarlo, simplemente invocas
$ bashdb nombrescript.sh
o
$ bash --debugger nombrescript.sh

Si alguna vez usaste gdb - The GNU Debugger, entonces la interfaz te resultara muy familiar. Podras empezar a usarlo inmediatamente.

El tutorial del BASH Debugger, junto con el manual completo se puede descargar de aca:

Tutorial y manual de referencia de BASH Debugger

La pagina principal del proyecto

Nunca esta de mas … El manual de referencia BASH

script para descargar videos de Youtube y convertirlos a MPEG/AVI

Monday, July 16th, 2007

Si has deseado poder descargar los vídeos que más te gustan de youtube, ahora es posible. A partir de un script que he encontrado (lo he modificado para que acepte algunas opciones).

Para ello, instala ffmpeg (para la conversión):

sudo apt-get install ffmpeg

Una vez instalado, debes copiar el siguiente script en un archivo nuevo (la explicación la basaré nombrando el archivo como youtube.sh):

puedes descargar el fichero desde:

http://snarvaez.com.ar/libertad/wp-content/uploads/2007/07/youtube.sh

Una vez creado el archivo, debes darle permisos de ejecución:

(estando en el directorio donde creaste el archivo)

chmod 744 youtube.sh

Para utilizarlo, teclea desde consola (estando en el directorio del script):

./youtube.sh dirección_del_vídeo_youtube

Por ejemplo:

./youtube.sh http://es.youtube.com/watch?v=0oJGW8MyBUE

via: arathornx
via: ubuntulife

Exploit Ejecucion codigo en forma remota - Remote code execution

Monday, September 11th, 2006

No soy un experto en seguridad ni nada parecido, pero al menos puedo darme cuenta cuando estoy en medio de un ataque o intento de ataque.
Como siempre, me gusta poner ejemplos lo mas reales posibles, ¿ y que mas real que mostrar ataques hacia mi propio servidor ?, je je.

Aqui ire publicando todos los avances que vaya realizando en materia de ir fortificando el servidor, y tambien ire publicando todos los ataques, asi que el que no quiera ser publicado que no me ataque.
Cuanto mas me ataquen, mas material tendré para publicar y para estudiar, je je.

Creo que la mejor manera de parar los ataques es justamente sacandolos a la luz lo mas pronto posible.

Vulnerabilidad en applicaciones Web.

(more…)

Ejecutar script Perl desde páginas PHP

Saturday, September 9th, 2006

Tengo una duda sobre PHP. Tengo que ejecutar desde PHP (con Apache2) un script de Perl. Entonces uso system(”path/file.pl”)
Pero no se ejecuta.
Sera un error de permisos? puede estar mi script en cualquier carpeta del sistema y pertenecer a root?
Help me!

Diego R. Mañas

*************************************************

Hola Diego !!!.
Bueno, aqui hay varias cosas que hay que tener en cuenta, asi que vayamos paso a paso.
Aunque este de acuerdo o no con tu solucion, nos enfocaremos en resolver especificamente tu problema inmediato.
Revisaremos primero una serie de cosas basicas y luego iremos profundizando hasta encontrar la solucion.
Tal vez puedas ser un poco mas especifico sobre en que lugar se encuentra el archivo y que permisos tiene, pero igual voy a tratar de darte unos consejos generales:

1)
¿ que pasa si intentas ejecutar file.pl como
usuario normal desde el prompt?

¿Se ejecuta normalmente?
Si no se ejecuta, lo mas probable es que te hayas olvidado de marcar el script como ejecutable. Eso se hace con la siguiente sentencia:

chmod ug+x path/file.pl

La cual le da permiso de ejecucion al dueño y al grupo.

2)
Cuando Apache ejecuta scripts, no lo hace como usuario root (o no debería por problemas de seguridad)
Por ejemplo, un script en PHP no deberia poder ejecutar un comando como el siguiente: system(”/sbin/halt”)
$ /sbin/halt
halt: must be superuser.

Cuando el proceso de Apache corre, generalmente lo hace como usuario www-data (al menos en Debian).
Entonces, lo que debes verificar es que el usuario www-data tenga permiso de ejecucion sobre ese archivo.

Eso lo puedes lograr cambiando el owner del archivo:

chown www-data:www-data path/file.pl

Si necesitas cambiar todos los archivos del path directamente ejecutas

chwon -R www-data:www-data path

Lo que hace que el dueño y el grupo del archivo sean www-data.
Al ser www-data el dueño del archivo, deberia poder ejecutarlo si es que el archivo tiene permiso de ejecucion.
Un listado del archivo deberia mostrarlo asi:

-rwxr-xr-x 1 www-data www-data

Tambien debes tener en cuenta que el usuario www-data debe tener acceso a toda la cadena del directorio. Tanto al directorio actual como a todos los padres. Por ejemplo de nada te sirve tener los permisos correctos si el archivo se encuentra en un path donde el padre de ese path no puede ser accedido por www-data. toda la cadena del path debe ser accesible.

3)
Puede ser que ahora los permisos esten correctos, pero entonces el script path/file.pl este intentando ejecutar otros comandos que a su vez requieran
permisos de root. Bueno, en este caso la solucion no es tan sencilla porque hay que analizar concienzudamente las posibles implicaciones de seguridad.

4)
Tambien puedes revisar el archivo
/var/log/apache2/error.log
En busca del posible problema, o de por lo menos una idea.

Bueno espero que estos consejos te den una idea de por donde empezar a revisar y espero que cuando encuentres la solucion por favor como agradecimiento la escribas aqui.

Tambien, para ayudarme a resolver tu problema podrias escribir los resultados de las pruebas que te puse mas arriba, y ser un poco mas especifico asi tal vez pueda intentar reproducir el problema en mi computadora.

Bueno, eso es todo por ahora. Si se me ocurre otra cosa te aviso.

Sebastián Emilio Narváez
– Los amigos de GNU/Linux son mis amigos …

##########################################################
El script que quiero ejecutar tiene permisos de ejecución, pero estaba en un directorio del root y su dueño era root. Cambié el dueño a daemon:daemon, que parece ser el mismo del Apache2 en este Slackware. Y lo cambié de directorio, ahora está debajo de apache2/htdocs/
Ahora puedo ejecutar el script desde una página web, pero la página se detiene hasta que el script finaliza su ejecución y devuelve un resultado. Aproveché eso para que muestre una respuesta atractiva en la página, pero mi intención original era sólo que se ejecute y pasar a otra cosa. Incluso puse system(path/file.pl &) pensando que pasaría a 2do plano pero no sucedió así.

Gracias por la ayuda :)

Diego R. Mañas