#!/bin/bash # Funktion zum Generieren zufälliger Passwörter generate_password() { local length=$1 # Verwende /dev/urandom für bessere Zufälligkeit, tr für die Auswahl der Zeichen # Wir nutzen Buchstaben und Zahlen, um Probleme mit Sonderzeichen zu vermeiden cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c $length } # Funktion zum Generieren eines bcrypt Salt für PowerDNS Admin generate_salt() { # Prüfen, ob Python und bcrypt installiert sind if command -v python3 >/dev/null 2>&1 && python3 -c "import bcrypt" >/dev/null 2>&1; then python3 -c 'import bcrypt; print(bcrypt.gensalt().decode("utf-8"));' else echo "WARNUNG: Python3 oder bcrypt nicht gefunden. Verwende Standard-Salt." echo '$2b$12$xZKJJFAMZ41EFJptSMbZv.' fi } # Zielverzeichnis für die .env-Datei ENV_FILE=".env" # Generiere Passwörter (12 Zeichen) PDNS_DB_PASSWORD=$(generate_password 12) PDNS_API_KEY=$(generate_password 16) PDNS_WEBSERVER_PASSWORD=$(generate_password 12) PDNS_ADMIN_DB_PASSWORD=$(generate_password 12) # Generiere Salt für PowerDNS Admin PDNS_ADMIN_SALT=$(generate_salt) # Erstelle oder überschreibe die .env-Datei cat > $ENV_FILE << EOF # PowerDNS Server Konfiguration PDNS_PORT=53 PDNS_DB_NAME=powerdns PDNS_DB_PASSWORD=${PDNS_DB_PASSWORD} PDNS_API_KEY=${PDNS_API_KEY} PDNS_WEBSERVER_PORT=8081 PDNS_WEBSERVER_PASSWORD=${PDNS_WEBSERVER_PASSWORD} PDNS_DEFAULT_TTL=1500 # PowerDNS Admin Konfiguration PDNS_ADMIN_PORT=8080 PDNS_ADMIN_DB_NAME=powerdnsadmin PDNS_ADMIN_DB_PASSWORD=${PDNS_ADMIN_DB_PASSWORD} PDNS_ADMIN_SALT=${PDNS_ADMIN_SALT} PDNS_VERSION="4.9" EOF # Ausgabe mit generierten Werten echo "Die .env-Datei wurde mit folgenden zufälligen Passwörtern erstellt:" echo "PDNS_DB_PASSWORD: $PDNS_DB_PASSWORD" echo "PDNS_API_KEY: $PDNS_API_KEY" echo "PDNS_WEBSERVER_PASSWORD: $PDNS_WEBSERVER_PASSWORD" echo "PDNS_ADMIN_DB_PASSWORD: $PDNS_ADMIN_DB_PASSWORD" echo "PDNS_ADMIN_SALT: $PDNS_ADMIN_SALT" echo "PDNS_VERSION":"4.9" echo "" echo "Die Datei wurde als $ENV_FILE gespeichert. Bitte bewahren Sie diese Passwörter sicher auf!"