zoneparser

package module
v0.1.3 Latest Latest
Warning

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

Go to latest
Published: Apr 9, 2022 License: LGPL-2.1 Imports: 10 Imported by: 0

README

Zone Parser

Zone Parser is a simple to use Go library that can parse bind like DNS-Zones.

Reading existing zone files

func main() {
	zoneFile, _ := ioutil.ReadFile("myzonefile")
	zone := ParseZone(string(zoneFile))
}

Writing a Zone to a file

Note that ToZoneFile will not preserve the format of zones that where parsed by ParseZone.

func main() {
	zoneFile, _ := ioutil.ReadFile("myzonefile")
	zone := ParseZone(string(zoneFile))
	zoneFile = zone.ToZoneFile() // Returns zone as string
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ParseState added in v0.1.0

type ParseState struct {
	Parenthesis  bool
	PreviousName string
}

ParseState represents the current state of the zone parser. ParseState is used by parseZone and does not need to be used manually.

type Record

type Record struct {
	Class   string
	Content string
	Host    string
	Ttl     uint
	Type    string
}

Record represents a single DNS resource record

type Zone

type Zone struct {
	SOA     *ZoneSOA
	Origin  string
	Records []Record
	Ttl     uint
}

Zone represents a DNS zone. It can either be instantiated manually or by using ToZoneFile

func ParseZone added in v0.1.1

func ParseZone(bindZone string) *Zone

ParseZone parses a bind-like zone file and returns a Zone struct.

func (*Zone) ToZoneFile added in v0.1.1

func (z *Zone) ToZoneFile() string

ToZoneFile returns a string containing a bind-like zone file from the provided zone

func (*Zone) UpdateSerial added in v0.1.1

func (z *Zone) UpdateSerial()

UpdateSerial updates the serial number of the record with the current Unix time stamp. Note: This does not follow the official recommendation for zone serial numbers.

type ZoneSOA added in v0.1.0

type ZoneSOA struct {
	Email      string
	Nameserver string
	Serial     string
	Refresh    string
	Retry      string
	Expire     string
	Minimum    string
}

ZoneSOA represents an SOA record

type ZoneScanner added in v0.1.0

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

ZoneScanner is a simple scanner that provides functionality for zone files. It should not be instantiated manually, instead use NewZoneScanner

func NewZoneScanner added in v0.1.0

func NewZoneScanner(zone string) *ZoneScanner

NewZoneScanner returnes a new ZoneScanner with the zones content.

func (*ZoneScanner) HasNext added in v0.1.0

func (z *ZoneScanner) HasNext() bool

HasNext returns whether the scanner has a next char.

func (*ZoneScanner) Next added in v0.1.0

func (z *ZoneScanner) Next(n int) string

Next Returns the next n chars of the scanners content and sets the new position. If n is greater than the remaining content, only the remaining content will be returned.

func (*ZoneScanner) Peek added in v0.1.0

func (z *ZoneScanner) Peek(n int) string

Peek Returns the next n chars of the scanners content without changing the position. If n is greater than the remaining content, only the remaining content will be returned.

func (*ZoneScanner) SkipToEoL added in v0.1.0

func (z *ZoneScanner) SkipToEoL()

SkipToEoL goes to the end of the line

func (*ZoneScanner) SkipWhitespace added in v0.1.0

func (z *ZoneScanner) SkipWhitespace()

SkipWhitespace goes to the next char that is not whitespace

Jump to

Keyboard shortcuts

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