From 0c92ceb0eaeeaa6e9f455ee836966e47f8bffa35 Mon Sep 17 00:00:00 2001 From: kiu Date: Tue, 24 Sep 2024 22:28:44 +0200 Subject: [PATCH] V1 --- Readme.md | 1 + ionos.py | 67 +++++++++++++++++++++++++++++++++++ ionosdel.py | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 168 insertions(+) create mode 100644 Readme.md create mode 100644 ionos.py create mode 100644 ionosdel.py diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..805b6c1 --- /dev/null +++ b/Readme.md @@ -0,0 +1 @@ +Ajouter ou supprimer des sous domaine / DNS avec l'API de Ionos. \ No newline at end of file diff --git a/ionos.py b/ionos.py new file mode 100644 index 0000000..bb9454f --- /dev/null +++ b/ionos.py @@ -0,0 +1,67 @@ +import requests + +# Fonction pour afficher le menu de sélection du domaine +def select_domain(): + options = { + "NOMSITEINTERNET1": "ID DU DOMAINE", + "NOMSITEINTERNET2": "ID DU DOMAINE", + "NOMSITEINTERNET3": "ID DU DOMAINE" + } + + print("Merci de faire votre choix :") + for i, domain in enumerate(options.keys(), start=1): + print(f"{i}. {domain}") + + while True: + choice = input("Entrez le numéro du domaine : ") + try: + choice = int(choice) + if 1 <= choice <= len(options): + domain = list(options.keys())[choice - 1] + domain_id = list(options.values())[choice - 1] + return domain, domain_id + else: + print("Choix invalide. Réessayez.") + except ValueError: + print("Choix invalide. Réessayez.") + +# Lire le nom de domaine à partir de l'entrée utilisateur +DOMAIN_NAME = input("Entrez le nom de domaine à utiliser : ") + +# Appeler la fonction pour afficher le menu de sélection du domaine +DOMAIN_SUFFIX, DOMAIN_ID = select_domain() + +# Remplacez la valeur suivante par votre clé API Ionos +API_KEY = "SECRET.API" + +# Endpoint de l'API pour créer un enregistrement de sous-domaine +API_ENDPOINT = f"https://api.hosting.ionos.com/dns/v1/zones/{DOMAIN_ID}/records" + +# Données du sous-domaine au format JSON +SUBDOMAIN_DATA = [ + { + "name": f"{DOMAIN_NAME}.{DOMAIN_SUFFIX}", + "type": "A", + "content": "1.1.1.1", # Adresse IP cible pour le sous-domaine + "ttl": 60, + "disabled": False + } +] + +# Utilisation de requests pour effectuer la requête POST avec les données du sous-domaine +headers = { + "X-API-Key": API_KEY, + "accept": "application/json", + "Content-Type": "application/json" +} + +response = requests.post(API_ENDPOINT, headers=headers, json=SUBDOMAIN_DATA) + +if response.status_code == 201: + created_subdomain = response.json()[0]['name'] + print(f"Le sous-domaine '{created_subdomain}' a été créé avec succès !") +else: + print("Une erreur s'est produite lors de la création du sous-domaine.") + print(f"Code d'erreur : {response.status_code}") + print("Message d'erreur :") + print(response.json()) diff --git a/ionosdel.py b/ionosdel.py new file mode 100644 index 0000000..a36e7b5 --- /dev/null +++ b/ionosdel.py @@ -0,0 +1,100 @@ +import requests + +# Remplacez cette clé API par la vôtre +API_KEY = "SECRET.API" + +# Fonction pour afficher le menu de sélection du domaine à supprimer +def select_domain(): + options = { + "NOMDOMAINE1": "ID", + "NOMDOMAINE2": "ID", + "NOMDOMAINE3": "ID" + } + + print("Merci de faire votre choix :") + for i, domain in enumerate(options.keys(), start=1): + print(f"{i}. {domain}") + + while True: + choice = input("Entrez le numéro du domaine à supprimer : ") + try: + choice = int(choice) + if 1 <= choice <= len(options): + domain = list(options.keys())[choice - 1] + domain_id = list(options.values())[choice - 1] + return domain, domain_id + else: + print("Choix invalide. Réessayez.") + except ValueError: + print("Choix invalide. Réessayez.") + +# Appeler la fonction pour afficher le menu de sélection du domaine à supprimer +DOMAIN_NAME, DOMAIN_ID = select_domain() + +# Fonction pour afficher la liste des enregistrements de sous-domaine +def lister_sous_domaines(): + url = f"https://api.hosting.ionos.com/dns/v1/zones/{DOMAIN_ID}" + headers = { + "X-API-Key": API_KEY, + "accept": "application/json" + } + response = requests.get(url, headers=headers) + + if response.status_code == 200: + data = response.json() + print("Liste des enregistrements de sous-domaine :") + for idx, record in enumerate(data["records"]): + print(f"{idx+1}. {record['name']} (ID: {record['id']})") + return data # Renvoyer les données pour être utilisées plus tard + else: + print("Une erreur s'est produite lors de la récupération des enregistrements de sous-domaine.") + print(f"Code d'erreur : {response.status_code}") + print(f"Message d'erreur : {response.text}") + return None # Renvoyer None en cas d'erreur + +# Fonction pour supprimer un sous-domaine en utilisant son ID +def supprimer_sous_domaine(sous_domaine_id): + url = f"https://api.hosting.ionos.com/dns/v1/zones/{DOMAIN_ID}/records/{sous_domaine_id}" + headers = { + "X-API-Key": API_KEY, + "accept": "*/*", + "Content-Type": "application/json" + } + response = requests.delete(url, headers=headers) + + if response.status_code == 200: + print("Le sous-domaine a été supprimé avec succès !") + else: + print("Une erreur s'est produite lors de la suppression du sous-domaine.") + print(f"Code d'erreur : {response.status_code}") + try: + message_erreur = response.json().get("message", "Erreur lors de l'obtention du message d'erreur.") + except ValueError: + message_erreur = "Erreur lors de l'obtention du message d'erreur." + print(f"Message d'erreur : {message_erreur}") + +# Appeler la fonction pour lister les enregistrements de sous-domaine et stocker les données +data = lister_sous_domaines() + +# Demander à l'utilisateur d'entrer le chiffre correspondant à l'ID du sous-domaine à supprimer +while True: + choix = input("Entrez le chiffre correspondant à l'ID du sous-domaine que vous souhaitez supprimer (ou appuyez sur Entrée pour ne rien supprimer) : ") + if choix.isdigit(): + choix = int(choix) + break + elif choix == "": + choix = None + break + else: + print("Veuillez entrer un chiffre valide.") + +# Si l'utilisateur a entré un chiffre, supprimer le sous-domaine correspondant +if choix is not None: + # Vérifier si le choix est un index valide dans la liste des enregistrements de sous-domaine + if 1 <= choix <= len(data["records"]): + sous_domaine_id = data["records"][choix - 1]["id"] + supprimer_sous_domaine(sous_domaine_id) + else: + print("L'index choisi ne correspond à aucun sous-domaine.") +else: + print("Aucun sous-domaine n'a été supprimé.")