Inbox.py: el servidor SMTP en python

Kenneth Reitz de la compañía Heroku ha escrito una biblioteca para simplificar la integración del protocolo SMTP (correo) en proyectos de python. Su servidor SMTP inbox.py se integra fácilmente en cualquier aplicación web y permite enviar, recibir y gestionar correos sin tener que conocer el horror de los macros de Sendmail.

from inbox import Inbox

inbox = Inbox()

@inbox.collate
def handle(to, sender, body):
    ...

# Bind directly.
inbox.serve(address='0.0.0.0', port=4467)

if __name__ == '__main__':
    inbox.dispatch()

$ dasinbox.py 0.0.0.0 4467
[2012-04-28 07:31] INFO: inbox: Starting SMTP server at 0.0.0.0:4467

El servidor funciona en modo asíncrono. Segun Keneth llega a poder gestionar 1000+ correos por segundo gracias al uso de la biblioteca Gevent.

Error critico en PHP (modo CGI)

Error critico en PHP (modo CGI)El grupo CERT acaba de publicar un reporte acerca de una vulnerabilidad critica en PHP. El script solo es vulnerable si se ejecuta en el modo CGI (por ejemplo con mod_cgid de Apache). Los scripts ejecutados con mod_php o FastCGI no son vulnerables. La vulnerabilidad permite ejecutar el código aleatorio en el servidor o ver el código fuente de cualquier script php.

CERT ha notificado a los desarrolladores de PHP sobre el error el 17 de enero. Sin embargo, al dia de hoy no existe ninguna version donde la vulnerabilidad este arreglada. A todos los usuarios de PHP en modo CGI se recomienda aplicar este parche.

Parece cer que la vulnerabilidad existe desde 2004. El problema es bastante grave dado que la explotación de la vulnerabilidad es trivial. Basta con poner un parámetro de linea de comandos de php-cgi en la parte «query string» de la URL. Por ejemplo, para mostrar el código fuente del script:

http://localhost/index.php?-s

Google lanza mod_spdy para Apache


Google ha dado otro paso en su intento de popularizar el protocolo SPDY — el HTTP mejorado. Ayer la compañía ha anunciado el lanzamiento de modulo mod_spdy para el servidor Apache 2.2. Este modulo permite a apache servir el contenido a los clientes usando el protocolo SPDY. Se comenta que no es un lanzamiento — sorpresa: la versión beta del modulo fue disponible desde el final de 2011.

Los ingenieros de Google dicen que en algunos casos el protocolo es capaz de ir 50% mas rápido que HTTP sin llevar ninguna carga adicional al hardware. En su protocolo Google han reunido varias técnicas de aceleración conocidas hasta el momento, como compresión del los encabezados HTTP, multiplexación de varias peticiones en la misma conexión TCP, algunos mecanismos de priorización de contenido. El protocolo solo sera capaz de funcionar con los navegadores que llevan su soporte integrado. De momento son el navegador de Google — Chrome, el navegador por defecto de Android, Mozilla Firefox. Los desarrolladores reconocen que no han inventado nada revolucionario, simplemente han reunido las mejores practicas conocidas hasta ahora y han hecho el trabajo de integrarlas en el software que ya existe y esta en uso (como Chrome o Apache).

Suele recordar que Microsoft esta trabajando en una tecnología parecida: HTTP Speed + Mobility.

Nueva vulnerabilidad en samba permite obtener los privilegios de root remotamente

samba exploitParece que han descubierto la vulnerabilidad mas peligrosa en Samba de toda su historia. Samba 3.6.3 y todas las versiones anteriores esta vulnerable a un ataque remoto que permite obtener los privilegios de root en el sistema. Tampoco hace falta autenticarse para ejecutar el ataque. Es suficiente tener alcance al puerto de red donde el servicio de Samba esta escuchando.

Son vulnerables todas las versiones de 3.0.x hasta 3.6.3. Se aconseja a todos los usuarios actualizar sus servidores a las versiones lanzadas hoy que corrigen esta vulnerabilidad: 3.6.4, 3.5.14 y 3.4.16. También han preparado los parches que corrigen esa vulnerabilidad en las versiones de Samba que ya no están soportadas.

La vulnerabilidad originalmente fue descubierta por hackers de Zero Day Initiative el 15 de marzo. Los desarrolladores estaban trabajando casi un mes para arreglar el problema.

Monitorización de sitio web con Google Docs

Monitorización de sitio web con Google Docs
Amit Agarwal, el autor del blog Digital Inspirations, ha publicado un script para Google Docs que permite monitorizar el estado de cualquier pagina web. Google Docs ejecuta el script cada minuto, guarda el resultado en una celda y manda un e-mail con avisos en el caso si la pagina web no responde. Es decir, se puede crear fácilmente un servicio de monitorización sin gastos.

Leer mas

Python: del x y x.__del__()

del x y x.__del__()En una entrevista de trabajo me han preguntado, cual sera el resultado de la ejecución de siguiente código:
class A:
     def __init__(self, name):
          self.name = name
     def __del__(self):
          print self.name
aa = [A(str(i)) for i in range(3)]
for a in aa:
    del a
print 'done'

No la respondí correctamente. He dicho que sera: «0 1 2 3 done». Tal vez para los programadores mas avanzados sera obvio pero yo tuve una sorpresa a ver solo «done» en la salida.

Lo primero que hice después era consultar la documentación sobre __del__(self) y esto es lo que he visto:

Leer mas

bash: doble paréntesis

bashBash por si es un intérprete de comandos muy potente. Me gustaría hablar solo de un operador suyo — doble paréntesis. Este operador en su forma mas sencilla permite evaluar expresiones por el estilo de lenguaje C:
(( 2 + 2 ))

Veamos un bucle creado con doble paréntesis:
a=()
b=(14 3 72)
c=5
for ((i=0; i<${#a[@]}; i++ )); do
 (( a[$i]=b[$i]+c ))
done

¿A que esto suena a C? Para obtener el valor de la variable VAR entre los doble paréntesis no necesitamos decir $VAR o ${VAR}. Con solo VAR vale.
a=()
b=(14 3 72)
c=5
for ((i=0; i<${#a[@]}; i++ )); do
 (( a[$i]=b[$i]+c ))
done


Leer mas

Como juntar muchos videos en uno

Recodificamos cada video (sin perdida de calidad):
ffmpeg –i video1.avi –sameq video1.mpg
ffmpeg –i video2.avi –sameq video2.mpg
ffmpeg –i video3.avi –sameq video3.mpg

Les juntamos:
cat video1.mpg video2.mpg video3.mpg | ffmpeg –f mpeg –i - -sameq video.avi

Y listo.
Como juntar muchos videos en uno

npm2debian: herramienta para crear paquetes deb a través de npm

En nuestro equipo de desarrollo hemos usado Node.JS en unos cuantos proyectos. En algún momento hemos dado cuenta que habría que buscar algún modo de desplegar rápidamente y mantener los paquetes npm usados por Node.JS en los sistemas. En la mayoría de los casos hemos usando Ubuntu y al no encontrar ninguna herramienta adecuada de despliegue de los npms hemos decidido hacer una.

La herramienta se llama npm2deb y sirve para crear paquetes deb a través de los paquetes npm. Se la puede descargar desde GitHub. La primera version fue escrita hace mas que un año. A partir de allí hemos hecho bastante cambios. Las primeras versiones usaban cdbs. Las ultimas se basan en debhelper 7. Estamos intentando mantener la documentación al día.

Después de usar npm2deb, el usuario obtiene un paquete deb de código fuente. Lo único que queda es crear un paquete binario con el comando debuild или dpkg-buildpackage -rfakeroot.

La ultima version de npm2deb (0.2.10) esta disponible en el repositorio.

Instalacion:
npm -g install npm2debian 

Si habéis encontrado un bug o tenéis alguna sugerencia, por favor dejen una nota en el tracker.

Colgamos un servidor con un "fork bomb" en PHP

fork bomb phpHola a todos. Escribo esto para atraer la atención a un problema que tienen muchos servidores de alojamiento web compartidos. El problema es que en un servidor dado mal-configurado una pagina web puede consumir todos los recursos del servidor sin control, dejando a otras paginas web en el mismo servidor sin recursos.

Para demostrar el problema he hecho un fork bomb en PHP. En el caso si el servidor es vulnerable, el script consume todos los recursos disponibles del servidor. Solo le salva el reinicio.

Antes de todo veamos el código de un script capaz de colgar el servidor de alojamiento:

Leer mas