Como pegar o ip do cliente com um applet?

Gostaria de saber como pegar o ip do cliente com um applet?
esse cara conseguiu…
http://reglos.de/myaddress/MyAddress.html
Alguém sabe como? Tem alguma idéia?

Olá

Dica: Use DJ Java Decompiler ou outro descompilador qualquer para ver o código Java da applet dele.

[]s
Luca

então Luca… dá pra vc descompilar pra mim, o DJ Java Descompiler percisa de licença, e os cara não me madam o serialnumber…

Obrigado

Pelo que vi, o tal applet só faz algo parecido com o seguinte:

import java.net.*;
public class Test161 {
    public static void main(String[] args) {
        try {
            InetAddress localaddr = InetAddress.getLocalHost();
            System.out.println("main Local IP Address : " +localaddr.getHostAddress());
            System.out.println("main Local hostname : " + localaddr.getHostName());
        } 
        catch (UnknownHostException e) {
            System.err.println("Can't detect localhost : " + e);
        }
    }
}

Exemplo de saída:

main Local IP Address : 123.45.67.89
main Local hostname : beleriand.middlearth.com

Se o seu acesso à Internet tem NAT ou alguma coisa que faça seu endereço Internet ser diferente do endereço local (é o meu caso), o valor que o applet vai lhe mostrar não é o que você (provavelmente) quer.

[quote=thingol]Pelo que vi, o tal applet só faz algo parecido com o seguinte:

import java.net.*;
public class Test161 {
    public static void main(String[] args) {
        try {
            InetAddress localaddr = InetAddress.getLocalHost();
            System.out.println("main Local IP Address : " +localaddr.getHostAddress());
            System.out.println("main Local hostname : " + localaddr.getHostName());
        } 
        catch (UnknownHostException e) {
            System.err.println("Can't detect localhost : " + e);
        }
    }
}

Exemplo de saída:

main Local IP Address : 123.45.67.89
main Local hostname : beleriand.middlearth.com

Se o seu acesso à Internet tem NAT ou alguma coisa que faça seu endereço Internet ser diferente do endereço local (é o meu caso), o valor que o applet vai lhe mostrar não é o que você (provavelmente) quer.
[/quote]

eu tinha feito algo assim, mas ele só retorna o localhost???

“Ele” quem? Meu programa ou o applet?
Pelo que vi, o tal applet me mostrou o localhost; não o endereço “externo” na Internet.

Olá

A applet MyAddress não presta, mostra o IP da rede local.

Para que quer pegar o IP? Se for para identificar o usuário cliente isto quase não serve para nada. Se for para isto use o MAC Address. Pegue com uma applet assinada rodando direto ipconfig /all (ou similar no Linux) e fazendo parse do resultado, caso não use o Java 6 que já tem isto na API.

[]s
Luca

[quote=Luca]Olá

A applet MyAddress não presta, mostra o IP da rede local.

Para que quer pegar o IP? Se for para identificar o usuário cliente isto quase não serve para nada. Se for para isto use o MAC Address. Pegue com uma applet assinada rodando direto ipconfig /all (ou similar no Linux) e fazendo parse do resultado, caso não use o Java 6 que já tem isto na API.

[]s
Luca[/quote]

applet assinada…num vai rolar…acho que vou pegar o ip usando cgi perl, é mais fácil o Cliente é cheio de frescura… :frowning:

Olá

Você não respondeu para que quer o IP. Eu duvido que com Perl você consiga um IP atrás de um NAT.

[]s
Luca

Luca…é assim, num sistema aqui temos que fazer com que só os usários de IP local possam ter acesso a um diretório no htdocs do apache http server, então, eu configurei o apache para só permitir acesso dos clientes com os ip’s tais, entretanto, eu gostaria de fazer a seleção de quais usuários vão pra onde usando os IP’s deles…Fui claro??

A propósito…desculpe a ignorância, mas o que é NAT??

opss.

Olá

Seria MUITO mais fácil usar a própria segurança do Apache com login e senha, pois pelo IP basta o cara sentar em outra máquinha que já tem acesso.

[]s
Luca

[quote=Luca]Olá

Seria MUITO mais fácil usar a própria segurança do Apache com login e senha, pois pelo IP basta o cara sentar em outra máquinha que já tem acesso.

[]s
Luca[/quote]

Tá implementado assim, mas adivinha… o cliente num quer eheheheh

Olá

[quote=LuizClaudio]
Tá implementado assim, mas adivinha… o cliente num quer eheheheh[/quote]

Então não foi explicado direito ao cliente que proteção com IP é tolice. Isto é beabá de rede e qualquer garoto é capaz de burlar.

[]s
Luca

[quote=Luca]Olá

[quote=LuizClaudio]
Tá implementado assim, mas adivinha… o cliente num quer eheheheh[/quote]

Então não foi explicado direito ao cliente que proteção com IP é tolice. Isto é beabá de rede e qualquer garoto é capaz de burlar.

[]s
Luca[/quote]

Luca…concordo, sou só o programdor, é meu chefe que fala com o cliente :frowning:

Hum, se você programa em CGI, ou tem acesso às variáveis CGI (que é o caso de quase qualquer linguagem Web), o IP do cliente (ou seja lá o que for isso) é facilmente disponível. Como foi dito, isso diz apenas qual o IP de uma das “pontas” do socket; se há algum NAT ou não no meio isso não vem ao caso.

Então…
Quanto a segurança que o Luca tinha falado…neste caso específico, num tem muito problema, é só um html diferente pra rede local e um diferente para o usuário de fora da rede, a parte que é realmete restrita tem login…Como o thingol falou, fiz com cgi, mais ou menos como abaixo, só fiz umas alterações para manipular e comparar a string hostmane, usando expressão regular, sei que essa não é uma comunidade cgi, mas coloco o post para ajudar quem tiver um problema parecido…Depois o moderador edita se achar não apropriado, inté…obrigado.

#!/usr/bin/perl  
  
  use strict;
  use warnings;

  my %redirects = (in => "http://theserver/in.html",
                   out => "http://theserver/out.html");
  
  my $hostname = $ENV{REMOTE_ADDR};  
 
  if ( $hostname =~ "888.888.888.888" ){
     print "Status: 302 Moved\nLocation: $redirects{in}\n\n";
  }else{
     print "Status: 302 Moved\nLocation: $redirects{out}\n\n";
  } 
  

Basta essa linha em sua página jsp

IP cliente : <%=request.getHeader("X-FORWARDED-FOR")%> 

espero ter ajudado

[quote=phmjunior]Basta essa linha em sua página jsp

IP cliente : <%=request.getHeader("X-FORWARDED-FOR")%> 

espero ter ajudado[/quote]
Mas para segurança o “X-FOWARDED-FOR” não serve. Pois é possível editar esse campo.