1
0
mirror of https://blitiri.com.ar/repos/chasquid synced 2025-12-16 14:27:01 +00:00

test/util/minidns: Support priority in MX records

minidns supports MX records, but today it hard-codes priority=10.

This is limiting when creating test scenarios that depend on having
different MX priorities.

This patch adds support for specifying the priority in MX records.
This commit is contained in:
Alberto Bertogli
2025-04-11 13:00:30 +01:00
parent 9524d307eb
commit b65ec36916
4 changed files with 21 additions and 10 deletions

View File

@@ -1,11 +1,11 @@
# srv-a zone # srv-a zone
srv-a A 127.0.0.1 srv-a A 127.0.0.1
srv-a AAAA ::1 srv-a AAAA ::1
srv-a MX srv-a srv-a MX 10 srv-a
srv-a TXT v=spf1 a srv-a TXT v=spf1 a
# srv-b zone # srv-b zone
srv-b A 127.0.0.1 srv-b A 127.0.0.1
srv-b AAAA ::1 srv-b AAAA ::1
srv-b MX srv-b srv-b MX 10 srv-b
srv-b TXT v=spf1 a srv-b TXT v=spf1 a

View File

@@ -1,11 +1,11 @@
# srv-a zone # srv-a zone
srv-a A 127.0.0.1 srv-a A 127.0.0.1
srv-a AAAA ::1 srv-a AAAA ::1
srv-a MX srv-a srv-a MX 10 srv-a
srv-a TXT v=spf1 a srv-a TXT v=spf1 a
# srv-b zone # srv-b zone
srv-b A 127.0.0.1 srv-b A 127.0.0.1
srv-b AAAA ::1 srv-b AAAA ::1
srv-b MX srv-b srv-b MX 10 srv-b
srv-b TXT v=spf1 a srv-b TXT v=spf1 a

View File

@@ -3,11 +3,11 @@
# srv-a zone # srv-a zone
srv-a A 127.0.0.1 srv-a A 127.0.0.1
srv-a AAAA ::1 srv-a AAAA ::1
srv-a MX srv-a srv-a MX 10 srv-a
srv-a TXT v=spf1 -all srv-a TXT v=spf1 -all
# srv-b zone # srv-b zone
srv-b A 127.0.0.1 srv-b A 127.0.0.1
srv-b AAAA ::1 srv-b AAAA ::1
srv-b MX srv-b srv-b MX 10 srv-b
srv-b TXT v=spf1 a srv-b TXT v=spf1 a

View File

@@ -10,7 +10,7 @@
// For example: // For example:
// //
// blah A 1.2.3.4 // blah A 1.2.3.4
// blah MX mx1 // blah MX 10 mx1
// //
// Supported types: A, AAAA, MX, TXT. // Supported types: A, AAAA, MX, TXT.
// //
@@ -26,6 +26,7 @@ import (
"net" "net"
"os" "os"
"regexp" "regexp"
"strconv"
"strings" "strings"
"sync" "sync"
@@ -280,13 +281,23 @@ func (m *miniDNS) loadZones(f *os.File) {
body = aaaa body = aaaa
case "mx": case "mx":
qType = dnsmessage.TypeMX qType = dnsmessage.TypeMX
if !strings.HasPrefix(value, ".") { if !strings.HasSuffix(value, ".") {
value += "." value += "."
} }
// MX records value are in the form of "<preference> <host>".
prefS, host, ok := strings.Cut(value, " ")
if !ok {
log.Fatalf("line %d: invalid MX value %q", lineno, value)
}
pref, err := strconv.ParseUint(prefS, 10, 16)
if err != nil {
log.Fatalf("line %d: invalid MX preference %q", lineno, prefS)
}
body = &dnsmessage.MXResource{ body = &dnsmessage.MXResource{
Pref: 10, Pref: uint16(pref),
MX: dnsmessage.MustNewName(value), MX: dnsmessage.MustNewName(host),
} }
case "txt": case "txt":
qType = dnsmessage.TypeTXT qType = dnsmessage.TypeTXT