namecheap

Par github · awesome-copilot

Gérez les enregistrements DNS pour les domaines enregistrés sur Namecheap via leur API. Listez les domaines, consultez/ajoutez/modifiez/supprimez des entrées DNS (A, AAAA, CNAME, MX, TXT, etc.), et guidez les utilisateurs dans la configuration de l'API, notamment la détection de l'IP publique et la configuration des identifiants. À utiliser lorsque l'utilisateur mentionne Namecheap, les enregistrements DNS, la gestion de domaines, ou souhaite ajouter/modifier/supprimer des enregistrements A, CNAME, MX ou TXT pour ses domaines.

npx skills add https://github.com/github/awesome-copilot --skill namecheap

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 :

  1. Vérifier la configuration existante — chercher ~/.namecheap-api
  2. Si non configuré, guider l'utilisateur dans la configuration : a. Afficher l'IP publique — exécuter python3 namecheap.py public-ip pour 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écuter python3 namecheap.py setup directement dans son propre terminal. Le script demande le nom d'utilisateur et lit la clé API avec une invite masquée (getpass), écrit ~/.namecheap-api avec chmod 600 et 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écuter setup eux-mêmes, ou d'exporter NAMECHEAP_API_USER et NAMECHEAP_API_KEY comme variables d'environnement dans leur propre shell — plutôt que de collecter le secret via ask_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-api existe 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_user pour confirmer les changements destructeurs. Avant de supprimer des enregistrements ou de remplacer tous les enregistrements avec setHosts, confirmer avec l'utilisateur.
  • L'API setHosts de Namecheap remplace TOUS les enregistrements. Ne jamais appeler domains.dns.setHosts directement à moins d'avoir d'abord récupéré tous les enregistrements existants. Utiliser dns.addHost et dns.removeHost pour 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.uk ont SLD=example et TLD=co.uk. Le script reconnaît une liste intégrée de suffixes de second niveau courants (par exemple co.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 erreur 2019166 (« 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.

Skills similaires