为解决DDNS更新慢的问题,直接通过cloudflare的API来更新AAAA记录

将下面代码保存成cloudflare_ipv6_update.ps1

$config = @{}
$config.zone_id = "11111111" #填写CF域名编号
$config.auth_email = "www@firadio.com" #填写CF账号
$config.auth_key = "11111111" #填写CF密钥
$config.delay = 10
[System.Net.ServicePointManager]::SecurityProtocol=[System.Net.SecurityProtocolType]::Tls12
$dot=@{}
$dot.linemax = 120
$dot.current = 0
Function PrintDot(){
$char = "."
$dot.current++
if ($dot.current -eq 1) {
$text = ([String](Get-Date -Format 'yyyy-MM-dd HH:mm:ss')) + " "
Write-Host -NoNewline $text
}
if ($dot.current -ge $dot.linemax) {
$dot.current = 0
Write-Host $char
} else {
Write-Host -NoNewline $char
}
}
Function PrintError($text) {
Write-Host
Write-Host -NoNewline ([String](Get-Date -Format 'yyyy-MM-dd HH:mm:ss')) $text
}
while (1) {
$Uri = "http://ipv6.lookup.test-ipv6.com/ip/"
$ret = (Invoke-WebRequest -Uri $Uri)
if ($ret.StatusCode -ne 200) {
PrintError "IP获取失败,延迟 $($config.delay) 秒"
Start-Sleep -Seconds $config.delay
continue
}
$lookup_ipv6 = ConvertFrom-Json $ret.Content
$parttern="^([a-f0-9]{1,4}(:[a-f0-9]{1,4}){7}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){0,7}::[a-f0-9]{0,4}(:[a-f0-9]{1,4}){0,7})$"
if ($lookup_ipv6.ip -inotmatch $parttern) {
PrintError "获取的IP格式错误,延迟 $($config.delay) 秒"
$lookup_ipv6
Start-Sleep -Seconds $config.delay
continue
}
$Uri = "https://api.cloudflare.com/client/v4/zones/" + $config.zone_id + "/dns_records?type=AAAA"
$Headers = @{}
$Headers."Content-Type" = "application/json"
$Headers."X-Auth-Email" = $config.auth_email
$Headers."X-Auth-Key" = $config.auth_key
$ret = (Invoke-WebRequest -Uri $Uri -Headers $Headers)
if ($ret.StatusCode -ne 200) {
PrintError "域名记录获取失败,延迟 $($config.delay) 秒"
Start-Sleep -Seconds $config.delay
continue
}
$dns_record_1 = ConvertFrom-Json $ret.Content
$ret = @{}
if ($dns_record_1.result.content -eq $lookup_ipv6.ip) {
PrintDot
Start-Sleep -Seconds $config.delay
continue
}
$Uri = "https://api.cloudflare.com/client/v4/zones/" + $config.zone_id + "/dns_records/" + $dns_record_1.result.id
$Json = @{}
$Json.type = $dns_record_1.result.type
$Json.name = $dns_record_1.result.name
$Json.content = $lookup_ipv6.ip
$Json.proxied = [Bool]1
$Body = ConvertTo-Json $Json
$Body
$ret = (Invoke-WebRequest -Method Put -Uri $Uri -Headers $Headers -Body $Body)
Start-Sleep -Seconds $config.delay
}

代替DDNS方案,自动更新CloudFlare的AAAA记录的更多相关文章

  1. timestamp ---自动更新修改时间 与 记录首次插入时间

    自动更新修改时间: mysql> create table z(a int ,b timestamp on update current_timestamp); mysql> insert ...

  2. Windows 程序自动更新方案: Squirrel.Windows

    Windows 程序自动更新方案: Squirrel.Windows 1. Squirrel Squirrel 是一组工具和适用于.Net的库,用于管理 Desktop Windows 应用程序的安装 ...

  3. 一种让运行在CentOS下的.NET CORE的Web项目简单方便易部署的自动更新方案

    一.项目运行环境 项目采用的是.NET5开发的Web系统,独立部署在省内异地多台CentOS服务器上,它们运行在甲方专网环境中(不接触互联网),甲方进行业务运作时(一段时间内)会要求异地服务器开机上线 ...

  4. 分析nuget源码,用nuget + nuget.server实现winform程序的自动更新

    源起 (个人理解)包管理最开始应该是从java平台下的maven开始吧,因为java的开发大多数是基于开源组件开发的,一个开源包在使用时很可能要去依赖其他的开源包,而且必须是特定的版本才可以.以往在找 ...

  5. iOS自动更新如何实现

    APP检测更新可以使用两种方法.第一种是和安卓等系统一样,获取自己服务器的APP版本号与已安装的APP版本号比较:第二种是根据已发布到app store上的应用版本号与已安装的APP版本号比较更新.第 ...

  6. hibernate查询出的实体,set值后,自动更新到数据

    如图: 故事背景:(p.s.我们的项目没有正确配置事务xml文件,未明原因导致事务定义的规则不起作用)获取一个资讯对象,调用该对象的set方法设置其中的content字段,然后把修改后的实体丢到官网首 ...

  7. .Net桌面程序自动更新NAppUpdate

    自动更新介绍 我们做了程序,不免会有版本升级,这就需要程序有自动版本升级的功能.应用程序自动更新是由客户端应用程序自身负责从一个已知服务器下载并安装更新,用户唯一需要进行干预的是决定是否愿意现在或以后 ...

  8. 自己动手开发更好用的markdown编辑器-06(自动更新)

    这里文章都是从个人的github博客直接复制过来的,排版可能有点乱. 原始地址 http://benq.im/2015/05/12/hexomd-06/   文章目录 1. 自动更新方案 2. 实现 ...

  9. C#.Net版本自动更新程序及3种策略实现

    C#.Net版本自动更新程序及3种策略实现 C/S程序是基于客户端和服务器的,在客户机编译新版本后将文件发布在更新服务器上,然后建立一个XML文件,该文件列举最新程序文件的版本号及最后修改日期.如程序 ...

随机推荐

  1. Forethought Future Cup - Final Round (Onsite Finalists Only) C. Thanos Nim 题解(博弈+思维)

    题目链接 题目大意 给你n堆石子(n为偶数),两个人玩游戏,每次选取n/2堆不为0的石子,然后从这n/2堆石子中丢掉一些石子(每一堆丢弃的石子数量可以不一样,但不能为0),若这次操作中没有n/2堆不为 ...

  2. Apache HTTPD 换行解析漏洞--CVE-2017-15715

    CVE-2017-15715 一.漏洞描述 Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页.其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1 ...

  3. .net core3.1开始页面实时编译

    安装NuGet包 Install-Package Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation  startup.cs 中的ConfigureSe ...

  4. 腾讯云linux系统部署项目无法通过外网访问

    最近尝试使用了一下腾讯去的linux系统服务器,但是却遇到各种问题,下面记录的问题是项目部署完成后却无法通过外网访问. 服务器:腾讯云 系统 :CentOS 8.0 64位 处理思路:通过度娘百般摸索 ...

  5. C++里面this关键字的用法和功能

    1.this指针的用处 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果.this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象 ...

  6. 记一次MongoDB的失败导出

    MongoDB用的是阿里云的,今天想着把原来的数据导出进行一次去重处理,整理下数据.操作了好几个小时,还是未能成功导出. MongoDB用的是阿里云的专有网络连接,本想通过公网直接访问,申请了公网地址 ...

  7. 第7.20节 案例详解:Python抽象类之真实子类

    第7.20节 案例详解:Python抽象类之真实子类 上节介绍了Python抽象基类相关概念,并介绍了抽象基类实现真实子类的步骤和语法,本节结合一个案例进一步详细介绍. 一.    案例说明 本节定义 ...

  8. 第15.30节 PyQt编程实战:通过eventFilter监视QScrollArea的widget()的Paint消息画出scrollAreaWidgetContents的范围矩形

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 在<PyQt(Python+Qt)学习随笔:QScrollArea滚动区域详解> ...

  9. 第二十二章、 Model/View便利类树型部件QTreeWidget

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 树部件(Tree Widget)是Qt Designer中 Item Widgets(It ...

  10. zookeeper未授权访问渗透测试及修复方法

    zookeeper未授权访问危害 服务器信息泄露.集群被破坏 一. 四字命令未授权使用 1.1 测试 工具:netcat ,Linux或Windows都可以测 命令行输入echo envi | nc ...