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