Resetear el password de chamilo

Me extrañó lo poco documentado que está esto, y lo sencillo que es. Pero bueno este post les evitará browsear en el código. Hay 3 posibilidades:

Texto plano)
update user set password = ‘051195’ where user_id =1;
MD5)
update user set password = md5(‘051195’) where user_id =1;
Sha1) Obvio que está era la mía
update user set password = sha1(‘051195’) where user_id =1;

Muy sencillo. Saludos a todos.

Google storage

Hola a todos, nos estabamos quedando sin espacio de disco para una empresa editorial para la que trabajo, y buscando algún servicio de almacenamiento di con GoogleStorage, realmente es muy barato y nos deja almacenar todo lo que querramos. Una vez que instalamos la aplicación sólo tenemos que crear la nueva carpeta:

gsutil mb gs://nuevacarpeta

y subir los archivos:

gsutil cp -R -n -c * gs://nuevacarpeta/

A mi me sirvió para dejar nuestros discos a un 90% de su capacidad retirando proyectos que ya no necesitaremos. Espero les sirva a ustedes, yo lo recomiendo.

Saludos

Balance de carga entre servicios

Hola gente, yo de nuevo por aquí. Hace muy poco tiempo me ha tocado trabaar para una empresa que tenía serios atrasos en un gateway GPS desarrollado en java. Al principio pensamos que era postgres, después el disco, la red, etc. Pero bueno al final el problema era el mismo GW que después de un número N de conexiones se paraba. Solución!, le saqué el polvo a un script que había hecho para balancear conexiones (algún día lo dejaré por aquí también) y lo modifiqué de la siguiente manera para que haga un round robin de conexiones. O sea, se crea una conexión nueva (-m state –state NEW) y se la manda a uno u otro (-m statistic –mode nth) haciendo coincidir el número de paquete (–packet 1), sobre la cantidad total de servicios (–every 3) cada vez que el límite se alcanza, el contador vuelve a cero. Pues bueno, acá les dejo el ejemplo para 3 servicios:

iptables -t nat -I PREROUTING -p tcp --dport 5507 -m state --state NEW -m statistic --mode nth --every 3 --packet 0 -j DNAT --to-destination 192.168.1.4:5507
iptables -t nat -I PREROUTING -p tcp --dport 5507 -m state --state NEW -m statistic --mode nth --every 3 --packet 1 -j DNAT --to-destination 192.168.1.5:5507
iptables -t nat -I PREROUTING -p tcp --dport 5507 -m state --state NEW -m statistic --mode nth --every 3 --packet 2 -j DNAT --to-destination 192.168.1.4:5512

Para los que usen shorewall, tienen que cambiar PREROUTING por net_dnat, les quedaría así:

iptables -t nat -I net_dnat -p tcp --dport 5507 -m state --state NEW -m statistic --mode nth --every 3 --packet 0 -j DNAT --to-destination 192.168.1.4:5507
iptables -t nat -I net_dnat -p tcp --dport 5507 -m state --state NEW -m statistic --mode nth --every 3 --packet 1 -j DNAT --to-destination 192.168.1.5:5507
iptables -t nat -I net_dnat -p tcp --dport 5507 -m state --state NEW -m statistic --mode nth --every 3 --packet 2 -j DNAT --to-destination 192.168.1.4:5512
Y bueno, eso es todo amigos. Espero que los saque del paso.
Saludos.

Mail alerts con pushOver

Bueno una empresa me pidió que le haga un sistema para recibir notificaciones si el servidor de correo cae. Lo que se le puede ocurrir a todo el mundo es usar un telnet y monitorear el servicio, pero cosa de descartar problema de DNS, espacio en disco y demás cosas hice un daemon un poco más complejo.
La idea es:
+ Enviar un correo y revisar si lo recibimos desde otro servidor al nuestro.
+ Luego al revés, o sea, enviar un correo desde nuestro servidor al servidor de control a ver si llega.
Si en ambos casos llegar, todo perfecto, si no envía notificaciones push a una lista de iphones. Más sencillo imposible, y más útil tampoco :P.

Continue reading

Mysql muy lento en Plesk

Bueno gente de vuelta de las vacaciones. Perdonen si en estos días anduve medio vago y no subí nada. Hoy voy a poner un par de artículos.

Por esa cosas de la vida me encontré con este problema, la tabla smtp_poplocks se llena demasiado rápido, para que se den una idea en solo una hora tiene 2217 registros, al cabo de un par de meses esta tabla tiene un par de miles imagino. El tema es que esta tabla se usa mucho, porque se usa cada vez que se hace un auth de smtp se fija primero si no hay un pop3 o un imap autenticado. Lo que hice como primera medida fue parar el xinetd, courrier imap, el qmail, y el spadyke (en ese orden), asegurarme de que no quede ningún proceso y simplemente borrar la tabla, luego levantar todo. Con esto la performance de uno de mis servidores pasó de 50% a 4% (en horas pico).

select count(*) from smtp_poplocks;

Espero les sirva, en un par de días actualizo con el script que voy a poner en el cron, lo pongo mientras para no olvidarme.

MN

Plesk default charset htaccess

Hola, esta es una pregunta bastante recurrente que me hace la gente que me contrata hosting. Como hacer que por defecto tome el charset que nosotros queremos, fácil, agregarmos al directorio httpdocs el archivo que se llame .htacess una línea que diga:

AddDefaultCharset UTF-8

Y listo, con eso ya se verán bien nuestrá página. Lo síntomas normales es que se vén carácteres extraños en los acéntos, o en las eñes. Lo normal para joomla, drupal y otras apps de ese tipo es usar utf-8, si en cambio es una página en html hecha con dreamweber podemos usar latin-1.

Espero que les sirva.
Saludos.

Plesk activar un dominio desde consola

Bueno, esto es muy útil sobre todo cuando tenemos la licencia del plesk vencida. Por un descuido justo hoy tuve que lidiar con esto.

1) subimos el límite de nuestro dominio que está en POSIX time (o unix time). En nuestra base de datos psa hacemos:

update Limits set value = 1347204097 where id = 220 and limit_name = ‘expiration’;

2) Activamos el dominio:

/usr/local/psa/bin/domadmin –update radiochubut.com -status true

Pero claro nos dice lo siguiente:

Unable update domain administrator: the following options are required for domain administrator creating: passwd

Lo cual estimo que debe ser porque la licencia está vencida, entonces lo resolvemos así:

2.1) Copiamos el backup de nuestro httpd.include (por eso es bueno siempre tener bkps)
solucionesroot:~# cp /home/www/vhosts/domain.com/conf/httpd.include /mnt/home/www/vhosts/domain.com/conf/

2.2) Agregamos al final del archivo /etc/apache2/conf.d/zz010_psa_httpd.conf la linea:

Include /home/www/vhosts/domain.com/conf/httpd.include

2.3) Recargamos la conf del apache: /etc/init.d/apache2 reload

¡Y buala! nuestro dominio está activo, claro que luego hay que garpar la licencia, pero a mi me sirvió para zafar hasta que la gente de Parallels se cobre de mi tarjeta.

Espero les sirva a ustedes también.
MN

Saber si nuestro procesador soporta 64bits

Hola gente, esta es una pregunta recurrente, y hay una forma muy sencilla de resolverla. Hay dos cosas separadas:

1) si nuestro kernel está compilado para 64bits.

solucionesroot:~# uname -a
Linux solucionesroot.com 2.6.26-2-amd64 #1 SMP Tue Jan 25 05:59:43 UTC 2011 x86_64 GNU/Linux

Pero, aún cuando la arquitectura diga 32bits, puede ser que nuestro procesador soporte 64 bits.

2) Hacemos la siguiente prueba:

solucionesroot:~# cat /proc/cpuinfo | grep flags

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall lm constant_tsc pebs bts pni monitor ds_cpl cid cx16 xtpr

Si entre los flags aparece lm entonces nuestro procesador soporta Long mode, osea, nuestro procesador es de 64bits, y podemos instalar un kernel de 64bits en ese sistema. Está definición está en el archivo:
/usr/include/asm/cpufeature.h: #define X86_FEATURE_LM (1*32+29) /* Long Mode (x86-64) */
Espero les sirva.
Saludos.