V1
This commit is contained in:
		
						commit
						0c92ceb0ea
					
				
							
								
								
									
										1
									
								
								Readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								Readme.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					Ajouter ou supprimer des sous domaine / DNS avec l'API de Ionos. 
 | 
				
			||||||
							
								
								
									
										67
									
								
								ionos.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								ionos.py
									
									
									
									
									
										Normal file
									
								
							@ -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())
 | 
				
			||||||
							
								
								
									
										100
									
								
								ionosdel.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								ionosdel.py
									
									
									
									
									
										Normal file
									
								
							@ -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é.")
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user