#!/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 ); } }