nodemecu/raspberry/registrador
2022-03-22 14:25:35 -03:00

80 lines
2.3 KiB
Bash
Executable file

#!/bin/bash
#set -x
source /etc/nodemecu.conf
source /opt/nodemecu/envs
source $funciones
while :;do
# archivo a procesar
file=$(get_stack)
# si no hay nada que procesar reinicia el bucle
test -z $file && funcion_espera && continue
# si no hay servidor definido se reinicia el bucle
test -z $servidor && echo "No se configuró nigun servidor de entrega." && funcion_espera && continue
# si no hay internet reinica el bucle
if ! funcion_verificar_internet; then
err_time=$(date +%Y-%m-%d-%H:%M:%S)
echo "$err_time - Parece no haber internet." | tee -a $log
funcion_espera
continue
fi
# si el fichero 'lock' existe (se esta creando un nuevo registro) reinicia el bucle
test -f $lock && continue
# validación del fichero
if ! funcion_validador_json "$(cat $registros/$file)";then
mv $registros/$file $registros_corruptos
continue
fi
# firmado de regisro
firma=$(sign_file $registros/$file)
# UUID del registro a enviar
uuid_registro=$(jq -r '."transaction_uuid"' $registros/$file)
# envio de registro
transaccion=$(curl -v -s --show-error -w "~%{http_code}" -X POST -H "X-Signature: $(sign_file $registros/$file)" -H "Content-Type: application/json" -d @$registros/$file $servidor 2> $curl_err)
# respuestas del servidor
respuesta_servidor="$(echo $transaccion | cut -d '~' -f 1)"
error_servidor="$(echo $transaccion | cut -d '~' -f 2)"
if [ ${#respuesta_servidor} -eq 36 ] && [ "$uuid_registro" == "$respuesta_servidor" ]; then
echo -e "$respuesta_servidor: \e[92mOK\e[0m"
mv $registros/$file $registros/$file.sig $historicos
else
err_time=$(date +%Y-%m-%d-%H:%M:%S)
srv_msg="$(echo $respuesta_servidor | grep -o '<body.*>.*</body>')"
echo -e "$err_time - $uuid_registro: \e[91mFAIL\e[0m"
echo "$err_time - $uuid_registro - Error del servidor: $error_servidor" >> $log
echo "$err_time - $uuid_registro - Mensaje del servidor:" >> $log
echo "$srv_msg" >> $log
if [ -s $curl_err ];then
echo "$err_time - $uuid_registro - Salida de curl:" >> $log
cat $curl_err >> $log
fi
rm $curl_err
#funcion_espera
fi
#exit
done
######
# se testea que el servidor responda
#test_url="$(curl -s -X POST -o /dev/null -w "%{http_code}" $servidor)"
#if [ $test_url -eq 404 ];then
# echo "$(date +%Y-%m-%d-%H:%M:%S) - $url - $test_url" >> /opt/nodemecu/errors.log && sleep 300 && continue
#fi