pdsql

源代码 主页

通过以下方式启用
pdsql:github.com/wenerme/coredns-pdsql

pdsql - 使用 PowerDNS 通用 SQL 作为后端。

描述

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