描述
pdsql 使用 PowerDNS 通用 sql 作为后端。
使用 jinzhu/gorm 数据库驱动程序,支持与 Gorm 同样的数量数据库。
语法
pdsql <dialect> <arg> {
// enable debug mode
debug [db]
// create table for test
auto-migrate
}
安装驱动程序
pdsql 需要用于方言的数据库驱动程序,要安装一个驱动程序,你需要在 `plugin.cfg` 中添加一个导入,例如
pdsql_mysql:github.com/jinzhu/gorm/dialects/mysql
pdsql_sqlite:github.com/jinzhu/gorm/dialects/sqlite
pdsql_mysql 和 pdsql_sqlite 无意义,指定它们是为了防止重复。
示例
在端口 `1053` 上启动一个服务器,使用 `test.db` 作为后端。
test.:1053 {
pdsql sqlite3 ./test.db {
debug db
auto-migrate
}
}
准备用于测试的数据。
# 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)'
当查询 “wener.test. A” 时,CoreDNS 将响应为
;; QUESTION SECTION:
;wener.test. IN A
;; ANSWER SECTION:
wener.test. 3600 IN A 192.168.1.1
当查询 “wener.test. ANY” 时,CoreDNS 将响应为
;; QUESTION SECTION:
;wener.test. IN ANY
;; ANSWER SECTION:
wener.test. 3600 IN A 192.168.1.1
wener.test. 3600 IN TXT "TXT Here"
通配符
# 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)'
当查询 “first.example.test. A” 时,CoreDNS 将响应为
;; QUESTION SECTION:
;first.example.test. IN A
;; ANSWER SECTION:
first.example.test. 3600 IN A 192.168.1.1