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