client

package
v0.0.0-...-fd8be1c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 15, 2020 License: BSD-3-Clause, BSD-3-Clause Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func TsigGenerate

func TsigGenerate(m *dns.Msg, secret, requestMAC string, timersOnly bool) ([]byte, string, error)

TsigGenerate fills out the TSIG record attached to the message. The message should contain a "stub" TSIG RR with the algorithm, key name (owner name of the RR), time fudge (defaults to 300 seconds) and the current time The TSIG MAC is saved in that Tsig RR. When TsigGenerate is called for the first time requestMAC is set to the empty string and timersOnly is false. If something goes wrong an error is returned, otherwise it is nil.

func TsigGenerateByAlgorithm

func TsigGenerateByAlgorithm(m *dns.Msg, cb tsigAlgorithmGenerate, name, secret, requestMAC string, timersOnly bool) ([]byte, string, error)

TsigGenerateByAlgorithm fills out the TSIG record attached to the message using a callback to implement the algorithm-specific generation. The message should contain a "stub" TSIG RR with the algorithm, key name (owner name of the RR), time fudge (defaults to 300 seconds) and the current time The TSIG MAC is saved in that Tsig RR. When TsigGenerate is called for the first time requestMAC is set to the empty string and timersOnly is false. If something goes wrong an error is returned, otherwise it is nil.

func TsigVerify

func TsigVerify(msg []byte, secret, requestMAC string, timersOnly bool) error

TsigVerify verifies the TSIG on a message. If the signature does not validate err contains the error, otherwise it is nil.

func TsigVerifyByAlgorithm

func TsigVerifyByAlgorithm(msg []byte, cb tsigAlgorithmVerify, name, secret, requestMAC string, timersOnly bool) error

TsigVerifyByAlgorithm verifies the TSIG on a message using a callback to implement the algorithm-specific verification. If the signature does not validate err contains the error, otherwise it is nil.

Types

type Client

type Client struct {
	dns.Client
	TsigAlgorithm map[string]*TsigAlgorithm
	// contains filtered or unexported fields
}

A Client defines parameters for a DNS client.

func (*Client) Dial

func (c *Client) Dial(address string) (conn *Conn, err error)

Dial connects to the address on the named network.

func (*Client) Exchange

func (c *Client) Exchange(m *dns.Msg, address string) (r *dns.Msg, rtt time.Duration, err error)

Exchange performs a synchronous query. It sends the message m to the address contained in a and waits for a reply. Basic use pattern with a *dns.Client:

c := new(dns.Client)
in, rtt, err := c.Exchange(message, "127.0.0.1:53")

Exchange does not retry a failed query, nor will it fall back to TCP in case of truncation. It is up to the caller to create a message that allows for larger responses to be returned. Specifically this means adding an EDNS0 OPT RR that will advertise a larger buffer, see SetEdns0. Messages without an OPT RR will fallback to the historic limit of 512 bytes To specify a local address or a timeout, the caller has to set the `Client.Dialer` attribute appropriately

type Conn

type Conn struct {
	dns.Conn
	TsigAlgorithm map[string]*TsigAlgorithm
	// contains filtered or unexported fields
}

A Conn represents a connection to a DNS server.

func (*Conn) ReadMsg

func (co *Conn) ReadMsg() (*dns.Msg, error)

ReadMsg reads a message from the connection co. If the received message contains a TSIG record the transaction signature is verified. This method always tries to return the message, however if an error is returned there are no guarantees that the returned message is a valid representation of the packet read.

func (*Conn) WriteMsg

func (co *Conn) WriteMsg(m *dns.Msg) (err error)

WriteMsg sends a message through the connection co. If the message m contains a TSIG record the transaction signature is calculated.

type Error

type Error struct {
	// contains filtered or unexported fields
}

Error represents a DNS error.

func (*Error) Error

func (e *Error) Error() string

type TSIG

type TSIG struct {
	dns.TSIG
}

TSIG is the RR the holds the transaction signature of a message. See RFC 2845 and RFC 4635.

func (*TSIG) Header

func (rr *TSIG) Header() *dns.RR_Header

type TsigAlgorithm

type TsigAlgorithm struct {
	Generate tsigAlgorithmGenerate
	Verify   tsigAlgorithmVerify
}

TsigAlgorithm holds the two callbacks used to generate and verify the transaction signature of a message.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL