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.socketstd.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 |
