#!/bin/bash

# Wenn ein Parameter übergeben wurde, wird diesen als Domain verwendet
# Beim Aufruf ./dnstest testemich
#wird die Domain testemich verwendet

#Wenn keine Domain als Parameter übergeben wurde, wied die DOMAIN aus ./env verwendet


dnstest(){
IPV4=false
IPV6=false

if [ $# -gt 0 ]; then
    DOMAIN="$1"
else

if [ -f ./.env ]; then
    #export $(cat ./.env | xargs)
    export $(cat .env | sed 's/#.*//g' | xargs)
else
  echo "Keine .env Datei gefunden"
  exit 1
fi

# Setze diese Werte oder lade sie aus der .env-Datei
echo "Domain aus ./env Datei:  $DOMAIN"


fi
    CURRENT_IPV4=$(curl -4 -s https://ipv4.icanhazip.com || curl -4 -s https://api.ipify.org)
    CURRENT_IPV6=$(curl -6 -s https://ipv6.icanhazip.com || curl -6 -s https://api6.ipify.org)
    echo "IPV4: $CURRENT_IPV4"
    echo "IPV6: $CURRENT_IPV6"

if  [ -n "$DOMAIN" ];then 
     DNS_IPV4=$(dig +short @"1.1.1.1" A "$DOMAIN" | head -n 1)
    DNS_IPV6=$(dig +short @"1.1.1.1" AAAA "$DOMAIN" | head -n 1)

    DNS_IPV4_EIGEN=$(dig +short  A "$DOMAIN" | head -n 1)
    DNS_IPV6_EIGEN=$(dig +short  AAAA "$DOMAIN" | head -n 1)

    echo ""
    echo "Domain = $DOMAIN"
    echo "$DOMAIN IPV4 Google-DNS: $DNS_IPV4"
    echo "$DOMAIN IPV6 Google-DNS: $DNS_IPV6"

    echo "$DOMAIN IPV4 Eigene-DNS: $DNS_IPV4_EIGEN"
    echo "$DOMAIN IPV6 eigene-DNS: $DNS_IPV6_EIGEN"

 # Optional: Vergleich anzeigen
    echo ""
    echo "Vergleich Lokale-IP und Domain-IP Google-DNS:"
    if [ "$CURRENT_IPV4" = "$DNS_IPV4" ]; then
        echo "IPV4: ✅ Stimmt überein"
        IPV4_GOOGLE="true"
    else
        echo "IPV4: ❌ Unterschiedlich"
        IPV4_GOOGLE="false"
    fi
    
    if [ "$CURRENT_IPV6" = "$DNS_IPV6" ]; then
        echo "IPV6: ✅ Stimmt überein"
        IPV6_GOOGLE="true"
    else
        echo "IPV6: ❌ Unterschiedlich"
        IPV6_GOOGLE="false"
    fi
fi

# Optional: Vergleich anzeigen DS-Server
    echo ""
    echo "Vergleich: Lokale IP und Domain-IP eigener DNS"
    echo "Wenn sie nicht gleich sind, dann hat der eigene DNS-Server die Änderung noch nicht übernommen"
    echo "Das kan zu Problemen kommen. Eventuell anderen DNSS-Server im Router eintragen"

    if [ "$CURRENT_IPV4" = "$DNS_IPV4_EIGEN" ]; then
        echo "IPV4: ✅ Stimmt überein"
        IPV4="true"
    else
        echo "IPV4: ❌ Unterschiedlich"
        IPV4="false"
    fi

    if [ "$CURRENT_IPV6" = "$DNS_IPV6_EIGEN" ]; then
        echo "IPV6: ✅ Stimmt überein"
        IPV6="true"
    else
        echo "IPV6: ❌ Unterschiedlich"
         IPV6="false"
    fi


echo ""
echo "Ergebnis:"


if [ "$IPV4" = "true" ] || [ "$IPV6" = "true" ]; then
    echo "Erfolg - mindestens eine IP-Version funktioniert"
    return 0
else
  if [ "$IPV4_GOOGLE" = true ] || [ "$IPV6_GOOGLE" = true ]; then
    echo "Google-DNS-Server lösen richtig den Namen auf"
    echo "Der selbst verwendete DNS-Server leider nicht"
    echo "Empfehlung: Im router anderen DNS-Server eintragen"
    echo "Hier wird die 1.1.1.1 verwendet"
    fi
    echo "Zertifikat erzeugen so nicht möglich"
    echo "Fehler ❌ - keine IP-Version funktioniert" >&2
    return 1
fi
}

# Überprüfe, ob das Skript direkt ausgeführt wird.
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
    dnstest "$@"
fi
