]> git.llucax.com Git - z.facultad/75.08/llamadas.git/blob - inst/afimonio
bugfix
[z.facultad/75.08/llamadas.git] / inst / afimonio
1 #!/bin/bash
2 BASE_DIR=$HOME/.antifraude
3 # uso las funciones de util.sh
4 . "$HOME/.antifraude/util.sh"
5 . "$HOME/.antifraude/conf/afimonio.conf"
6 . "$HOME/.antifraude/conf/antifraude.conf"
7
8 # Es llamada por los trap para deslockear el afimonio 
9 finalize() {
10         unlock "afimonio" 
11         exit 0
12 }
13
14 # filtra el nombre del archivo pasado por parametro sacandole todos los
15 # caracteres que no sean numeros 
16 checkfilename(){
17         date=`echo $1 | cut -d "." -f 1`
18         central=`echo $1 | cut -d "." -f 2`
19
20         validar_solo_numeros "$date"
21         if [ "$?" -ne 0 ]; then
22                 return 1
23         fi
24         mes=${date:4:2}
25         validar_rango "$mes" "1" "12"
26         if [ "$?" -ne 0 ]; then
27                 return 1
28         fi
29         dia=${date:6:2}
30         validar_rango "$dia" "1" "31" 
31         if [ "$?" -ne 0 ]; then
32                 return 1
33         fi
34         hora=${date:8:2}
35         validar_rango "$hora" "0" "23"
36         if [ "$?" -ne 0 ]; then
37                 return 1
38         fi
39         min=${date:10:2}
40         validar_rango "$min" "0" "59"
41         if [ "$?" -ne 0 ]; then
42                 return 1
43         fi
44         validar_solo_numeros "$central"
45         if [ "$?" -ne 0 ]; then
46                 return 1
47         fi
48         return 0                
49 }
50
51 #--------------------MAIN SCRIPT----------------------
52
53 # Recupero las rutas a todos los directorios y archivos que necesito
54 # Del antifraude
55 DATADIR=$ANTI_DATADIR
56 SOURCEDIR=$DATADIR/aprocesar/
57 ACEPTDIR=$DATADIR/enproceso/
58 REJECTDIR=$DATADIR/rechazadas/
59 BINDIR=$ANTI_BINDIR
60
61 # Del afimonio
62 LOGDIR=$AFIM_LOGDIR
63 LOGNAME=$AFIM_LOGFILE
64 LOGFILE=$LOGDIR/$LOGNAME
65
66 # Capturo señales para salir bien (liberando el lock)
67 trap "finalize" INT
68 trap "finalize" TERM 
69
70 # Me lockeo
71 lock "afimonio" || die "No se puede correr, hay otra instancia  corriendo!"
72
73 # Comienza el ciclo infinito que mueve los archivos
74 while true; do 
75         for file in `ls $SOURCEDIR` ; do
76                 checkfilename $file     
77                 if [ "$?" -eq 0 ]; then
78                         mv $SOURCEDIR$file $ACEPTDIR #cambiar copiar por mover
79                         fecha=$(date +%d/%m/%Y-%H:%M)
80                         echo "$fecha $USER afimonio:\"Se detecta archivo de llamadas $file\"" >> $LOGFILE
81                 else 
82                         mv $SOURCEDIR$file $REJECTDIR #cambiar copiar por mover
83                         fecha=$(date +%d/%m/%Y-%H:%M)
84                         echo "$fecha $USER afimonio:\"Se rechaza el  archivo $file\"" >> $LOGFILE
85                 fi
86                 # Verifico que el logfile no se pase del tamaño maximo
87                 tam=`stat -c '%s' $LOGFILE`
88                 # Si se paso del maximo dejo las ultimas 100 lineas
89                 if [ "$tam" -ge "$AFIM_LOGSIZE" ]; then
90                         tail -n 100 $LOGFILE > "$BINDIR/temp"   
91                         rm $LOGFILE
92                         mv "$BINDIR/temp" $LOGFILE
93                 fi
94         done #for
95         # me fijo si el antifraude esta corriendo y si no lo esta lo arranco
96         if ! is_lock "antifraude.pl" ; then
97                 $BINDIR/antifraude.pl
98         fi
99         sleep 10
100 done #while 
101