X-Git-Url: https://git.llucax.com/z.facultad/75.08/llamadas.git/blobdiff_plain/d6ff9bc2cd5838d73e7a96f657a90a6f4b2797dd..045560faaff8e730f5fd0fc9ee56b63b5d87f7a7:/inst/antifraude.pl diff --git a/inst/antifraude.pl b/inst/antifraude.pl index 4a6c7d9..49520e8 100644 --- a/inst/antifraude.pl +++ b/inst/antifraude.pl @@ -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 () { + 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); }