123 lines
4.6 KiB
Python
123 lines
4.6 KiB
Python
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": int(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": int(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.')}")
|
|
|