基于阿里云 DNS API 实现的 DDNS 工具
2021-03-27 20:28
标签:options hmac 接收 summary main inf ali png 直接 AliDDNSNet 是基于 .NET Core 开发的动态 DNS 解析工具,借助于阿里云的 DNS API 来实现域名与动态 IP 的绑定功能。 使用时请更改同目录下的 通过更改 其中 Access Id 与 Access Key 可以登录阿里云之后在右上角可以得到。 核心代码基本上都存放在 这里之前我是按照阿里云 API 来进行开发的,不过有一点需要注意的是,返回的 Signature 值是不需要进行 URL 编码的。就因为这一点,我白白浪费了 3 个小时来排查问题,看看官方 API 文档说的: 说需要将签名值编码之后再提交,扯淡,如果编码之后再提交的话,接口会一直返回: Specified signature is not matched with our calculation. 这里直接返回 HMACSHA1 加密结果的 Base64 字符串即可。 异步的 Main 方法需要 C# 7.1 以上版本才能支持,你只需要右键你的项目选择属性,左侧栏选择生成,找到高级按钮,更改当前 C# 语言版本即可。 效果如下: 编写控制台程序,最主要的是接受参数然后处理,而 使用方法如下: https://github.com/GameBelial/AliDDNSNet 有兴趣的朋友可以 star 关注一下。 程序打包了 Linux-x64 与 Linux arm 环境的二进制可执行文件,你可以直接下载对应的压缩包解压到你的路由器或者 NAS 里面进行运行。 如果你的设备支持 Docker 环境,建议通过 Docker 运行 .NET Core 2.1 环境来执行本程序。 下载地址在这儿 基于阿里云 DNS API 实现的 DDNS 工具 标签:options hmac 接收 summary main inf ali png 直接 原文地址:https://www.cnblogs.com/myzony/p/9348885.html0.使用说明
settings.json.example
为 settings.json
文件,同时也可以显示通过 -f
参数来制定配置文件路径。例如:dotnet ./AliDDNSNet.dll -f ./settings.json2
./AliDDNSNet -f ./settings.json3
1.配置说明:
settings.json
/settings.json.example
的内容来实现 DDNS 更新。{
// 阿里云的 Access Id
"access_id": "",
// 阿里云的 Access Key
"access_key": "",
// TTL 时间
"interval": 600,
// 主域名
"domain": "example.com",
// 子域名前缀
"sub_domain": "test",
// 记录类型
"type": "A"
}
2.代码说明
2.1 核心加密代码
Utils.cs
文件里面,这里面值得注意的就是 GenerateSignature()
方法,因为阿里云所有的 API 接口都需要传递签名参数,这个签名参数是根据你提交的参数集合 AccessKey 来进行计算的。///
2.1 异步 Main 方法
static async Task
2.2 好用的 CommandLine 库
Microsoft.Extensions.CommandLineUtils
库提供了方便快捷的方式来为我们处理用户输入的参数。using System;
using McMaster.Extensions.CommandLineUtils;
public class Program
{
public static int Main(string[] args)
{
var app = new CommandLineApplication();
app.HelpOption();
var optionSubject = app.Option("-s|--subject
3.GITHUB 开源地址:
4.二进制程序下载地址