#!/usr/bin/perl

# Este m—dulo es invocado al pulsar en los enlaces de descarga desde la p‡gina web
# Realmente s—lo se necesita incrementar el nœmero de descargas sin comprobaciones previas;
# Cada descarga cuenta, aunque se realicen consecutivas desde la misma IP
use strict;

# use PA::PAWeb;
my %Param = ParamCGI ();

my $ipactual = $ENV{'REMOTE_ADDR'};
my $ipanterior = "";

# Obtenemos numero actual de contador
# open(NVIT, "/var/www/contarPA/InpD.txt");
# open(NVIT, "/var/www/vhost/perezalvarez.net/home/data/InpD.txt");
# open(NVIT, "/home/miqtstpz/public_html/carlos/InpD.txt");
open(NVIT, "../htdocs/inp/php/InpD.txt"); # Apertura para leer

my $nanterior = <NVIT>;    # Leemos la unica linea; antiguo numero de contador
close(NVIT);

# Apertura para leer ultima IP registrada
# No muestra nada; solo almacena en ficheros
# open(LIP, "/var/www/contarPA/ipInpD.txt");
# open(LIP, "/var/www/vhost/perezalvarez.net/home/data/ipInpD.txt");
# open(LIP, "/home/miqtstpz/public_html/carlos/ipInpD.txt");

# $ipanterior = <LIP>;    # Leemos una sola linea; no hay mas
# close(LIP);

my $nnuevo = 0;

if ( $ipactual ne $ipanterior )     # Si la IP ha variado...
   {
#   open(EIP, ">/var/www/contarPA/ipInpD.txt");
#   open(EIP, ">/var/www/vhost/perezalvarez.net/home/data/ipInpD.txt");
#   open(EIP, ">/home/miqtstpz/public_html/carlos/ipInpD.txt");   # Apertura para escribir
#   print EIP "$ipactual";    # Una sola linea. Registramos nueva IP
#   close(EIP);

#   $nnuevo = $nanterior+1;
#   open(NVIT, ">/var/www/contarPA/InpD.txt");
#   open(NVIT, ">/var/www/vhost/perezalvarez.net/home/data/InpD.txt");
#   open(NVIT, ">/home/miqtstpz/public_html/carlos/InpD.txt");	   # Apertura para escribir
#   print NVIT "$nnuevo";    # Una sola linea. El contador incrementado
#   close(NVIT);

}
else
   {
#   $nnuevo = $nanterior;
}

$nnuevo = $nanterior + 1;
#   open(NVIT, ">/home/miqtstpz/public_html/carlos/InpD.txt");
   open(NVIT, ">../htdocs/inp/php/InpD.txt");	   # Apertura para escribir

   print NVIT "$nnuevo";    # Una sola linea. El contador incrementado
   close(NVIT);

my $direc= "";

if ( $Param{'ver'} eq "2" )
   {
   $direc = "http://www.perezalvarez.com/inp/2002/Inp.zip";
   }
elsif ( $Param{'ver'} eq "0" )
   {
   $direc = "http://www.perezalvarez.com/inp/archivo/_Inp.zip";
#    $direc = "http://www.telefonica.net/web2/perezalvarez/_Inp.zip";
   }
else
   {
   $direc = "http://www.perezalvarez.com/inp/archivo/Inp.zip";
#   $direc = "http://www.telefonica.net/web2/perezalvarez/Inp.zip";
   }

print "Content-type: text/html\n\n";


print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";

print "<html>\n";
print "<head>\n";
print "<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>\n";
print "<title>Descarga de fichero</title>\n";
print "</head>\n";
print "<body>\n";
print "<p>&nbsp;</p>\n";
print "<h2>Descarga de fichero <em><b>Inp</b></em></h2>\n";
print "<p>Pulsa sobre el siguiente enlace para realizar la descarga n&uacute;mero <strong>$nnuevo</strong> desde el pasado 10/08/2008</p>\n"; 
print "<a href=\"$direc\">Programa Inp</a>\n";
print "<p>(el presente fichero <b>Inp.zip / _Inp.zip</b> debe ser descomprimido <em>antes</em> de su uso en la m&aacute;quina Pocket PC de destino)</p>\n";
print "</body></html>\n";

# 1;   # Devolución obligatoria de True (?)


# --------- Obtenci—n de par‡metros de llamada al CGI------------

sub ParamCGI {

my ($buffer, @ar_pares, $pareja, $nombre, $valor, %HASHPAR, $nrepe, $vrepe);

# Obtenemos texto
$ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/; # Especie de uppercase()

if ($ENV{'REQUEST_METHOD'} eq "POST")
   {
      read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
   } else
   {
      $buffer = $ENV{'QUERY_STRING'};
   }

# Corta el separador & y convierte los elementos en cadenas
# de un array: codigo=1&numero=3 pasa a "codigo=1", "numero=3"
@ar_pares = split(/&/, $buffer);
foreach $pareja (@ar_pares)
   {
   ($nombre, $valor) = split(/=/, $pareja);

   $valor =~ tr/+/ /;   # Se sustituyen por espacios (translation) los signos /+/
   $valor =~ s/%(..)/pack("C", hex($1))/eg;

   # Cuidado con las listas de selección múltiple, que envían varias veces
   # parámetros con el mismo nombre pero distinto valor

   if ( $HASHPAR{$nombre} ) {
      $nrepe = $HASHPAR{$nombre};
      $vrepe .= ', '.$HASHPAR{$valor};
#      delete $HASHPAR{$nombre};
   }
   
   else { $HASHPAR{$nombre} = $valor; }
}

if ( $HASHPAR{$nrepe} ) { $HASHPAR{$nrepe} .= $vrepe; }

return %HASHPAR;

}

# ---------- Hasta aquí parámetros de CGI-----------------

