]> git.llucax.com Git - z.facultad/75.08/llamadas.git/blobdiff - inst/antifraude.pl
Chau call files vaciones, estaban para debug only
[z.facultad/75.08/llamadas.git] / inst / antifraude.pl
index 623475d52d092dbf9b85519e935f89db3328b4d0..4a6c7d9a5b906fcaaa1136d0fb4c623c078cd2bc 100644 (file)
@@ -24,24 +24,78 @@ sub byDate {
 # Devuelve un listado de archivos de llamada y ordenado por fecha ASC
 sub getCallFiles {
        # Obtengo listado de archivos de llamadas y lo ordeno por fecha
 # Devuelve un listado de archivos de llamada y ordenado por fecha ASC
 sub getCallFiles {
        # Obtengo listado de archivos de llamadas y lo ordeno por fecha
-       opendir($DIR,$_[0]) or die 'Could not open dir';
+       $data_dir = shift;
+       opendir($DIR,"$data_dir/enproceso") or die 'Could not open dir';
        # Valido solo fisicamente, lo logico ya valido afimonio..
        # Valido solo fisicamente, lo logico ya valido afimonio..
-       @files = grep {/[0-9]{12}\.[0-9]{4}/ && 
-                       -f "$ARGV[0]/$_" } readdir($DIR);
+       @files = grep {/[0-9]{12}\.[0-9]{4}$/ && -f "$data_dir/enproceso/$_"} 
+                       readdir($DIR);
        @sortedfiles = sort byDate @files;
        closedir($DIR);
        return @sortedfiles;
 }
        @sortedfiles = sort byDate @files;
        closedir($DIR);
        return @sortedfiles;
 }
-# --------- MAIN CODE -------- #
 
 
+# Levanta una variable del archivo AFINSTAL.CONF
+sub getConfVar {
+       $CONFIGFILE = shift;
+       $linenumber = shift;
+       open(CONFIGFILE) or die "No se pudo abrir el archivo $CONFIGFILE";
+       do { $line = <CONFIGFILE> } until $. == $linenumber;
+       close(CONFIGFILE);
+       chop($line);
+       ($confvar = $line) =~ s/^.*= (.*)/$1/;
+       return $confvar;
+}
+
+# Agrega un log entry al logfile del antifraude.pl
+sub logEntry {
+       $logentry = shift;
+       $log = "$CONFDATA{logdir}/$CONFDATA{logfile}";
+       # Fetch date and Format it
+       ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = gmtime(time);
+       $year += 1900; $year = sprintf("%02d", $year % 100); ++$mon;
+       $user = getlogin || "Unidentified";
+       $commonstring = "[$mday/$mon/$year $hour:$min:$sec|$user|antifraude]";
+       # Append to log
+       open(LOGFILE,">>$log") or die "No se pudo abrir el archivo de log";
+       seek(LOGFILE,0,2);
+       print LOGFILE "$commonstring - $logentry";
+       close(LOGFILE);
+}
+
+sub badCall {
+       $callreg = shift;
+       logEntry("El siguiente registro de llamada tiene formato invalido\n$callreg");
+}
+# --------- MAIN CODE -------- #
 # En la version final, recibo por param el directorio del .conf, por ahora
 # recibo un dir donde tengo archivos de llamadas
 if ((!$ARGV[0]) || (! -d $ARGV[0])) { 
        print("No se ha ingresado un directorio fuente de llamadas\n");
        exit 1;
 }
 # En la version final, recibo por param el directorio del .conf, por ahora
 # recibo un dir donde tengo archivos de llamadas
 if ((!$ARGV[0]) || (! -d $ARGV[0])) { 
        print("No se ha ingresado un directorio fuente de llamadas\n");
        exit 1;
 }
+$CONFDIR = shift;
+$CONFDATA{logdir} = getConfVar("$CONFDIR/afinstal.conf",12);
+$CONFDATA{logfile} = getConfVar("$CONFDIR/afinstal.conf",13);
+$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");
 
 
-@archivos = getCallFiles($ARGV[0]);
-foreach $callfile (@archivos) {
-       print("Archivo de llamada: $callfile\n");
+# Proceso los archivos de llamadas
+@archivos = getCallFiles($CONFDATA{datadir});
+FILE: foreach $filename (@archivos) {
+       $CALLFILE = "$CONFDATA{datadir}/enproceso/$filename";
+       logEntry("Inicio proceso de: $filename\n");
+       open(CALLFILE) or ((warn "No se pudo abrir archivo $filename"),next FILE);
+       REG: foreach $callreg (<CALLFILE>) {
+               $fieldcount = split(';',$callreg);
+               if ($fieldcount != 8) { badCall($callreg); next REG; }
+               @fields = @_;
+       }
+       close(CALLFILE);
+       logEntry("Fin proceso de: $filename\n");
 }
 }