Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(dnsapi): support custom dns api domain and update schema #163

Closed

Conversation

laozhoubuluo
Copy link
Contributor

@laozhoubuluo laozhoubuluo commented Mar 27, 2020

本PR新增了支持自定义 DNS API 域名的设置项,为空或省略此项表示默认 DNS API 域名。
DNS API 域名反代只支持运行在 443 端口且证书可被认可的 HTTPS 站点。

考虑到目前正在征集3.0版本设计,并且此修改包含1个API变更,不确定此时提交此PR是否合适。
并且对此项目和Python经验有限,不确定此修改方式和文案是否符合程序自身设计逻辑。
如此修改不符合要求,您可给出修改意见、关闭PR或直接修改,谢谢。

另:我这边测试过Cloudflare API,可以通过在Debian 10操作系统与Apache 2.4.38创建的反向代理站点更新DNS记录,其他API未测试。

@laozhoubuluo laozhoubuluo changed the title feat(dnsapi): support custom api and update schema feat(dnsapi): support custom dns api domain and update schema Mar 27, 2020
@NewFuture
Copy link
Owner

NewFuture commented Mar 30, 2020

这个可以加一个的dns provider 来实现

  • dns: http

此时 使用自定义的http请求

  • id 参数传入 url
  • token 参数传入body,token为空使用GET否正使用POST

这两个参数的字符串__DOMAIN____IP__分别替换成对应的IP地址和域名

比如 POST到一个自定义的API

{
"dns":"http",
"id":"http://ip.update.me",
"token":"{\"customParam\":\"__DOMAIN__\",\"ip\":\"__IP__\"}",
}

或者 GET请求

{
"dns":"http",
"id":"https://ip.update.me?parm=____DOMAIN__&ip=__IP__"
}

这样既可以实现自定义API,也保证向前兼容
命令行的feature 也可以提供类似的provider

@laozhoubuluo
Copy link
Contributor Author

laozhoubuluo commented Mar 31, 2020

这个可以加一个的dns provider 来实现

* `dns`: `http`

此时 使用自定义的http请求

* `id` 参数传入 url

* `token` 参数传入body,token为空使用GET否正使用POST

这两个参数的字符串__DOMAIN____IP__分别替换成对应的IP地址和域名

比如 POST到一个自定义的API

{
"dns":"http",
"id":"http://ip.update.me",
"token":"{\"customParam\":\"__DOMAIN__\",\"ip\":\"__IP__\"}",
}

或者 GET请求

{
"dns":"http",
"id":"https://ip.update.me?parm=____DOMAIN__&ip=__IP__"
}

这样既可以实现自定义API,也保证向前兼容
命令行的feature 也可以提供类似的provider

HTTP API倒是写了,具体请见:laozhoubuluo@27bfb54

我写完之后发现个逻辑问题,感觉这两个feat并不相同,甚至差距还挺大。
这个feat只是请求节点API地址换了,但是整个的更新DNS的流程(获取Zone-ID、提交DNS记录等)都还在。
但是改成HTTP API之后,整个更新DNS的流程就都没了,如果核心目标还是想DDNS,那还得在API端重新写一套更新DNS的逻辑。
即使支持多个DNS厂商(比如cloudflare,callback),API网络访问的问题在实质上还是没有解决。

@NewFuture
Copy link
Owner

如果是单纯转发的话,这个操作是不是直接用代理更合适?

@laozhoubuluo
Copy link
Contributor Author

如果是单纯转发的话,这个操作是不是直接用代理更合适?

走正向代理是个好办法,不过考虑到IPv6的因素(每台机器的IP地址不同),如果每一台跑服务的机器单独为了DDNS搞个代理,不管是内网统一建设正向代理服务,还是每台机器自己跑一个正向代理,代价相比于一个反向代理网站来说还是略大(尤其是考虑到正向代理被墙风险大于反向代理的前提下)。
当然考虑到代理是已实现功能并且确实能解决问题,目前这个PR是要加config的新feat,您说的也有道理。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants