From: Alan Kennedy Date: Sun, 17 Oct 2004 23:00:06 +0000 (+0000) Subject: Se agrega log support. Ahora se le debe pasar el path a donde se encuentra el archivo... X-Git-Tag: svn_import~125 X-Git-Url: https://git.llucax.com/z.facultad/75.08/llamadas.git/commitdiff_plain/d6ff9bc2cd5838d73e7a96f657a90a6f4b2797dd Se agrega log support. Ahora se le debe pasar el path a donde se encuentra el archivo de configuracion afinstal.conf generado por la instalacion del componente, y de alli levanta cual es el directorio de datos, dir de log, nombre del log, logsize. Valida por el momento si los registros de llamada no tienen exactamente 8 campos en cuyo caso continua con el siguiente y reporta por log --- diff --git a/inst/antifraude.pl b/inst/antifraude.pl index 623475d..4a6c7d9 100644 --- a/inst/antifraude.pl +++ b/inst/antifraude.pl @@ -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 - 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.. - @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; } -# --------- 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 = } 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; } +$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 () { + $fieldcount = split(';',$callreg); + if ($fieldcount != 8) { badCall($callreg); next REG; } + @fields = @_; + } + close(CALLFILE); + logEntry("Fin proceso de: $filename\n"); }