#!/bin/bash
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0

# Fichier contenant les enregistrements
FILE="/etc/dnsmasq.d/custom_hosts"

# Vérification de l'existence du fichier
if [[ ! -f "$FILE" ]]; then
    echo "Erreur: Le fichier $FILE n'existe pas."
    exit 1
fi

# Vérification des arguments
if [[ $# -ne 1 ]]; then
    echo "Usage: $0 <nom_machine|FQDN|adresse_IP>"
    exit 1
fi

SEARCH_TERM="$1"

# Détection du nom de domaine
if [[ -f /etc/resolv.conf ]]; then
    DOMAIN=$(awk '/^search / {print $2; exit} /^domain / {print $2; exit}' /etc/resolv.conf)
fi

# Alternative si resolv.conf n'existe pas ou est vide
if [[ -z "$DOMAIN" ]]; then
    DOMAIN=$(hostname --domain 2>/dev/null)  # Essayer avec hostname
    if [[ -z "$DOMAIN" ]]; then
        DOMAIN=$(nmcli -t -f IP4.DOMAIN dev show | head -n 1)  # Essayer avec nmcli
    fi
fi

# Vérifier qu'on a bien trouvé un domaine
if [[ -z "$DOMAIN" ]]; then
    echo "Erreur: Impossible de détecter le nom de domaine."
    exit 1
fi

# Si l'entrée ne contient pas un point, on ajoute le domaine détecté
if [[ ! "$SEARCH_TERM" =~ \. ]]; then
    SEARCH_TERM="$SEARCH_TERM.$DOMAIN"
fi

# Vérification si l'entrée est une adresse IP
if [[ "$SEARCH_TERM" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
    RESULTS=$(grep -E "/$SEARCH_TERM\$" "$FILE")
else
    if [[ ! "$SEARCH_TERM" =~ ^[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ ]]; then
        echo "Erreur: '$SEARCH_TERM' ne semble pas être un FQDN valide."
        exit 1
    fi
    RESULTS=$(grep -E "^address=/$SEARCH_TERM/" "$FILE")
fi

# Vérification et affichage des résultats
if [[ -n "$RESULTS" ]]; then
    echo "Résultats trouvés :"
    echo "$RESULTS"
else
    echo "Aucun résultat trouvé pour '$SEARCH_TERM'."
fi