Archive for the “Software” Category

Hola a todos, hace tiempo que no escribiamos en el blog. Aca les dejamos una funcion interesante del proxy server Squid.

Los usuarios de Squid sabran que por lo general y por default no se puede cachear videos de Youtube. Existen algunas razones, vamos a enumerar algunas:

  • El video viene de varios cache servers internos que usa Youtube (o Google) entonces la url cambia.
  • Si el video se cancela no baja entero.

Para evitar lo primero, a partir de la version 2.7 se incorpora una funcion “storeurl rewrite”, lo que permite separar (parseando) la URL que utiliza para buscar en su storage interno (backend – el cache en si mismo).

De esta manera podemos crear que multiples URL destino hagan referencia al mismo contenido del backend, asi evitamos duplicacion de contenido. Muy util para CDN.

Voy a poner un ejemplo simple: El sitio example.com tiene dos servidores web y me traen la misma imagen.gif, por default en Squid se almacena como dos imagenes diferentes, si haces un rewrite del store, podemos apuntar a la misma.

http://servidor1.example.com/image.gif

http://servidor2.example.com/image.gif

Podemos reescribir algo como: (sintaxis en Perl – mas info ver regex o me preguntan)

$url =~s!http://servidor\d+\.example\.com/(.*\.gif)!http://s-example.INTERNAL/$1!;

Expresion regular que tiene como funcion matchear servidor(numero) y cualquier nombre como gif, ese nombre se reemplaza en $1. Y se reescribe a un nombre de fantasia que invente yo.

Si mas o menos entienden, la idea es rescribir la url a una forma normalizada, tenemos que poner manos a  la obra para Youtube.

Cuando ejecutamos un video este se va a buscar a los caches internos que tienen, y la url tiene mas o menos esta forma: (llama a una funcion videoplayback)

http://v19.lscache7.c.youtube.com/videoplayback?ip=0.0.0.0&
sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor&fexp=904708%2C905208&
algorithm=throttle-factor&itag=34&ipbits=0&burst=40&sver=3&expire=1264122000&key=yt1&
signature=654F0FB48D631BF220381FED556AE9E905989E71.0D479B82F2C57401EDB9AEB24A41C4447DA35E47&
factor=1.25&id=3e9103da619d1f28&

De esos tags podemos desprender varias cosas, pero en este caso solo nos interesa algo que identifique univocamente al video, nos quedamos con el parametro “id”.

Hacemos un rewrite asi:

$url =~s!^http://.*?/videoplayback\?.*id=([^&]+).*!http://v-youtube.INTERNAL/ID=$1!;

Si lo probamos (copiando la url por STDIN, nos devuelve por STDOUT la reescritura.

# perl /etc/squid/store.pl

http://v19.lscache7.c.youtube.com/videoplayback?...&id=3e9103da619d1f28&

http://v-youtube.INTERNAL/ID=3e9103da619d1f28

Y asi.

Parametros a de configuracion a modificar del squid.conf

# aca configuramos el store rewrite
storeurl_rewrite_program /etc/squid/store.pl
acl store_rewrite_list urlpath_regex get_video\? videoplayback\? videodownload\?
storeurl_access allow store_rewrite_list
storeurl_access deny all
cache allow store_rewrite_list

acl QUERY2 urlpath_regex get_video\? videoplayback\? videodownload\?
cache allow QUERY2

# patrones para caching y que ignoremos los encabezados No-Cache
refresh_pattern get_video\? 10080 90% 999999 override-expire ignore-no-cache ignore-private
refresh_pattern videoplayback\? 10080 90% 999999 override-expire ignore-no-cache ignore-private
refresh_pattern videodownload\? 10080 90% 999999 override-expire ignore-no-cache ignore-private
# importante para los range y que baje todo el video, y un pequeño bug con el tamaño de la url
minimum_object_size 512 bytes
maximum_object_size_in_memory 32 KB
range_offset_limit -1
maximum_object_size 200 MB
quick_abort_min -1

Y ahora la magica pieza del store rewrite. :-D

#!/usr/bin/perl
$|=1;
while (<>) {
@X = split;
$url = $X[0];
$url =~s!^http://.*?/videoplayback\?.*id=([^&]+).*!http://v-youtube.INTERNAL/ID=$1!;
print "$url\n";
}

Solamente les dejo el ejercicio para “youtube usando videoplayback”, pero lo tengo para otros sitios de videos de Google, Metacafe, Dailymotion, Vimeo, Soapbox, BlipTV, Break, TV Uol (Brasil), y otros sitios de contenido XXX que no voy a poner aca porque Google me va a indexar y va a pensar mal de mi. Cualquier cosa me preguntan.

Miramos el access.log del squid y cuando acceso a un video (la segunda vez ya sale del cache):

1264093473.644  50428 172.22.0.153 TCP_HIT/200 9817978
GET http://v14.lscache8.c.youtube.com/videoplayback?ip=0.0.0.0&sparams=id%
2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor&fexp=903707&
algorithm=throttle-factor&itag=5&ipbits=0&burst=40&sver=3&expire=1264118400&key=yt1&
signature=0913DFCF267D50241CBA4C84ECBB57450287AE31.262DB100A4F3960D2B66A26591F395D84FED2526&
factor=1.25&id=5a84b0718d025dea& - NONE/- video/x-flv

Hit, hit! :-D

Nos ahorramos cada vez que ven ese video 9MB al estar en el cache.

Saludos a todos

Comments 74 Comments »

Hoy se me presento un problema, soy un usuario muy activo del SwitchProxy ya que estoy en varios lugares que requieren proxy y es una forma rápida de cambiarlo.

Al parecer la actualización del Firefox 2.0.0.14 es incompatible con el SwitchProxy 1.4.1

Revisando un poco la pagina del SwitchProxy no hay updates disponibles y al mirar los comentarios se puede ver que hay quejas ya que en la proxima version FF3 no hay compatibilidad.

Así que acá les propongo un tip para que se ejecute sin problemas, ya que por default deshabilita el plugin. al ser incompatible.

En la barra de URL, escriben: about:config y cambian app.update.incompatible.mode a 1

Listo! Esperemos que estos dias el Switch Proxy revise el codigo y verifique su compatibilidad por ahora parece funcionar sin problemas, pero no tuve tiempo para revisar el codigo en detalle.

Comments 2 Comments »

El siguiente post viene de una pregunta hecha en la lista “LUGAr-gral” de Linux Argentina sobre como remover el signature en las pagina de errores del Squid y aca esta mi respuesta:

Imagino que tenes un Debian Etch (Squid 2.6.5). Aca te dejo un patch que arme y algunas instrucciones para instalarlo. La idea es volver a tener un paquete de Debian con el patch para remover el signature del Squid.

Para el build del deb minimamente necesitas:

apt-get install build-essential dpkg-dev fakeroot debhelper po-debconf dpatch

Luego seguimos con los fuentes del Squid:

cd /usr/local/src
wget http://people.baicom.com/agramajo/patches/squid_2.6.5-not-signature.patch
apt-get source squid
cd squid-2.6.5/
patch -p1 < ../squid_2.6.5-not-signature
dpkg-buildpackage

El ultimo paso arma nuevamente el paquete del Squid, probablemente no tengas algunas librerias para generarlo, revisa la salida del dpkg-buildpackage.

Solo resta instalar el paquete:

cd ..
dpkg -i squid_2.6.5-6etch1_i386.deb

Si es la primera vez a instalar el Squid, faltaria el paquete common, pero no deberia ser tu caso.

dpkg -i squid-common_2.6.5-6etch1_all.deb

Existen varias formas de incorporar un patch a un paquete, por ejemplo con dpatch, pero bueno lo dejamos para otro momento! :-D

Comments No Comments »

El antivirus gratuito AVG (de Grisoft) sacó al mercado su nueva versión 8.0, incorporando varias mejoras, una de ellas es el LinkScanner que ellos llaman un escudo protector en las búsquedas en Internet.

Lo que realiza es inyectar código cuando estamos usando un buscador (google, msn, yahoo, etc) y marcar potenciales URL peligrosas con un tilde verde (sitio sin riesgo), signo de pregunta (no sabe), color rojo (peligroso), etc.

Como realmente me resulta molesto e invasivo lo que hace, decidí tratar de deshabilitarlo, lo cual deja hacerlo desde el panel central, pero el AVG siempre reporta que el componente esta inactivo y lo ve como un riesgo de seguridad. En versiones anteriores dejaba una opción para deshabilitar esta advertencia.

Una vez instalado o antes de instalarlo podemos remover el LinkScanner de una manera efectiva. Bajamos el paquete gratis al C:\ por ejemplo y ejecutamos:

c:\avg_free_stf_*.exe /REMOVE_FEATURE fea_AVG_SafeSurf /REMOVE_FEATURE fea_AVG_SafeSearch

Y listo el AVG, se reinstalara o instalara por primera vez según el caso, sin el LinkScanner! Seguramente sólo faltara actualizar la base del antivirus.

Para mas detalles (solo en ingles):

  1. http://free.grisoft.com/ww.faq.num-1241

Comments No Comments »