dns

DNS client and server implementations using the Go project's dnsmessage package
Log | Files | Refs | README | LICENSE

commit 015a48510c60210055aa9a6ac0ca5fa6d5678d74
parent a8959a402c8c0f2557c2a365ab5b3d83c2cfa11d
Author: Oliver Lowe <o@olowe.co>
Date:   Thu, 18 Nov 2021 12:05:57 +1100

Add config option to understand DNS-over-TLS forwarding

Diffstat:
Mcmd/dohproxy/config.go | 21++++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/cmd/dohproxy/config.go b/cmd/dohproxy/config.go @@ -11,6 +11,7 @@ import ( type config struct { forwardaddr string listenaddr string + usetls bool } func configFromFile(name string) (config, error) { @@ -31,14 +32,28 @@ func parseConfig(r io.Reader) (config, error) { continue // skip config comments } fields := strings.Fields(line) - if len(fields) > 2 { - return c, fmt.Errorf("too many values for key %s", fields[0]) - } switch k := fields[0]; k { case "listen": + if len(fields) < 2 { + return c, fmt.Errorf("missing value for key %s", k) + } else if len(fields) > 2 { + return c, fmt.Errorf("too many values for key %s", k) + } c.listenaddr = fields[1] case "forward": + if len(fields) < 2 { + return c, fmt.Errorf("missing value for key %s", k) + } else if len(fields) > 3 { + return c, fmt.Errorf("too many values for key %s", k) + } c.forwardaddr = fields[1] + if len(fields) == 3 { + if fields[2] == "tls" { + c.usetls = true + } else { + return c, fmt.Errorf("invalid tls option in forward") + } + } default: return c, fmt.Errorf("unknown key %s", k) }