使用PowerDNS API

时间:2018-04-15 21:06:55

标签: dns powerdns

我正在尝试通过PowerDNS HTTP API为我的域添加SPF,DMARC和DKIM记录。这是我找到的代码示例:

curl -X PATCH --data '{"rrsets": [ {"name": "example.org.", "type": "TXT", "ttl": 86400, "changetype": "REPLACE", "records": [ {"content": "Example text", "disabled": false } ] } ] }' -H 'X-API-Key: changeme' http://127.0.0.1:8081/api/v1/servers/localhost/zones/example.org. | jq .

这样可行,但是当我尝试插入另一个txt记录时,只更改内容,PowerDNS会删除旧记录并插入新记录。这是由curl中的“changetype”:“REPLACE”参数引起的,但根据文档,我可以使用两个changetype:REPLACE(具有此效果)和DELETE(它将简单地删除记录)

有没有人有解决方案?

1 个答案:

答案 0 :(得分:2)

请记住,在DNS中,我们谈论RRset是资源记录 set ,这意味着对于给定的资源类型可能会有多个结果。

正如您在https://doc.powerdns.com/md/httpapi/api_spec/#url-apiv1serversserver95idzones中看到的那样,省略号表示您可以在"记录中放置多个项目"元素,所以你应该把所有的TXT记录放在那里。

所以类似(为了清晰而格式化)

  "records":
    [
      {
        "content": "Example text 1",
        "disabled": false,
      },
      {
        "content": "Example text 2",
        "disabled": false,
      },
      {
        "content": "Example text 3",
        "disabled": false,
      },
    ],

之后的文档文字明确说明:

  

记录:新记录列表(替换旧记录)。