自定义HTTP DNS
在”域名解析”–“DNS服务商”中,可以添加自定义HTTP DNS。添加并在集群中使用后,当集群的节点、网站的DNS记录需要变更时,会自动将请求发送到这个HTTP DNS中的HTTP URL地址上:
节点|网站解析记录变更 <--> API节点 <--> 你的自定义接口(HTTP URL)
校验请求
在接收到的请求Header中,会自动设置以下三个参数:
Timestamp
- Unix时间戳,目前是10位Token
- 用来校验请求的合法性,算法是sha1("私钥@Timestamp值")
并转换为16进制的小写字符串;其中私钥值在添加DNS服务商时会自动生成;User-Agent
- GoEdge产品名称和版本
当接收到请求时,通常我们需要校验:
Timestamp
值是否已过期,通过时间戳对比检查时间戳是否离现在时间过长,来检查请求是否过期;前提是你的接口所在服务器时间和API节点服务器时间需要一致;- 检查
Token
值是否合法,通过界面获取的私钥和接收到的时间戳值进行sha1运算,对比接收到的Token
是否一致。
请求发送方式
所有请求均以POST方式发送,发送的内容均为JSON格式,类似于:
{
"action": "GetRecords",
"domain": "example.com"
}
返回的内容除了默认线路动作(DefaultRoute)外,通常都是JSON格式。
需要处理的动作
获取域名列表
请求:
// 不传递任何参数
{
}
// 或者
{
"action": "GetDomains"
}
期望返回:
["域名1", "域名2", ...]
其中:
域名
- 指的是顶级域名,比如example.com
、goedge.rip
等
获取域名解析记录列表 - GetRecords
请求:
{
"action": "GetRecords",
"domain": "域名"
}
其中:
domain
- 是CDN集群的主域名,类似于example.com
,通常只支持一级域名
期望返回:
[
{
"id": "记录ID 1",
"name": "记录名",
"type": "记录类型",
"value": "记录值",
"route": "线路代号",
"ttl": "刷新时间"
},
{
"id": "记录ID 2",
...
},
{
"id": "记录ID 3",
...
}
]
其中:
id
- 记录的原始ID,即在你使用的DNS系统中记录的ID,是一个字符串,可以为空字符串name
- 记录名,不包括域名部分,比如www
、cdn
等,可能为空type
- 记录类型,大写的记录类型,比如A
、AAAA
、CNAME
、TXT
等value
- 记录值,比如A记录的记录值通常是一个IProute
- 线路代号,在你使用的DNS系统中的线路代号,是一个字符串,可以为空ttl
- 记录在DNS中的刷新时间(也叫存活时间),是一个数字(注意:千万不能填写一个字符串类型的值),可以填写为0
读取域名支持的线路数据 - GetRoutes
请求:
{
"action": "GetRoutes",
"domain": "域名"
}
其中:
domain
- 是CDN集群的主域名,类似于example.com
,通常只支持一级域名
期望返回:
[
{
"name": "线路名1",
"code": "线路代号1"
},
{
"name": "线路名2",
"code": "线路代号2"
},
...
]
其中:
name
- 线路名,用来在界面上显示线路名称code
- 线路代号,用来在其他动作中指定线路
如果没有任何线路,可以返回一个空数组:
[]
查询单个记录 - QueryRecord
请求:
{
"action": "QueryRecord",
"domain": "域名",
"name": "记录名",
"recordType": "记录类型"
}
其中:
domain
- 是CDN集群的主域名,类似于example.com
,通常只支持一级域名name
- 记录名,不包括域名部分,比如www
、cdn
等,可能为空recordType
- 记录类型,大写的记录类型,比如A
、AAAA
、CNAME
、TXT
等
期望返回: 如果找到记录则返回对应的记录信息:
{
"id": "记录ID",
"name": "记录名",
"type": "记录类型",
"value": "记录值",
"route": "线路代号",
"ttl": "刷新时间"
}
其中:
id
- 记录的原始ID,即在你使用的DNS系统中记录的ID,是一个字符串,可以为空字符串name
- 记录名,不包括域名部分,比如www
、cdn
等,可能为空type
- 记录类型,大写的记录类型,比如A
、AAAA
、CNAME
、TXT
等value
- 记录值,比如A记录的记录值通常是一个IProute
- 线路代号,在你使用的DNS系统中的线路代号,是一个字符串,可以为空ttl
- 记录在DNS中的刷新时间(也叫存活时间),是一个数字(注意:千万不能填写一个字符串类型的值),可以填写为0
如果没有找到此解析记录,则返回空或者null。
查询多个记录 - QueryRecords
请求:
{
"action": "QueryRecords",
"domain": "域名",
"name": "记录名",
"recordType": "记录类型"
}
其中:
domain
- 是CDN集群的主域名,类似于example.com
,通常只支持一级域名name
- 记录名,不包括域名部分,比如www
、cdn
等,可能为空recordType
- 记录类型,大写的记录类型,比如A
、AAAA
、CNAME
、TXT
等
期望返回: 如果找到记录则返回对应的记录信息:
[
{
"id": "记录ID",
"name": "记录名",
"type": "记录类型",
"value": "记录值",
"route": "线路代号",
"ttl": "刷新时间"
},
{
"id": "记录ID 2",
"name": "记录名 2",
"type": "记录类型 2",
"value": "记录值 2",
"route": "线路代号 2",
"ttl": "刷新时间 2"
} ,
...
]
其中:
id
- 记录的原始ID,即在你使用的DNS系统中记录的ID,是一个字符串,可以为空字符串name
- 记录名,不包括域名部分,比如www
、cdn
等,可能为空type
- 记录类型,大写的记录类型,比如A
、AAAA
、CNAME
、TXT
等value
- 记录值,比如A记录的记录值通常是一个IProute
- 线路代号,在你使用的DNS系统中的线路代号,是一个字符串,可以为空ttl
- 记录在DNS中的刷新时间(也叫存活时间),是一个数字(注意:千万不能填写一个字符串类型的值),可以填写为0
如果没有找到此解析记录,则返回空数组([]
)或者null。
添加记录 - AddRecord
请求:
{
"action": "AddRecord",
"domain": "域名",
"newRecord": {
"id": "记录ID",
"name": "记录名",
"type": "记录类型",
"value": "记录值",
"route": "线路代号",
"ttl": "刷新时间"
}
}
其中:
domain
- 是CDN集群的主域名,类似于example.com
,通常只支持一级域名newRecord
- 记录相关信息id
- 记录的原始ID,即在你使用的DNS系统中记录的ID,是一个字符串,可以为空字符串name
- 记录名,不包括域名部分,比如www
、cdn
等,可能为空type
- 记录类型,大写的记录类型,比如A
、AAAA
、CNAME
、TXT
等value
- 记录值,比如A记录的记录值通常是一个IProute
- 线路代号,在你使用的DNS系统中的线路代号,是一个字符串,可以为空ttl
- 记录在DNS中的刷新时间(也叫存活时间),是一个数字(注意:千万不能填写一个字符串类型的值),可以填写为0
期望返回: 不处理返回内容。
修改记录 - UpdateRecord
请求:
{
"action": "UpdateRecord",
"domain": "域名",
"record": {
"id": "记录ID",
"name": "记录名",
"type": "记录类型",
"value": "记录值",
"route": "线路代号",
"ttl": "刷新时间"
},
"newRecord": {
"id": "记录ID",
"name": "记录名",
"type": "记录类型",
"value": "记录值",
"route": "线路代号",
"ttl": "刷新时间"
}
}
其中:
domain
- 是CDN集群的主域名,类似于example.com
,通常只支持一级域名record
- 老记录信息id
- 记录的原始ID,即在你使用的DNS系统中记录的ID,是一个字符串,可以为空字符串name
- 记录名,不包括域名部分,比如www
、cdn
等,可能为空type
- 记录类型,大写的记录类型,比如A
、AAAA
、CNAME
、TXT
等value
- 记录值,比如A记录的记录值通常是一个IProute
- 线路代号,在你使用的DNS系统中的线路代号,是一个字符串,可以为空ttl
- 记录在DNS中的刷新时间(也叫存活时间),是一个数字(注意:千万不能填写一个字符串类型的值),可以填写为0
newRecord
- 新记录相关信息id
- 记录的原始ID,即在你使用的DNS系统中记录的ID,是一个字符串,可以为空字符串name
- 记录名,不包括域名部分,比如www
、cdn
等,可能为空type
- 记录类型,大写的记录类型,比如A
、AAAA
、CNAME
、TXT
等value
- 记录值,比如A记录的记录值通常是一个IProute
- 线路代号,在你使用的DNS系统中的线路代号,是一个字符串,可以为空ttl
- 记录在DNS中的刷新时间(也叫存活时间),是一个数字(注意:千万不能填写一个字符串类型的值),可以填写为0
期望返回: 不处理返回内容。
删除记录 - DeleteRecord
请求:
{
"action": "DeleteRecord",
"domain": "域名",
"record": {
"id": "记录ID",
"name": "记录名",
"type": "记录类型",
"value": "记录值",
"route": "线路代号",
"ttl": "刷新时间"
}
}
其中:
domain
- 是CDN集群的主域名,类似于example.com
,通常只支持一级域名record
- 记录相关信息id
- 记录的原始ID,即在你使用的DNS系统中记录的ID,是一个字符串,可以为空字符串name
- 记录名,不包括域名部分,比如www
、cdn
等,可能为空type
- 记录类型,大写的记录类型,比如A
、AAAA
、CNAME
、TXT
等value
- 记录值,比如A记录的记录值通常是一个IProute
- 线路代号,在你使用的DNS系统中的线路代号,是一个字符串,可以为空ttl
- 记录在DNS中的刷新时间(也叫存活时间),是一个数字(注意:千万不能填写一个字符串类型的值),可以填写为0
期望返回: 不处理返回内容。
默认线路 - DefaultRoute
请求:
{
"action": "DefaultRoute"
}
期望返回:
线路代号
其中线路代号(注意这里不是线路名称)是一个字符串类型的内容,可以为空字符串。