66 lines
2.4 KiB
PowerShell
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)"
|
|
}
|
|
}
|