自定义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.cloud等
获取域名解析记录列表 - 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记录的记录值通常是一个IP
- route- 线路代号,在你使用的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记录的记录值通常是一个IP
- route- 线路代号,在你使用的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记录的记录值通常是一个IP
- route- 线路代号,在你使用的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记录的记录值通常是一个IP
- route- 线路代号,在你使用的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记录的记录值通常是一个IP
- route- 线路代号,在你使用的DNS系统中的线路代号,是一个字符串,可以为空
- ttl- 记录在DNS中的刷新时间(也叫存活时间),是一个数字(注意:千万不能填写一个字符串类型的值),可以填写为0
 
- newRecord- 新记录相关信息- id- 记录的原始ID,即在你使用的DNS系统中记录的ID,是一个字符串,可以为空字符串
- name- 记录名,不包括域名部分,比如- www、- cdn等,可能为空
- type- 记录类型,大写的记录类型,比如- A、- AAAA、- CNAME、- TXT等
- value- 记录值,比如A记录的记录值通常是一个IP
- route- 线路代号,在你使用的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记录的记录值通常是一个IP
- route- 线路代号,在你使用的DNS系统中的线路代号,是一个字符串,可以为空
- ttl- 记录在DNS中的刷新时间(也叫存活时间),是一个数字(注意:千万不能填写一个字符串类型的值),可以填写为0
 
期望返回: 不处理返回内容。
默认线路 - DefaultRoute
请求:
{
  "action": "DefaultRoute"
}期望返回:
线路代号其中线路代号(注意这里不是线路名称)是一个字符串类型的内容,可以为空字符串。