zoukankan      html  css  js  c++  java
  • 代替DDNS方案,用powershell自动更新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
    }
  • 相关阅读:
    Java中单态设计模式
    Google地图,Baidu地图数据供应商
    栅格数据和矢量数据
    Java学习之Iterator(迭代器)的一般用法 (转)
    highcharts图表组件入门教程:如何监听柱状图柱子点击事件动态更新当前数据点数值和所对应X轴刻度
    relative、absolute和float
    【转】20个令人敬畏的jQuery插件
    启动tomcat显示成功,但是访问tomcat首页是404错误页
    手机测试Android程序
    Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (三) —— SharePreferences
  • 原文地址:https://www.cnblogs.com/xiangxisheng/p/11946639.html
Copyright © 2011-2022 走看看