Added PowerShell version
This commit is contained in:
39
fixDNS.ps1
Normal file
39
fixDNS.ps1
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
#Dealing with my Cloudflare domains and my dynamic IP
|
||||||
|
$progressPreference = "silentlyContinue"
|
||||||
|
$timeStamp = (get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss")
|
||||||
|
$cfEmail = "cloudflare@sorensiim.dk"
|
||||||
|
$cloudflareAccountId = "5781ba314730623cc65f8e943e1bf215"
|
||||||
|
$cfToken = "Md8Na4WkayyONozTp8i7OvS2PdFt63fdP1ZR_lTt"
|
||||||
|
$myIp = curl "api.ipify.org" #Curl is easier for this one
|
||||||
|
$cfAPIBaseURI = "https://api.cloudflare.com/client/v4/"
|
||||||
|
#Get an auth token
|
||||||
|
$cfHeaders = @{
|
||||||
|
"Authorization" = "Bearer $cfToken"
|
||||||
|
}
|
||||||
|
|
||||||
|
#Pull the DNS zones
|
||||||
|
$zones = ((Invoke-WebRequest -URI "$($cfAPIBaseURI)zones" -Method GET -Headers $cfHeaders -UseBasicParsing).content | ConvertFrom-JSON).Result
|
||||||
|
#$zones
|
||||||
|
|
||||||
|
#Get the DNS records for the zones, except the TailScale records
|
||||||
|
$zones | Foreach-Object{
|
||||||
|
$zoneId = $_.id
|
||||||
|
$dnsRecords = ((Invoke-WebRequest -URI "$($cfAPIBaseURI)zones/$($_.id)/dns_records" -Method GET -Headers $cfHeaders -UseBasicParsing).content | ConvertFrom-JSON).Result | Where-Object{($_.type -eq "A") -and ($_.content -notMatch "^100")} | Select-Object id, name, type, content
|
||||||
|
#$dnsRecords | Where-Object{($_.type -eq "A") -and ($_.content -notMatch "^100")} | Select-Object id, name, type, content
|
||||||
|
#break
|
||||||
|
#Update the DNS record to use the correct IP
|
||||||
|
$dnsRecords | where-Object{$_.content -ne $myIp} | Foreach-object{
|
||||||
|
$oldIp = $_.content
|
||||||
|
$recordBody = @{
|
||||||
|
comment = "$TimeStamp | Updated automatically from $oldIp to $myIp"
|
||||||
|
content = "$myIp"
|
||||||
|
} | ConvertTo-JSON
|
||||||
|
$ipFix = Invoke-WebRequest -URI "$($cfAPIBaseURI)zones/$($zoneId)/dns_records/$($_.id)" -Method PATCH -Body $recordBody -Headers $cfHeaders
|
||||||
|
If($ipFix.statuscode -match "20."){
|
||||||
|
Write-output "Successfully changed the A-record $($_.name) from $oldIp to $myIp."
|
||||||
|
}
|
||||||
|
If($ipFix.statuscode -notMatch "20."){
|
||||||
|
Write-error "Failed to change the A-record $($_.name) from $oldIp to $myIp."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user