#!/bin/sh
set -eu
umask 077
IFS= read -r redisPassword < /run/secrets/redis_password || [ -n "$redisPassword" ]
case "$redisPassword" in *[!a-fA-F0-9]*|"") echo "Redis requires a 64-character hexadecimal secret." >&2; exit 1;; esac
[ "${#redisPassword}" -eq 64 ] || { echo "Redis requires a 64-character hexadecimal secret." >&2; exit 1; }
case "${1:-serve}" in
ping|snapshot)
    REDISCLI_AUTH="$redisPassword"
    export REDISCLI_AUTH
    if [ "$1" = "snapshot" ]; then
        exec redis-cli -e --raw --host 127.0.0.1 SAVE
    fi
    exec redis-cli -e --host 127.0.0.1 ping
    ;;
serve) ;;
*) echo "Unsupported Redis operation." >&2; exit 2 ;;
esac
printf "bind 0.0.0.0\nprotected-mode yes\nrequirepass %s\nappendonly yes\nappendfsync everysec\nsave \"\"\ndir /data\nmaxmemory 128mb\nmaxmemory-policy noeviction\n" "$redisPassword" > /run/post76/redis.conf
exec redis-server /run/post76/redis.conf
