diff --git a/README.md b/README.md index 5e88c5b..803e4ed 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,14 @@ Das Skript `cloudpanel-autorenew-letsencrypt-certs.v1.sh` automatisiert die Erneuerung und Installation von Let's Encrypt-Zertifikaten für alle Domains und Subdomains, die auf einem CloudPanel-Server konfiguriert sind. Es durchsucht die Nginx-Konfigurationsdateien im Verzeichnis `/etc/nginx/sites-enabled/` nach Domain-Namen, extrahiert diese und führt für jede gefundene Domain den Befehl `clpctl lets-encrypt:install:certificate` aus, um das entsprechende SSL-Zertifikat zu erneuern oder zu installieren. Das Skript protokolliert alle seine Aktivitäten in eine Log-Datei, die im Verzeichnis `/var/log/script-logs` gespeichert wird. +Domains können jetzt ausgeschlossen werden. + +Dazu einfach die Variable `exclude_domains` pflegen. + +Domains werden mit Leerzeichen getrennt: `exclude_domains="example.com other.example.com"` + +Wird diese Variable nicht gepflegt, werden alle Domains erneuert. + ## Ausführung: 1. **Klonen des Repositorys** @@ -26,6 +34,10 @@ Die Ausgabe sollte folgendermaßen aussehen: ![autorenew](https://git.techniverse.net/scriptos/cloudpanel-autorenew-letsencrypt-certs/raw/branch/main/assets/autorenew1.png) +Wenn eine Domain übersprungen wird, sieht die Ausgabe folgendermaßen aus: + +`Überspringe example.domain.com, da es ausgeschlossen ist.` + ## Cronjob: Der Cronjob kann wiefolgt konfiguriert werden. diff --git a/cloudpanel-autorenew-letsencrypt-certs.v1.sh b/cloudpanel-autorenew-letsencrypt-certs.v1.sh index 6bef94b..5b9032c 100644 --- a/cloudpanel-autorenew-letsencrypt-certs.v1.sh +++ b/cloudpanel-autorenew-letsencrypt-certs.v1.sh @@ -5,22 +5,26 @@ # Autor: Patrick Asmus # Web: https://www.techniverse.net # Git-Reposit.: https://git.techniverse.net/scriptos/cloudpanel-autorenew-letsencrypt-certs.git -# Version: 1.2 -# Datum: 07.05.2024 -# Modifikation: Domain geändert, Doku erweitert und Email Settings angepasst +# Version: 1.3 +# Datum: 20.05.2024 +# Modifikation: Domains können nun von der Zertifikatenerneuerung ausgeschlossen werden ##################################################### -# Variablen +# Variables hostname=$(hostname) config_path="/etc/nginx/sites-enabled/" log_dir="/var/log/script-logs" log_file="$log_dir/cloudpanel-letsencrypt-renew.log" +# Email Settings email_from="mail@domain.com" email_from_name="$hostname | CloudPanel Server" email_to="mail@domain.com" email_subject="Letsencrypt Zertifikate wurden auf $HOSTNAME erneuert" +# Exclude Domains +exclude_domains="example.com other.example.com" + # Leite die Ausgaben in das Log-File um mkdir -p $log_dir exec > >(tee -i "$log_file") @@ -29,8 +33,12 @@ exec 2>&1 # Funktion zur Erneuerung/Erstellung von Zertifikaten renew_certificate() { local domain=$1 - echo "Erneuere/Erstelle Zertifikat für: $domain" - bash /usr/bin/clpctl lets-encrypt:install:certificate --domainName=$domain + if [[ ! $exclude_domains =~ (^|[[:space:]])$domain($|[[:space:]]) ]]; then + echo "Erneuere/Erstelle Zertifikat für: $domain" + bash /usr/bin/clpctl lets-encrypt:install:certificate --domainName=$domain + else + echo "Überspringe $domain, da es ausgeschlossen ist." + fi } # Extrahiere Domains aus den Konfigurationsdateien und führe Zertifikatserneuerung aus