#!/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étecter le nom de domaine depuis /etc/resolv.conf
DOMAIN=$(awk '/^search / {print $2; exit} /^domain / {print $2; exit}' /etc/resolv.conf)

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

# Si l'entrée ne contient pas un point (ex: "www" au lieu de "www.domaine.local"), 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
    # Recherche stricte de l'adresse IP en tenant compte du format 'address=/FQDN/IP'
    RESULTS=$(grep -E "/$SEARCH_TERM\$" "$FILE")
else
    # Vérification que le terme recherché est bien un FQDN valide
    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

    # Recherche stricte du FQDN en tenant compte du format 'address=/FQDN/IP'
    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
