]> git.llucax.com Git - z.facultad/75.08/llamadas.git/blob - inst/aficonf
Se agrega código fuente, instalación y util.sh.
[z.facultad/75.08/llamadas.git] / inst / aficonf
1 #!/bin/sh
2 #
3 # Configurador
4
5 # Atajo CTRL+C 
6 #trap "echo -n ''" INT
7
8 # Cargo config
9 BASE_DIR="$HOME/.antifraude"
10 # Cargo config
11 . "$BASE_DIR/conf/aficonf.conf"
12
13 # Cargo utilidades
14 . "$BASE_DIR/util.sh"
15
16 LOGDIR=$AFIC_LOGDIR
17 LOGNAME=$AFIC_LOGFILE
18 LOGFILE=$LOGDIR/$LOGNAME
19
20 #Valida que exista el pais
21 # Parámetros :
22 #   $1 = Descripcion a buscar
23 #   $2 = Variable donde guardar el código del Pais en caso de existir
24 existe_pais () {
25         EXISTE=`cat "$BASE_DIR/oridesti.txt" | egrep "^[A-Z]*;$1" | cut -d ';' -f 1`;
26         if [ "$EXISTE" != "" ] ; then
27                 #Exite!, debo gaurdar el código
28                 eval "$2=$EXISTE"
29                 return 0
30         fi
31         return 1
32 }
33
34 poner_estado_umbral () {
35         ID=$1
36         ESTADO=$2
37
38         FECHA=`date +"%Y%m%d"`
39         HORA=`date +"%H%M%S"`
40         
41         if [ "$ESTADO" != "A" ] && [ "$ESTADO" != "I" ] ; then
42                 return 1
43         fi
44         SALIDA=`sed "s/^$ID\(;[^;]*;[^;]*;[^;]*;\)[^;]*\(;[^;]*;[^;]*;[^;]*\)$/$ID\1I;$USER;$FECHA;$HORA/" "$BASE_DIR/umbrales.param"`
45         echo "$SALIDA" > "$BASE_DIR/umbrales.param"
46         put_log "$LOGFILE" "aficonf" "Se ha cambiado el estado de umbral $ID a $ESTADO" "$AFIC_LOGSIZE"
47 }
48
49 menu () {
50         echo "AFICONF"
51         echo "======="
52         echo
53         echo "  1) Alta"
54         echo "  2) Buscar"
55         echo "  3) Salir"
56
57         preguntar "Su opción" "123" $1
58 }
59
60 existe_umbral () {
61         EXISTE=`cat "$BASE_DIR/umbrales.param" | egrep "$1"`;
62         if [ "$EXISTE" == "" ] ; then
63                 #No existe
64                 return 1
65         fi
66         #Ya existe un umbral!
67         return 0
68 }
69         
70 buscar_id_umbral () {
71         ID=`cat "$BASE_DIR/umbrales.id"`;
72         eval "$1=$ID"
73         let ID=$ID+1
74         echo "$ID" > "$BASE_DIR/umbrales.id"
75 }
76
77 case_altas () {
78         DONE=0
79         while [ $DONE == 0 ] ; do
80                 leer "Número de línea" "" LINEA
81                 #TODO Valido
82                 if ! validar_solo_numeros "$LINEA" ; then
83                         echo "EL NUMERO TE LINEA SOLO DEBE TENER DIGITOS"
84                 else
85                         DONE=1
86                 fi
87                 if [ "$LINEA" == "" ] ; then
88                         DONE=0
89                 fi
90         done
91
92         preguntar "Tipo de llamada" "ES" TIPO
93
94         DONE=0
95         CODIGO=''
96         while [ $DONE == 0 ] ; do
97                 leer "Pais (descripción)" "" PAIS 
98                 if ! existe_pais "$PAIS" CODIGO ; then
99                         echo "No existe el país de descrición '$PAIS'"
100                 else
101                         DONE=1
102                 fi
103                 if [ "$PAIS" == "" ] ; then
104                         DONE=0
105                 fi
106         done
107
108         echo "El código de '$PAIS' es '$CODIGO'"
109         PAIS=$CODIGO
110
111         # Verifico que el umbral no exista
112         FECHA=`date +"%Y%m%d"`
113         HORA=`date +"%H%M%S"`
114         UMBRAL="$LINEA;$PAIS;$TIPO;A;*;*;*"
115
116         if existe_umbral "$UMBRAL" ; then
117                 echo "Ya existe un umbral con los datos ingresados."
118                 echo "Abortando..."
119                 put_log "$LOGFILE" "aficonf" "Se trató de insertar un umbral repetido ($UMBRAL)" "$AFIC_LOGSIZE"
120                 return
121         fi
122         
123         # Genero el umbral
124         buscar_id_umbral ID
125         UMBRAL="$ID;$LINEA;$PAIS;$TIPO;A;$USER;$FECHA;$HORA"
126
127         # Lo guardo
128         echo "$UMBRAL" >> "$BASE_DIR/umbrales.param"
129
130         echo ""
131         echo "El Umbral fue grabado con éxito"
132         echo ""
133         put_log "$LOGFILE" "aficonf" "Se inserto un nuevo umbral ($UMBRAL)" "$AFIC_LOGSIZE"
134 }
135
136 case_buscar () {
137         DONE=0
138         while [ $DONE == 0 ] ; do
139                 leer "Número de línea" "" LINEA
140                 #TODO Valido
141                 if ! validar_solo_numeros "$LINEA" ; then
142                         echo "EL NUMERO TE LINEA SOLO DEBE TENER DIGITOS"
143                 else
144                         DONE=1
145                 fi
146                 if [ "$LINEA" == "" ] ; then
147                         DONE=0
148                 fi
149         done
150
151         DATOS=`cat "$BASE_DIR/umbrales.param" | grep "[0-9]*;$LINEA;[A-Z]*;[E,S];A"`
152
153         if [ "$DATOS" == "" ] ; then
154                 echo ""
155                 echo "No se han encontrado Umbrales activos para la linea $LINEA."
156                 echo "Abortando ..."
157                 echo ""
158                 put_log "$LOGFILE" "aficonf" "No se han encontrado umbrales para la línea $LINEA" "$AFIC_LOGSIZE"
159                 return 0
160         fi
161
162         printf "%3s      %2s  %1s   %1s    %10s%8s       %6s\n" "ID" "Ciudad" "Tipo" "Estado" "Usuario" "Fecha" "Hora"
163         OPCIONES="-1"
164         for i in $DATOS ; do
165                 ID=`echo "$i" | cut -d ';' -f 1`
166                 CIUDAD=`echo "$i" | cut -d ';' -f 3`
167                 TIPO=`echo "$i" | cut -d ';' -f 4`
168                 ESTADO=`echo "$i" | cut -d ';' -f 5`
169                 USUARIO=`echo "$i" | cut -d ';' -f 6`
170                 FECHA=`echo "$i" | cut -d ';' -f 7`
171                 HORA=`echo "$i" | cut -d ';' -f 8`
172                 printf "%3s      %2s      %1s      %1s      %10s      %8s      %6s\n" "$ID" "$CIUDAD" "$TIPO" "$ESTADO" "$USUARIO" "$FECHA" "$HORA"
173                 OPCIONES="$OPCIONES $ID"
174         done
175
176         preguntar "Cual desea borrar (-1 para salir)" "$OPCIONES" OPT
177
178         if [ "$OPT" = "-1" ] ; then
179                 return 0
180         fi
181
182         echo "Borrando el registro $OPT ..."
183         poner_estado_umbral "$OPT" "I"
184         put_log "$LOGFILE" "aficonf" "No se ha eliminado elumbral de ID $OPT" "$AFIC_LOGSIZE"
185         echo ""
186         echo ""
187         echo "El Umbral fue eliminado con éxito"
188         echo ""
189 }
190
191 # No permito correr 2 instancias de AFICONF
192 if is_lock "aficonf" ; then
193         echo ""
194         echo "Aficonf está corriendo actualmente."
195         echo ""
196         put_log "$LOGFILE" "aficonf" "Se ha intentado ejecutar aficonf cuando este estaba corriendo" "$AFIC_LOGSIZE"
197         exit 1
198 fi
199
200 lock "aficonf"
201
202 # Loop Principal
203 OPT="0"
204 while [ "$OPT" != "3" ] ; do 
205         menu OPT
206
207         case $OPT in
208                 "1") case_altas ;;
209                 "2") case_buscar ;;
210         esac
211 done
212
213 unlock "aficonf"
214