Skip to content

Commit

Permalink
implement config parsing
Browse files Browse the repository at this point in the history
  • Loading branch information
jwhited committed May 13, 2020
1 parent 48c4ad5 commit 9963322
Showing 1 changed file with 22 additions and 2 deletions.
24 changes: 22 additions & 2 deletions setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"github.com/caddyserver/caddy"
"github.com/coredns/coredns/core/dnsserver"
"github.com/coredns/coredns/plugin"
"github.com/miekg/dns"
"golang.zx2c4.com/wireguard/wgctrl"
)

Expand All @@ -14,19 +15,38 @@ func init() {
}

func setup(c *caddy.Controller) error {
c.Next() // Ignore "wgsd" and give us the next token.

// return an error if there is no zone specified
if !c.NextArg() {
return plugin.Error("wgsd", c.ArgErr())
}
zone := dns.Fqdn(c.Val())

// return an error if there is no device name specified
if !c.NextArg() {
return plugin.Error("wgsd", c.ArgErr())
}
device := c.Val()

// return an error if there are more tokens on this line
if c.NextArg() {
return plugin.Error("wgsd", c.ArgErr())
}

client, err := wgctrl.New()
if err != nil {
return fmt.Errorf("wgsd: error constructing wgctrl client: %v",
err)
}

// TODO: parse zone and wireguard device name from config

// Add the Plugin to CoreDNS, so Servers can use it in their plugin chain.
dnsserver.GetConfig(c).AddPlugin(func(next plugin.Handler) plugin.Handler {
return &WGSD{
Next: next,
client: client,
zone: zone,
device: device,
}
})

Expand Down

0 comments on commit 9963322

Please sign in to comment.