#!/usr/bin/perl -w use CGI; use strict; use SOAP::Lite; use LWP::UserAgent; use HTTP::Request::Common; use HTML::Template; use Data::Dumper; use CGI::Carp qw(fatalsToBrowser set_message); BEGIN { sub handle_errors { my $msg = shift; print ""; print "

Oops!

"; print "Error:
$msg"; print "
"; } set_message(\&handle_errors); } sub formulario; sub respuesta; #Procesar Parametros my $query = CGI->new; my $funcion = $query->param('funcion') || "login"; my $ISP_UserID = $query->param('ISPuserid') || ''; my $IVR_UserID = $query->param('IVRuserid') || ''; my $IVR_Passwd = $query->param('IVRpasswd') || ''; my $POP_Login = $query->param('POPlogin') || ''; my $POP_Passwd = $query->param('POPpasswd') || ''; my $POP_First = $query->param('POPfirst') || ''; my $POP_Last = $query->param('POPlast') || ''; my $POP_Reply = $query->param('POPreply') || ''; my $POP_Server = $query->param('POPserver') || ''; my $POP_Port = $query->param('POPport') || '110'; SWITCH: { &login , last SWITCH if ($funcion=~/login/); &formulario , last SWITCH if ($funcion=~/formulario/); &respuesta , last SWITCH if ($funcion=~/respuesta/); } #------------------------------------------------------------ # Función default login #------------------------------------------------------------ sub login { my $mensaje = shift; my $tmpl = HTML::Template->new( filename => 'registrarse.tmpl', die_on_bad_params => 0 ); $tmpl->param( { 'mensaje' => $mensaje } ); print "Content-type: text/html\n\n"; print $tmpl->output(); } #------------------------------------------------------------ # Función formulario #------------------------------------------------------------ sub muestra_formulario { my $formdata = shift || {}; my $tmpl = HTML::Template->new( filename => 'registrarseform.tmpl', die_on_bad_params => 0 ); $tmpl->param( $formdata ); print "Content-type: text/html\n\n"; print $tmpl->output(); } sub formulario { my $ADV_user = $query->param('ADVuser') || ''; my $ADV_pass = $query->param('ADVpass') || ''; my $ADV_dominio = $query->param('ADVdominio') || ''; my $serv = { infovia => 'ip', advancedsl => 'adsl', speedy => 'adsl', topmail => 'ip', empresaadsl => 'adsl', speedy01 => 'adsl' }; my $ua = new LWP::UserAgent(max_redirect => 0); $ua->agent('Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)'); # Create a request # my $req = POST('http://pin.advance.com.ar/servicios/ambienteNegocio/adv_utils.cgi', # 01-11-2006 x se reemplaza por nuevo cgi que incluye ID - Mariana my $req = POST('http://serve103.sote.tasa.com.ar/webkit/cgi-bin/ambienteNegocio/adv_utils.cgi', { login => $ADV_user . '@' . $ADV_dominio, passwd => $ADV_pass, servicio => $serv->{$ADV_dominio}, url => 'si.html,no.html', } ); my $res = $ua->request($req); if ($res->{_headers}->{location} =~ /si\.html/) { muestra_formulario(); } else { login("Se produjo un error en la validación de tus datos."); } } #------------------------------------------------------------ # Función respuesta #------------------------------------------------------------ sub respuesta { my $conn = SOAP::Lite ->service('http://www.asterisco-mail.com.ar/Advance/Advance.wsdl'); my $result = $conn->InsertUser($ISP_UserID, $IVR_UserID, $IVR_Passwd, $POP_Login, $POP_Passwd, $POP_First, $POP_Last, $POP_Reply, $POP_Server, $POP_Port); my $msg = ''; if (!defined $result) { $msg = "Se produjo un error no especificado en la consulta al sistema."; } elsif ($result == 0 || $result == 2) { my $tmpl = HTML::Template->new( filename => 'registroOK.tmpl', die_on_bad_params => 0 ); print "Content-type: text/html\n\n"; print $tmpl->output(); exit; } elsif ($result == 1) { $msg = "El número es correcto pero la clave es incorrecta. "; } elsif ($result == 3) { $msg = "El operador celular al que pertenece el número no tiene acuerdo para brindar el servicio."; } else { $msg = "Se produjo un error en la consulta al sistema (Error: $result)."; } if (length($msg) > 0) { my @names = $query->param; my $formdata = { mensaje => $msg }; foreach my $n (@names) { if ($n =~ /^(IVR|ISP|POP)/) { $formdata->{$n} = $query->param($n); } } # print "Content-type: text/html\n\n
" . Dumper(\@names) . Dumper($formdata);
#		exit;
		return muestra_formulario( $formdata );
	}
}