代替DDNS方案,自动更新CloudFlare的AAAA记录
为解决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记录的更多相关文章
- timestamp ---自动更新修改时间 与 记录首次插入时间
自动更新修改时间: mysql> create table z(a int ,b timestamp on update current_timestamp); mysql> insert ...
- Windows 程序自动更新方案: Squirrel.Windows
Windows 程序自动更新方案: Squirrel.Windows 1. Squirrel Squirrel 是一组工具和适用于.Net的库,用于管理 Desktop Windows 应用程序的安装 ...
- 一种让运行在CentOS下的.NET CORE的Web项目简单方便易部署的自动更新方案
一.项目运行环境 项目采用的是.NET5开发的Web系统,独立部署在省内异地多台CentOS服务器上,它们运行在甲方专网环境中(不接触互联网),甲方进行业务运作时(一段时间内)会要求异地服务器开机上线 ...
- 分析nuget源码,用nuget + nuget.server实现winform程序的自动更新
源起 (个人理解)包管理最开始应该是从java平台下的maven开始吧,因为java的开发大多数是基于开源组件开发的,一个开源包在使用时很可能要去依赖其他的开源包,而且必须是特定的版本才可以.以往在找 ...
- iOS自动更新如何实现
APP检测更新可以使用两种方法.第一种是和安卓等系统一样,获取自己服务器的APP版本号与已安装的APP版本号比较:第二种是根据已发布到app store上的应用版本号与已安装的APP版本号比较更新.第 ...
- hibernate查询出的实体,set值后,自动更新到数据
如图: 故事背景:(p.s.我们的项目没有正确配置事务xml文件,未明原因导致事务定义的规则不起作用)获取一个资讯对象,调用该对象的set方法设置其中的content字段,然后把修改后的实体丢到官网首 ...
- .Net桌面程序自动更新NAppUpdate
自动更新介绍 我们做了程序,不免会有版本升级,这就需要程序有自动版本升级的功能.应用程序自动更新是由客户端应用程序自身负责从一个已知服务器下载并安装更新,用户唯一需要进行干预的是决定是否愿意现在或以后 ...
- 自己动手开发更好用的markdown编辑器-06(自动更新)
这里文章都是从个人的github博客直接复制过来的,排版可能有点乱. 原始地址 http://benq.im/2015/05/12/hexomd-06/ 文章目录 1. 自动更新方案 2. 实现 ...
- C#.Net版本自动更新程序及3种策略实现
C#.Net版本自动更新程序及3种策略实现 C/S程序是基于客户端和服务器的,在客户机编译新版本后将文件发布在更新服务器上,然后建立一个XML文件,该文件列举最新程序文件的版本号及最后修改日期.如程序 ...
随机推荐
- C++基础知识篇:C++ 变量类型
变量其实只不过是程序可操作的存储区的名称.C++ 中每个变量都有指定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上. 变量的名称可以由字母.数字和下划线字 ...
- finalize和clean
弊端 1.执行的时间不确定,资源释放不能靠这2个方法.Cleaner规范指出:"清除方法在System.exit期间的行为是与实现相关的.不确保清除动作是否会被调用." 2#.如果 ...
- 痞子衡嵌入式:一个奇怪的Keil MDK下变量链接强制对齐报错问题(--legacyalign)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是一个奇怪的Keil MDK下变量链接强制对齐报错问题. 痞子衡最近一直在参与恩智浦SBL项目(就是一个适用LPC和i.MXRT的完整OT ...
- 新手上路之JDK11的下载、安装与PATH环境变量的配置
目录 JDK11的下载 找到目标JDK JDK的下载 JDK11的安装 PATH环境变量的配置 为什么要配置环境变量? 配置前再检查一遍 配置变量 检查环境变量配置成功与否 细究起来,JDK11与JD ...
- 虚拟机VM15 Ubuntu18.04写第一个c程序并实现ssh连接
输入"su",再输入密码进入根用户 1.开启ssh服务 /etc/init.d/ssh start 若没有安装会出现: (1).安装ssh apt-get install open ...
- python批量definition query
import arcpy mxd = arcpy.mapping.MapDocument("current") for lyr in arcpy.mapping.ListLayer ...
- java并发编程实战《二》java内存模型
Java解决可见性和有序性问题:Java内存模型 什么是 Java 内存模型? Java 内存模型是个很复杂的规范,可以从不同的视角来解读,站在我们这些程序员的视角,本质上可以理解为, Java 内存 ...
- PyQt(Python+Qt)学习随笔: QDoubleSpinBox浮点数字设定部件简介
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 在<PyQt(Python+Qt)学习随笔: ...
- HDFS客户端操作(JAVA代码)
环境准备 windows需要配置hadoop的windows下的依赖 安装包地址: 链接:https://pan.baidu.com/s/1QtbH-x-S0QytkmaoSosdEw 提取码:2kt ...
- kickstart 谷歌 D 2020 年 7 月 12 日 13: 00 - 16: 00
https://codingcompetitions.withgoogle.com/kickstart/round/000000000019ff08/0000000000386d5c (kick st ...