← Retour
#!/bin/bash
# ===========================================
# Ajoute un wildcard DNS
# Usage: ./add-wildcard.sh <prefix> [ip]
# Exemple: ./add-wildcard.sh 33802
# ===========================================
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/../lib/config.sh"
source "$SCRIPT_DIR/../lib/colors.sh"
source "$SCRIPT_DIR/../lib/utils.sh"
if [ -z "$1" ]; then
echo "Usage: $0 <prefix> [ip]"
echo ""
echo "Arguments:"
echo " prefix Préfixe du sous-domaine (ex: 33802)"
echo " ip IP cible (défaut: $PUBLIC_IP)"
echo ""
echo "Exemple:"
echo " $0 33802"
echo " → Crée *.33802.$O2SWITCH_DOMAIN -> $PUBLIC_IP"
echo " → Crée 33802.$O2SWITCH_DOMAIN -> $PUBLIC_IP"
exit 1
fi
PREFIX="$1"
TARGET_IP="${2:-$PUBLIC_IP}"
TTL="14400"
print_header "Ajout Wildcard DNS"
log_info "Préfixe: $PREFIX"
log_info "IP cible: $TARGET_IP"
log_info "Domaines à créer:"
echo " - *.$PREFIX.$O2SWITCH_DOMAIN"
echo " - $PREFIX.$O2SWITCH_DOMAIN"
echo ""
# Vérifier si le wildcard existe déjà
log_step "Vérification des enregistrements existants..."
EXISTING=$(curl -s -u "$O2SWITCH_USERNAME:$O2SWITCH_PASSWORD" \
"$O2SWITCH_API_URL/json-api/cpanel?cpanel_jsonapi_apiversion=2&cpanel_jsonapi_module=ZoneEdit&cpanel_jsonapi_func=fetchzone&domain=$O2SWITCH_DOMAIN" | \
jq -r ".cpanelresult.data[0].record[] | select(.name == \"*.$PREFIX.$O2SWITCH_DOMAIN.\") | .name" 2>/dev/null)
if [ -n "$EXISTING" ]; then
log_warn "Le wildcard *.$PREFIX.$O2SWITCH_DOMAIN existe déjà!"
echo ""
if ! confirm "Voulez-vous continuer et potentiellement créer un doublon ?"; then
log_info "Annulé"
exit 0
fi
fi
# Créer l'enregistrement wildcard
log_step "Création de *.$PREFIX.$O2SWITCH_DOMAIN..."
RESULT1=$(curl -s -u "$O2SWITCH_USERNAME:$O2SWITCH_PASSWORD" \
"$O2SWITCH_API_URL/json-api/cpanel?cpanel_jsonapi_apiversion=2&cpanel_jsonapi_module=ZoneEdit&cpanel_jsonapi_func=add_zone_record&domain=$O2SWITCH_DOMAIN&name=*.$PREFIX&type=A&address=$TARGET_IP&ttl=$TTL")
if echo "$RESULT1" | grep -q '"status":1'; then
log_success "*.$PREFIX.$O2SWITCH_DOMAIN -> $TARGET_IP"
else
log_error "Échec création wildcard"
echo "$RESULT1" | jq '.cpanelresult.data[0].statusmsg' 2>/dev/null
fi
# Créer l'enregistrement de base (sans wildcard)
log_step "Création de $PREFIX.$O2SWITCH_DOMAIN..."
RESULT2=$(curl -s -u "$O2SWITCH_USERNAME:$O2SWITCH_PASSWORD" \
"$O2SWITCH_API_URL/json-api/cpanel?cpanel_jsonapi_apiversion=2&cpanel_jsonapi_module=ZoneEdit&cpanel_jsonapi_func=add_zone_record&domain=$O2SWITCH_DOMAIN&name=$PREFIX&type=A&address=$TARGET_IP&ttl=$TTL")
if echo "$RESULT2" | grep -q '"status":1'; then
log_success "$PREFIX.$O2SWITCH_DOMAIN -> $TARGET_IP"
else
log_error "Échec création enregistrement de base"
echo "$RESULT2" | jq '.cpanelresult.data[0].statusmsg' 2>/dev/null
fi
echo ""
print_separator
log_info "Wildcard créé avec succès!"
log_info "Les sous-domaines *.${PREFIX}.${O2SWITCH_DOMAIN} pointent maintenant vers ${TARGET_IP}"
echo ""
log_warn "Note: La propagation DNS peut prendre quelques minutes"