Desde este año es obligatorio que todos los trámites que se realicen con el registro mercantil se hagan telemáticamente. Por mi parte todo perfecto por que así nos ahorramos tiempo y viajes pero como siempre que hay que realizar algún trámite online con la administración llegaron los problemas.

Hoy me ha llegado una notificación y al intentar visualizarla me daba el siguiente error: “Error obteniendo certificados de usuario.
Se ha producido un error que impide el correcto funcionamiento de la aplicación
Por favor disculpen las molestias.
Póngase en contacto con nuestro Servicio técnico en el tfno: 902 201 200 / 91 270 17 97.”

registradores2

 

y después “Error obteniendo certificados de usuario

registradores3

 

Por supuesto que tanto los certificados como java están funcionando correctamente.

Aunque ya me imaginaba la respuesta he llamado al teléfono de referencia y la respuesta ha sido la típica: “Abra una nueva ventana del Internet Explorer” y cuando le he explicado que no tengo internet explorer ni windows ni nada de eso me ha contestado lo habitual “es que sólo funciona con internet explorer”. La verdad es que a estas alturas de la película que alguien desarrolle sólo para internet explorer es de tontos, ya se que no me van a hacer ni caso y que por muchas reclamaciones que presente no van a solucionar nada pero me fastidia que me respondan eso, así que el chaval que me respondió al teléfono me ha tenido que escuchar un ratito despotricar sobre todo este tema.

Revolviendo un poco me he dado cuenta de que si cambias un pequeño parámetro de la url ya puedes acceder al documento sin problemas, concrétamente el parámetro es tipoDetalle y hay que cambiar el valor de 2 a 3, así:

URL original (el código de petición lo he eliminado)
https://www.registradores.org/presentacionTelem/notifComuAvisoDocs.do?dispatch=mostrarDatosDetalle&pantalla=basicPage&tipoDetalle=2&codPeticionEnvioEDoc=xxxxxxxx

Se cambia a este:
https://www.registradores.org/presentacionTelem/notifComuAvisoDocs.do?dispatch=mostrarDatosDetalle&pantalla=basicPage&tipoDetalle=3&codPeticionEnvioEDoc=xxxxxxxx

Y esta es la pantalla final donde ya puedo acceder al documento.

registradores4

Ahora que lo tengo aquí publicado a ver si no se me olvida para la próxima vez. :-)

Una forma original de evitar el spam, popups y un montón de basura sin cargar nada el equipo es hacer que los hosts que lo sirven apunten al localhost. En someonewhocares.org he encontrado un listado de mas de 10000 spammers ya preparados para meter en el fichero host.

Se puede guardar en lugar de tu fichero hosts o añadir al que ya tienes. En mi caso lo tengo que añadir por que lo utilizo para mas cosas, así que he preparado este pequeño script que se puede añadir al cron y así actualizar periódicamente.

Este es el script:

#!/bin/bash
if [ ! -f /etc/hosts.original  ]
then
        #hacemos copia del fichero original si no existe
        /bin/cp /etc/hosts /etc/hosts.original
else
        #ya tenemos una copia del fichero orginal así que la restauramos
        /bin/cp /etc/hosts.original /etc/hosts
fi
 
#Descargamos el fichero host de http://someonewhocares.org/hosts/ ,filtramos las entradas que nos interesan y lo añadimos al nuestro fichero host
curl --silent http://someonewhocares.org/hosts/hosts | grep '^127.0.0.1' >> /etc/hosts

Si alguna vez necesitáis hacer una redirección de un dominio que no tenga un hosting ya creado lo podéis hacer con Amazon S3 fácilmente. Para este ejemplo voy a redireccionar el subdominio aws.rastreador.com.es a la categoría aws de este blog.

Lo primero es crear un bucket en S3 con el nombre del dominio o subdominio, este detalle es importante, no vale cualquier bucket, tiene que tener el mismo nombre del dominio que se va a redireccionar, en este caso aws.rastreador.com.es

crear_bucket

Una vez creado el bucket vamos a propiedades y seleccionamos la opción de Static Website Hosting. Una vez ahí seleccionamos la tercera opción Redirect all requests to another host name e introducimos la url a la que queremos que se haga la redirección.

redireccion

 

Finalmente sólo nos queda generar un registro cname en nuestro DNS que apunte al endpoint que he señalado en rojo en la imagen anterior.

cname_aws

 

Y con esto ya hemos terminado la redirección, para comprobarlo sólo hay que hacer un curl -I aws.rastreador.com.es y vemos que hace una redirección 301 a la url que le hemos indicado.

resultado

 

 

nginx
Acabo de ver esta entrada “evitar hotlinking mediante nginx” en el blog de systemadmin.es y me ha recordado una anécdota similar con la que tuve que lidiar hace un tiempo.

Revisando los logs de un un acortador de urls con yourls me encontré una barbaridad de enlaces desde un foro que redirigían a imágenes con contenido porno, y la verdad es que ni ese era el objetivo del acortador ni me apetecía regalar ancho de banda (por poco que sea) a esas cosas, así que aprovechando la versatilidad que da nginx hice que todas las peticiones de ese foro se redirigieran a otra foto un pelín diferente.

if ($http_referer ~* (foro_malo_malo)) {
        #return 403;
        return 301 http://www.photogallery.va/content/dam/photogallery/franciscus/06612_19052013.jpg/_jcr_content/renditions/cq5dam.web.800.800.jpeg;
}

La verdad es que me estuve riendo un buen rato pensando en la cara que le quedaría al chaval que esperaba encontrarse una alegre moza con poca ropa y que de pronto se encuentra a este buen señor con esa cara de cachondeo. :-)

Al principio había puesto un “return 403;” pero noté que la gente veía el error, recargaba la url del acortador y ya le redirigía a la página de destino correctamente.

La tecnología S.M.A.R.T. permite monitorizar los diferentes parámetros del disco como pueden ser: la velocidad de los platos del disco, sectores defectuosos, errores de calibración, CRC, distancias medias entre el cabezal y el plato, temperatura del disco, etc.

Con este pequeño script pandoraFMS nos avisará si hay algún problema para poder reaccionar a tiempo. Si tienes algún servidor en cierta empresa francesa que empieza por O y acaba en VH deberías de ponerlo si o si. :-)

El script necesita tener instalada una versión mas o menos moderna de las smartmontools ya que las versiones más antiguas no incluyen el parametro –scan de smartctl

#!/bin/bash
 
OK="PASSED"
 
for i in $(smartctl --scan | awk {'print $1'})
        do
                SMART=$(smartctl -H $i | grep "SMART overall-health self-assessment test result"|tr -d " " |awk '{split($0,a,":");print a[2]}')
                if [ $SMART != $OK ]
                then
                        SALIDA="1"
                        DESCRIBE="ERROR EN DISCO $i"
                else
                        SALIDA="0"
                        DESCRIBE="Check de errores de HD $i con smart"
                fi
                echo "<module>";
                echo "<name>< ![CDATA[Smart $i]]></name>";
                echo "<type>< ![CDATA[generic_data]]></type>";
                echo "<data>< ![CDATA[$SALIDA]]></data>";
                echo "<description>< ![CDATA[$DESCRIBE]]></description>";
                echo "<min_critical>1</min_critical>";
                echo "</module>";
 
        done

PLUS: Si no utilizas PandoraFMS y quieres tener controlada la salud de tus discos este script te enviará un email si S.M.A.R.T. detecta algún problema. Necesitas tener instalado, además del smartmontools, mailutils para poder enviar el email.

#!/bin/bash
OK="PASSED"
for i in $(smartctl --scan | awk {'print $1'})
        do
                SMART=$(smartctl -H $i | grep "SMART overall-health self-assessment test result"|tr -d " " |awk '{split($0,a,":");print a[2]}')
                echo $SMART
                if [ $SMART != $OK ]
                then
                        TO_ADDRESS="correo@micorreoorigen.com"
                        FROM_ADDRESS="correo@micorreodestino.com"
                        SUBJECT="Error en disco smart"
                        BODY=" El disco xxxxx ha dado un error. Revisar cuanto antes"
                        echo ${BODY}| mail -s ${SUBJECT} ${TO_ADDRESS} -- -r ${FROM_ADDRESS}
 
                fi;
 
        done

Mas información sobre S.M.A.R.T:
http://sourceforge.net/apps/trac/smartmontools/wiki
http://lime-technology.com/wiki/index.php/Understanding_SMART_Reports
http://en.wikipedia.org/wiki/S.M.A.R.T

Este sencillo script para pandorafms nos permite comprobar si un raid software tiene algún problema para poder actuar cuanto antes.

#!/bin/bash
for i in $(mdadm --detail --scan | cut -d" " -f2)
        do
                ESTADORAID=$(mdadm --query --detail $i | grep "State :" | tr -d " ")
 
                CHECK=$(echo $ESTADORAID | egrep -c "State:clean,checking|State:active|State:clean")
 
 
                if [ $CHECK -eq 0 ]
                then
                        SALIDA="1"
      #                  DESCRIBE="ERROR EN ARRAY $i"
                        DESCRIBE=$ESTADORAID
                else
                        SALIDA="0"
                        DESCRIBE="Check OK de errores de Raid $i con mdadm"
                fi
                echo "<module>";
                echo "<name>< ![CDATA[Check_raid $i]]></name>";
                echo "<type>< ![CDATA[generic_data]]></type>";
                echo "<data>< ![CDATA[$SALIDA]]></data>";
                echo "<description>< ![CDATA[$DESCRIBE]]></description>";
                echo "<min_critical>1</min_critical>";
                echo "</module>";
 
        done

El script se guarda en la carpeta de plugins del agente de pandora y en la configuración del agente deberíamos añadir la siguiente línea:
module_plugin check_raid

Si queréis comprobarlo a mano se podría utilizar el siguiente comando:

mdadm --detail --scan | cut -d" " -f2 | xargs -I ARG mdadm --query --detail ARG | grep "State :"

Y si no os funcionara mdadm con un simple:

cat /proc/mdstat

Podríais ver el estado del array

A veces es necesario comprobar si el servidor que acabamos de instalar está enviando las páginas comprimidas con gzip si el navegador se lo solicita. La forma más sencilla es preguntándoselo con curl:

curl -I -H 'Accept-Encoding: gzip,deflate' http://rastreador.com.es

La opción -I hace que sólo nos muestre las cabeceras (petición HEAD)
La opción -H ‘Accept-Encoding: gzip,deflate’ envía la cabecera que le indica al servidor que queremos la página comprimida con gzip

Si entre las cabeceras que nos llegan aparece:
Content-Encoding: gzip
o
Content-Encoding: deflate

Significa que la compresión con gzip está funcionando.

Para eliminar la limitación de envío de emails de Amazon Web Service sólo tenemos que ir a la url:
https://portal.aws.amazon.com/gp/aws/html-forms-controller/contactus/ec2-email-limit-rdns-request

En esta misma pantalla también podemos solicitar al mismo tiempo la resolución inversa de dns asignando un nombre de host a la ip elástica que hemos asignado a esa instancia. Es muy recomendable hacer este paso para evitar problemas de spam.

aws_reverse_dns

Dentro de un par de días cambiaremos el IVA del 18% al 21% y todos los que tenemos tiendas online tendremos que cambiarlo a las 00:00 no vaya a ser que nos entre alguna venta y nos la líe. Os voy a contar 3 formas distintas de cambiar el IVA de vuestra tienda.

1.- Desde el admin de Prestashop
Hay que ir a la pestaña de pagos -> Impuestos y editando el impuesto correspondiente se cambia. ¡Acordaros de cambiar el texto en todos los idiomas que tenéis activado!

2.- Desde Mysql
Para usar esta opción hay que saber usuario y contraseña de mysql y el prefijo de las tablas. Como prefijo he utilizo el que pone por defecto prestashop ps_
Desde mysql, phpmyadmin o similar ejecutar las siguientes ordenes

USE nombre_db;
UPDATE ps_tax_lang SET name=REPLACE(name,'18','21') WHERE id_tax=(SELECT id_tax FROM ps_tax WHERE rate=18);
UPDATE ps_tax SET rate=21 WHERE rate=18;

Desde bash los mas cómodo es hacer algo así:

mysql -u usuario_db -pclave_db base_de_datos_prestashop -e "update ps_tax_lang set name=replace(name,'18','21') where id_tax=(select id_tax from ps_tax where rate=18);"
mysql -u usuario_db -pclave_db base_de_datos_prestashop -e "update ps_tax set rate=21 where rate=18;"
También lo puedes automatizar en el cron y olvidarte del cambio.
3.- Con un pequeño script en php que puedes automatizar o ejecutar desde cualquier equipo.
Para poder utilizarlo debes de conocer los mismos datos que en la opción anterior y configurar el script con ellos.
<?php
	$host		=	'localhost';
	$user		=	'usuario';
	$pass		=	'password';
	$database	=	'db_prestashop';
        $prefijo        =       'ps_';
 
        $sql1 = "update ".$prefijo."tax_lang set name=replace(name,'18','21') where id_tax=(select id_tax from ".$prefijo."tax where rate=18);";
        $sql2 = "update ".$prefijo."tax set rate=21 where rate=18;";
 
	$connect = @mysql_connect ( $host, $user, $pass ) ;
	echo "<h1>Proceso de cambio de IVA en la base de datos de prestashop</h1>";
	if ( $connect )
	{
			mysql_select_db ( $database );
			if ( @mysql_query ($sql1) )
			{
				echo '<p>Paso 1 OK</p>';
			}
			else {
				die ( mysql_error() );
			}
 
			if ( @mysql_query ($sql2) )
			{
				echo '<p>Paso 2 OK</p>';
			}
			else {
				die ( mysql_error() );
			}
 
	}
	else {
		trigger_error ( mysql_error(), E_USER_ERROR );
	}
?>

Si lo que quieres hacer es no repercutir la subida a tus clientes lo que hay que hacer es reducir el precio de los productos. La forma mas sencilla de reducir el precio de todos los productos es a través de una consulta SQL:

UPDATE ps_product SET price=price*0.975206611570248;

Espero que os sea útil.


80legs es un webcrawler que tiene la molesta costumbre de visitar todas las páginas de tu sitio web con cientos de visitas simultáneas desde diferentes direcciones ip con el resultado de que pueden llegar a tirarte abajo tu servidor, algo muy parecido a un ataque DDOS pero con barniz de legalidad.

La forma de identificarlos es revisando los logs del servidor donde podrás ver que el useragent de la visita es:
Mozilla/5.0 (compatible; 008/0.83; http://www.80legs.com/webcrawler.html) Gecko/2008032620

En su página te dicen que si no deseas que rastreen tu sitio web debes de añadir en el robots.txt lo siguiente:

User-agent: 008
Disallow: /

Mi experiencia es que muchas veces pasan olímpicamente del robots.txt o también puede darse el caso de que no puedas cambiar nada en ese fichero por lo que lo único que te queda para luchar con ellos es a través del servidor.

En mi caso el problema se me presentó en un servidor donde hay mucho tráfico y en el que utilizo cherokee como servidor web. Para solucionarlo lo que hice fue filtrar las visitas que me llegan con el useragent de 80legs.

Para hacerlo sólo hay que añadir una regla de tipo “header” con la cadena 008 ó 80legs.

Y después hacer lo que quieras con esas visitas: redireccionarlas a una página estática, mostrar un error (en el ejemplo un error 509 – Bandwidth Limit Exceeded – ó un 404 – página no encontrada – ) o simplemente mandarlos al carajo (un DROP).


Actualización
Si quieres bloquearlos desde un servidor con apache lo único que tienes que hacer es añadir estas líneas al fichero .htaccess de tu sitio web:

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} (80legs)
RewriteRule ^(.*)$ – [F]