from inwx_config import api_call # Importiere die Basis-API-Funktion def get_dns_info(domain): """Ruft die DNS-Einträge für eine Domain ab und gibt sie im MC-Stil aus.""" print(f"\n⏳ Rufe DNS-Einträge für {domain} ab...") result = api_call("nameserver.info", {"domain": domain}) if result and result.get('code') == 1000 and 'record' in result.get('resData', {}): print(f"✅ DNS-Einträge für **{domain}**:") records = result['resData']['record'] # Tabelle im MC-Stil ausgeben print("-" * 100) print(f"| {'ID':<10} | {'Name/Host':<15} | {'Typ':<5} | {'TTL':<5} | {'Inhalt/Content':<50} |") print("-" * 100) for record in records: # Begrenze Name und Content für eine saubere Ausgabe name_short = record.get('name', '')[:14].ljust(15) content_short = record.get('content', '')[:49].ljust(50) print(f"| {str(record['id']):<10} | {name_short} | {record['type']:<5} | {str(record['ttl']):<5} | {content_short} |") print("-" * 100) return True elif result and 'msg' in result: print(f"❌ Fehler: {result.get('msg', 'Unbekannter Fehler.')}") else: print("❌ Fehler beim Abrufen der DNS-Einträge (API-Antwort unerwartet).") return False def add_record(): """Fügt einen neuen DNS-Eintrag hinzu (nameserver.createRecord).""" print("\n--- NEUEN DNS-EINTRAG HINZUFÜGEN ---") domain = input("Domain (z.B. bouquet24.de): ").strip() name = input("Host/Subdomain (leer lassen für die Hauptdomain '@'): ").strip() record_type = input("Typ (A, CNAME, TXT, MX, etc.): ").strip().upper() content = input("Inhalt/Content (IP-Adresse, Ziel, Text): ").strip() # Optional: TTL mit Standardwert 3600 try: ttl = int(input("TTL (Sekunden, Standard: 3600): ") or 3600) except ValueError: print("Ungültige TTL. Verwende Standardwert 3600.") ttl = 3600 params = { "domain": domain, "name": name, "type": record_type, "content": content, "ttl": ttl } print(f"\n⏳ Sende Anfrage zum Hinzufügen von {name}.{domain}...") result = api_call("nameserver.createRecord", params) if result and result.get('code') == 1000: new_id = result.get('resData', {}).get('id', 'N/A') print(f"✅ Eintrag erfolgreich hinzugefügt! ID: **{new_id}**") else: print(f"❌ Fehler beim Hinzufügen: {result.get('msg', 'Unbekannter Fehler.')}") def update_record(): """Ändert einen bestehenden DNS-Eintrag (nameserver.updateRecord).""" print("\n--- BESTEHENDEN DNS-EINTRAG ÄNDERN ---") record_id = input("ID des zu ändernden Eintrags (siehe Option 1): ").strip() if not record_id.isdigit(): print("❌ Ungültige ID.") return # Frage nach den Werten, die geändert werden sollen new_content = input("Neuer Inhalt/Content (leer lassen, um nicht zu ändern): ").strip() new_ttl = input("Neue TTL (Sekunden, leer lassen, um nicht zu ändern): ").strip() params = {"id": record_id} if new_content: params["content"] = new_content if new_ttl: try: params["ttl"] = int(new_ttl) except ValueError: print("❌ Ungültige TTL. Abbruch der Änderung.") return if len(params) <= 1: print("Keine Änderungen angegeben. Vorgang abgebrochen.") return print(f"\n⏳ Sende Anfrage zur Änderung der ID **{record_id}**...") result = api_call("nameserver.updateRecord", params) if result and result.get('code') == 1000: print(f"✅ Eintrag ID **{record_id}** erfolgreich aktualisiert.") else: print(f"❌ Fehler beim Ändern: {result.get('msg', 'Unbekannter Fehler.')}") def delete_record(): """Löscht einen DNS-Eintrag (nameserver.deleteRecord).""" print("\n--- DNS-EINTRAG LÖSCHEN ---") record_id = input("ID des zu löschenden Eintrags (siehe Option 1): ").strip() if not record_id.isdigit(): print("❌ Ungültige ID.") return confirm = input(f"Soll Eintrag ID **{record_id}** wirklich gelöscht werden? (J/N): ").strip().upper() if confirm != 'J': print("Löschvorgang abgebrochen.") return params = {"id": record_id} print(f"\n⏳ Sende Anfrage zum Löschen der ID **{record_id}**...") result = api_call("nameserver.deleteRecord", params) if result and result.get('code') == 1000: print(f"✅ Eintrag ID **{record_id}** erfolgreich gelöscht.") else: print(f"❌ Fehler beim Löschen: {result.get('msg', 'Unbekannter Fehler.')}")