自定义HTTP DNS

在”域名解析”–“DNS服务商”中,可以添加自定义HTTP DNS。添加并在集群中使用后,当集群的节点、网站服务的DNS记录需要变更时,会自动将请求发送到这个HTTP DNS中的HTTP URL地址上:

  1. 节点|网站服务解析记录变更 <--> API节点 <--> 你的自定义接口(HTTP URL

校验请求

在接收到的请求Header中,会自动设置以下三个参数:

  • Timestamp - Unix时间戳,目前是10位
  • Token - 用来校验请求的合法性,算法是 sha1("私钥@Timestamp值") 并转换为16进制的小写字符串;其中私钥值在添加DNS服务商时会自动生成;
  • User-Agent - GoEdge产品名称和版本

当接收到请求时,通常我们需要校验:

  1. Timestamp值是否已过期,通过时间戳对比检查时间戳是否离现在时间过长,来检查请求是否过期;前提是你的接口所在服务器时间和API节点服务器时间需要一致;
  2. 检查Token值是否合法,通过界面获取的私钥和接收到的时间戳值进行sha1运算,对比接收到的Token是否一致。

请求发送方式

所有请求均以POST方式发送,发送的内容均为JSON格式,类似于:

  1. {
  2. "action": "GetRecords",
  3. "domain": "example.com"
  4. }

返回的内容除了默认线路动作(DefaultRoute)外,通常都是JSON格式。

需要处理的动作

获取域名解析记录列表 - GetRecords

请求:

  1. {
  2. "action": "GetRecords",
  3. "domain": "域名"
  4. }

其中:

  • domain - 是CDN集群的主域名,类似于 example.com,通常只支持一级域名

期待返回:

  1. [
  2. {
  3. "id": "记录ID 1",
  4. "name": "记录名",
  5. "type": "记录类型",
  6. "value": "记录值",
  7. "route": "线路代号",
  8. "ttl": "刷新时间"
  9. },
  10. {
  11. "id": "记录ID 2",
  12. ...
  13. },
  14. {
  15. "id": "记录ID 3",
  16. ...
  17. }
  18. ]

其中:

  • id - 记录的原始ID,即在你使用的DNS系统中记录的ID,是一个字符串,可以为空字符串
  • name - 记录名,不包括域名部分,比如 wwwcdn 等,可能为空
  • type - 记录类型,大写的记录类型,比如 AAAAACNAMETXT
  • value - 记录值,比如A记录的记录值通常是一个IP
  • route - 线路代号,在你使用的DNS系统中的线路代号,是一个字符串,可以为空
  • ttl - 记录在DNS中的刷新时间(也叫存活时间),是一个数字(注意:千万不能填写一个字符串类型的值),可以填写为0

读取域名支持的线路数据 - GetRoutes

请求:

  1. {
  2. "action": "GetRoutes",
  3. "domain": "域名"
  4. }

其中:

  • domain - 是CDN集群的主域名,类似于 example.com,通常只支持一级域名

期待返回:

  1. [
  2. {
  3. "name": "线路名1",
  4. "code": "线路代号1"
  5. },
  6. {
  7. "name": "线路名2",
  8. "code": "线路代号2"
  9. },
  10. ...
  11. ]

其中:

  • name - 线路名,用来在界面上显示线路名称
  • code - 线路代号,用来在其他动作中指定线路

查询单个记录 - QueryRecord

请求:

  1. {
  2. "action": "QueryRecord",
  3. "domain": "域名",
  4. "name": "记录名",
  5. "recordType": "记录类型"
  6. }

其中:

  • domain - 是CDN集群的主域名,类似于 example.com,通常只支持一级域名
  • name - 记录名,不包括域名部分,比如 wwwcdn 等,可能为空
  • recordType - 记录类型,大写的记录类型,比如 AAAAACNAMETXT

期待返回: 如果找到记录则返回对应的记录信息:

  1. {
  2. "id": "记录ID",
  3. "name": "记录名",
  4. "type": "记录类型",
  5. "value": "记录值",
  6. "route": "线路代号",
  7. "ttl": "刷新时间"
  8. }

其中:

  • id - 记录的原始ID,即在你使用的DNS系统中记录的ID,是一个字符串,可以为空字符串
  • name - 记录名,不包括域名部分,比如 wwwcdn 等,可能为空
  • type - 记录类型,大写的记录类型,比如 AAAAACNAMETXT
  • value - 记录值,比如A记录的记录值通常是一个IP
  • route - 线路代号,在你使用的DNS系统中的线路代号,是一个字符串,可以为空
  • ttl - 记录在DNS中的刷新时间(也叫存活时间),是一个数字(注意:千万不能填写一个字符串类型的值),可以填写为0

如果没有找到此解析记录,则返回空或者null。

查询多个记录 - QueryRecords

请求:

  1. {
  2. "action": "QueryRecords",
  3. "domain": "域名",
  4. "name": "记录名",
  5. "recordType": "记录类型"
  6. }

其中:

  • domain - 是CDN集群的主域名,类似于 example.com,通常只支持一级域名
  • name - 记录名,不包括域名部分,比如 wwwcdn 等,可能为空
  • recordType - 记录类型,大写的记录类型,比如 AAAAACNAMETXT

期待返回: 如果找到记录则返回对应的记录信息:

  1. [
  2. {
  3. "id": "记录ID",
  4. "name": "记录名",
  5. "type": "记录类型",
  6. "value": "记录值",
  7. "route": "线路代号",
  8. "ttl": "刷新时间"
  9. },
  10. {
  11. "id": "记录ID 2",
  12. "name": "记录名 2",
  13. "type": "记录类型 2",
  14. "value": "记录值 2",
  15. "route": "线路代号 2",
  16. "ttl": "刷新时间 2"
  17. } ,
  18. ...
  19. ]

其中:

  • id - 记录的原始ID,即在你使用的DNS系统中记录的ID,是一个字符串,可以为空字符串
  • name - 记录名,不包括域名部分,比如 wwwcdn 等,可能为空
  • type - 记录类型,大写的记录类型,比如 AAAAACNAMETXT
  • value - 记录值,比如A记录的记录值通常是一个IP
  • route - 线路代号,在你使用的DNS系统中的线路代号,是一个字符串,可以为空
  • ttl - 记录在DNS中的刷新时间(也叫存活时间),是一个数字(注意:千万不能填写一个字符串类型的值),可以填写为0

如果没有找到此解析记录,则返回空数组([])或者null。

添加记录 - AddRecord

请求:

  1. {
  2. "action": "AddRecord",
  3. "domain": "域名",
  4. "newRecord": {
  5. "id": "记录ID",
  6. "name": "记录名",
  7. "type": "记录类型",
  8. "value": "记录值",
  9. "route": "线路代号",
  10. "ttl": "刷新时间"
  11. }
  12. }

其中:

  • domain - 是CDN集群的主域名,类似于 example.com,通常只支持一级域名
  • newRecord - 记录相关信息
    • id - 记录的原始ID,即在你使用的DNS系统中记录的ID,是一个字符串,可以为空字符串
    • name - 记录名,不包括域名部分,比如 wwwcdn 等,可能为空
    • type - 记录类型,大写的记录类型,比如 AAAAACNAMETXT
    • value - 记录值,比如A记录的记录值通常是一个IP
    • route - 线路代号,在你使用的DNS系统中的线路代号,是一个字符串,可以为空
    • ttl - 记录在DNS中的刷新时间(也叫存活时间),是一个数字(注意:千万不能填写一个字符串类型的值),可以填写为0

期待返回: 不处理返回内容。

修改记录 - UpdateRecord

请求:

  1. {
  2. "action": "UpdateRecord",
  3. "domain": "域名",
  4. "record": {
  5. "id": "记录ID",
  6. "name": "记录名",
  7. "type": "记录类型",
  8. "value": "记录值",
  9. "route": "线路代号",
  10. "ttl": "刷新时间"
  11. },
  12. "newRecord": {
  13. "id": "记录ID",
  14. "name": "记录名",
  15. "type": "记录类型",
  16. "value": "记录值",
  17. "route": "线路代号",
  18. "ttl": "刷新时间"
  19. }
  20. }

其中:

  • domain - 是CDN集群的主域名,类似于 example.com,通常只支持一级域名
  • record - 老记录信息
    • id - 记录的原始ID,即在你使用的DNS系统中记录的ID,是一个字符串,可以为空字符串
    • name - 记录名,不包括域名部分,比如 wwwcdn 等,可能为空
    • type - 记录类型,大写的记录类型,比如 AAAAACNAMETXT
    • value - 记录值,比如A记录的记录值通常是一个IP
    • route - 线路代号,在你使用的DNS系统中的线路代号,是一个字符串,可以为空
    • ttl - 记录在DNS中的刷新时间(也叫存活时间),是一个数字(注意:千万不能填写一个字符串类型的值),可以填写为0
  • newRecord - 新记录相关信息
    • id - 记录的原始ID,即在你使用的DNS系统中记录的ID,是一个字符串,可以为空字符串
    • name - 记录名,不包括域名部分,比如 wwwcdn 等,可能为空
    • type - 记录类型,大写的记录类型,比如 AAAAACNAMETXT
    • value - 记录值,比如A记录的记录值通常是一个IP
    • route - 线路代号,在你使用的DNS系统中的线路代号,是一个字符串,可以为空
    • ttl - 记录在DNS中的刷新时间(也叫存活时间),是一个数字(注意:千万不能填写一个字符串类型的值),可以填写为0

期待返回: 不处理返回内容。

删除记录 - DeleteRecord

请求:

  1. {
  2. "action": "DeleteRecord",
  3. "domain": "域名",
  4. "record": {
  5. "id": "记录ID",
  6. "name": "记录名",
  7. "type": "记录类型",
  8. "value": "记录值",
  9. "route": "线路代号",
  10. "ttl": "刷新时间"
  11. }
  12. }

其中:

  • domain - 是CDN集群的主域名,类似于 example.com,通常只支持一级域名
  • record - 记录相关信息
    • id - 记录的原始ID,即在你使用的DNS系统中记录的ID,是一个字符串,可以为空字符串
    • name - 记录名,不包括域名部分,比如 wwwcdn 等,可能为空
    • type - 记录类型,大写的记录类型,比如 AAAAACNAMETXT
    • value - 记录值,比如A记录的记录值通常是一个IP
    • route - 线路代号,在你使用的DNS系统中的线路代号,是一个字符串,可以为空
    • ttl - 记录在DNS中的刷新时间(也叫存活时间),是一个数字(注意:千万不能填写一个字符串类型的值),可以填写为0

期待返回: 不处理返回内容。

默认线路 - DefaultRoute

请求:

  1. {
  2. "action": "DefaultRoute"
  3. }

期待返回:

  1. 线路代号

其中线路代号是一个字符串类型的内容,可以为空字符串。