Gestion DNS Namecheap
UTILITY SKILL — gère les enregistrements DNS via l'API Namecheap. À UTILISER POUR : « ajouter un enregistrement DNS », « mettre à jour un enregistrement A », « gérer les domaines Namecheap », « configurer un CNAME », « ajouter un enregistrement MX », « ajouter un enregistrement TXT », « lister mes domaines », « afficher les enregistrements DNS », « configuration namecheap », « configurer l'API namecheap », « quel est mon adresse IP publique » À NE PAS UTILISER POUR : enregistrement/achat de domaine, gestion de certificats SSL, configuration d'hébergement, fournisseurs DNS autres que Namecheap
Workflow
Configuration initiale
Avant d'exécuter des commandes API, vérifiez que les identifiants sont configurés :
- Vérifier la configuration existante — chercher
~/.namecheap-api - Si non configuré, guider l'utilisateur dans la configuration :
a. Afficher l'IP publique — exécuter
python3 namecheap.py public-ippour afficher l'IP publique de l'utilisateur b. Instruire la mise en liste blanche IP — dire à l'utilisateur d'aller sur https://ap.www.namecheap.com/settings/tools/apiaccess/, activer l'API (sélectionner ON) et ajouter l'IP affichée à la liste blanche c. Faire exécuter la configuration par l'utilisateur lui-même — demander à l'utilisateur d'exécuterpython3 namecheap.py setupdirectement dans son propre terminal. Le script demande le nom d'utilisateur et lit la clé API avec une invite masquée (getpass), écrit~/.namecheap-apiavecchmod 600et valide la connexion. Ne jamais demander à l'utilisateur de coller sa clé API dans le chat, et ne jamais enregistrer, afficher ou exposer la valeur de la clé API. Si vous ne pouvez pas exécuter un terminal interactif pour l'utilisateur, lui demander d'exécutersetupeux-mêmes, ou d'exporterNAMECHEAP_API_USERetNAMECHEAP_API_KEYcomme variables d'environnement dans leur propre shell — plutôt que de collecter le secret viaask_user. d. Confirmer — une fois que l'utilisateur signale que la configuration a réussi, procéder aux opérations DNS.
Opérations DNS
Utiliser le script namecheap.py (fourni dans le répertoire de cette skill) pour toutes les interactions API. Il nécessite uniquement Python 3 (bibliothèque standard uniquement — pas de pip install requis) et fonctionne de la même manière sur macOS, Linux et Windows :
# Afficher l'IP publique (pour la configuration)
python3 namecheap.py public-ip
# Exécuter le flux de configuration
python3 namecheap.py setup
# Lister les domaines
python3 namecheap.py domains.getList
# Obtenir les serveurs de noms pour un domaine (affiche si utilisation DNS Namecheap ou personnalisé)
python3 namecheap.py domains.dns.getList --domain example.com
# Obtenir les enregistrements DNS pour un domaine
python3 namecheap.py domains.dns.getHosts --domain example.com
# Ajouter un seul enregistrement (préserve les enregistrements existants)
python3 namecheap.py dns.addHost --domain example.com --type A --name www --address 1.2.3.4 --ttl 1800
# Supprimer un seul enregistrement
python3 namecheap.py dns.removeHost --domain example.com --type A --name www --address 1.2.3.4
# Remplacer tous les enregistrements à partir d'un fichier JSON
python3 namecheap.py domains.dns.setHosts --domain example.com --hosts records.json
# Basculer vers le DNS par défaut Namecheap
python3 namecheap.py domains.dns.setDefault --domain example.com
# Basculer vers des serveurs de noms personnalisés
python3 namecheap.py domains.dns.setCustom --domain example.com --nameservers ns1.cloudflare.com,ns2.cloudflare.com
# Obtenir les règles de redirection d'e-mail
python3 namecheap.py domains.dns.getEmailForwarding --domain example.com
# Configurer la redirection d'e-mail (une seule règle)
python3 namecheap.py domains.dns.setEmailForwarding --domain example.com --mailbox info --forward-to user@gmail.com
# Configurer la redirection d'e-mail (à partir d'un fichier JSON)
python3 namecheap.py domains.dns.setEmailForwarding --domain example.com --forwards forwards.json
# Créer un serveur de noms enfant (glue record)
python3 namecheap.py domains.ns.create --domain example.com --nameserver ns1.example.com --ip 1.2.3.4
# Supprimer un serveur de noms enfant
python3 namecheap.py domains.ns.delete --domain example.com --nameserver ns1.example.com
# Obtenir les informations du serveur de noms
python3 namecheap.py domains.ns.getInfo --domain example.com --nameserver ns1.example.com
# Mettre à jour l'IP du serveur de noms
python3 namecheap.py domains.ns.update --domain example.com --nameserver ns1.example.com --old-ip 1.2.3.4 --ip 5.6.7.8
Formats de fichier JSON
domains.dns.setHosts --hosts records.json attend un tableau d'objets avec des noms de champ API Namecheap :
[
{ "HostName": "@", "RecordType": "A", "Address": "1.2.3.4", "TTL": 1800 },
{ "HostName": "www", "RecordType": "CNAME", "Address": "@", "TTL": 1800 },
{ "HostName": "@", "RecordType": "MX", "Address": "mail.example.com.", "TTL": 1800, "MXPref": 10 }
]
domains.dns.setEmailForwarding --forwards forwards.json attend un tableau de règles de boîte aux lettres :
[
{ "MailBox": "info", "ForwardTo": "team@example.net" },
{ "MailBox": "sales", "ForwardTo": "owner@example.net" }
]
Comportement
- Toujours vérifier les identifiants en premier. Avant toute opération API, vérifier que
~/.namecheap-apiexiste et est lisible. Si non, exécuter le flux de configuration. - Afficher les enregistrements actuels avant de modifier. Avant d'ajouter ou de supprimer des enregistrements, toujours récupérer et afficher les enregistrements DNS actuels pour que l'utilisateur puisse confirmer le changement.
- Utiliser
ask_userpour confirmer les changements destructeurs. Avant de supprimer des enregistrements ou de remplacer tous les enregistrements avecsetHosts, confirmer avec l'utilisateur. - L'API
setHostsde Namecheap remplace TOUS les enregistrements. Ne jamais appelerdomains.dns.setHostsdirectement à moins d'avoir d'abord récupéré tous les enregistrements existants. Utiliserdns.addHostetdns.removeHostpour des opérations sûres sur un seul enregistrement — ils gèrent en interne le cycle récupération-modification-écriture. - Expliquer la TTL en termes humains. Quand l'utilisateur demande des informations sur la TTL, expliquer que 1800 = 30 minutes, 3600 = 1 heure, etc.
- Gérer les TLD multi-parties. Les domaines comme
example.co.ukont SLD=example et TLD=co.uk. Le script reconnaît une liste intégrée de suffixes de second niveau courants (par exempleco.uk,com.au,co.jp,com.br). Cette liste est au mieux informelle et n'est pas une base de données de suffixes publics complète — si un domaine avec un suffixe multi-partie non enregistré retourne une erreur2019166(« Domaine non trouvé »), le fractionnement SLD/TLD était probablement incorrect. Dans ce cas, confirmer le domaine enregistré avec l'utilisateur et signaler la limitation.
Stockage des identifiants
Les identifiants sont stockés dans ~/.namecheap-api :
NAMECHEAP_API_USER="username"
NAMECHEAP_API_KEY="api-key-here"
Ce fichier doit avoir les permissions 600 (lecture/écriture propriétaire uniquement). Alternativement, le script lit les identifiants à partir des variables d'environnement NAMECHEAP_API_USER et NAMECHEAP_API_KEY, qui prennent la priorité sur le fichier quand les deux sont définis.
Types d'enregistrement pris en charge
A, AAAA, CNAME, MX, MXE, TXT, URL, URL301, FRAME
Références
Voir references/namecheap-api.md pour la documentation complète de l'API incluant les formats de demande/réponse.