Ban e ips: trabalhando com * em strings

2 respostas
Guilherme_Silveira

Uma opcao de banir usuarios por ip deve permitir ao usuario colocar: 10.1.1.* e banir todos os enderecos que comecem com 10.1.1. por exemplo....

Pensei em usar expressao regular pra substituir ENTRADA (exemplo 10.1.1.*) por TRUE... e se o resultado de jogar essa expressao em um determinado ip for TRUE, quer dizer que deu o match
pra isso pensei em usar o seguinte:

String bannedIP = "10.1.1.*";
String ip = "10.1.1.125";

// trata o banned IP para transforma-lo em expressao regular
bannedIP.replaceAll("*","\p{Alnum}+");
bannedIP.replaceAll(".","\.");

ip.replaceAll(bannedIP,"TRUE");

// se o resultado de ip for igual a TRUE, quer dizer que achou

alguem confirma se a ideia esta certa?

2 Respostas

Rafael_Steil

Se o asterisco ficar sempre no final ( e nao na forma 10.*.1.1 ), voce pode simplesmente usar startsWith da classe String:

String faixaIp = "10.1.1.*";
String ip = "10.1.1.45";

if (ip.startsWith(faixaIp)) {
    // bleh
}

Rafael

Guilherme_Silveira

num rola neh… o asterisco pode estar emq ualquer lugar do ip… mas do jeito que falei funciona sim, foi soh corrigir umas barras invertidas que faltavam… o neogcio eh se existe algo mais facil (apesar que eu salvei os patterns pra nao ficar compilando pattern direto)

Criado 27 de março de 2003
Ultima resposta 27 de mar. de 2003
Respostas 2
Participantes 2