asynchronous recursive dns resolver

Cancelado Publicado May 22, 2014 Pagado a la entrega
Cancelado Pagado a la entrega

Using google go, I want a program that will read a list of domains from a file and perform recursive asynchronous dns queries. The domains will be in a file with each domain delimited by a new line.

I do not want the program to rely on a recursive name server.

I want the program to act as it's own recursive resolver.

As a recursive resolver the program will query the root name servers to find the authoritative name servers of the target domain.

After the program has received the DNS servers responsible for the domain, it should then query those DNS servers directly.

To minimize repetitive queries the program should utilize a query cache. The cache should not persist.

The program should perform the following DNS queries on a target domain:

Query root name servers to discover authoritative name servers for domain.

Query the returned name servers for the following record types:

A record of domain

MX record(s) for domain

A record(s) of MX host(s) for domain.

The program should output the answers to stdout in the following CSV format:

type,domain,data

In the data column if there are multiple records, they should be delimited by ; (semicolon)

In the data column, if the records have additional data such as MX priority or name server IP, those should be delimited by : (colon).

Example source data and output for each query type:

For an NS record:

[url removed, login to view] name server [url removed, login to view]

[url removed, login to view] name server [url removed, login to view]

ns2.google.com. 172800 IN A [url removed, login to view]

ns1.google.com. 172800 IN A [url removed, login to view]

Output:

type,domain,data

NS,[url removed, login to view],[url removed, login to view]:[url removed, login to view];[url removed, login to view]:[url removed, login to view]

For an A record:

[url removed, login to view] has address [url removed, login to view]

[url removed, login to view] has address [url removed, login to view]

Output:

type,domain,data

A,[url removed, login to view],[url removed, login to view];[url removed, login to view]

For MX records:

[url removed, login to view] mail is handled by 20 alt2.gmail-smtp-in.l.google.com.

[url removed, login to view] mail is handled by 40 alt4.gmail-smtp-in.l.google.com.

Example output for MX record:

type,domain,data

MX,[url removed, login to view],[url removed, login to view];[url removed, login to view]

A record of MX:

type,domain,data

A,[url removed, login to view],[url removed, login to view]

A,[url removed, login to view],[url removed, login to view]

If any queries result in a failure such as timeout or NXdomain:

type,domain,data

ERROR,[url removed, login to view],NXDOMAIN

ERROR,[url removed, login to view],TIMEOUT

Command line Options / Configuration:

timeout - amount of time in seconds to wait for a response to a query

retry - amount of times to retry when a query times out

pps - amount of queries to send per second

domain file - file containing list of domains

Timeout and retry handling:

If a query results in a timeout, the query should be retried.

An error should be output only when a query has timed out after max retries.

DNS Golang Linux

Nº del proyecto: #5977586

Sobre el proyecto

3 propuestas Proyecto remoto Activo May 23, 2014

3 freelancers están ofertando un promedio de $477 por este trabajo

owebest

Hello, I have reviewed your project description and would be happy to let you know that we have good experience in dealing with such tasks. We would be happy to work for your project, however to be sure enough before s Más

$475 USD en 10 días
(0 comentarios)
0.0