====== std.net.dns ====== DNS (Domain Name System) übersetzt Hostnamen in IP-Adressen und umgekehrt. Die Unit implementiert einen vollständigen DNS-Resolver über UDP mit Unterstützung für alle gängigen Record-Typen: A, AAAA, MX, NS, CNAME, TXT, PTR, SOA, SRV, CAA, DNSKEY und DS. Auflösungen können gegen den System-Resolver, Google Public DNS (8.8.8.8) oder Cloudflare DNS (1.1.1.1) gerichtet werden. Einsatzbereiche sind Domainvalidierung, Mail-Routing (MX-Lookup), Infrastruktur-Abfragen, DNSSEC-Analysen und alle Anwendungen, die Hostnamen selbst auflösen müssen ohne auf libc-Resolver zu setzen. import std.net.dns; var result: DNSResult := DNSResolve("example.com"); if (DNSResultIsSuccess(result)) { DNSPrintIP(DNSResultGetIPv4(result)); } ---- ===== Imports ===== * ''std.net.socket'' * ''std.net.types'' ---- ===== Konstanten ===== ^ Name ^ Typ ^ Wert ^ Sichtbarkeit ^ | ''DNS_QR_QUERY'' | ''int64'' | ''0'' | pub | | ''DNS_QR_RESPONSE'' | ''int64'' | ''1'' | pub | | ''DNS_OPCODE_QUERY'' | ''int64'' | ''0'' | pub | | ''DNS_RD'' | ''int64'' | ''1'' | pub | | ''DNS_RA'' | ''int64'' | ''1'' | pub | | ''DNS_TYPE_A'' | ''int64'' | ''1'' | pub | | ''DNS_TYPE_AAAA'' | ''int64'' | ''28'' | pub | | ''DNS_TYPE_CNAME'' | ''int64'' | ''5'' | pub | | ''DNS_TYPE_MX'' | ''int64'' | ''15'' | pub | | ''DNS_TYPE_TXT'' | ''int64'' | ''16'' | pub | | ''DNS_TYPE_NS'' | ''int64'' | ''2'' | pub | | ''DNS_TYPE_SOA'' | ''int64'' | ''6'' | pub | | ''DNS_TYPE_PTR'' | ''int64'' | ''12'' | pub | | ''DNS_TYPE_SRV'' | ''int64'' | ''33'' | pub | | ''DNS_TYPE_CAA'' | ''int64'' | ''257'' | pub | | ''DNS_TYPE_DS'' | ''int64'' | ''43'' | pub | | ''DNS_TYPE_DNSKEY'' | ''int64'' | ''48'' | pub | | ''DNS_TYPE_ANY'' | ''int64'' | ''255'' | pub | | ''DNS_CLASS_IN'' | ''int64'' | ''1'' | pub | | ''DNS_RCODE_OK'' | ''int64'' | ''0'' | pub | | ''DNS_RCODE_FORMERR'' | ''int64'' | ''1'' | pub | | ''DNS_RCODE_SERVFAIL'' | ''int64'' | ''2'' | pub | | ''DNS_RCODE_NXDOMAIN'' | ''int64'' | ''3'' | pub | | ''DNS_RCODE_NOTIMP'' | ''int64'' | ''4'' | pub | | ''DNS_RCODE_REFUSED'' | ''int64'' | ''5'' | pub | | ''DNS_PORT'' | ''int64'' | ''53'' | pub | ---- ===== Typen ===== ==== DNSResult (struct) ==== ^ Feld ^ Typ ^ | ''success'' | ''bool'' | | ''recordType'' | ''int64'' | | ''ttl'' | ''int64'' | | ''rcode'' | ''int64'' | | ''dataLen'' | ''int64'' | ---- ===== Funktionen ===== ^ Signatur ^ Sichtbarkeit ^ Beschreibung ^ | ''dns_random_id(): int64'' | priv | Zufällige DNS-Transaktions-ID generieren | | ''dns_encode_name(buf: int64, offset: int64, name: int64, nameLen: int64): int64'' | priv | Hostnamen ins DNS-Wire-Format kodieren | | ''dns_build_query(buf: int64, name: int64, nameLen: int64, queryType: int64): int64'' | priv | Vollständiges DNS-Abfragepaket aufbauen | | ''dns_skip_name(buf: int64, offset: int64, maxLen: int64): int64'' | priv | DNS-Namen im Antwortpuffer überspringen | | ''dns_parse_response_ex(buf: int64, bufLen: int64, resultPtr: int64, queryType: int64): bool'' | priv | DNS-Antwortpaket vollständig parsen | | ''DNSResolve(hostname: int64, hostnameLen: int64, dnsServerIP: int64, resultPtr: int64): bool'' | pub | IPv4-Adresse eines Hostnamens auflösen | | ''DNSResolveEx(hostname: int64, hostnameLen: int64, dnsServerIP: int64, queryType: int64, resultPtr: int64): bool'' | pub | DNS-Abfrage für beliebigen Record-Typ | | ''DNSResolveAAAA(hostname: int64, hostnameLen: int64, dnsServerIP: int64, resultPtr: int64): bool'' | pub | IPv6-Adresse eines Hostnamens auflösen | | ''DNSResolveAAAAGoogle(hostname: int64, hostnameLen: int64, resultPtr: int64): bool'' | pub | AAAA-Abfrage über Google DNS | | ''DNSResolveAAAACoudflare(hostname: int64, hostnameLen: int64, resultPtr: int64): bool'' | pub | AAAA-Abfrage über Cloudflare DNS | | ''DNSResolveCNAME(hostname: int64, hostnameLen: int64, dnsServerIP: int64, resultPtr: int64): bool'' | pub | CNAME-Record eines Hostnamens auflösen | | ''DNSResolveCNAMEGoogle(hostname: int64, hostnameLen: int64, resultPtr: int64): bool'' | pub | CNAME-Abfrage über Google DNS | | ''DNSResolveCNAMECloudflare(hostname: int64, hostnameLen: int64, resultPtr: int64): bool'' | pub | CNAME-Abfrage über Cloudflare DNS | | ''DNSResolveMX(hostname: int64, hostnameLen: int64, dnsServerIP: int64, resultPtr: int64): bool'' | pub | MX-Record einer Domain auflösen | | ''DNSResolveMXGoogle(hostname: int64, hostnameLen: int64, resultPtr: int64): bool'' | pub | MX-Abfrage über Google DNS | | ''DNSResolveMXCloudflare(hostname: int64, hostnameLen: int64, resultPtr: int64): bool'' | pub | MX-Abfrage über Cloudflare DNS | | ''DNSResolveNS(hostname: int64, hostnameLen: int64, dnsServerIP: int64, resultPtr: int64): bool'' | pub | NS-Record einer Domain auflösen | | ''DNSResolveNSGoogle(hostname: int64, hostnameLen: int64, resultPtr: int64): bool'' | pub | NS-Abfrage über Google DNS | | ''DNSResolveNSCloudflare(hostname: int64, hostnameLen: int64, resultPtr: int64): bool'' | pub | NS-Abfrage über Cloudflare DNS | | ''DNSResolveTXT(hostname: int64, hostnameLen: int64, dnsServerIP: int64, resultPtr: int64): bool'' | pub | TXT-Record einer Domain auflösen | | ''DNSResolveTXTGoogle(hostname: int64, hostnameLen: int64, resultPtr: int64): bool'' | pub | TXT-Abfrage über Google DNS | | ''DNSResolveTXTCloudflare(hostname: int64, hostnameLen: int64, resultPtr: int64): bool'' | pub | TXT-Abfrage über Cloudflare DNS | | ''DNSResolveSOA(hostname: int64, hostnameLen: int64, dnsServerIP: int64, resultPtr: int64): bool'' | pub | SOA-Record einer Domain auflösen | | ''DNSResolveSOAGoogle(hostname: int64, hostnameLen: int64, resultPtr: int64): bool'' | pub | SOA-Abfrage über Google DNS | | ''DNSResolveSOACloudflare(hostname: int64, hostnameLen: int64, resultPtr: int64): bool'' | pub | SOA-Abfrage über Cloudflare DNS | | ''DNSResolvePTR(ip: int64, dnsServerIP: int64, resultPtr: int64): bool'' | pub | Reverse-DNS-Lookup für IP-Adresse | | ''DNSResolvePTRGoogle(ip: int64, resultPtr: int64): bool'' | pub | PTR-Abfrage über Google DNS | | ''DNSResolveSRV(service: int64, serviceLen: int64, dnsServerIP: int64, resultPtr: int64): bool'' | pub | SRV-Record eines Dienstes auflösen | | ''DNSResolveSRVGoogle(service: int64, serviceLen: int64, resultPtr: int64): bool'' | pub | SRV-Abfrage über Google DNS | | ''DNSResolveSRVCloudflare(service: int64, serviceLen: int64, resultPtr: int64): bool'' | pub | SRV-Abfrage über Cloudflare DNS | | ''DNSResolveCAA(hostname: int64, hostnameLen: int64, dnsServerIP: int64, resultPtr: int64): bool'' | pub | CAA-Record einer Domain auflösen | | ''DNSResolveCAAGoogle(hostname: int64, hostnameLen: int64, resultPtr: int64): bool'' | pub | CAA-Abfrage über Google DNS | | ''DNSResolveDS(hostname: int64, hostnameLen: int64, dnsServerIP: int64, resultPtr: int64): bool'' | pub | DNSSEC DS-Record auflösen | | ''DNSResolveDSGoogle(hostname: int64, hostnameLen: int64, resultPtr: int64): bool'' | pub | DS-Abfrage über Google DNS | | ''DNSResolveDNSKEY(hostname: int64, hostnameLen: int64, dnsServerIP: int64, resultPtr: int64): bool'' | pub | DNSKEY-Record einer Domain auflösen | | ''DNSResolveDNSKEYGoogle(hostname: int64, hostnameLen: int64, resultPtr: int64): bool'' | pub | DNSKEY-Abfrage über Google DNS | | ''DNSResolveGoogle(hostname: int64, hostnameLen: int64, resultPtr: int64): bool'' | pub | A-Record über Google Public DNS auflösen | | ''DNSResolveCloudflare(hostname: int64, hostnameLen: int64, resultPtr: int64): bool'' | pub | A-Record über Cloudflare DNS auflösen | | ''hostnameLen(hostname: int64): int64'' | priv | Länge eines Hostnamen-Strings ermitteln | | ''GetHostByName(hostname: int64): int64'' | pub | IP-Adresse als int64 zurückgeben | | ''ResolveHost(hostname: int64): IPAddr'' | pub | Hostname zu IPAddr-Struktur auflösen | | ''DNSPrintIP(ip: int64)'' | pub | IPv4-Adresse als Text ausgeben | | ''DNSPrintIPV6(data: int64)'' | pub | IPv6-Adresse als Text ausgeben | | ''DNSResultGetIPv4(resultPtr: int64): int64'' | pub | IPv4-Adresse aus DNS-Ergebnis lesen | | ''DNSResultGetTTL(resultPtr: int64): int64'' | pub | TTL-Wert aus DNS-Ergebnis lesen | | ''DNSResultGetType(resultPtr: int64): int64'' | pub | Record-Typ aus DNS-Ergebnis lesen | | ''DNSResultIsSuccess(resultPtr: int64): bool'' | pub | Erfolg einer DNS-Abfrage prüfen |