]> git.llucax.com Git - z.facultad/75.08/llamadas.git/blobdiff - inst/antifraude.pl
ahora parece andar bien
[z.facultad/75.08/llamadas.git] / inst / antifraude.pl
index 8417306d8c3dd0b2b622347c8b06a2e2084f983d..8f02a6d8fb8581288beafa2fc3e13b15ca63aba3 100644 (file)
@@ -1,5 +1,29 @@
 #!/usr/bin/perl
 
+sub is_lock {
+       if ( -e "$ENV{'HOME'}/.antifraude/lock/antifraude.pid" ) {
+               # Lock file encontrado
+               return 1;
+       }
+       # No hay lock file!
+       return 0;
+}
+
+sub unlock {
+       unlink ("$ENV{'HOME'}/.antifraude/lock/antifraude.pid");
+}
+
+sub lock {
+       if (!is_lock()) {
+               local $lfile = "$ENV{'HOME'}/.antifraude/lock/antifraude.pid";
+               open(LOCKFILE,">>$lfile");
+               print LOCKFILE $$;
+               close(LOCKFILE);
+               return 1;
+       }
+       return 0;
+}
+
 # Comparador de fecha para los archivos de llamada
 sub byDate {
        ($year1,$mon1,$day1,$hr1,$min1) = $a =~ /([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})/;
@@ -40,7 +64,8 @@ sub getConfVar {
        do { $line = <CONFIGFILE> } until $. == $linenumber;
        close(CONFIGFILE);
        chop($line);
-       ($confvar = $line) =~ s/^.*= (.*)/$1/;
+       ($confvar = $line) =~ s/"(.*)"$/$1/;
+       $confvar =~ s/^.*=//;
        return $confvar;
 }
 
@@ -58,8 +83,18 @@ sub logEntry {
        open(LOGFILE,">>$log") or die "No se pudo abrir el archivo de log";
        seek(LOGFILE,0,2);
        print LOGFILE "$commonstring - $logentry\n";
+       $filesize = tell(LOGFILE);
        close(LOGFILE);
 
+       # Chequeo el logsize y su lo supero me quedo con 100 lineas
+       if ($filesize > ($CONFDATA{logsize} * 1024 * 1024))
+       {
+               open(LOGFILE,"+<$log");
+               do ($line = <LOGFILE>) until $. == 100;
+               truncate(LOGFILE,tell(LOGFILE));
+               close(LOGFILE);
+       }
+
        if ($consoleout) { print("$logentry\n"); }
 }
 
@@ -72,8 +107,8 @@ sub badCall {
 }
 
 sub checkUmbrales {
-       local(*callfields) = @_[0];
-       my $callsfile = @_[1];
+       local(*callfields) = $_[0];
+       my $callsfile = $_[1];
        my $matchedUmbral = 0;
        my $i = 0;
 
@@ -122,31 +157,22 @@ sub checkUmbrales {
 }
 
 # --------- 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;
-}
+# File locking..
+if (is_lock()) { exit 1; }
+lock();
+
 # Defino some GLOBALS
-$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);
-$CONFDATA{alarmlog} = "$CONFDIR/alarmas/alarmas.txt";
+$CONFDIR = "$ENV{'HOME'}/.antifraude";
+$CONFDATA{logdir} = getConfVar("$CONFDIR/conf/antifraude.conf",2);
+$CONFDATA{logfile} = getConfVar("$CONFDIR/conf/antifraude.conf",3);
+$CONFDATA{logsize} = getConfVar("$CONFDIR/conf/antifraude.conf",4);
+$CONFDATA{datadir} = getConfVar("$CONFDIR/conf/antifraude.conf",5);
 
 # Cargo los UMBRALES en memoria
 open(PARAMFILE,"$CONFDIR/umbrales.param") or die "No se pudo abrir el archivo de umbrales";
 @UMBRALES = <PARAMFILE>;
 close(PARAMFILE);
 
-# For Debug Only
-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();
 FILE: foreach $filename (@archivos) {
@@ -186,3 +212,6 @@ FILE: foreach $filename (@archivos) {
 
        logEntry("Fin proceso de: $filename",1);
 }
+
+# Unlocking
+unlock();