redigir hostnames en apache con mod_rewrite

Hay casos ( por ejemplo en Prestashop 1.3 ) que es necesario que la navegación se redirija de hostingaldescubierto.com a www.hostingaldescubierto.com

Una forma fácil de solucionar esto sería agregar al .htaccess las siguientes lineas:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST}   !^www.hostingaldescubierto.com [NC]
RewriteRule ^(.*)$         http://www.hostingaldescubierto.com/$1 [L,R=301]

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST}   !^www.hostingaldescubierto.com [NC]
RewriteRule ^(.*)$         https://www.hostingaldescubierto.com/$1 [L,R=301]

Es importante destacar que %{HTTPS_HOST} NO EXISTE para eso usamos %{HTTPS} que nos indica si se usa el protocolo seguro o no y HTTP_HOST nos indica el nombre de host, ya sea bajo ssl o no.

SOAP __soapCall posible bug ? faltan parámetros

La petada del día de hoy ha sido con php 5.3 y el cliente de SOAP ( SoapClient::__soapCall() )

La historia es que estamos implementando un cliente para usar un webservice de un tercero y nos estaba petando siempre, por que su lado tampoco lo tienen muy apañao y nos devolvía unas trazas de java muy feas 😀

El caso es que al final me he liado a tracear las conexiones tcp para ver qué estabamos mandando y veía todo el rato que envíamos sólo un parámetro cuando tenían que ser dos. Después de volverme loco durante un rato, me ha funcionado haciendo la llamada directamente desde el objeto cliente.

Como esto es un carajal vamos a ver ejemplos reales ( he usado wireshark por que estoy perruno 😀 ) :
el script en php es este:

[shell]
<?php

try {
$wsdl = ‘http://localhost:8080/autenticacion/validateuser?WSDL’;

$params = array();
$params[‘authentication’] = SOAP_AUTHENTICATION_BASIC;
$params[‘login’] = “jorge” ;
$params[‘password’] = “senin” ;

$params[‘trace’] = true ;

$client = new SoapClient ( $wsdl ,$params ) ;

$validation = array ( ‘usuario’ => ‘pepe’, ‘password’ => ‘123456’ );

$result = $client->__soapCall ( ‘autenticar’ , $validation );

var_dump ( $result );

}

//gestion de excepciones
catch (Exception $e) {
print “SOAP Error: ” . $e->getMessage();
print $client->__getLastResponse( );
}

?>
[/shell]

Devuelve:

[shell]
<?xml version=”1.0″ encoding=”UTF-8″?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV=”http://schemas.xmlsoap.org/soap/envelope/” xmlns:ns1=”http://www.senin.org/autenticacion”>
<SOAP-ENV:Body>
<ns1:PeticionLogin/><param1>123456</param1>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
[/shell]

Como veis falta un parámetro, falta el username, sólo me envía la password

pero si hago la llamada de esta forma :

[shell]
$result = $client->autenticar( $validation );
[/shell]

Funciona correctamente :

[shell]
<pre>
<SOAP-ENV:Envelope xmlns:SOAP-ENV=”http://schemas.xmlsoap.org/soap/envelope/” xmlns:ns1=”http://www.senin.org/autenticacion”>
<SOAP-ENV:Body>
<ns1:PeticionLogin>
<ns1:usuario>jorge</ns1:Usuari>
<ns1:password>123456</ns1:Contrasenya>
</ns1:PeticionLogin>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
</pre>
[/shell]

Si veis difiere como se envía el SOAP.

He encontrado esta entrada en un foro de drupal :

http://drupal.org/node/1191790

Those calls are not equal, because the arguments are passed differently. __soapCall() splits up the arguments array into separate parameters, while directly calling the operation method passes the arguments array as is. Looks like your server implements a document/wrapped parameter scheme, which is unfortunately not supported by the PHP SOAP client. You need to wrap the parameters yourself, your operation has only one complex data structure as parameter that contains the actual parameters as properties.

Y por hoy no está mal 😀

Idea genialmente absurda

Se me acaba de ocurrir lo siguiente:

Lanzar ataques a un sitio web simplemente basados en las estadísticas de visitas. Los grandes comercios online dependen de como funciona su sitio web, como interactuan sus usuarios, conversiones de compra, etc… Se me ocurre que se podrían diseñar ataques de forma que los datos capturados de las análiticas fueran totalmente confusos, referers falsos, navegación aletoria, carros de compra con productos aleatorios, … cientos de cosas.

De esta forma sucedería lo siguiente :
* campañas de marketing serían más costosas ya que hay que dedicarle más esfuerzos a interpretar los datos.
* objetivos de la campañas difusos
* bajada de los ingresos debido a la ineficacia de las capañas de marketing
* cambios de dirección de la estrategia de marketing.

Estas medidas las toma la propia empresa de los datos capturados de la navegación, así que sería una forma elegante de reducir los ingresos de una empresa sin realizar ataques bloqueantes.

Es una chorrada que se me acaba de ocurrir, pero puede que algún caso funcione 😀

solucionando problemas con subversion

En este caso agregé el fichero prueba.php al repositorio de subversion y luego lo borré… claro al comitear me sale esto :

[shell]
svn commit -m “subir fichero”
svn: Commit failed (details follow):
svn: ‘/home/jorge/Proyectos/foo/prueba.php’ is scheduled for addition, but is missing
[/shell]

… y recordé que existe algo que se llama svn revert

Así que si revierto el fichero, lo soluciono

[shell]
svn revert prueba.php
svn commit -m “otros cambios menores….”
Committed revision 11.
[/shell]

ala y a correr !

TPV La Caixa (Sermepa) y Prestashop

Últimamente estoy programando bastantes módulos para prestashop, entre ellos pasarelas de pago de distintos bancos. Una de las conclusiones a las que estoy llegando es que no merece la pena usar La Caixa como TPV por la cantidad de problemas que da a los usuarios que quieren realizar una compra.

A mí mismo me está pasando, intento realizar una compra en un comercio y al haberme equivocado un par de veces en la password de ‘comercio electrónico seguro’ me tira la tarjeta, con lo que me quedaré sin poder usarla al menos durante todo el día. Supongo que es un bloqueo temporal por seguridad pero demasiado restrictivo, y lo que es peor es que los comercios no pueden interactuar con el sistema para activar de nuevo la tarjeta, con la consecuente pérdida del cliente y la mala experiencia que se lleva del sitio, seguramente para no volver a comprar.

Por si teneis curiosidad, es el error que me está dando a mí:

[shell]
No se ha podido realizar la operación por la razón:

Error en datos enviados. Contacte con su comercio.
[/shell]

Si editais el código fuente de la página, podeis ver: <!–SIS0261:–>Error en datos enviados. Contacte con su comercio.

Si consultais la documentación de Sermepa :

[shell]
SIS0261 -> Operación detenida por superar el control de restricciones en la entrada al SIS.
[/shell]

Pues eso, que os han bloqueado temporalmente.
Si necesitais ayuda, ahí abajo teneis el botón para ponerme un mensaje o si no a jorge@senin.org 😉

LWP will support https URLs if either Crypt::SSLeay or IO::Socket::SSL

Si estais cacharreando con los comandos y quereis hacer un GET o POST usando https os puede aparecer esto :

[shell]
$ GET https://www.hostingaldescubierto.com
LWP will support https URLs if either Crypt::SSLeay or IO::Socket::SSL
is installed. More information at
<http://search.cpan.org/dist/libwww-perl/README.SSL>.
[/shell]

y la forma de solucionarlo es instalando las liberías de perl que hacen falta:

[shell]
apt-get install libio-socket-ssl-perl libnet-ssleay-perl
[/shell]

Cómodo y sencillo 😀

Dinahosting : DELL R200 al 50%

A los clientes de dinashosting nos está llegando esta promo, por si a alguien le interesa:


TODOS LOS DELL R200 AL 50%
¡Y eso no es todo! Desde hoy mismo puedes encontrar nuestra gama de dedicados DELL R200 tanto administrados como no administrados con un 50% de descuento el primer año. Desde luego es una oportunidad única que no deberías dejar pasar por alto... Además todos los modelos vienen con 4GB de RAM o más; échale un vistazo a las configuraciones disponibles: https://dinahosting.com/promos/servidores-dell-r200-a-mitad-de-precio

Ahí va un ejemplo:
- R200 con un Quadcore, 2GB de RAM, 250GB de disco y 10TB de transferencia mensual te queda en solo 40€ al mes. ¡Además te regalamos la ampliación de RAM a 4GB!