diff options
Diffstat (limited to 'att script/3_v6_DDoS/code/辅助权威服务器/plugin/metadata/setup.go')
| -rw-r--r-- | att script/3_v6_DDoS/code/辅助权威服务器/plugin/metadata/setup.go | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/att script/3_v6_DDoS/code/辅助权威服务器/plugin/metadata/setup.go b/att script/3_v6_DDoS/code/辅助权威服务器/plugin/metadata/setup.go new file mode 100644 index 0000000..9ebf7c9 --- /dev/null +++ b/att script/3_v6_DDoS/code/辅助权威服务器/plugin/metadata/setup.go @@ -0,0 +1,45 @@ +package metadata + +import ( + "ohmydns2/core/dnsserver" + "ohmydns2/plugin" + + "github.com/coredns/caddy" +) + +func init() { plugin.Register("metadata", setup) } + +func setup(c *caddy.Controller) error { + m, err := metadataParse(c) + if err != nil { + return err + } + dnsserver.GetConfig(c).AddPlugin(func(next plugin.Handler) plugin.Handler { + m.Next = next + return m + }) + + c.OnStartup(func() error { + plugins := dnsserver.GetConfig(c).Handlers() + for _, p := range plugins { + if met, ok := p.(Provider); ok { + m.Providers = append(m.Providers, met) + } + } + return nil + }) + + return nil +} + +func metadataParse(c *caddy.Controller) (*Metadata, error) { + m := &Metadata{} + c.Next() + + m.Zones = plugin.OriginsFromArgsOrServerBlock(c.RemainingArgs(), c.ServerBlockKeys) + + if c.NextBlock() || c.Next() { + return nil, plugin.Error("metadata", c.ArgErr()) + } + return m, nil +} |
