From 1fb81f05116f580924aa799e5b42e74a4803e323 Mon Sep 17 00:00:00 2001 From: andryyy Date: Wed, 5 Feb 2020 10:53:23 +0100 Subject: [PATCH] [ACME] Use redis master for write operations --- data/Dockerfiles/acme/acme.sh | 11 +++++++++-- data/Dockerfiles/acme/functions.sh | 4 ++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/data/Dockerfiles/acme/acme.sh b/data/Dockerfiles/acme/acme.sh index 071c880f..56145b25 100755 --- a/data/Dockerfiles/acme/acme.sh +++ b/data/Dockerfiles/acme/acme.sh @@ -2,6 +2,13 @@ set -o pipefail exec 5>&1 +# Do not attempt to write to slave +if [[ ! -z ${REDIS_SLAVEOF_IP} ]]; then + export REDIS_CMDLINE="redis-cli -h ${REDIS_SLAVEOF_IP} -p ${REDIS_SLAVEOF_PORT}" +else + export REDIS_CMDLINE="redis-cli -h redis -p 6379" +fi + source /srv/functions.sh # Thanks to https://github.com/cvmiller -> https://github.com/cvmiller/expand6 source /srv/expand6.sh @@ -315,7 +322,7 @@ while true; do if [[ -z ${VALIDATED_CERTIFICATES[*]} ]]; then log_f "Cannot validate any hostnames, skipping Let's Encrypt for 1 hour." log_f "Use SKIP_LETS_ENCRYPT=y in mailcow.conf to skip it permanently." - redis-cli -h redis SET ACME_FAIL_TIME "$(date +%s)" + ${REDIS_CMDLINE} SET ACME_FAIL_TIME "$(date +%s)" sleep 1h exec $(readlink -f "$0") fi @@ -356,7 +363,7 @@ while true; do ;; *) # non-zero log_f "Some errors occurred, retrying in 30 minutes..." - redis-cli -h redis SET ACME_FAIL_TIME "$(date +%s)" + ${REDIS_CMDLINE} SET ACME_FAIL_TIME "$(date +%s)" sleep 30m exec $(readlink -f "$0") ;; diff --git a/data/Dockerfiles/acme/functions.sh b/data/Dockerfiles/acme/functions.sh index f5510b15..1dd35cb4 100644 --- a/data/Dockerfiles/acme/functions.sh +++ b/data/Dockerfiles/acme/functions.sh @@ -9,9 +9,9 @@ log_f() { echo "$(date) - ${1}" fi if [[ ${3} == "b64" ]]; then - redis-cli -h redis LPUSH ACME_LOG "{\"time\":\"$(date +%s)\",\"message\":\"base64,$(printf '%s' "${1}")\"}" > /dev/null + ${REDIS_CMDLINE} LPUSH ACME_LOG "{\"time\":\"$(date +%s)\",\"message\":\"base64,$(printf '%s' "${1}")\"}" > /dev/null else - redis-cli -h redis LPUSH ACME_LOG "{\"time\":\"$(date +%s)\",\"message\":\"$(printf '%s' "${1}" | \ + ${REDIS_CMDLINE} LPUSH ACME_LOG "{\"time\":\"$(date +%s)\",\"message\":\"$(printf '%s' "${1}" | \ tr '%&;$"[]{}-\r\n' ' ')\"}" > /dev/null fi }