]> git.llucax.com Git - z.facultad/75.08/llamadas.git/blobdiff - inst/antifraude.pl
Ya se efectuan todas las validaciones pedidas para cada registro, ahora me falta...
[z.facultad/75.08/llamadas.git] / inst / antifraude.pl
index 4a6c7d9a5b906fcaaa1136d0fb4c623c078cd2bc..49520e85c6680297815736ea59155404896a8b85 100644 (file)
@@ -49,6 +49,7 @@ sub getConfVar {
 # Agrega un log entry al logfile del antifraude.pl
 sub logEntry {
        $logentry = shift;
+       $consoleout = shift;
        $log = "$CONFDATA{logdir}/$CONFDATA{logfile}";
        # Fetch date and Format it
        ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = gmtime(time);
@@ -58,13 +59,18 @@ sub logEntry {
        # Append to log
        open(LOGFILE,">>$log") or die "No se pudo abrir el archivo de log";
        seek(LOGFILE,0,2);
-       print LOGFILE "$commonstring - $logentry";
+       print LOGFILE "$commonstring - $logentry\n";
        close(LOGFILE);
+
+       if ($consoleout) { print("$logentry\n"); }
 }
 
 sub badCall {
        $callreg = shift;
-       logEntry("El siguiente registro de llamada tiene formato invalido\n$callreg");
+       $numreg = shift;
+       logEntry("El siguiente registro de llamada tiene formato invalido\n$callreg",0);
+       print("El registro numero $numreg tiene formato invalido\n");
+       
 }
 # --------- MAIN CODE -------- #
 # En la version final, recibo por param el directorio del .conf, por ahora
@@ -80,22 +86,43 @@ $CONFDATA{logsize} = getConfVar("$CONFDIR/afinstal.conf",14);
 $CONFDATA{datadir} = getConfVar("$CONFDIR/afinstal.conf",15);
 
 # For Debug Only
-#print("Logdir: $CONFDATA{logdir}\n");
-#print("Logfile: $CONFDATA{logfile}\n");
-#print("Logsize: $CONFDATA{logsize}\n");
-#print("Datadir: $CONFDATA{datadir}\n");
+print("\nLogdir: $CONFDATA{logdir}\n");
+print("Logfile: $CONFDATA{logfile}\n");
+print("Logsize: $CONFDATA{logsize}\n");
+print("Datadir: $CONFDATA{datadir}\n\n");
 
 # Proceso los archivos de llamadas
 @archivos = getCallFiles($CONFDATA{datadir});
 FILE: foreach $filename (@archivos) {
+       $regnum = 0;
        $CALLFILE = "$CONFDATA{datadir}/enproceso/$filename";
-       logEntry("Inicio proceso de: $filename\n");
+       logEntry("Inicio proceso de: $filename",1);
+
        open(CALLFILE) or ((warn "No se pudo abrir archivo $filename"),next FILE);
        REG: foreach $callreg (<CALLFILE>) {
+               logEntry("Procesando Reg: $regnum | Archivo: $filename",1);
+               chomp($callreg);
                $fieldcount = split(';',$callreg);
-               if ($fieldcount != 8) { badCall($callreg); next REG; }
                @fields = @_;
-       }
+               # Si no tengo 8 campos exactamente, invalido
+               if ($fieldcount != 8) { badCall($callreg,$regnum); next REG; }
+               # Si la linea no es un numero, invalido
+               $fields[0] =~ s/^\s*(\w*)\s*$/$1/;
+               if (!($fields[0] =~ /^\d+$/)) { badCall($callreg,$regnum); next REG; }
+               # Si tipo llamada ! E|S o no se informa Origen o Destino, invalido
+               if (($fields[4] ne 'E') && ($fields[4] ne 'S')) {
+                       badCall($callreg,$regnum); next REG;
+               }
+               if (($fields[4] eq 'E') && ($fields[6] eq "")) {
+                       badCall($callreg,$regnum); next REG;
+               }
+               if (($fields[4] eq 'S') && ($fields[5] eq "")) {
+                       badCall($callreg,$regnum); next REG;
+               }
+
+               # Ya pase todas las validaciones, ahora busco si exite un umbral
+       } continue { ++$regnum }
        close(CALLFILE);
-       logEntry("Fin proceso de: $filename\n");
+
+       logEntry("Fin proceso de: $filename",1);
 }