mirror of
https://github.com/eduardogsilva/wireguard_webadmin.git
synced 2026-01-17 04:56:18 +00:00
feat: add WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL environment variable for configurable cache refresh rate
This commit is contained in:
@@ -15,7 +15,11 @@ TIMEZONE=America/Sao_Paulo
|
||||
# Lower this value if the initial peer list feels slow.
|
||||
# 0 = disable preload, 9 = fully prefill traffic charts.#
|
||||
# WIREGUARD_STATUS_CACHE_WEB_LOAD_PREVIOUS_COUNT=9
|
||||
|
||||
#
|
||||
# How often (in seconds) the cache should be refreshed.
|
||||
# Allowed values: 30, 60, 150, 300. Default: 60.
|
||||
# WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL=60
|
||||
#
|
||||
# If you need additional hosts to be allowed, you can specify them here.
|
||||
# The SERVER_ADDRESS will always be allowed.
|
||||
# Example: EXTRA_ALLOWED_HOSTS=app1.example.com,app2.example.com:8443,app3.example.com
|
||||
|
||||
@@ -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
45
containers/cron/entrypoint.sh
Executable 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
|
||||
@@ -14,6 +14,7 @@ services:
|
||||
- EXTRA_ALLOWED_HOSTS=${EXTRA_ALLOWED_HOSTS}
|
||||
- WIREGUARD_STATUS_CACHE_ENABLED=${WIREGUARD_STATUS_CACHE_ENABLED}
|
||||
- WIREGUARD_STATUS_CACHE_WEB_LOAD_PREVIOUS_COUNT=${WIREGUARD_STATUS_CACHE_WEB_LOAD_PREVIOUS_COUNT}
|
||||
- WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL=${WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL}
|
||||
volumes:
|
||||
- wireguard:/etc/wireguard
|
||||
- static_volume:/app_static_files/
|
||||
@@ -29,7 +30,7 @@ services:
|
||||
- "51820-51839:51820-51839/udp"
|
||||
# Ports for port forwarding rules. Add your own ports here if you need them.
|
||||
- "8080-8089:8080-8089/tcp"
|
||||
|
||||
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- SYS_MODULE
|
||||
@@ -46,6 +47,7 @@ services:
|
||||
dockerfile: Dockerfile-cron
|
||||
environment:
|
||||
- TZ=${TIMEZONE}
|
||||
- WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL=${WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL}
|
||||
depends_on:
|
||||
- wireguard-webadmin
|
||||
|
||||
@@ -75,7 +77,7 @@ services:
|
||||
- dnsmasq_conf:/etc/dnsmasq/
|
||||
|
||||
volumes:
|
||||
static_volume:
|
||||
static_volume:
|
||||
wireguard:
|
||||
dnsmasq_conf:
|
||||
app_secrets:
|
||||
|
||||
@@ -12,6 +12,7 @@ services:
|
||||
- EXTRA_ALLOWED_HOSTS=${EXTRA_ALLOWED_HOSTS}
|
||||
- WIREGUARD_STATUS_CACHE_ENABLED=${WIREGUARD_STATUS_CACHE_ENABLED}
|
||||
- WIREGUARD_STATUS_CACHE_WEB_LOAD_PREVIOUS_COUNT=${WIREGUARD_STATUS_CACHE_WEB_LOAD_PREVIOUS_COUNT}
|
||||
- WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL=${WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL}
|
||||
volumes:
|
||||
- wireguard:/etc/wireguard
|
||||
- static_volume:/app_static_files/
|
||||
@@ -40,6 +41,7 @@ services:
|
||||
image: eduardosilva/wireguard_webadmin_cron:latest
|
||||
environment:
|
||||
- TZ=${TIMEZONE}
|
||||
- WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL=${WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL}
|
||||
depends_on:
|
||||
- wireguard-webadmin
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ services:
|
||||
- EXTRA_ALLOWED_HOSTS=${EXTRA_ALLOWED_HOSTS}
|
||||
- WIREGUARD_STATUS_CACHE_ENABLED=${WIREGUARD_STATUS_CACHE_ENABLED}
|
||||
- WIREGUARD_STATUS_CACHE_WEB_LOAD_PREVIOUS_COUNT=${WIREGUARD_STATUS_CACHE_WEB_LOAD_PREVIOUS_COUNT}
|
||||
- WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL=${WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL}
|
||||
volumes:
|
||||
- wireguard:/etc/wireguard
|
||||
- static_volume:/app_static_files/
|
||||
@@ -40,6 +41,7 @@ services:
|
||||
image: eduardosilva/wireguard_webadmin_cron:latest
|
||||
environment:
|
||||
- TZ=${TIMEZONE}
|
||||
- WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL=${WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL}
|
||||
depends_on:
|
||||
- wireguard-webadmin
|
||||
|
||||
|
||||
@@ -51,6 +51,20 @@ if [ -n "${WIREGUARD_STATUS_CACHE_WEB_LOAD_PREVIOUS_COUNT:-}" ]; then
|
||||
echo "WIREGUARD_STATUS_CACHE_WEB_LOAD_PREVIOUS_COUNT = ${WIREGUARD_STATUS_CACHE_WEB_LOAD_PREVIOUS_COUNT}" >> /app/wireguard_webadmin/production_settings.py
|
||||
fi
|
||||
|
||||
if [ -n "${WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL:-}" ]; then
|
||||
case "${WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL}" in
|
||||
30|60|150|300)
|
||||
echo "WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL = ${WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL}" >> /app/wireguard_webadmin/production_settings.py
|
||||
MAX_AGE=$((WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL * 10))
|
||||
echo "WIREGUARD_STATUS_CACHE_MAX_AGE = ${MAX_AGE}" >> /app/wireguard_webadmin/production_settings.py
|
||||
;;
|
||||
*)
|
||||
echo "Error: Invalid WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL value: ${WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL}. Allowed values are 30, 60, 150, 300."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if [[ "${DEV_MODE,,}" != "true" ]]; then
|
||||
sed -i "/^ path('admin\/', admin.site.urls),/s/^ / # /" /app/wireguard_webadmin/urls.py
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user