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:
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)
}