From c00a1efdaca3c5d138518d3069ceb3c6a54af619 Mon Sep 17 00:00:00 2001 From: szaimen Date: Wed, 6 Apr 2022 15:11:24 +0200 Subject: [PATCH] make sure that only one session is active at a time Signed-off-by: szaimen --- Containers/mastercontainer/Dockerfile | 2 ++ .../mastercontainer/session-deduplicator.sh | 23 +++++++++++++++++++ Containers/mastercontainer/supervisord.conf | 7 ++++++ 3 files changed, 32 insertions(+) create mode 100644 Containers/mastercontainer/session-deduplicator.sh diff --git a/Containers/mastercontainer/Dockerfile b/Containers/mastercontainer/Dockerfile index 284fce66..7fad6da3 100644 --- a/Containers/mastercontainer/Dockerfile +++ b/Containers/mastercontainer/Dockerfile @@ -86,10 +86,12 @@ RUN mkdir /var/log/supervisord; \ COPY Caddyfile / COPY start.sh /usr/bin/ COPY backup-time-file-watcher.sh / +COPY session-deduplicator.sh / COPY cron.sh / COPY supervisord.conf / RUN chmod +x /usr/bin/start.sh; \ chmod +x /cron.sh; \ + chmod +x /session-deduplicator.sh; \ chmod +x /backup-time-file-watcher.sh USER root diff --git a/Containers/mastercontainer/session-deduplicator.sh b/Containers/mastercontainer/session-deduplicator.sh new file mode 100644 index 00000000..26508616 --- /dev/null +++ b/Containers/mastercontainer/session-deduplicator.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +while true; do + while "$(find "/mnt/docker-aio-config/session/" -mindepth 1 -exec grep "aio_authenticated|[a-z]:1" {} \; | wc -l)" -gt 1; do + unset SESSION_FILES + SESSION_FILES="$(find "/mnt/docker-aio-config/session/" -mindepth 1)" + unset SESSION_FILES_ARRAY + mapfile -t SESSION_FILES_ARRAY <<< "$SESSION_FILES" + for SESSION_FILE in "${SESSION_FILES_ARRAY[@]}"; do + if ! grep -q "aio_authenticated|[a-z]:1" "$SESSION_FILE"; then + rm "$SESSION_FILE" + fi + done + echo "Deleting duplicate sessions" + unset OLDEST_FILE + set -x + # shellcheck disable=SC2012 + OLDEST_FILE="$(ls -t "/mnt/docker-aio-config/session/" | tail -1)" + rm "/mnt/docker-aio-config/session/$OLDEST_FILE" + set +x + done + sleep 5 +done diff --git a/Containers/mastercontainer/supervisord.conf b/Containers/mastercontainer/supervisord.conf index 7d108cb2..9c3604c0 100644 --- a/Containers/mastercontainer/supervisord.conf +++ b/Containers/mastercontainer/supervisord.conf @@ -35,3 +35,10 @@ stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 command=/backup-time-file-watcher.sh + +[program:session-deduplicator] +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 +command=/session-deduplicator.sh