#!/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 '.*')" 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