#!/usr/local/bin/perl

use lib $ENV{DOCUMENT_ROOT}.'/cgi-local';
use CGI;

require "./config.pl";

# Estas variables son necesarias para BD.pl. Definen los valores por defecto de
# todos los campos de las diferentes tablas.

$Sesiones_defecto="SID=''&Cuenta=''&Grupo=''&Servicios=''&Estado=''&Caduca=''";
$Traductor_defecto="Cuenta=''&email=''&Password=''&Nombre=''&Servicios=''&Estado=''";
$Cliente_defecto="Cuenta=''&Password=''&Nombre=''&Apellidos=''&email=''&Empresa=''&Cargo=''&CIFNIF=''&Contacto=''&Direccion=''&Localidad=''&CodigoP=''&Provincia=''&Telefono=''&Fax=''&TelSMS=''&Estado=''&Reservado01=''&Reservado02=''&Reservado03=''&Reservado04=''&Reservado05=''&Reservado06=''&Reservado07=''&Reservado08=''&Reservado09=''&Reservado10=''";
$Documento_defecto="Fichero=''&puedenVerlo=''&puedenCogerlo=''&Estado=''&Descripcion=''";

&recoger ();

#######################
# Esta función toma la respuesta de la función ConsultarTabla (una cadena de la
# forma campo=valor|campo=valor... y devuelve esta información en un hash.
#

sub genLineaAHash {
   my ($linea) = @_;
   my (%salida, @pairs, $pair, $name, $value) = ();

   @pairs = split(/\|/, $linea);

   foreach $pair (@pairs) {
      ($name, $value) = split(/=/, $pair);
      $salida{$name} = $value;
   }
   return %salida;
}


#######################
# Función que autentica a un usuario. A la hora de autorizarlo, dependiendo de
# si es cliente o traductor, lo manda a traGeneraEscritorio o a cliGeneraEscritorio.
#

sub recoger {
   local ($tamanyo, %FILTRO, @datos) = ();

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

   # Vamos a comprobar que no se envíe algo raro.
   if (defined ($ENV{'REQUEST_METHOD'}) && ($ENV{'REQUEST_METHOD'} eq 'POST') &&
       defined ($ENV{'CONTENT_TYPE'}) && ($ENV{'CONTENT_TYPE'} =~ /^multipart\/form-data/) &&
       defined ($ENV{'CONTENT_LENGTH'}) && ($ENV{'CONTENT_LENGTH'} lt $MAX_ENVIO))
   {
      $tamanyo = $ENV{'CONTENT_LENGTH'};
      my($boundary)=$ENV{'CONTENT_TYPE'}=~/boundary=\"?([^\";,]+)\"?/;
print $ENV{'REQUEST_METHOD'}."<br>";
print $ENV{'CONTENT_TYPE'}."<br>";
print $ENV{'CONTENT_LENGTH'}."<br>";
print $boundary."<br>";
while (my $bytesread = read (<>, my $buffer, 1024))
{
   print $buffer;
}
   }
   print "</body></html>";
   return;

      # Vamos a comprobar primero en la tabla de clientes y luego en la de
      # asesores. Si no está en ninguna, sacamos ventana de error.
      @datos = &ConsultarTabla ("Cliente", %filtro);
      if ($datos[0]) {
         # Metemos los datos del cliente en la tabla de SIDs, llamamos a 
         # cliGeneraEscritorio, y devolvemos lo que devuelva esta función.
         %respuesta = &genLineaAHash ($datos[0]);
         $filtro{WHERE_} = "1";
         $filtro{WHERE_SID} = $sid_global;
         $filtro{Cuenta} = $respuesta{email};
         $filtro{Servicios} = $respuesta{Servicios};
         $filtro{Estado} = $respuesta{Estado};
         $filtro{Grupo} = "/clientes";
         &ActualizarTabla ("Sesiones", %filtro);
         $Nombre = $respuesta{Nombre};
         return &genGeneraEscritorio ();
      } else {
         @datos = &ConsultarTabla ("Traductor", %filtro);
         if ($datos[0]) {
            # Metemos los datos del traductor en la tabla de SIDs, llamamos a 
            # traGeneraEscritorio, y devolvemos lo que devuelva esta función.
            %respuesta = &genLineaAHash ($datos[0]);
            $filtro{WHERE_} = "1";
            $filtro{WHERE_SID} = $sid_global;
            $filtro{Cuenta} = $respuesta{email};
            $filtro{Servicios} = $respuesta{Servicios};
            $filtro{Estado} = $respuesta{Estado};
            $filtro{Grupo} = "/traductores";
            &ActualizarTabla ("Sesiones", %filtro);
            $Nombre = $respuesta{Nombre};
            return &genGeneraEscritorio ();
         }
      }
}
