infracloud/scripts/auto-organized/fix_cf_dns_mfe_shell.ps1

66 lines
2.4 KiB
PowerShell

$tokenPath = "$env:USERPROFILE\.ssh\cloudflare-token"
$CF_TOKEN = (Get-Content $tokenPath -Encoding UTF8 -Raw).Trim()
Write-Host "Token len: $($CF_TOKEN.Length) preview: $($CF_TOKEN.Substring(0,4))..."
$cfh = @{ Authorization = "Bearer $CF_TOKEN"; 'Content-Type' = 'application/json' }
# Zone ID
$zonesResp = Invoke-RestMethod "https://api.cloudflare.com/client/v4/zones?name=invista.com.br&per_page=1" -Headers $cfh
if (-not $zonesResp.success) {
Write-Host "ERRO ao buscar zone: $($zonesResp.errors | ConvertTo-Json)"
exit 1
}
$zoneId = $zonesResp.result[0].id
Write-Host "Zone ID: $zoneId"
# Buscar record existente para mfe-shell-dev.invista.com.br
$name = "mfe-shell-dev.invista.com.br"
$resp = Invoke-RestMethod "https://api.cloudflare.com/client/v4/zones/$zoneId/dns_records?name=$name&per_page=10" -Headers $cfh
Write-Host "Records existentes para $name :"
$resp.result | ForEach-Object {
Write-Host " id=$($_.id) type=$($_.type) content=$($_.content) proxied=$($_.proxied)"
}
# IP do FortiGate1 (ponto de entrada público)
$fortiIP = "136.248.66.216"
if ($resp.result.Count -gt 0) {
# Atualizar record existente (pegar o primeiro)
$recordId = $resp.result[0].id
$body = @{
type = "A"
name = $name
content = $fortiIP
ttl = 1 # 1 = Auto no Cloudflare
proxied = $true
} | ConvertTo-Json -Depth 3
Write-Host ""
Write-Host "Atualizando record $recordId para A $fortiIP (proxied)..."
$updateResp = Invoke-RestMethod "https://api.cloudflare.com/client/v4/zones/$zoneId/dns_records/$recordId" `
-Method PUT -Headers $cfh -Body $body
if ($updateResp.success) {
Write-Host "OK: $($updateResp.result.type) $($updateResp.result.name) -> $($updateResp.result.content) proxied=$($updateResp.result.proxied)"
} else {
Write-Host "ERRO: $($updateResp.errors | ConvertTo-Json)"
}
} else {
# Criar novo record
$body = @{
type = "A"
name = $name
content = $fortiIP
ttl = 1
proxied = $true
} | ConvertTo-Json -Depth 3
Write-Host ""
Write-Host "Criando A record $name -> $fortiIP (proxied)..."
$createResp = Invoke-RestMethod "https://api.cloudflare.com/client/v4/zones/$zoneId/dns_records" `
-Method POST -Headers $cfh -Body $body
if ($createResp.success) {
Write-Host "OK: $($createResp.result.type) $($createResp.result.name) -> $($createResp.result.content) proxied=$($createResp.result.proxied)"
} else {
Write-Host "ERRO: $($createResp.errors | ConvertTo-Json)"
}
}