-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsetup.go
74 lines (63 loc) · 1.37 KB
/
setup.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package rds
import (
"log"
"github.com/coredns/coredns/core/dnsserver"
"github.com/coredns/coredns/plugin"
"github.com/jinzhu/gorm"
"github.com/mholt/caddy"
)
func init() {
caddy.RegisterPlugin("pdsql", caddy.Plugin{
ServerType: "dns",
Action: setup,
})
}
func setup(c *caddy.Controller) error {
backend := PowerDNSGenericSQLBackend{}
c.Next()
if !c.NextArg() {
return plugin.Error("pdsql", c.ArgErr())
}
dialect := c.Val()
if !c.NextArg() {
return plugin.Error("pdsql", c.ArgErr())
}
arg := c.Val()
db, err := gorm.Open(dialect, arg)
if err != nil {
return err
}
backend.DB = db
for c.NextBlock() {
x := c.Val()
switch x {
case "debug":
args := c.RemainingArgs()
for _, v := range args {
switch v {
case "db":
backend.DB = backend.DB.Debug()
}
}
backend.Debug = true
log.Println(Name, "enable log", args)
case "auto-migrate":
// currently only use records table
if err := backend.AutoMigrate(); err != nil {
return err
}
default:
return plugin.Error("pdsql", c.Errf("unexpected '%v' command", x))
}
}
if c.NextArg() {
return plugin.Error("pdsql", c.ArgErr())
}
dnsserver.
GetConfig(c).
AddPlugin(func(next plugin.Handler) plugin.Handler { return backend })
return nil
}
func (self PowerDNSGenericSQLBackend) AutoMigrate() error {
return self.DB.AutoMigrate(&Record{}, &Domain{}).Error
}