[FUGSPBR] autenticacao velox residencial

mario.lobo em ipad.com.br mario.lobo em ipad.com.br
Qui Ago 5 17:35:08 BRT 2004


Alo FUGuêtes;

Estou tendando fazer a autenticacao de um velox residencial num FreeBSD 4.9, com o 
perl script do Fabio Vilan, que é o seguinte (na integra):


==== id-velox.pl ================

#!/usr/bin/perl
#
# ---------------------------------------------------------------------------
#        ID-Velox v2.00 [01/11/2003] - http://www.isec.com.br/velox          
# Por Fabio Vilan aka/nick Duwde, fabio -arroba- isec -ponto- com -ponto- br 
# --------------------------------------------------------------------------- 
#
# [-=> Alteracoes <=-]
#
# v2.00 - [01/11/2003]
#
# - Versao totalmente rescrita do script, agora em perl, totalmente 
#   independentenao do sh, fetch, lynx ou ping !!
#
# - Suporta o novo esquema de autenticacao do Velox da Telemar
#   tanto no modo comercial, como residencial, via o metodo CGI POST,
#   e permite mais flexibilidade nas futuras *inesperadas* mudancas
#
# - Lista dos provedores residenciais atualizada.
#
# -------------
# Configuracao  
# ------------- 

# Define se seu velox e' residencial ou comercial, se for residencial,
# voce precisa de um login/senha em um provedor, se for comercial,
# acessa diretamente pela telemar.
#
# Valores : 'RES' = Residencial 
#           'COM' = Comercial

$VELOX = 'RES';

# Caso use o sistema comercial, pode ser necessario alterar a string
# abaixo de acordo com a sua regiao (esta e' a string de conexao
# para a regiao da Bahia, outras opcoes comentadas abaixo, veja no codigo
# fonte html da autenticacao velox de sua regiao, caso tenha duvidas)
#
# Somente uma das opcoes deve estar descomentada ! Essa opcao so eh
# util se voce estiver usando o modo COMERCIAL, caso esteja no modo
# residencial, nao surtira qualquer efeito, pode ignorar esta opcao.
#

# $COMERCIAL='AABA';
# $COMERCIAL='AAMG';
# $COMERCIAL='AARJ';

# Caso use o sistema residencial, voce precisa definir
# o nome do seu provedor, o nome tem que ser EXATAMENTE como
# esta na pagina de autenticacao no velox, aqui estao alguns
# exemplos, (aparentemente agora varia o final, por regiao,
# em alguns provedores com o TERRA)
#
# Somente uma das opcoes deve estar descomentada ! Essa opcao so eh
# util se vc estiver usando o modo RESIDENCIAL, caso esteja no modo
# comercial, nao surtira qualquer efeito, pode ignorar esta opcao.
#

$PROVEDOR='GLOBO';

# $PROVEDOR='TELEMAR';
# $PROVEDOR='AOL';
# $PROVEDOR='ATARDE';
# $PROVEDOR='ATT';
# $PROVEDOR='BIOHARD';
# $PROVEDOR='BITNET';
# $PROVEDOR='BRFAST';
# $PROVEDOR='BRIDGE';
# $PROVEDOR='BRTURBO';
# $PROVEDOR='CPUNET';
# $PROVEDOR='DDN';
# $PROVEDOR='DH';
# $PROVEDOR='DIGIZAP';
# $PROVEDOR='FACILINTERNET';
# $PROVEDOR='GD';
# $PROVEDOR='GLOBO';
# $PROVEDOR='HOTLINK';
# $PROVEDOR='INTERCALL';
# $PROVEDOR='INTERDOTNET';
# $PROVEDOR='INTERNETRJ';
# $PROVEDOR='INTERNETT';
# $PROVEDOR='MICROECIANET';
# $PROVEDOR='NUXNET';
# $PROVEDOR='OLIMPO';
# $PROVEDOR='OXENTENET';
# $PROVEDOR='POWERTRIX';
# $PROVEDOR='PRODASAL';
# $PROVEDOR='SEVEN';
# $PROVEDOR='SKNET';
# $PROVEDOR='STL';
# $PROVEDOR='SUPERIG';
# $PROVEDOR='SUPRANET';
# $PROVEDOR='TERRAMG2';
# $PROVEDOR='TERRAMG4';
# $PROVEDOR='WAVENET';

# Seu Login no Provedor (!! somente se for residencial !!)
$LOGIN = 'login';

# Sua Senha no Provedor (!! somente se for residencial !!)
$SENHA = 'senha';

# ----------------------------------------
# -=*=- FIM DA SECAO DE CONFIGURACAO -=*=-
# ----------------------------------------
# Nao altere mais nada abaixo, toda configuracao pode ser feita,
# alterando as variaveis acima, qualquer alteracao abaixo pode
# tornar seu script nao funcional.

$HOST = 'www.veloxzone.com.br';
$PORTA = 80;
@HOSTS =('mx.uol.com.br','mx.terra.com.br','mail.telemar.net.br');
$HOSTPORTA = 25;
$HOSTTIMEOUT = 2;
$RES_URL="/serviceLogon";
$RES_POST="service=internet_$PROVEDOR&fcn=serviceLogon&ac=home&usr=&username=$LOGIN&password=$SENHA&
OK=OK";
$COM_URL="/serviceStart?service=internet_$COMERCIAL";
$COM_POST="confirmed=true";

print "-----------------------------------------------------------------------------\n";
print "       ID-Velox v2.00 [01/11/2003] - http://www.isec.com.br/velox\n";
print " Por Fabio Vilan aka/nick Duwde, fabio -arroba- isec -ponto- com -ponto- br\n";
print "-----------------------------------------------------------------------------\n";

if ($VELOX eq 'RES')
	{
        print "!CONFIG! Modo Residencial\n";
        print "!CONFIG! Provedor : $PROVEDOR\n";
        print "!CONFIG! Login : $LOGIN\n";
        $URL=$RES_URL;
        $POST=$RES_POST;
	}
elsif ($VELOX eq 'COM')
	{
        print "!CONFIG! Modo Comercial\n";
        print "!CONFIG! Regiao : $COMERCIAL\n";
        $URL=$COM_URL;
        $POST=$COM_POST;
	}
else
	{
        print "!ERRO! Tipo do velox mal configurado, edite o script !!\n";
	print "!ERRO! Somente as opcoes \"RES\" ou \"COM\" sao possiveis!!\n";
        exit 2;
	}

use IO::Socket;

sub autentica()
	{
	$sock = new IO::Socket::INET (	PeerAddr => $HOST, PeerPort => $PORTA, Proto => 'tcp');
	die("!ERRO! Nao e' possivel conectar em $HOST !!\n") unless $sock;

	print "!OK! Conexao estabelecida com $HOST.\n";
	$sock->print("POST $URL HTTP/1.0\r\n");
	$sock->print("Content-Type: application/x-www-form-urlencoded\r\n");
	$sock->print("Host: $HOST\r\n");
	$sock->print("Content-Length: " . length($POST) . "\r\n"); 
	$sock->print("\r\n$POST\r\n\r\n\r\n");
	print "!OK! Aguardando resposta do servidor....\n";
	while ($sock->getline()) {}
	$sock->close();
	}

sub ping($)
	{
	$x=0;
	foreach (@HOSTS)
		{
		if (($_[0] eq 'rapido') && ($x>0))
			{ return 0; }

		$c = new IO::Socket::INET ( PeerAddr => "$_" , PeerPort => $HOSTPORTA, Proto => 'tcp', Timeout => 
$HOSTTIMEOUT);
		if ($c) 
			{ 
			$c->close();
			return 1; 
			}
		$x++;
		}
	}

print "-----------------------------------------------------------------------------\n";

print "!OK! Verificando se voce ja esta autenticado...\n";
if ( ping('rapido') )
	{
	print "!OK! Voce JA esta autenticado !\n";
	exit 0;
	}

print "!OK! Voce ainda nao esta autenticado.\n";

autentica();
while ( not ping('completo') )
	{
	print "!ERRO! Servidor nao liberou acesso, possivel senha ou configuracao incorreta...\n";
        print "!OK! Tentando novamente...\n";
	autentica();
	}

print "!OK! Autenticado com sucesso !!\n";

# EOF


==== fim de id-velox.pl ================

O pppoe (adsl-start) conecta beleza (ppp0 pega um IP e estabelece a rota para o GATEWAY, o DNS do 
velox funciona blz (no Free 4.9). Eu coloquei o named rodando e coloquei os DNSs do velox como 
forwarders mas ele nao resolve nada num "nslookup www.google.com localhost". Mas esse nao é o 
problema maior.

Eu implantei este mesmo script numa empresa e ta funcionando redondo. Esta foi a 1a vez que eu 
implantei numa residencia. So sei que so recebo: 

"!ERRO! Servidor nao liberou acesso, possivel senha ou configuracao incorreta..."

O que não condiz pois todos os dados estao corretos. Eu tentei conectar de uma estação windows pra 
ver se conseguia fazer a autenticaçao mas como o named num ta rolando, a estacao nao resolve 
"www.veloxzone.com.br".

# rc.conf (parcial) ----------------

ifconfig_rl0="inet 0.0.0.0 mask 0.0.0.0"   <- pppoe
fconfig_rl1="inet 10.10.10.1 mask 255.255.255.0"
gateway="YES"

named_enable="YES" com natd interface ppp0

# fim do rc.conf (parcial) ----------------

As estações da casa pegam os IP 10.10.10.2 - 3, etc ..., tendo o Free como gateway e DNS server 
(10.10.10.1).

Desculpem o longo e-mail e agradeço pela gentileza de ter lido ate aqui. Se alguem tiver alguma 
dica, eu agradeço.

Abraços,
-- 
   //|  //||
  // | // ||
-//--//---|| ARIO LOBO
//  //    ||
---------------------------------
mario.lobo em ipad.com.br
http://www.ipad.com.br

P.S. - Como alguem(ns) ja disse(ram) aqui na lista, eu odeio a p%#$@%!*&%#¨do velox/telemar !!
_______________________________________________________________
Para enviar um novo email para a lista: fugspbr em fugspbr.org
Sair da Lista: http://lists.fugspbr.org/listinfo.cgi
Historico: http://www4.fugspbr.org/lista/html/FUG-BR/



Mais detalhes sobre a lista de discussão freebsd