为解决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. VMW14.x虚拟机安装Mac10.13系统教程

    之前虚拟机安装Mac经常出问题,所以这次又重新安装Mac,为了加深映像和之后回忆方便,特写下此次安装教程. 一 工具的准备: 首先准备教程的软件和包 1,虚拟机VMW    下载地址:https:// ...

  2. 用微信表情翻译表白,程序员的小浪漫,赶紧Get起来!

  3. dubbo协议之请求头编码器

    开局一张图,内容全靠XXXXX.... 如图是dubbo协议的格式 encodeRequest进来会先去channel对象中取url的Parameters的"serialization&qu ...

  4. 深度学习基础 Probabilistic Graphical Models | Statistical and Algorithmic Foundations of Deep Learning

    目录 Probabilistic Graphical Models Statistical and Algorithmic Foundations of Deep Learning 01 An ove ...

  5. K 均值算法-如何让数据自动分组

    公号:码农充电站pro 主页:https://codeshellme.github.io 之前介绍到的一些机器学习算法都是监督学习算法.所谓监督学习,就是既有特征数据,又有目标数据. 而本篇文章要介绍 ...

  6. HTML5 速览

    HTML5 速览 一. HTML5 元素分类 HTML赋值文档内容的结构和含义, 内容呈现由css样式控制 元素选用原则 少亦可为多 标记只应该应内容对语义的需要使用. 有条经验法则是: 问问自己打算 ...

  7. PyQt(Python+Qt)学习随笔:QSlider滑动条部件功能简介

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.概述 Designer输入部件中的Horizo ...

  8. 第15.33节 PyQt(Python+Qt)入门学习:containers容器类部件QTabWidget选项窗部件简介

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 容器部件就是可以在部件内放置其他部件的部件,在Qt Designer中可以使用的容器部件有 ...

  9. 第二十六章、containers容器类部件QToolBox工具箱详解

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 容器部件就是可以在部件内放置其他部件的部件,在Qt Designer中可以使用的容器部件有 ...

  10. PyQt(Python+Qt)学习随笔:QTreeWidgetItem项列图标的访问方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 树型部件QTreeWidget中的QTreeWidgetItem项中可以有多列数据,每列数据都可以设 ...