martes, 25 de septiembre de 2007

El NTP de los pobres


Bueno, de los pobres, o de los vagos, o de los kutres....el caso es que aquí va mi segundo kutre-script.

Hace unos meses, me encontré en una red en la que el UDP estaba capado... yo tampoco sé en qué estarían pensando cuando decidieron esa política de seguridad, pero los caminos de lo políticos haciendo de admin son inescrutables.

El caso es que estuve investigando alguna solución que permitiese hacer NTP por TCP y no encontré nada.
La siguiente opción consistía en encapsular UDP dentro de TCP, pero no era viable al tratarse de una red aislada, sin otras redes de apoyo externas o que dieran este tipo de servicos. Además están muy desaconsejados este tipo de workarounds.
Por último, yo que antes de nada soy práctico, pensé "¿porqué no hago la consulta a algún servidor web y le meto la hora a las bravas?". Y a mí todo lo que sea meter a las bravas siempre me ha parecido una buena idea, así que creé el siguiente kutre-script:

root@osaka:~# cat /usr/local/bin/time_sync.sh
#!/bin/bash
date -u -s "`wget -O- http://www.time.gov/timezone.cgi?UTC/s/0 2> /dev/null \
| sed -n -e 's/.*size="[75]".*>\(.*\)<br>$/\1/p'`" >& /dev/null


¿Se nota que estoy intentando aprender bash scripting? xD

Ahora sólo hay que añadirlo al cron del usuario root. Para editar el cron, desde una terminal de root, ejecutamos:
root@osaka ~-> crontab -e

Y añadimos la siguiente linea:
00 09 * * * root /usr/local/bin/time_sync.sh

Yo sólo sincronizo una vez al día, porque a la peña de las páginas web les sienta muy mal que utilicen sus páginas las máquinas en vez de las personas, y no es plan de que se cabreen y pongan CAPTCHAs ^_^. Si quieres ponerlo más a menudo, ya sabes:
man -S 5 crontab

Por si un copypaste es demasiado kurro time_sync.sh

PD: Por supuesto, gracias a la gente de http://www.time.gov/ , sin vosotros esto no habría sido posible xDD

NOTA: He actualizado el artículo y el script porque ha cambiado la URL desde la que extraer la hora.
Ya sabes: apt-get update && apt-get upgrade net_para_los_pobres (just kidding)

viernes, 21 de septiembre de 2007

Problema con el idiomas en Wordpress 2.2.3 para sistemas 64bits


Trasteando con wordpress me he vuelto loco para castellanizar la version 2.2.3 de wordpress hasta que encontre en internete lo siguiente :

Si tienes una distribucion de 64 bits y no te funciona la carga de archivos .mo puede ser por que no te funcione un if puñetero que hay dentro de

wp-includes/gettext.php

Editalo y donde pone :

if ($magic == ($MAGIC1 & 0xFFFFFFFF) || $magic == ($MAGIC3 & 0xFFFFFFFF)) { // to make sure it works for 64-bit platforms
  $this->BYTEORDER = 0;
} elseif ($magic == ($MAGIC2 & 0xFFFFFFFF)) {
  $this->BYTEORDER = 1;
} else {
  $this->error = 1; // not MO file
  return false;
}


pon

if ($magic == ($MAGIC1 & 0xFFFFFFFF) || $magic == ($MAGIC3 & 0xFFFFFFFF)) { // to make sure it works for 64-bit platforms
  $this->BYTEORDER = 0;
} elseif ($magic == ($MAGIC2 & 0xFFFFFFFF)) {
  $this->BYTEORDER = 1;
} else {
  $this->BYTEORDER = 0;
  // $this->error = 1; // not MO file
  // return false;

}


El reporte del bug en :
http://wordpress.org/support/topic/95983

y la solucion en :
http://comox.textdrive.com/pipermail/wp-trac/2007-June/012844.html

martes, 18 de septiembre de 2007

Modulo de apache de php en Gentoo

Hace un par de dias actualice mi sistema con un emerge -va world con la mala pata que cuando termino la compilacion y en vista de que tenia que actualizar 17 archivos de configuracion hice el gañan y movi el contenido de los nuevos sobreescribiendo los viejos

Una vez terminada la faena y en vista que todo parecia funcionar yo segui a lo mio hasta que hoy al intentar entrar a una de las paginas que tengo alojadas en mi ordena me descargaba el codigo php :D. ¿Gracioso no?

Acto seguido pare el apache ya que como es obvio el codigo libre pero no las passwords de los ficheros de configuracion del wordpress :P

Bueno pues ahora por la tarde me disponia a meter el modulo de php5 que imagine se les habria pasado a estos maravillosos ebuildsnasters de gentoo con la mala pata que al ponerlo me dio el siguiente error

Apache2 has detected a syntax error in your configuration files:
apache2: Syntax error on line 169 of /etc/apache2/httpd.conf: Syntax error on line 4 of /etc/apache2/modules.d/70_mod_php5.conf: API module structure 'php5_module' in file /usr/lib64/apache2/modules/libphp5.so is garbled - expected signature 41503232 but saw 41503230 - perhaps this is not an Apache module DSO, or was compiled for a different Apache version?


Buscando por internet me di cuenta que me veo obligado a re-emergear el php (que no es poco)

En fin, no todo ha sido tiempo perdido, he aprendido algo nuevo que me interesa reflejar aqui a modo de apunte acerca de la configuracion de apache en gentoo

Para cargar el modulo php puedes hacerlo de varias formas

La que yo ya sabia era metiendo en alguno de los archivos de configuracion como por ejemplo en....

/etc/apache2/modules.d/default

...la carga de el modulo...

LoadModule php5_module modules/libphp5.so

Tambien puedes editar el archivo en /etc/conf.d/apache2 y añadir -D PHP5 a las opciones de arranque de apache2

APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D LANGUAGE -D MANUAL -D SSL -D SSL_DEFAULT_VHOST -D SUEXEC -D PHP5"

Estas dos primeras opciones cargan el modulo de php... la pregunta del millon es ¿Que diferencia una de la otra?

La primera solo carga el modulo, luego tu tienes que establecer en que sitio deseas que se pueda ejecutar el php que extensiones etc.... con la segunda, tira de un archivo en mi caso /etc/apache2/modules.d/70_mod_php5.conf que contiene ya toda la configuracion tipica de un servidor que admita php.

El contenido del mismo es:

<IfDefine PHP5>
  # Load the module first
  <IfModule !mod_php5.c>
    LoadModule php5_module modules/libphp5.so
  </IfModule>
  
  # Set it to handle the files
  <IfModule mod_mime.c>
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php .phtml
    AddType application/x-httpd-php .php3
    AddType application/x-httpd-php .php4
    AddType application/x-httpd-php .php5
    AddType application/x-httpd-php-source .phps
  </IfModule>
  
  AddDirectoryIndex index.php index.phtml
</IfDefine>


La decision de usarlo o no ya recae en cada uno y varia segun a quien esta destinado los virtuales... en mi caso que solo estoy programando web en php y que soy el unico usuario de este servidor me ahorra mucha morralla a la hora de configurar nuevos servidores virtuales.

Seguidores