Инструменты пользователя

Инструменты сайта


cloudflare_dyndns

Это старая версия документа!


Проверка API-токена
curl.exe "https://api.cloudflare.com/client/v4/user/tokens/permission_groups" --request GET --header "Authorization: Bearer FyqTNMl5JiZf1q77v275VgtQpo2Uh4fqdnYisugL9wSReadZ/Q8YAM6jIK7rvLYO+xOTb85Bf3E="

cloudflare_dyndns.ps1

# Cloudflare DynDNS Script for Windows
# Конфигурация
$ZoneID = "ezvpLi0aD6mkQRaDc84SFuKbwp78PxvoAwBmKJwQSXMIktXhswigkjc0BEuvdS0Q"
$ApiToken = "ezvpLi0aD6mh+kdo84IL1gG8u1s+WdJ+q+Jxm8E+rae1RSAuidi8pNi98cgC5SI13y8UGLqW29U="
$RecordName = "JaYRnJAoKlFP/Nk1T9PAbZYYk16j6SrF"
$RecordType = "A"

# Функция для получения внешнего IP
function Get-ExternalIP {
    try {
        $ip = (Invoke-RestMethod -Uri "http://checkip.amazonaws.com" -TimeoutSec 10).Trim()
        return $ip
    }
    catch {
        try {
            $ip = (Invoke-RestMethod -Uri "http://api.ipify.org" -TimeoutSec 10).Trim()
            return $ip
        }
        catch {
            Write-Error "Не удалось получить внешний IP"
            exit 1
        }
    }
}

# Функция для работы с Cloudflare API
function Update-CloudflareDNS {
    param(
        [string]$ZoneID,
        [string]$ApiToken,
        [string]$RecordName,
        [string]$RecordType,
        [string]$NewIP
    )
    
    $headers = @{
        "Authorization" = "Bearer $ApiToken"
        "Content-Type" = "application/json"
    }
    
    # Получаем информацию о текущей записи
    $getUrl = "https://api.cloudflare.com/client/v4/zones/$ZoneID/dns_records?type=$RecordType&name=$RecordName"
    
    try {
        $response = Invoke-RestMethod -Uri $getUrl -Headers $headers -Method GET
    }
    catch {
        Write-Error "Ошибка при получении данных из Cloudflare: $_"
        return $false
    }
    
    if ($response.success -and $response.result.Count -gt 0) {
        $record = $response.result[0]
        $recordID = $record.id
        $currentIP = $record.content
        
        Write-Host "Текущий IP в Cloudflare: $currentIP"
        Write-Host "Новый внешний IP: $NewIP"
        
        if ($currentIP -eq $NewIP) {
            Write-Host "IP не изменился. Обновление не требуется."
            return $true
        }
        
        # Обновляем запись
        $updateUrl = "https://api.cloudflare.com/client/v4/zones/$ZoneID/dns_records/$recordID"
        $body = @{
            type = $RecordType
            name = $RecordName
            content = $NewIP
            ttl = 120
            proxied = $false
        } | ConvertTo-Json
        
        try {
            $updateResponse = Invoke-RestMethod -Uri $updateUrl -Headers $headers -Method PUT -Body $body
            if ($updateResponse.success) {
                Write-Host "Запись успешно обновлена в Cloudflare!"
                return $true
            } else {
                Write-Error "Ошибка Cloudflare API: $($updateResponse.errors)"
                return $false
            }
        }
        catch {
            Write-Error "Ошибка при обновлении записи: $_"
            return $false
        }
    } else {
        Write-Error "DNS запись не найдена в Cloudflare"
        return $false
    }
}

# Основная логика
Write-Host "Проверка обновления DynDNS Cloudflare..."
Write-Host "Запись: $RecordName"
Write-Host "Время: $(Get-Date)"

$externalIP = Get-ExternalIP
Write-Host "Внешний IP определен: $externalIP"

$result = Update-CloudflareDNS -ZoneID $ZoneID -ApiToken $ApiToken -RecordName $RecordName -RecordType $RecordType -NewIP $externalIP

if ($result) {
    Write-Host "Скрипт выполнен успешно"
} else {
    Write-Host "Скрипт завершился с ошибками"
    exit 1
}
cloudflare_dyndns.bat

@echo off
cd /d "C:\path\to\script\"
powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -File "cloudflare_dyndns.ps1"
homeip_add_task.ps1

homeip_add_task.ps1

$TaskName = "Update Home IP Every 15 Minutes"
$ScriptPath = "C:\Users\shs\Documents\cloudflare_dyndns.vbs"  # Укажите полный путь к вашему скрипту
$LogPath = "c:\temp\cloudflare_dyndns-log.txt"  # Путь для лог-файла

# Создание действия с параметрами для скрытого выполнения
$Action = New-ScheduledTaskAction `
    -Execute "wscript.exe" `
    -Argument "$ScriptPath"

# Создание триггера (каждые 15 минут)
$Trigger = New-ScheduledTaskTrigger `
    -Once `
    -At (Get-Date) `
    -RepetitionInterval (New-TimeSpan -Minutes 15)

# Настройки задачи - ВАЖНО: добавляем скрытое выполнение
$Settings = New-ScheduledTaskSettingsSet `
    -AllowStartIfOnBatteries `
    -DontStopIfGoingOnBatteries `
    -StartWhenAvailable `
    -RestartCount 3 `
    -RestartInterval (New-TimeSpan -Minutes 1) `
    -Hidden  # Это ключевой параметр!

# Регистрация задачи
Register-ScheduledTask `
    -TaskName $TaskName `
    -Action $Action `
    -Trigger $Trigger `
    -Settings $Settings `
    -RunLevel Highest `
    -Description "Автоматическое обновление домашнего IP-адреса Cloudflare DDNS"

Write-Host "Задача `"$TaskName`" успешно создана!" -ForegroundColor Green
cloudflare_dyndns.1759337758.txt.gz · Последнее изменение: (внешнее изменение)

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution 4.0 International
CC Attribution 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki