#!/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