nginx-proxy-auto-docker/letsencrypt_service
2015-11-22 23:39:14 +01:00

51 lines
1.5 KiB
Bash
Executable file

#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
echo 'Waiting'
sleep 10
# Wait some amount of time
seconds_to_wait=3600
while true; do
# Load relevant container settings
source "$DIR"/letsencrypt_service_data
for cid in "${LETSENCRYPT_CONTAINERS[@]}"; do
# Derive host and email variable names
host_varname="LETSENCRYPT_${cid}_HOST"
# Array variable indirection hack: http://stackoverflow.com/a/25880676/350221
hosts_array=$host_varname[@]
email_varname="LETSENCRYPT_${cid}_EMAIL"
for domain in "${!hosts_array}"; do
# Create the domain directory
mkdir -p /etc/nginx/certs/$domain
cd /etc/nginx/certs/$domain
/opt/simp_le/venv/bin/simp_le \
-d "$domain" \
-f fullchain.pem -f key.pem \
--email "${!email_varname}" \
--server=https://acme-v01.api.letsencrypt.org/directory \
--default_root /usr/share/nginx/html/
simp_le_return=$?
if [[ $simp_le_return -eq 0 ]]; then
# Symlink to created certificate and key.
ln -sf ./$domain/fullchain.pem /etc/nginx/certs/$domain".crt"
ln -sf ./$domain/key.pem /etc/nginx/certs/$domain".key"
fi
# TODO: Regenerate nginx config if simp_le created a certificate and key
#if [ "$simp_le_return" -eq 0 ]; then nginx -s reload; fi
done
done
unset LETSENCRYPT_CONTAINERS
date
echo "Waiting $seconds_to_wait seconds"; sleep $seconds_to_wait
done