Skip to content

Latest commit

 

History

History
78 lines (59 loc) · 1.29 KB

File metadata and controls

78 lines (59 loc) · 1.29 KB

VDNS

This is a DNS client library written in V.

Features

Supported query types:

  • A
  • AAAA
  • AXFR
  • CAA
  • CERT
  • CNAME
  • DNSKEY
  • IXFR (experimental)
  • PTR
  • MX
  • NS
  • SOA
  • SRV
  • TLSA
  • TXT
  • URI

Other features:

  • Configurable timeout (default: 5s)
  • Automatic TCP fallback on truncation

Installation

You can install this package either from [VPM] or from GitHub:

v install fleximus.vdns
v install --git https://github.com/fleximus/vdns

Usage

To use vdns in order to run queries, you need to specify the resolver's IP address. Here in our example we make use of Cloudflare's public 1.1.1.1 resolver.

import fleximus.vdns

fn main() {
	resolver := '1.1.1.1:53'

	result := vdns.query(vdns.Query{
		domain:   'gmail.com'
		@type:    .mx
		resolver: resolver
	}) or { panic('Failed query') }

	for answer in result.answers {
		println('${answer.name} ${answer.class} ${answer.ttl} ${answer.@type} ${answer.record}')
	}
}

Custom Timeout

import fleximus.vdns
import time

result := vdns.query(vdns.Query{
	domain:   'example.com'
	resolver: '1.1.1.1:53'
	timeout:  2 * time.second
}) or { panic('Query timed out') }

This library is under development: Do NOT use in production!

License

MIT