#!/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})/;
do { $line = <CONFIGFILE> } until $. == $linenumber;
close(CONFIGFILE);
chop($line);
- ($confvar = $line) =~ s/^.*= (.*)/$1/;
+ ($confvar = $line) =~ s/"(.*)"$/$1/;
+ $confvar =~ s/^.*=//;
return $confvar;
}
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})
+ {
+ open(LOGFILE,"+<$log");
+ do ($line = <LOGFILE>) until $. == 100;
+ truncate(LOGFILE,tell(LOGFILE));
+ close(LOGFILE);
+ }
+
if ($consoleout) { print("$logentry\n"); }
}
}
sub checkUmbrales {
- local(*callfields) = @_[0];
- my $callsfile = @_[1];
+ local(*callfields) = $_[0];
+ my $callsfile = $_[1];
my $matchedUmbral = 0;
my $i = 0;
}
# --------- 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) {
logEntry("Fin proceso de: $filename",1);
}
+
+# Unlocking
+unlock();