README
¶
title: "pdsql" description: "pdsql use powerdns generic sql as backend." weight: 10 tags: [ "plugin" , "pdsql" ] categories: [ "plugin", "external" ] date: "2017-12-09T10:26:00+08:00" repo: "https://github.com/wenerme/coredns-pdsql" home: "https://github.com/wenerme/coredns-pdsql/blob/master/README.md"
pdsql
pdsql use PowerDNS generic sql as backend.
Use jinzhu/gorm to handle database, support many database as gorm dose.
Syntax
pdsql <dialect> <arg> {
# enable debug mode
debug [db]
# create table for test
auto-migrate
}
Install Driver
pdsql need db driver for dialect, to install a driver you need to add import in plugin.cfg, like
pdsql_mysql:github.com/jinzhu/gorm/dialects/mysql
pdsql_sqlite:github.com/jinzhu/gorm/dialects/sqlite
pdsql_mysql and pdsql_sqlite are meaningless, choose to prevent duplicated.
Examples
Start a server on the 1053 port, use test.db as backend.
test.:1053 {
pdsql sqlite3 ./test.db {
debug db
auto-migrate
}
}
Prepare data for test.
# Insert records for wener.test
sqlite3 ./test.db 'insert into records(name,type,content,ttl,disabled)values("wener.test","A","192.168.1.1",3600,0)'
sqlite3 ./test.db 'insert into records(name,type,content,ttl,disabled)values("wener.test","TXT","TXT Here",3600,0)'
When queried for "wener.test. A", CoreDNS will respond with:
;; QUESTION SECTION:
;wener.test. IN A
;; ANSWER SECTION:
wener.test. 3600 IN A 192.168.1.1
When queried for "wener.test. ANY", CoreDNS will respond with:
;; QUESTION SECTION:
;wener.test. IN ANY
;; ANSWER SECTION:
wener.test. 3600 IN A 192.168.1.1
wener.test. 3600 IN TXT "TXT Here"
Wildcard
# domain id 1
sqlite3 ./test.db 'insert into domains(name,type)values("example.test","NATIVE")'
sqlite3 ./test.db 'insert into records(domain_id,name,type,content,ttl,disabled)values(1,"*.example.test","A","192.168.1.1",3600,0)'
When queried for "first.example.test. A", CoreDNS will respond with:
;; QUESTION SECTION:
;first.example.test. IN A
;; ANSWER SECTION:
first.example.test. 3600 IN A 192.168.1.1
TODO
- support wildcard record
Documentation
¶
Overview ¶
Package pdsql implements a plugin that query powerdns database to resolve the coredns query
Index ¶
- Constants
- func ParseSOA(rr *dns.SOA, line string) bool
- func WildcardMatch(s1, s2 string) bool
- type PowerDNSGenericSQLBackend
- func (pdb PowerDNSGenericSQLBackend) AutoMigrate() error
- func (pdb PowerDNSGenericSQLBackend) Name() string
- func (pdb PowerDNSGenericSQLBackend) SearchWildcard(qname string, qtype uint16) (redords []*pdnsmodel.Record, err error)
- func (pdb PowerDNSGenericSQLBackend) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error)
Constants ¶
View Source
const Name = "pdsql"
Variables ¶
This section is empty.
Functions ¶
Types ¶
type PowerDNSGenericSQLBackend ¶
func (PowerDNSGenericSQLBackend) AutoMigrate ¶
func (pdb PowerDNSGenericSQLBackend) AutoMigrate() error
func (PowerDNSGenericSQLBackend) Name ¶
func (pdb PowerDNSGenericSQLBackend) Name() string
func (PowerDNSGenericSQLBackend) SearchWildcard ¶
Click to show internal directories.
Click to hide internal directories.