80 lines
2.3 KiB
Bash
Executable file
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
|