e31bdeb59d
- inwx_common.py: Login mit Session-Cache, KP_PW-Option - inwx_list/add: Domain als Argument, gemeinsamer Helfer - inwx_domains(_owner).py: Domains alphabetisch, NS, Gruppen via citeq-TXT (DNS) - hosting.kdbx aus Tracking genommen und in .gitignore Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
66 lines
2.2 KiB
Python
66 lines
2.2 KiB
Python
#!/usr/bin/env python3
|
||
import sys
|
||
import argparse
|
||
|
||
from inwx_common import get_client, call_api
|
||
|
||
# --- KONFIGURATION ---
|
||
# Login/Session-Handling steckt in inwx_common.py.
|
||
|
||
|
||
def main():
|
||
# 1. Argument-Parser einrichten
|
||
parser = argparse.ArgumentParser(description="DNS-Record zu einer Domain hinzufügen.")
|
||
parser.add_argument("domain", help="Domain (z.B. ma151.de)")
|
||
parser.add_argument("type", help="Typ des Records (z.B. A, AAAA, CNAME, TXT)")
|
||
parser.add_argument("name", help="Name/Subdomain (z.B. srv1)")
|
||
parser.add_argument("content", help="Wert des Records (z.B. die IP-Adresse)")
|
||
parser.add_argument("--ttl", type=int, default=3600, help="TTL in Sekunden (Standard: 3600)")
|
||
|
||
args = parser.parse_args()
|
||
|
||
# 2. Client holen (nutzt ggf. die zwischengespeicherte Session)
|
||
api = get_client()
|
||
|
||
# 3. Prüfen, ob der Record existiert
|
||
full_name = f"{args.name}.{args.domain}"
|
||
print(f"🔍 Prüfe {full_name} ({args.type} -> {args.content})...")
|
||
|
||
info_res = call_api(api, 'nameserver.info', {'domain': args.domain})
|
||
if info_res['code'] != 1000:
|
||
print(f"❌ Fehler bei Domain-Info: {info_res['msg']}")
|
||
sys.exit(1)
|
||
|
||
records = info_res['resData'].get('record', [])
|
||
already_exists = False
|
||
for rec in records:
|
||
if (rec['name'].rstrip('.') == full_name and
|
||
rec['type'].upper() == args.type.upper() and
|
||
rec['content'] == args.content):
|
||
already_exists = True
|
||
break
|
||
|
||
if already_exists:
|
||
print(f"ℹ️ Record existiert bereits. Keine Aktion erforderlich.")
|
||
else:
|
||
# 4. Record erstellen
|
||
print(f"🚀 Erstelle neuen Record...")
|
||
create_res = call_api(api, 'nameserver.createRecord', {
|
||
'domain': args.domain,
|
||
'name': args.name,
|
||
'type': args.type.upper(),
|
||
'content': args.content,
|
||
'ttl': args.ttl
|
||
})
|
||
|
||
if create_res['code'] == 1000:
|
||
print(f"✅ Erfolg! Record ID: {create_res['resData']['id']}")
|
||
else:
|
||
print(f"❌ Fehler: {create_res['msg']} (Code: {create_res['code']})")
|
||
|
||
# Kein logout() -> die Session bleibt gültig und kann wiederverwendet werden.
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main()
|