Skip to content

JDWX DNSQuery RR RR

JDW edited this page Jul 17, 2022 · 1 revision

JDWX\DNSQuery\RR\RR

This is the base class for DNS Resource Records

Each resource record type (defined in RR/*.php) extends this class for base functionality.

This class handles parsing and constructing the common parts of the DNS resource records, while the RR specific functionality is handled in each child class.

DNS resource record format - RFC1035 section 4.1.3

 0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | / / / NAME / | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | TYPE | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | CLASS | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | TTL | | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | rdLength | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| / RData / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

  • Class name: RR
  • Namespace: \JDWX\DNSQuery\RR
  • This is an abstract class

Properties

name

public  name
  • Visibility: public

type

public  type
  • Visibility: public

class

public  class
  • Visibility: public

ttl

public  ttl
  • Visibility: public

rdLength

public  rdLength
  • Visibility: public

rdata

public  rdata = ''
  • Visibility: public

Methods

__construct

mixed JDWX\DNSQuery\RR\RR::__construct(?\JDWX\DNSQuery\Packet\Packet i_packet, ?array i_rr)

Constructor - builds a new RR object

  • Visibility: public

Arguments

  • i_packet ?\JDWX\DNSQuery\Packet\Packet - a Packet or null to create an empty object
  • i_rr ?array - an array with RR parse values or null to create an empty object

fromString

static JDWX\DNSQuery\RR\RR::fromString(string line)

parses a standard RR format lines, as defined by rfc1035 (kinda)

In our implementation, the domain must be specified- format must be

   <name> [<ttl>] [<class>] <type> <rdata>

or [] []

name, title, class and type are parsed by this function, rdata is passed to the RR specific classes for parsing.

  • Visibility: public
  • This method is static.

Arguments

  • line string - a standard DNS config line

parse

?\JDWX\DNSQuery\RR\RR JDWX\DNSQuery\RR\RR::parse(\JDWX\DNSQuery\Packet\Packet packet)

parses a binary packet, and returns the appropriate RR object, based on the RR type of the binary content.

  • Visibility: public
  • This method is static.

Arguments

__toString

string JDWX\DNSQuery\RR\RR::__toString()

magic __toString() method to return the RR object as a string

  • Visibility: public

asArray

array JDWX\DNSQuery\RR\RR::asArray()

return the same data as __toString(), but as an array, so each value can be used without having to parse the string.

  • Visibility: public

cleanString

string JDWX\DNSQuery\RR\RR::cleanString(string i_data)

cleans up some RR data

  • Visibility: public

Arguments

  • i_data string - the text string to clean

get

string JDWX\DNSQuery\RR\RR::get(\JDWX\DNSQuery\Packet\Packet i_packet)

returns a binary packed DNS RR object

  • Visibility: public

Arguments

getPHPRData

array JDWX\DNSQuery\RR\RR::getPHPRData()

Get the rdata in the format used by PHP's dns_get_record() function.

  • Visibility: public

getPHPRecord

array JDWX\DNSQuery\RR\RR::getPHPRecord()

Get the whole record in the format used by PHP's dns_get_record() function.

See the caveats in getPHPRData() about RR-specific data.

  • Visibility: public

set

bool JDWX\DNSQuery\RR\RR::set(\JDWX\DNSQuery\Packet\Packet i_packet, array i_rr)

builds a new RR object

  • Visibility: public

Arguments

  • i_packet JDWX\DNSQuery\Packet\Packet - (output) a Packet or null to create an empty object
  • i_rr array - an array with RR parse values or null to create an empty object

buildString

string[] JDWX\DNSQuery\RR\RR::buildString(string[] i_chunks)

Build an array of strings from an array of chunks of text split by spaces.

  • Visibility: protected

Arguments

  • i_chunks string[] - an array of chunks of text split by spaces

formatString

string JDWX\DNSQuery\RR\RR::formatString(string i_str)

return a formatted string; if a string has spaces in it, then return it with double quotes around it, otherwise, return it as it was passed in.

  • Visibility: protected

Arguments

  • i_str string - the string to format

rrFromString

bool JDWX\DNSQuery\RR\RR::rrFromString(string[] i_rData)

Parse the rdata portion from a standard DNS config line

  • Visibility: protected
  • This method is abstract.

Arguments

  • i_rData string[] - a string split line of values for the rdata

rrGet

?string JDWX\DNSQuery\RR\RR::rrGet(\JDWX\DNSQuery\Packet\Packet i_packet)

Returns the rdata portion of the RR, advancing the referenced packet offset by the correct size.

  • Visibility: protected
  • This method is abstract.

Arguments

rrGetEx

string JDWX\DNSQuery\RR\RR::rrGetEx(\JDWX\DNSQuery\Packet\Packet i_packet)

returns a binary packet DNS RR object and throws an exception if it fails

  • Visibility: protected

Arguments

rrSet

bool JDWX\DNSQuery\RR\RR::rrSet(\JDWX\DNSQuery\Packet\Packet i_packet)

Parse the rdata from the current position of the provided Packet object, advancing the packet's internal offset accordingly.

  • Visibility: protected
  • This method is abstract.

Arguments

rrToString

string JDWX\DNSQuery\RR\RR::rrToString()

Return the rdata portion of the packet as a string.

This is not the same as the __toString() magic method, which returns the whole RR.

  • Visibility: protected
  • This method is abstract.
Clone this wiki locally