NIC.class

Está rolando uma discussão na lista CF-Brasil sobre como se determinar o IP da máquina onde o CFMX está instalado (IP de uma ou mais placas de rede existentes no servidor), uma vez que os métodos usando CFML puro retornam apenas o IP interno ou de loopback. Ano passado Marcello FrutigCFUG-Rio propôs uma elegante solução usando um class Java que ele mesmo escreveu e que uso até hoje para atualizar um servidor DNS com IP’s dinâmicos (típicos de conexões ADSL ou DSL novas) via script CFML “schedulado”.

Porém no post do Frutig só existe o código fonte da classe, o que já seria mais do que suficiente. Porém, para encurtar o “caminho das pedras” (não tão pedregulhento assim, mas vá lá), segue um mini tutorial de como fazer a classe funcionar:

1) Faça download da class já compilada (NIC.class) aqui;
2) Disponibilize o arquivo NIC.class numa pasta qualquer (por exemplo cf_rootCustomTags);
3) Certifique-se de que esta pasta está especificada no campo “Class Path” da seção “Java and JVM” do ColdFusion Administrator. Caso não esteja, adicione-a (separe o nome das pastas por vírgulas) e reinicie o serviço do ColdFusion Application Server.

Pronto, você já estará apto a rodar um script CFML que irá retornar os valores dos IP’s na forma de uma array. Aqui costumamos chamar esta class (NIC.class) da seguinte forma:

nicclass.gif

Peque o fonte do script acima aqui.

A variável “ips” irá retornar um ou mais números de IP. Usando o script CFML acima, ou qualquer outra abordagem de manipulação, você pode eliminar IP’s que não queira (no nosso caso o IP de loopback e qualquer outro da rede interna) e manter os que desejamos.

IMPORTANTE: é necessário que o JVM usado pelo CFMX seja igual ou superior à versão 1.4.0 (Sun), o que já é por padrão na versão 6.1, porém não na 6.0.

Boa sorte!


2 Comments on “NIC.class”

  1. Marcos Placoná disse:

    Ahh eu sabia que ja tinha visto isso. O Richardson me perguntou ontem por isso, e me lembre de que essa classe havia sido criada pelo Frutig há algum tempo atrás, porem não tinha exata certeza de que a funcionalidade dela era exatamente essa.
    Mas é mesmo né.

    []’s

  2. Rafael Cresci disse:

    Melhor não deletar os 192.168 e 10.x, não?
    Servidores que usam firewall de hardware/via NAT normalmente têm assignados ao sistema operacional apenas IPs de rede interna… Aliás, nesses servidores não dá pra rodar esse script e descobrir o IP real =)