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