super_dns_client 0.3.3 copy "super_dns_client: ^0.3.3" to clipboard
super_dns_client: ^0.3.3 copied to clipboard

A modern and lightweight Dart library for performing DNS-over-HTTPS (DoH) lookups. Supports multiple resolvers and easy integration for Flutter and server-side apps.

🧭 super_dns_client #

A modern and lightweight Dart library for performing DNS lookups via
πŸ”Ή DNS-over-HTTPS (DoH) and
πŸ”Ή traditional UDP/TCP resolvers β€” including System and Public SRV discovery.

Built for Flutter, Dart CLI, and backend apps.


πŸš€ Features #

  • πŸ” Query A, AAAA, CNAME, SRV, TXT records
  • 🌐 Supports both DoH and traditional UDP/TCP DNS
  • βš™οΈ Auto-detects System-configured DNS (macOS, Linux, Android, iOS)
  • 🧩 Public resolver support: Quad9, AdGuard, Yandex, OpenDNS, Cloudflare, Google, Mullvad, etc.
  • πŸ’Ύ Built-in TTL-based SRV cache for performance
  • 🧱 Built with universal_io, super_raw, and super_ip
  • βœ… Null-safe, well-tested, CI-integrated

πŸ“¦ Installation #

dependencies:
  super_dns_client: ^0.3.0

Then run:

dart pub get

πŸ’‘ Example #

import 'package:super_dns_client/super_dns_client.dart';
import 'package:super_dns_client/src/udp_tcp/system_udp_srv_client.dart';
import 'package:super_dns_client/src/udp_tcp/public_udp_srv_client.dart';

void main() async {
  // Example 1: DNS-over-HTTPS (Cloudflare)
  final doh = DnsOverHttps.cloudflare();
  final records = await doh.lookup('google.com');
  for (var ip in records) {
    print('DoH β†’ ${ip.address}');
  }

  // Example 2: SRV lookup via System-configured DNS
  final systemClient = SystemUdpSrvClient();
  final systemRecords = await systemClient.lookupSrv('_jmap._tcp.linagora.com');
  for (var r in systemRecords) {
    print('SystemDNS β†’ ${r.target}:${r.port}');
  }

  // Example 3: SRV lookup via Public DNS resolvers
  final publicClient = PublicUdpSrvClient();
  final publicRecords = await publicClient.lookupSrv('_jmap._tcp.linagora.com');
  for (var r in publicRecords) {
    print('PublicDNS(${r.resolverName}) β†’ ${r.target}:${r.port}');
  }
}

βš™οΈ Available DNS Resolvers #

πŸ”Έ DNS-over-HTTPS (DoH) #

Provider Endpoint URL
Google https://dns.google/dns-query
Cloudflare https://cloudflare-dns.com/dns-query
Quad9 https://dns.quad9.net/dns-query
AdGuard https://dns.adguard-dns.com/dns-query
Mullvad https://doh.mullvad.net/dns-query
Yandex https://dns.yandex.com/dns-query
OpenDNS https://doh.opendns.com/dns-query

πŸ”Έ Traditional (UDP/TCP) #

  • System-configured resolvers (/etc/resolv.conf, Android getprop, iOS fallback)
  • Public resolvers (Quad9, AdGuard, Yandex, OpenDNS)
  • TCP fallback if UDP is truncated or timed out

πŸ§ͺ Run Tests #

dart test

πŸͺͺ License #

Licensed under the MIT License.
See LICENSE for details.


❀️ Contributing #

Pull requests and ideas are welcome!
Open an issue or PR at GitHub Issues.


🌟 Example Output #

DnsOverHttps.cloudflare::SRV β†’ _jmap._tcp.linagora.com β†’ jmap.linagora.com:443
SystemUdpSrvClient::SRV β†’ linagora.com:443
PublicUdpSrvClient(quad9)::SRV β†’ jmap.linagora.com:443

🧠 Summary #

Feature Status
DoH (Google/Cloudflare) βœ…
Binary DoH (Quad9, Mullvad) βœ…
UDP/TCP SRV resolver βœ…
System DNS detection βœ…
Public resolver list βœ…
TTL cache βœ…
IPv6 support βœ…

✨ Since v0.3.0: super_dns_client is now a hybrid DNS resolver supporting
both DoH and UDP/TCP SRV record lookups with automatic fallback.


pub package Dart

1
likes
140
points
287
downloads

Publisher

unverified uploader

Weekly Downloads

A modern and lightweight Dart library for performing DNS-over-HTTPS (DoH) lookups. Supports multiple resolvers and easy integration for Flutter and server-side apps.

Repository (GitHub)
View/report issues

Topics

#dns #doh #network #http #resolver

Documentation

API reference

License

MIT (license)

Dependencies

equatable, freezed_annotation, http, json_annotation, super_dns, super_raw, universal_io

More

Packages that depend on super_dns_client