API DNS Update  [GELÖST]

Haben Sie einen Bug entdeckt? Teilen Sie es uns mit.
Post Reply
lestart
Posts: 25
Joined: Thu 14. Sep 2023, 09:27

API DNS Update

Post by lestart »

Moin moin,

Code: Select all

Server Daten:
Prozessor                     : AMD EPYC 9634 84-Core Processor (amd64)
CPU-Kerne                     : 12 @ 2,25 GHz
System-Virtualisierung        : KVM
Serverzeit                    : 13. April 2024 um 15:04:15
Betriebszeit                  : Tage 1 / Stunden 6 / Minuten 14

Server-Auslastung
CPU-Auslastung                : 9,17% (1,10 / 1,10 / 1,05)
Prozessanzahl                 : 190
E-Mails in Warteschlange      : 0
Speicherplatz                 : Frei: 466,33 GiB     Belegt: 499,46 GiB     Gesamt: 1006,81 GiB
Arbeitsspeicher               : Frei:  23,93 GiB     Belegt:   7,42 GiB     Gesamt:  31,34 GiB
Swap-Speicher                 : Frei:        0 B     Belegt:        0 B     Gesamt:        0 B

Anwendungen
Betriebssystem                : Debian 12.5 (64-bit)
KeyHelp                       : 24.0 (Build 3220)
Kernel                        : Kernel 6.1.0-18-amd64
Webserver                     : Apache 2.4.57
DNS-Server                    : BIND 9.18.24
PHP                           : PHP 8.2.7
Datenbank-Server              : MariaDB 10.11.6
FTP-Server                    : ProFTPD 1.3.8
Mail Transfer Agent (MTA)     : Postfix 3.7.10
Mail Delivery Agent (MDA)     : Dovecot 2.3.19.1
E-Mail-Sicherheitsplattform   : Rspamd 3.8.4
Virenscanner                  : ClamAV 1.0.3
Datenbank-Administration      : phpMyAdmin 5.2.1
Webmail                       : Roundcube 1.6.6
Kryptographie                 : OpenSSL 3.0.11
Datenübertragung              : curl 7.88.1
Backup-Software               : Restic 0.16.3
Backup-Datenübertragung       : Rclone 1.65.2
In-Memory-Datenbank-Server    : Redis 7.0.15
Kommen wir zum ersten Problem:
Wenn ich mir von der API einen DNS Eintrag für eine Domain ausgeben lasse:

Code: Select all

{
  "is_custom_dns": true,
  "is_dns_disabled": false,
  "dkim_record": "default._domainkey IN TXT ( \"v=DKIM1; k=rsa; \" \"p=XXX\" )",
  "dkim_txt_record": "default._domainkey IN TXT ( \"v=DKIM1; k=rsa; \" \"p=XXX\" )",
  "records": {
    "soa": {
      "ttl": 86400,
      "primary_ns": "ns5.iwas.de.",
      "rname": "support.iwas.de.",
      "refresh": 14400,
      "retry": 1800,
      "expire": 604800,
      "minimum": 3600
    },
    "other": [
      {
        "host": "*",
        "ttl": 86400,
        "type": "A",
        "value": "XXX"
      },
      {
        "host": "@",
        "ttl": 86400,
        "type": "A",
        "value": "XXX"
      },
      {
        "host": "*",
        "ttl": 86400,
        "type": "AAAA",
        "value": "2a03:XXXX"
      },
      {
        "host": "@",
        "ttl": 86400,
        "type": "AAAA",
        "value": "2a03:XXXX"
      },
      {
        "host": "@",
        "ttl": 86400,
        "type": "MX",
        "value": "10 mail"
      },
      {
        "host": "@",
        "ttl": 86400,
        "type": "NS",
        "value": "ns5.iwas.de."
      },
      {
        "host": "@",
        "ttl": 86400,
        "type": "NS",
        "value": "ns6.iwas.de."
      },
      {
        "host": "<DKIM_RECORD_HOST>",
        "ttl": 86400,
        "type": "TXT",
        "value": "<DKIM_RECORD_VALUE>"
      },
      {
        "host": "@",
        "ttl": 86400,
        "type": "TXT",
        "value": "\"v=spf1 a mx -all\""
      },
      {
        "host": "_dmarc",
        "ttl": 86400,
        "type": "TXT",
        "value": "\"v=DMARC1; p=none\""
      }
    ]
  }
}
diesen dann abändere und wieder einlesen (hier is_custom_dns, der SPF und der expire Eintrag:

Code: Select all

{
  "is_custom_dns": true,
  "is_dns_disabled": false,
  "dkim_record": "default._domainkey IN TXT ( \"v=DKIM1; k=rsa; \" \"p=XXX\" )",
  "dkim_txt_record": "default._domainkey IN TXT ( \"v=DKIM1; k=rsa; \" \"p=XXX\" )",
  "records": {
    "soa": {
      "ttl": 86400,
      "primary_ns": "ns5.iwas.de.",
      "rname": "support.iwas.de.",
      "refresh": 14400,
      "retry": 1800,
      "expire": 1209600,
      "minimum": 3600
    },
    "other": [
      {
        "host": "*",
        "ttl": 86400,
        "type": "A",
        "value": "XXX"
      },
      {
        "host": "@",
        "ttl": 86400,
        "type": "A",
        "value": "XXX"
      },
      {
        "host": "*",
        "ttl": 86400,
        "type": "AAAA",
        "value": "2a03:XXXX"
      },
      {
        "host": "@",
        "ttl": 86400,
        "type": "AAAA",
        "value": "2a03:XXXX"
      },
      {
        "host": "@",
        "ttl": 86400,
        "type": "MX",
        "value": "10 mail"
      },
      {
        "host": "@",
        "ttl": 86400,
        "type": "NS",
        "value": "ns5.iwas.de."
      },
      {
        "host": "@",
        "ttl": 86400,
        "type": "NS",
        "value": "ns6.iwas.de."
      },
      {
        "host": "<DKIM_RECORD_HOST>",
        "ttl": 86400,
        "type": "TXT",
        "value": "<DKIM_RECORD_VALUE>"
      },
      {
        "host": "@",
        "ttl": 86400,
        "type": "TXT",
        "value": "\"v=spf1 a mx a:gw.iwas.de a:gw2.iwas.de -all\""
      },
      {
        "host": "_dmarc",
        "ttl": 86400,
        "type": "TXT",
        "value": "\"v=DMARC1; p=none\""
      }
    ]
  }
}
Wird es nicht übernommen.

Auch das hinzufügen von anderen Records geht leider nicht.

Nur wenn ich es direkt über KeyHelp eingebe werden Änderungen übernommen.


Mit freundlichen Grüßen

Lestart

PS: IP's und Namen geändert.
User avatar
24unix
Posts: 1648
Joined: Sun 21. Jun 2020, 17:16
Location: Kollmar
Contact:

Re: API DNS Update

Post by 24unix »

Wie sieht denn Dein Aufruf aus?

Hast Du darauf geachtet?
Attention, when inserting custom DNS records, you have to specify all records not just the one you want to update.
Einen Patch Endpoint gibt es leider nicht.
mfg Micha
--
If Bill Gates had a nickel for every time Windows crashed …
… oh wait, he does.
lestart
Posts: 25
Joined: Thu 14. Sep 2023, 09:27

Re: API DNS Update

Post by lestart »

Hi,
ich habe es mit: https://app.swaggerhub.com/apis-docs/keyhelp/api/2.8#/

DNS
DNS endpoint.


gemacht. erst ein get dann die Json angepasst. Und per PUT wieder hoch.

Somit bin ich erstmal eventuelle Fehler meiner seits umgangen, bevor ich meine API Oberfläche anpasse.
Frei nach dem Moto, erst Testen wo es gehen sollte, dann anpassen. :)

Gruß LES

PS: Oben sieht man das ich mich dran gehalten habe:
24unix wrote: Sat 13. Apr 2024, 20:30 Wie sieht denn Dein Aufruf aus?

Hast Du darauf geachtet?
Attention, when inserting custom DNS records, you have to specify all records not just the one you want to update.
Einen Patch Endpoint gibt es leider nicht.
User avatar
24unix
Posts: 1648
Joined: Sun 21. Jun 2020, 17:16
Location: Kollmar
Contact:

Re: API DNS Update

Post by 24unix »

lestart wrote: Sat 13. Apr 2024, 20:33 Hi,
ich habe es mit: https://app.swaggerhub.com/apis-docs/keyhelp/api/2.8#/

DNS
DNS endpoint.


gemacht. erst ein get dann die Json angepasst. Und per PUT wieder hoch.

Somit bin ich erstmal eventuelle Fehler meiner seits umgangen, bevor ich meine API Oberfläche anpasse.
Frei nach dem Moto, erst Testen wo es gehen sollte, dann anpassen. :)
Das sollte passen, Swagger zeigt Dir ja die CURL Parameter an.
Aber wenn Du es direkt da bearbeitest hast sollte er auch alles hochladen.
mfg Micha
--
If Bill Gates had a nickel for every time Windows crashed …
… oh wait, he does.
lestart
Posts: 25
Joined: Thu 14. Sep 2023, 09:27

Re: API DNS Update

Post by lestart »

Hi 24Unix,

dachte Du hast Urlaub :)

Aber danke das Du hier trotzdem interagierst.
Ich habe es nun so gelöst:
Ich ziehe mir per API-Abfrage alle Main Domains -> speichere mir die JSON -> dann lese ich meine Datei mit Änderungen ein und lasse dieses dann einfügen oder updaten in der Datenbank von Keyhelp -> domains_custom_dns Glücklicherweise erkennt dann Keyhelp es und setzt die Domains dann auf Custom DNS.
Nicht die schönste Lösung, aber es Funktioniert perfekt. Und es funktioniert alles über ein lokales Script schon mal.
Natürlich prüfe ich auch gleich ob es ein neuer oder ein zu updatender Eintrag ist.
Da ich dieses Vorgehen nur für neu angelegte Domains einmalig brauche, ist dieses eine gute Lösung um das Fehlen eines DNS-Templates zu lösen.
Nächster Schritt wird das Automatisieren werden. Sprich eine neue Domain wird angelegt und dann soll einmal die „MASTER“ Änderung ausgeführt werden. Bei mir sind es nur die SOA -> expire und SPF Einträge. Rest kann der Kunde dann machen.




Gruß LES
User avatar
24unix
Posts: 1648
Joined: Sun 21. Jun 2020, 17:16
Location: Kollmar
Contact:

Re: API DNS Update

Post by 24unix »

lestart wrote: Sun 14. Apr 2024, 10:14 Hi 24Unix,

dachte Du hast Urlaub :)
Ab Montag. Heute noch ein Ticket fur die Firma, dann mache ich 7 Tage mein Ding.
Im anderen Thread geht es nachher auch weiter …
lestart wrote: Sun 14. Apr 2024, 10:14
Aber danke das Du hier trotzdem interagierst.
Ich habe es nun so gelöst:
Ich ziehe mir per API-Abfrage alle Main Domains -> speichere mir die JSON -> dann lese ich meine Datei mit Änderungen ein und lasse dieses dann einfügen oder updaten in der Datenbank von Keyhelp -> domains_custom_dns Glücklicherweise erkennt dann Keyhelp es und setzt die Domains dann auf Custom DNS.
Nicht die schönste Lösung, aber es Funktioniert perfekt. Und es funktioniert alles über ein lokales Script schon mal.
Natürlich prüfe ich auch gleich ob es ein neuer oder ein zu updatender Eintrag ist.
Da ich dieses Vorgehen nur für neu angelegte Domains einmalig brauche, ist dieses eine gute Lösung um das Fehlen eines DNS-Templates zu lösen.
Nächster Schritt wird das Automatisieren werden. Sprich eine neue Domain wird angelegt und dann soll einmal die „MASTER“ Änderung ausgeführt werden. Bei mir sind es nur die SOA -> expire und SPF Einträge. Rest kann der Kunde dann machen.
Das hört sich doch brauchbar an.
mfg Micha
--
If Bill Gates had a nickel for every time Windows crashed …
… oh wait, he does.
User avatar
Alexander
Keyweb AG
Posts: 3842
Joined: Wed 20. Jan 2016, 02:23

Re: API DNS Update  [GELÖST]

Post by Alexander »

lestart wrote:

Code: Select all

{
  "is_custom_dns": true,
  "is_dns_disabled": false,
  "dkim_record": "default._domainkey IN TXT ( \"v=DKIM1; k=rsa; \" \"p=XXX\" )",
  "dkim_txt_record": "default._domainkey IN TXT ( \"v=DKIM1; k=rsa; \" \"p=XXX\" )",
  "records": {
    "soa": {
      "ttl": 86400,
      "primary_ns": "ns5.iwas.de.",
      "rname": "support.iwas.de.",
      "refresh": 14400,
      "retry": 1800,
      "expire": 1209600,
      "minimum": 3600
    },
    "other": [
      {
        "host": "*",
        "ttl": 86400,
        "type": "A",
        "value": "XXX"
      },
      {
        "host": "@",
        "ttl": 86400,
        "type": "A",
        "value": "XXX"
      },
      {
        "host": "*",
        "ttl": 86400,
        "type": "AAAA",
        "value": "2a03:XXXX"
      },
      {
        "host": "@",
        "ttl": 86400,
        "type": "AAAA",
        "value": "2a03:XXXX"
      },
      {
        "host": "@",
        "ttl": 86400,
        "type": "MX",
        "value": "10 mail"
      },
      {
        "host": "@",
        "ttl": 86400,
        "type": "NS",
        "value": "ns5.iwas.de."
      },
      {
        "host": "@",
        "ttl": 86400,
        "type": "NS",
        "value": "ns6.iwas.de."
      },
      {
        "host": "<DKIM_RECORD_HOST>",
        "ttl": 86400,
        "type": "TXT",
        "value": "<DKIM_RECORD_VALUE>"
      },
      {
        "host": "@",
        "ttl": 86400,
        "type": "TXT",
        "value": "\"v=spf1 a mx a:gw.iwas.de a:gw2.iwas.de -all\""
      },
      {
        "host": "_dmarc",
        "ttl": 86400,
        "type": "TXT",
        "value": "\"v=DMARC1; p=none\""
      }
    ]
  }
}
Die Folgenden Felder brauchst du nicht angeben (schadet aber auch nichts, wenn du es doch tust):

Code: Select all

  "is_custom_dns": true,
  "dkim_record": "default._domainkey IN TXT ( \"v=DKIM1; k=rsa; \" \"p=XXX\" )",
  "dkim_txt_record": "default._domainkey IN TXT ( \"v=DKIM1; k=rsa; \" \"p=XXX\" )",
Die sind readonly und nur für den GET Request.
Siehe Schema-Definition hier: https://app.swaggerhub.com/apis-docs/ke ... i/2.8#/dns

---

Ansonsten liegt der Grund, warum die Einstellungen nicht übernommen werden daran, weil du "is_dns_disabled = false" angibst.

Siehe Dokumentation hier:
https://app.swaggerhub.com/apis-docs/ke ... t_dns__id_
API Dokumentation wrote:If the property is_dns_disabled, either set to true or false, is part of the request, all specified records of the request will be ignored.
If is_dns_disabled is set to true -> DNS will be disabled
If is_dns_disabled is set to false -> DNS will be enabled with the default DNS settings

=> Ergo die Lösung, steht direkt darunter: If you want to enable DNS and insert custom DNS records with only one request, simply send your DNS records without the is_dns_disabled property being part of the request.
Mit freundlichen Grüßen / Best regards
Alexander Mahr

**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
Post Reply