[SOLUCIONADO] Problema con Recaptcha

Hola, tenemos problemas en la operacion de Recuperar Contraseña porque dejo de funcionar el recaptcha ya que siempre dice que el texto ingresado es incorrecto (dicha funcionalidad no esta personalizada). Necesitamos que nos ayuden a resolver el problema en forma urgente.

La version de Guarani que tenemos actualmente es 3.11.0, y los archivos de configuracion no sufrieron ningun cambio (esta configurado con el host y puerto del proxy de la facultad, y las claves publicas y privadas obtenidas del sitio web de Google).

Les copio un fragmento del log donde sale el error:

clase: siu\errores\error_guarani_usuario
mensaje: El captcha ingresado no coincide, por favor intente de nuevo
traza: [TRAZA]

—[ 0 ]-----------------------------------------

  • function: pers_fcen\operaciones\acceso\controlador->accion__recuperar
  • file: /usr/local/proyectos/g3w3/src/pers/pers_fcen/operaciones/acceso/controlador.php, linea 119

—[ 1 ]-----------------------------------------

  • function: kernel\nucleo\controlador->invocar_accion
  • file: /usr/local/proyectos/g3w3/src/siu/lib/kernel/nucleo/controlador.php, linea 145
  • param:
    0: recuperar
    —[ 2 ]-----------------------------------------

(…)

Saludos!

Hola,

Entiendo por tu comentario que no se personalizó la función. Asimismo, ¿verificaron si existe alguna personalización pueda estar afectando indirectamente la función de recuperar contraseña?

Hola Alejandro:

    Problemas similares se resolvieron en estos Mensajes del Foro ([url=http://foro.comunidad.siu.edu.ar/index.php?topic=10356]Ref1[/url] y  [url=http://foro.comunidad.siu.edu.ar/index.php?topic=9102.msg39355]Ref2[/url]) ya los vieron?

Saludos

Hola, efectivamente como se menciona en uno de los posts que mencionas ( http://foro.comunidad.siu.edu.ar/index.php?topic=10356.15 ) hay un bug en la libreria recaptchalib.php que se corrige agregando la linea resaltada en esta funcion:

function _recaptcha_http_post($host, $path, $data, $port = 80) {

    $usa_proxy = false;

  if (isset($data['parametros_proxy'])) {
     $usa_proxy = $data['parametros_proxy']['activo'] === true;
     $proxy_host = $data['parametros_proxy']['proxy_host'];
     $proxy_port = $data['parametros_proxy']['proxy_port'];
     $proxy_username = $data['parametros_proxy']['proxy_username'];
     $proxy_password = $data['parametros_proxy']['proxy_password'];
     
                   $path="http://" . $host . $path;  // <---- AGREGAR ESTA LINEA
     
    unset($data['parametros_proxy']);
  }

El tema es que dado que este archivo no se encuentra en la carpeta de personalizacion sino en la de base ( g3w3/src/siu/lib/recaptcha/recaptchalib.php ), si hacemos este cambio no se va a mantener cuando, por ejemplo, hagamos la actualizacion a la proxima version. Por lo tanto, no seria necesario que este fix lo incorporen uds?

Saludos!

Hola, dicho fix lo vamos a incorporar en la nueva versión.

saludos.

Hola, detectamos otro problema al hacer esta modificacion, en el caso de que la variable $host tenga por ejemplo el valor “ssl://www.google.com” la url que queda en la variable $path es incorrecta. Por lo tanto, hicimos el siguiente cambio que parece funcionar:

function _recaptcha_http_post($host, $path, $data, $port = 80) {

    $usa_proxy = false;

	if (isset($data['parametros_proxy'])) {
		$usa_proxy = $data['parametros_proxy']['activo'] === true;
		$proxy_host = $data['parametros_proxy']['proxy_host'];
		$proxy_port = $data['parametros_proxy']['proxy_port'];
		$proxy_username = $data['parametros_proxy']['proxy_username'];
		$proxy_password = $data['parametros_proxy']['proxy_password'];
                    
                    //(!)FIX RECAPTCHA
                    $host_partes = explode('/', $host);
                    $path = "http://" . end($host_partes) . $path;
                    klog2('path', $path);
                    
		unset($data['parametros_proxy']);
	}

}

Esto es correcto?

Saludos!

Hola, no seria:


..........................
                        //(!)FIX RECAPTCHA
                        $host_partes = explode('/', $host);
                        if($host_partes[0] == "ssl:"){
                            $path = $host . $path;
                        }
                        else{
                            $path = "http://".$host.$path;
                        }
                        klog2('path', $path);
..........................

no se si debería quedar ssl:// o http://?

pruebenlo y cualquier cosa me dicen así lo agregamos al core.

saludos.

Hola, segun lo que probamos deberia ser siempre http, de otra manera no nos funciona. Tal vez deberia ser https en el caso que se use ssl, pero no estamos seguros porque esta llegando de esa forma a la funcion.

Saludos!

Perfecto, ya metimos el cambio para las próximas versiones. Nuestro equipo de testeo se va a encargar probarlo. Cualquier novedad nos avisan.

saludos.

Hola,
queriamos avisarles que es necesario que tambien hagan este mismo cambio en Preinscripcion, ya que tuvimos el mismo problema en ese sistema para la version 3.5.0 de no poder validar el captcha.

Saludos!

Hola Alejandro:

    Lo cargamos para la próxima versión! Gracias por el reporte!

Saludos!