plugin/chaos: add default list of authors (#2737)

* plugin/chaos: add default list of authors

Add a owners_generate.go that generates a Owners variables for use in
the chaos plugin.

Add a default list of authors in the authors.bind CH zone. When doing a
query this now returns:

~~~ sh
% dig authors.bind TXT CH

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5456
;; flags: qr rd; QUERY: 1, ANSWER: 22, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;authors.bind.			CH	TXT

;; ANSWER SECTION:
authors.bind.		0	CH	TXT	"bradbeam"
authors.bind.		0	CH	TXT	"chrisohaver"
authors.bind.		0	CH	TXT	"dilyevsky"
authors.bind.		0	CH	TXT	"ekleiner"
authors.bind.		0	CH	TXT	"fastest963"
authors.bind.		0	CH	TXT	"fturib"
authors.bind.		0	CH	TXT	"greenpau"
authors.bind.		0	CH	TXT	"grobie"
authors.bind.		0	CH	TXT	"inigohu"
authors.bind.		0	CH	TXT	"isolus"
authors.bind.		0	CH	TXT	"johnbelamaric"
authors.bind.		0	CH	TXT	"miekg"
authors.bind.		0	CH	TXT	"nchrisdk"
authors.bind.		0	CH	TXT	"nitisht"
authors.bind.		0	CH	TXT	"pmoroney"
authors.bind.		0	CH	TXT	"rajansandeep"
authors.bind.		0	CH	TXT	"rdrozhdzh"
authors.bind.		0	CH	TXT	"rtreffer"
authors.bind.		0	CH	TXT	"stp-ip"
authors.bind.		0	CH	TXT	"superq"
authors.bind.		0	CH	TXT	"varyoo"
authors.bind.		0	CH	TXT	"yongtang"
~~~

This was hard to do previously as we didn't hardcode this in the source,
but now with OWNERS files we can just generate this list.

Privacy wise this isn't worse than being listed in OWNERS file in the
first place. And it's a nice hat tip to the people making CoreDNS
better.

Signed-off-by: Miek Gieben <miek@miek.nl>

* Sticklet bot comments

Signed-off-by: Miek Gieben <miek@miek.nl>
This commit is contained in:
Miek Gieben
2019-03-31 19:01:11 +01:00
committed by Yong Tang
parent 1e150674c5
commit 99c3d065bc
9 changed files with 136 additions and 28 deletions

View File

@@ -1,6 +1,10 @@
//go:generate go run owners_generate.go
package chaos
import (
"sort"
"github.com/coredns/coredns/core/dnsserver"
"github.com/coredns/coredns/plugin"
@@ -16,7 +20,7 @@ func init() {
}
func setup(c *caddy.Controller) error {
version, authors, err := chaosParse(c)
version, authors, err := parse(c)
if err != nil {
return plugin.Error("chaos", err)
}
@@ -28,28 +32,42 @@ func setup(c *caddy.Controller) error {
return nil
}
func chaosParse(c *caddy.Controller) (string, map[string]struct{}, error) {
func parse(c *caddy.Controller) (string, []string, error) {
// Set here so we pick up AppName and AppVersion that get set in coremain's init().
chaosVersion = caddy.AppName + "-" + caddy.AppVersion
version := ""
authors := make(map[string]struct{})
for c.Next() {
args := c.RemainingArgs()
if len(args) == 0 {
return chaosVersion, nil, nil
return trim(chaosVersion), Owners, nil
}
if len(args) == 1 {
return args[0], nil, nil
return trim(args[0]), Owners, nil
}
version = args[0]
authors := make(map[string]struct{})
for _, a := range args[1:] {
authors[a] = struct{}{}
}
return version, authors, nil
list := []string{}
for k := range authors {
k = trim(k) // limit size to 255 chars
list = append(list, k)
}
sort.Strings(list)
return version, list, nil
}
return version, authors, nil
return version, Owners, nil
}
func trim(s string) string {
if len(s) < 256 {
return s
}
return s[:255]
}
var chaosVersion string