#! /bin/sh ################################################################################################################# # DNS challenge Script für ipv64.net # Das Script soll genutzt werden um die DNS-01 Challenge per EXEC Methode über # den "Let’s Encrypt client and ACME library written in Go" (LEGO) und die API von ipv64.net # LEGO Dokumentation: https://go-acme.github.io/lego/dns/exec/ # API Dokumentation: https://ipv64.net/dyndns_updater_api.php # Mit dem Nginx Proxy Manager ist das Skript nicht kompatibel, da der NPM die EXEC Methode nicht unterstützt. # Daher wurde das Skript für die Nutzung mit Traefik umgesetzt. # Traefik Dokumentation: https://doc.traefik.io/traefik/https/acme/#providers # Getestet wurde es mit Traefik 2.9 aber auch 1.7 sollte es laut Dokumentation unterstützen: # https://doc.traefik.io/traefik/v1.7/configuration/acme/#provider ################################################################################################################# # Alle Konfigurationsparameter werden aus der config.env Datei gelesen ############################################# configfile="config.env" if [ ! -r "$configfile" ]; then echo "$configfile does not exist or isn't readable" exit 1 fi apitoken=$(grep ^"apitoken=" "$configfile" | sed -e "s/apitoken=//") if [ -z "$apitoken" ]; then echo "apitoken is not defined in $configfile" exit 1 fi set -e case "$1" in "present") echo "Present" full_domain=$2 domain=$(echo $full_domain | rev | cut -d . -f -3 | rev) praefix=${full_domain%"$domain"} praefix=${praefix%"."} auth_h="Authorization: Bearer $apitoken" domain_pl="add_record=$domain" praefix_pl="praefix=$praefix" type_pl="type=TXT" content_pl="content=$3" curl -s -X POST -d "$domain_pl" -d "$praefix_pl" -d "$type_pl" -d "$content_pl" -H "$auth_h" https://ipv64.net/api ;; "cleanup") full_domain=$2 domain=$(echo $full_domain | rev | cut -d . -f -3 | rev) praefix=${full_domain%"$domain"} praefix=${praefix%"."} auth_h="Authorization: Bearer $apitoken" domain_pl="del_record=$domain" praefix_pl="praefix=$praefix" type_pl="type=TXT" content_pl="content=$3" curl -s -X DELETE -d "$domain_pl" -d "$praefix_pl" -d "$type_pl" -d "$content_pl" -H "$auth_h" https://ipv64.net/api ;; *) echo "OOPS" ;; esac