hola, en la universidad estamos detrás de un proxy, con el captcha configurado en true, anda en los intentos fallidos del login, pero en la parte de recuperar contraseña no funciona. Sin el proxy configurado da un error de que no se puede conectar al socket (da un timeout) y con el proxy configurado no hace la validación. Que podemos hacer?
Detecté que al intentar usar XDEBUG a pesar de tener tildada la opción “no usar proxy para direcciones locales” cuando desde el server se busca la IP del host cliente se muere en la IP del proxy y no llega a conectar xdebug con el IDE de desarrollo. Eso se soluciona simplemente desabilitando el proxy en el navegador usado para debug y listo.
Es probable que esté pasando algo similar con el captcha, pero podés desabilitar el proxy sólo si podés configurar el acceso a internet sin proxy (el captcha necesita internet… si no tenés no funcionará)
pregunta, como tenes configurado el parámetro activo del proxy en el archivo config.php?, tendría que ser true, ya que si pones 1 u otro valor que evalúe a true no va a funcionar ya que se usa un ===
Hola Maxi, me extraña que en el login funcione y en recuperar contraseña no, ya que hacen lo mismo.
Sigamos debugeando, te pediría que en el archivo src/siu/extension_kernel/controlador_g3w2.php función check_recaptcha agregues el siguiente klog2 para ver si la respuesta del captcha tiene algún error que nos ayude a detectar el problema:
esto es lo que devuelve la respuesta del captcha, is_valid es false y el error dice “Host: www.google.com”, estuve googleando un poco pero no encontré nada al respecto, para mi el error viene por que el proxy esta teniendo problemas con www.google.com, revisen eso. Tienen acceso a http://www.google.com/recaptcha/api/verify estando bajo el proxy?
También busquen en google con frases como “recaptcha error Host: www.google.com using proxy”.
Ademas de lo anterior, esto te pasa solo en esta instalación/ambiente o te sucede en otras instalaciones/ambientes?
que versión de PHP y Apache tenes instalada?
para seguir debugeando te pediría lo siguiente, en el archivo src/siu/lib/recaptcha/recaptchalib.php función _recaptcha_http_post agrega los siguientes tres klog2 y volveme a enviar los logs una vez mas:
function _recaptcha_http_post($host, $path, $data, $port = 80) {
....................................................
$response = '';
if ($usa_proxy) {
if (!empty($proxy_username)) {
$auth_string = base64_encode($proxy_username . ($proxy_password != '' ? ":{$proxy_password}" : ''));
$http_request .= "Connection: close\r\n";
if ( !empty($auth_string ) ) $http_request .= "Proxy-Authorization: Basic {$auth_string}\r\n";
}
if( false == ( $fs = @fsockopen($proxy_host, $proxy_port, $errno, $errstr, 10) ) ) {
die ('Could not open socket');
}
} else {
if( false == ( $fs = @fsockopen($host, $port, $errno, $errstr, 10) ) ) {
die ('Could not open socket');
}
}
//Escribo en los logs
klog2("errno", $errno);
klog2("errstr", $errstr);
fwrite($fs, $http_request);
while ( !feof($fs) )
$response .= fgets($fs, 1160); // One TCP-IP packet
//Escribo en los logs
klog2("response", $response);
fclose($fs);
$response = explode("\r\n\r\n", $response, 2);
return $response;
}
por nuestra parte vamos a intentar reproducir el caso, saludos.
Hola Maxi, según veo en los logs da un error, seguramente es por el proxy, no se si vos también estas viendo los logs antes de enviármelos?, lo ideal es que busquemos una solucion de los dos lados, dice:
-- errno ---------------------------------------------------------------------
0
-- errstr --------------------------------------------------------------------
-- response ------------------------------------------------------------------
HTTP/1.0 400 Bad Request
Server: squid/2.7.STABLE9
Date: Tue, 10 May 2016 17:20:28 GMT
Content-Type: text/html
Content-Length: 2552
X-Squid-Error: ERR_INVALID_REQ 0
X-Cache: MISS from proxy.unlu.edu.ar
X-Cache-Lookup: NONE from proxy.unlu.edu.ar:8080
Via: 1.0 proxy.unlu.edu.ar:8080 (squid/2.7.STABLE9)
Connection: close
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERROR: El URL solicitado no se ha podido conseguir</title> <style type="text/css"><!-- %l body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; } --></style> </head><body id=ERR_INVALID_REQ> <div id="titles"> <h1>ERROR</h1> <h2>El URL solicitado no se ha podido conseguir</h2> </div> <hr> <div id="content"> <p><b>Petición Incorrecta</b> se ha encontrado un error mientras se intentaba procesar la petición:</p> <blockquote id="data"> <pre>POST /recaptcha/api/verify HTTP/1.0
Host: www.google.com
Content-Type: application/x-www-form-urlencoded;
Content-Length: 386
User-Agent: reCAPTCHA/PHP
privatekey=6Ldja84SAAAAABchqHlz65yICNXJQ8ENbZpLvmS5&remoteip=127.0.0.1&challenge=03AHJ_Vuvdkt4nzT4IMoOB28T7BvI73xgtVa7IV3op98qA933xRzUpLj2BO-plQzwcNVBUhPg0kPgRnVXp4yPdnMSpbggOSnPdMvcReEJVF1CpOb74kxkYfG5QgoZdYmpNQWEulIOzfIf1X1GsMaU1DzO6qL-BA2d1AbljWmbVLxsCwh-NfUyCS_FTOjAiMmngJkNm0jsgAxrTAzpnZeXfYX8mmyxNLN2aCDWLEmXBis6ZEN4VIddNZi9SI0AksHfzS4lypC5WkBJUKE2TVI-zpB670IkMGkqW8g&response=214</pre> </blockquote> <p>Algunos posibles problemas son:</p> <ul> <li id="missing-method"><p>Falta o es desconocido el método de la petición (no es GET ni POST)</p></li> <li id="missing-url"><p>URL Perdido.</p></li> <li id="missing-protocol"><p>Falta el identificador HTTP (HTTP/1.0)</p></li> <li><p>La petición es demasiado grande.</p></li> <li><p>Falta Content-Length en las peticiones POST o PUT</p></li> <li><p>Hay caracteres ilegales en el nombre de máquina; el carácter subrayado (_) no está permitido.</p></li> <li><p>HTTP/1.1 <q>Esperado:</q> la característica ha sido requerida desde un software HTTP/1.0.</p></li> </ul> <p>Su administrador del caché es <a href="mailto:webmaster">webmaster</a>.</p>
</div> <script language="javascript"> if ('[unknown method]' != '[unknown method]') document.getElementById('missing-method').style.display = 'none'; if ('[no URL]' != '[no URL]') document.getElementById('missing-url').style.display = 'none'; if ('[unkown protocol]' != '[unknown protocol]') document.getElementById('missing-protocol').style.display = 'none'; </script> <hr> <div id="footer"> <p>Generado Tue, 10 May 2016 17:20:28 GMT por proxy.unlu.edu.ar (squid/2.7.STABLE9)</p> <!-- ERR_INVALID_REQ --> </div> </body></html>
-- recaptcha_response --------------------------------------------------------
Array
(
[is_valid] =>
[error] => Host: www.google.com
)
buscando un poco te sugiero probar con lo siguiente:
Revisando las peticiones en el proxy encontramos que es un bug de la libreria, en la peticion que le realiza al proxy, lo solucionamos modificando el archivo [b]g3w3/src/siu/lib/recaptcha/recaptchalib.php[b] agregando la linea $path=“http://” . $host . $path;.
...
function _recaptcha_http_post($host, $path, $data, $port = 80) {