Fix braces and comments, esp for SOA records
This commit is contained in:
parent
a4ac06b8c3
commit
73012b7dd5
|
@ -5,7 +5,6 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
"text/scanner"
|
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -96,33 +95,18 @@ func TestDotInName(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestParse(t *testing.T) {
|
func TestParseZone(t *testing.T) {
|
||||||
tests := map[string]string{
|
zone := `zzzzz.miek.nl. 86400 IN RRSIG NSEC 8 3 86400 20110823011301 20110724011301 12051 miek.nl. lyRljEQFOmajcdo6bBI67DsTlQTGU3ag9vlE07u7ynqt9aYBXyE9mkasAK4V0oI32YGb2pOSB6RbbdHwUmSt+cYhOA49tl2t0Qoi3pH21dicJiupdZuyjfqUEqJlQoEhNXGtP/pRvWjNA4pQeOsOAoWq/BDcWCSQB9mh2LvUOH4= ; {keyid = sksak}
|
||||||
"(soa.) (SOA) (soa.) (soa.) (1) (1) (1) (1) (1)()": "soa.\t3600\tIN\tSOA\tsoa. soa. 1 1 1 1 1",
|
zzzzz.miek.nl. 86400 IN NSEC miek.nl. TXT RRSIG NSEC`
|
||||||
"miek.nl. 3600 IN A 127.0.0.1": "miek.nl.\t3600\tIN\tA\t127.0.0.1",
|
// Need to implementen owner substitution in the lexer.
|
||||||
"miek.nl. 3600 IN MX 10 elektron.atoom.net.": "miek.nl.\t3600\tIN\tMX\t10 elektron.atoom.net.",
|
to := make(chan Token)
|
||||||
"miek.nl. IN 3600 A 127.0.0.1": "miek.nl.\t3600\tIN\tA\t127.0.0.1",
|
go ParseZone(strings.NewReader(zone), to)
|
||||||
"miek.nl. A 127.0.0.1": "miek.nl.\t3600\tIN\tA\t127.0.0.1",
|
for x := range to {
|
||||||
"miek.nl. IN AAAA ::1": "miek.nl.\t3600\tIN\tAAAA\t::1",
|
if x.Error == nil {
|
||||||
"miek.nl. IN A 127.0.0.1": "miek.nl.\t3600\tIN\tA\t127.0.0.1",
|
t.Logf("%v\n", x.Rr)
|
||||||
"miek.nl. IN DNSKEY 256 3 5 AwEAAb+8lGNCxJgLS8rYVer6EnHVuIkQDghdjdtewDzU3G5R7PbMbKVRvH2Ma7pQyYceoaqWZQirSj72euPWfPxQnMy9ucCylA+FuH9cSjIcPf4PqJfdupHk9X6EBYjxrCLY4p1/yBwgyBIRJtZtAqM3ceAH2WovEJD6rTtOuHo5AluJ": "miek.nl.\t3600\tIN\tDNSKEY\t256 3 5 AwEAAb+8lGNCxJgLS8rYVer6EnHVuIkQDghdjdtewDzU3G5R7PbMbKVRvH2Ma7pQyYceoaqWZQirSj72euPWfPxQnMy9ucCylA+FuH9cSjIcPf4PqJfdupHk9X6EBYjxrCLY4p1/yBwgyBIRJtZtAqM3ceAH2WovEJD6rTtOuHo5AluJ",
|
|
||||||
"nlnetlabs.nl. 3175 IN DNSKEY 256 3 8 AwEAAdR7XR95OaAN9Rz7TbtPalQ9guQk7zfxTHYNKhsiwTZA9z+F16nD0VeBlk7dNik3ETpT2GLAwr9sntG898JwurCDe353wHPvjZtMCdiTVp3cRCrjuCEvoFpmZNN82H0gaH/4v8mkv/QBDAkDSncYjz/FqHKAeYy3cMcjY6RyVweh": "nlnetlabs.nl.\t3175\tIN\tDNSKEY\t256 3 8 AwEAAdR7XR95OaAN9Rz7TbtPalQ9guQk7zfxTHYNKhsiwTZA9z+F16nD0VeBlk7dNik3ETpT2GLAwr9sntG898JwurCDe353wHPvjZtMCdiTVp3cRCrjuCEvoFpmZNN82H0gaH/4v8mkv/QBDAkDSncYjz/FqHKAeYy3cMcjY6RyVweh",
|
|
||||||
"dnsex.nl. 86400 IN SOA elektron.atoom.net. miekg.atoom.net. 1299256910 14400 3600 604800 86400": "dnsex.nl.\t86400\tIN\tSOA\telektron.atoom.net. miekg.atoom.net. 1299256910 14400 3600 604800 86400",
|
|
||||||
// RRSIG incep/expir fails (new time api)
|
|
||||||
"dnsex.nl. 86400 IN RRSIG SOA 8 2 86400 20110403154150 20110304154150 23334 dnsex.nl. QN6hwJQLEBqRVKmO2LgkuRSx9bkKIZxXlTVtHg5SaiN+8RCTckGtUXkQ vmZiBt3RdIWAjaabQYpEZHgvyjfy4Wwu/9RPDYnLt/qoyr4QKAdujchc m+fMDSbbcC7AN08i5D/dUWfNOHXjRJLY7t7AYB9DBt32LazIb0EU9QiW 5Cg=": "dnsex.nl.\t86400\tIN\tRRSIG\tSOA 8 2 86400 20110403154150 20110304154150 23334 dnsex.nl. QN6hwJQLEBqRVKmO2LgkuRSx9bkKIZxXlTVtHg5SaiN+8RCTckGtUXkQvmZiBt3RdIWAjaabQYpEZHgvyjfy4Wwu/9RPDYnLt/qoyr4QKAdujchcm+fMDSbbcC7AN08i5D/dUWfNOHXjRJLY7t7AYB9DBt32LazIb0EU9QiW5Cg=",
|
|
||||||
}
|
|
||||||
for i, o := range tests {
|
|
||||||
rr, e:= NewRR(i)
|
|
||||||
if e != nil {
|
|
||||||
t.Log("Failed to parse RR")
|
|
||||||
t.Fail()
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if rr.String() != o {
|
|
||||||
t.Logf("`%s' should be equal to\n`%s', but is `%s'\n", i, o, rr.String())
|
|
||||||
t.Fail()
|
|
||||||
} else {
|
} else {
|
||||||
t.Logf("RR is OK: `%s'", rr.String())
|
t.Logf("%v\n", x.Error)
|
||||||
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -154,9 +138,9 @@ func TestParseBrace(t *testing.T) {
|
||||||
for i, o := range tests {
|
for i, o := range tests {
|
||||||
rr, e := NewRR(i)
|
rr, e := NewRR(i)
|
||||||
if e != nil {
|
if e != nil {
|
||||||
t.Log("Failed to parse RR: " + e.Error())
|
t.Log("Failed to parse RR: " + e.Error())
|
||||||
t.Fail()
|
t.Fail()
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if rr.String() != o {
|
if rr.String() != o {
|
||||||
t.Logf("`%s' should be equal to\n`%s', but is `%s'\n", i, o, rr.String())
|
t.Logf("`%s' should be equal to\n`%s', but is `%s'\n", i, o, rr.String())
|
||||||
|
@ -259,6 +243,7 @@ func TestZoneParsingBigZone(t *testing.T) {
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
func TestLexerBrace(t *testing.T) {
|
func TestLexerBrace(t *testing.T) {
|
||||||
f, err := os.Open("/home/miekg/src/tmp/small")
|
f, err := os.Open("/home/miekg/src/tmp/small")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -279,3 +264,4 @@ func TestLexerBrace(t *testing.T) {
|
||||||
t.Logf("%s ", l)
|
t.Logf("%s ", l)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
2
zscan.go
2
zscan.go
|
@ -333,10 +333,10 @@ func zlexer(s scanner.Scanner, c chan lex) {
|
||||||
// If not in a brace this ends the comment AND the RR
|
// If not in a brace this ends the comment AND the RR
|
||||||
if brace == 0 {
|
if brace == 0 {
|
||||||
owner = true
|
owner = true
|
||||||
}
|
|
||||||
l.value = _NEWLINE
|
l.value = _NEWLINE
|
||||||
l.token = "\n"
|
l.token = "\n"
|
||||||
c <- l
|
c <- l
|
||||||
|
}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
if str != "" {
|
if str != "" {
|
||||||
|
|
12
zscan_rr.go
12
zscan_rr.go
|
@ -238,28 +238,28 @@ func setRRSIG(h RR_Header, c chan lex) (RR, *ParseError) {
|
||||||
<-c // _BLANK
|
<-c // _BLANK
|
||||||
l = <-c
|
l = <-c
|
||||||
if i, err := dateToTime(l.token); err != nil {
|
if i, err := dateToTime(l.token); err != nil {
|
||||||
return nil, &ParseError{"bad RRSIG", l}
|
return nil, &ParseError{"bad RRSIG expiration", l}
|
||||||
} else {
|
} else {
|
||||||
rr.Expiration = i
|
rr.Expiration = i
|
||||||
}
|
}
|
||||||
<-c // _BLANK
|
<-c // _BLANK
|
||||||
l = <-c
|
l = <-c
|
||||||
if i, err := dateToTime(l.token); err != nil {
|
if i, err := dateToTime(l.token); err != nil {
|
||||||
return nil, &ParseError{"bad RRSIG", l}
|
return nil, &ParseError{"bad RRSIG inception", l}
|
||||||
} else {
|
} else {
|
||||||
rr.Inception = i
|
rr.Inception = i
|
||||||
}
|
}
|
||||||
<-c // _BLANK
|
<-c // _BLANK
|
||||||
l = <-c
|
l = <-c
|
||||||
if i, err := strconv.Atoi(l.token); err != nil {
|
if i, err := strconv.Atoi(l.token); err != nil {
|
||||||
return nil, &ParseError{"bad RRSIG", l}
|
return nil, &ParseError{"bad RRSIG keytag", l}
|
||||||
} else {
|
} else {
|
||||||
rr.KeyTag = uint16(i)
|
rr.KeyTag = uint16(i)
|
||||||
}
|
}
|
||||||
<-c // _BLANK
|
<-c // _BLANK
|
||||||
l = <-c
|
l = <-c
|
||||||
if !IsDomainName(l.token) {
|
if !IsDomainName(l.token) {
|
||||||
return nil, &ParseError{"bad RRSIG", l}
|
return nil, &ParseError{"bad RRSIG signername", l}
|
||||||
} else {
|
} else {
|
||||||
rr.SignerName = l.token
|
rr.SignerName = l.token
|
||||||
}
|
}
|
||||||
|
@ -267,18 +267,16 @@ func setRRSIG(h RR_Header, c chan lex) (RR, *ParseError) {
|
||||||
l = <-c
|
l = <-c
|
||||||
s := ""
|
s := ""
|
||||||
for l.value != _NEWLINE && l.value != _EOF {
|
for l.value != _NEWLINE && l.value != _EOF {
|
||||||
println("Wat hebben we hier", l.token, l.value)
|
|
||||||
switch l.value {
|
switch l.value {
|
||||||
case _STRING:
|
case _STRING:
|
||||||
s += l.token
|
s += l.token
|
||||||
case _BLANK:
|
case _BLANK:
|
||||||
// Ok
|
// Ok
|
||||||
default:
|
default:
|
||||||
return nil, &ParseError{"bad RRSIG", l}
|
return nil, &ParseError{"bad RRSIG signature", l}
|
||||||
}
|
}
|
||||||
l = <-c
|
l = <-c
|
||||||
}
|
}
|
||||||
println("S", s)
|
|
||||||
rr.Signature = s
|
rr.Signature = s
|
||||||
return rr, nil
|
return rr, nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue