feat: add WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL environment variable for configurable cache refresh rate

This commit is contained in:
Eduardo Silva
2026-01-13 19:42:23 -03:00
parent 3b03dc8404
commit 5c54b4a525
7 changed files with 77 additions and 9 deletions

View File

@@ -4,13 +4,12 @@ FROM ubuntu:latest
RUN apt-get update && apt-get install -y cron curl
# Adicionar seus scripts de cron
COPY cron_tasks /etc/cron.d/cron_tasks
# Dar permissões apropriadas
RUN chmod 0644 /etc/cron.d/cron_tasks
# Adicionar apenas o entrypoint script, as tasks serão geradas lá
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
# Criar um arquivo de log para armazenar os resultados do cron
RUN touch /var/log/cron.log
# Executar o cron em primeiro plano
CMD cron -f
# Executar o entrypoint
ENTRYPOINT ["/entrypoint.sh"]

45
containers/cron/entrypoint.sh Executable file
View File

@@ -0,0 +1,45 @@
#!/bin/bash
set -e
WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL=${WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL:-60}
case "$WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL" in
30|60|150|300)
;;
*)
echo "Error: Invalid WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL value: $WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL. Allowed values are 30, 60, 150, 300."
exit 1
;;
esac
echo "Starting cron with WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL=$WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL"
# Create cron tasks
cat <<EOF > /etc/cron.d/cron_tasks
* * * * * root /usr/bin/curl -s http://wireguard-webadmin:8000/api/cron_check_updates/ >> /var/log/cron.log 2>&1
*/10 * * * * root /usr/bin/curl -s http://wireguard-webadmin:8000/api/cron_update_peer_latest_handshake/ >> /var/log/cron.log 2>&1
EOF
CMD="/usr/bin/curl -s http://wireguard-webadmin:8000/api/cron_refresh_wireguard_status_cache/ >> /var/log/cron.log 2>&1"
if [ "$WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL" -eq 30 ]; then
echo "* * * * * root $CMD" >> /etc/cron.d/cron_tasks
echo "* * * * * root sleep 30; $CMD" >> /etc/cron.d/cron_tasks
elif [ "$WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL" -eq 60 ]; then
echo "* * * * * root $CMD" >> /etc/cron.d/cron_tasks
elif [ "$WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL" -eq 150 ]; then
echo "*/5 * * * * root $CMD" >> /etc/cron.d/cron_tasks
echo "*/5 * * * * root sleep 150; $CMD" >> /etc/cron.d/cron_tasks
elif [ "$WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL" -eq 300 ]; then
echo "*/5 * * * * root $CMD" >> /etc/cron.d/cron_tasks
fi
# Permissions
chmod 0644 /etc/cron.d/cron_tasks
# crontab /etc/cron.d/cron_tasks
# Touch log file
touch /var/log/cron.log
# Execute cron
exec cron -f