#!/bin/sh # # Configurador # Atajo CTRL+C #trap "echo -n ''" INT # Cargo config BASE_DIR="$HOME/.antifraude" # Cargo config . "$BASE_DIR/conf/aficonf.conf" # Cargo utilidades . "$BASE_DIR/util.sh" #Valida que exista el pais existe_pais () { EXISTE=`cat "$BASE_DIR/oridesti.txt" | egrep "^$1;"`; if [ "$EXISTE" != "" ] ; then return 0 fi return 1 } poner_estado_umbral () { ID=$1 ESTADO=$2 FECHA=`date +"%Y%m%d"` HORA=`date +"%H%M%S"` if [ "$ESTADO" != "A" ] && [ "$ESTADO" != "I" ] ; then return 1 fi SALIDA=`sed "s/^$ID\(;[^;]*;[^;]*;[^;]*;\)[^;]*\(;[^;]*;[^;]*;[^;]*\)$/$ID\1I;$USER;$FECHA;$HORA/" "$BASE_DIR/umbrales.param"` echo "$SALIDA" > "$BASE_DIR/umbrales.param" } menu () { echo "AFICONF" echo "=======" echo echo " 1) Alta" echo " 2) Baja" echo " 3) Buscar" echo " 4) Salir" preguntar "Su opción" "1234" $1 } existe_umbral () { EXISTE=`cat "$BASE_DIR/umbrales.param" | egrep "$1"`; if [ "$EXISTE" == "" ] ; then #No existe return 1 fi #Ya existe un umbral! return 0 } buscar_id_umbral () { ID=`cat "$BASE_DIR/umbrales.id"`; eval "$1=$ID" let ID=$ID+1 echo "$ID" > "$BASE_DIR/umbrales.id" } case_altas () { DONE=0 while [ $DONE == 0 ] ; do leer "Número de línea" "" LINEA #TODO Valido if ! validar_solo_numeros "$LINEA" ; then echo "EL NUMERO TE LINEA SOLO DEBE TENER DIGITOS" else DONE=1 fi if [ "$LINEA" == "" ] ; then DONE=0 fi done preguntar "Tipo de llamada" "ES" TIPO DONE=0 while [ $DONE == 0 ] ; do leer "Pais (código de 2 letras)" "" PAIS if ! existe_pais "$PAIS" ; then echo "No existe el país de código $PAIS" else DONE=1 fi if [ "$PAIS" == "" ] ; then DONE=0 fi done # Verifico que el umbral no exista FECHA=`date +"%Y%m%d"` HORA=`date +"%H%M%S"` UMBRAL="$LINEA;$PAIS;$TIPO;A;*;*;*" if existe_umbral "$UMBRAL" ; then echo "Ya existe un umbral con los datos ingresados." echo "Abortando..." return fi # Genero el umbral buscar_id_umbral ID UMBRAL="$ID;$LINEA;$PAIS;$TIPO;A;$USER;$FECHA;$HORA" # Lo guardo echo "$UMBRAL" >> "$BASE_DIR/umbrales.param" echo "" echo "El Umbral fue grabado con éxito" echo "" } case_buscar () { DONE=0 while [ $DONE == 0 ] ; do leer "Número de línea" "" LINEA #TODO Valido if ! validar_solo_numeros "$LINEA" ; then echo "EL NUMERO TE LINEA SOLO DEBE TENER DIGITOS" else DONE=1 fi if [ "$LINEA" == "" ] ; then DONE=0 fi done DATOS=`cat "$BASE_DIR/umbrales.param" | grep "[0-9]*;$LINEA;[A-Z]*;[E,S];A"` printf "%3s %2s %1s %1s %10s%8s %6s\n" "ID" "Ciudad" "Tipo" "Estado" "Usuario" "Fecha" "Hora" OPCIONES="-1" for i in $DATOS ; do ID=`echo "$i" | cut -d ';' -f 1` CIUDAD=`echo "$i" | cut -d ';' -f 3` TIPO=`echo "$i" | cut -d ';' -f 4` ESTADO=`echo "$i" | cut -d ';' -f 5` USUARIO=`echo "$i" | cut -d ';' -f 6` FECHA=`echo "$i" | cut -d ';' -f 7` HORA=`echo "$i" | cut -d ';' -f 8` printf "%3s %2s %1s %1s %10s %8s %6s\n" "$ID" "$CIUDAD" "$TIPO" "$ESTADO" "$USUARIO" "$FECHA" "$HORA" OPCIONES="$OPCIONES $ID" done preguntar "Cual desea borrar (-1 para salir)" "$OPCIONES" OPT if [ "$OPT" = "-1" ] ; then return 0 fi echo "Borrando el registro $OPT ..." poner_estado_umbral "$OPT" "I" echo "" } # No permito correr 2 instancias de AFICONF if is_lock "aficonf" ; then echo "" echo "Aficonf está corriendo actualmente." echo "" exit 1 fi lock "aficonf" # Loop Principal OPT="0" while [ "$OPT" != "4" ] ; do menu OPT case $OPT in "1") case_altas ;; "2") echo "Dos" ;; "3") case_buscar ;; esac done unlock "aficonf"