Página 1 de 1

Identificar IP

NotaPublicado: 2012-03-22 20:08 @880
por soporteigwifi
Hola. Tengo un servidor corriendo con dansguardian + squid. Desde el squid redirijo a un script en Perl donde quisiera identificar la IP de la navegación. En PHP lo puedo hacer y me tira las dos IP, la del dansguardian + squid y la de la PC, pero en Perl solo me tira una IP. Agradecería alguna ayuda.

Saludos

Re: Identificar IP

NotaPublicado: 2012-03-22 21:19 @930
por explorer
Bienvenido a los foros de Perl en Español, soporteigwifi.

Sería interesante ver algo del código hecho, al menos la parte de PHP que usas para sacar la IP.

A lo mejor podemos convertir ese código a Perl.

Re: Identificar IP

NotaPublicado: 2012-03-23 09:05 @420
por soporteigwifi
Sí, mira el código de PHP es el siguiente
Sintáxis: [ Descargar ] [ Ocultar ]
Using php Syntax Highlighting
  1. <?
  2. $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
  3. $ip = explode(",", $ip);
  4. echo $ip;
  5. ?>
Coloreado en 0.020 segundos, usando GeSHi 1.0.8.4


La primera línea me tira la IP que pasan por el proxy, es decir me tira lo siguiente: 192.168.0.2, 172.10.2.2, siendo la primera IP la de la PC y la segunda la del proxy.

La segunda línea lo único que hace es dejarme solamente la IP de la PC.

Lo que quisiera lograr es que con un script en Perl me detecte la IP de la PC ya que hice un par de pruebas y solo me detecta la 172.10.2.2 (server).

Muchas gracias.

Re: Identificar IP

NotaPublicado: 2012-03-23 09:25 @434
por irving
Con el ejemplo básico para cgi en Perl puedes ver en qué variable se almacena el IP. Lo normal es $ENV{REMOTE_ADDR}, claro que no he probado usando algún proxy.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2.  
  3. print "Content-type:text/html\n\n";
  4. print <<EndOfHTML;
  5. <html><head><title>Print Environment</title></head>
  6. <body>
  7. EndOfHTML
  8.  
  9. foreach $key (sort(keys %ENV)) {
  10.     print "$key = $ENV{$key}<br>\n";
  11. }
  12.  
  13. print "</body></html>";
  14.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Re: Identificar IP

NotaPublicado: 2012-03-23 09:31 @438
por soporteigwifi
Mira, también probé con este código pero me sigue largando la IP del proxy, solamente.

$ip = $req->header('Client-IP') || $req->header('Remote-Addr');
if ($req->header('X-Forwarded-For')) {
$proxy = $ip;
$ip = $req->header('X-Forwarded-For');
}

Re: Identificar IP

NotaPublicado: 2012-03-23 10:42 @488
por explorer
El valor X-Forwarded-For está en la cabecera HTTP que los sucesivos proxy van agregando a medida de que la respuesta fluye entre cliente y servidor.

En un cgi Perl, podemos acceder a ese valor por medio de $ENV{HTTP_X_FORWARDED_FOR}, o usando los métodos del módulo CGI:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print $q->http('X-Forwarded-For');
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


(ver sección FETCHING ENVIRONMENT VARIABLES en la página de manual de CGI).

Re: Identificar IP

NotaPublicado: 2012-03-23 13:06 @588
por soporteigwifi
Gracias a todos. Voy a investigar las opciones que me dieron.

Saludos