• Использование API Cloudflare для заполнения DNS зоны домена из текстового файла
    401 грн. php
    Виконавець визначений: Сергей

    Задача: Заполнить ДНС зону созданную на CloudFlare данными из текстового файла. Скрипт должен быть написан на PHP.

    Пример файла ниже. Для заполнения использовать CloudFlare Api 4ой версии. О том как использовать готовую библиотеку взаимодействия с CloudFlare https://habr.com/ru/company/otus/blog/498936/

    Структура тестового файла:
    Файл разбит на записи. Каждая запись это отдельный хостнейм.
    associateddomain — имя хостнейма (домена или субдомена)

    Записи (файл => cloudflare):
    arecord => A
    mxrecord => MX
    txtrecord => TXT
    nsrecord => ns
    cnamerecord =>cname

    TTL для записей общий. Его значение вынести в константы.
    Для основной записи (домена) nsrecord нужно заменить с тех что в файле на НС Cloudflare. Значения вынести в константы. Основную запись можно идентифицировать по наличию soarecord

    У домена может быть несколько записей одного типа, нужно добавить через API их все. У MX записи формат имя хоста. Так же может быть несколько различных записей у одного хоста

    В случае возникновения ошибки в процессе добавления записи такую запись нужно залогировать. Формат записи в логе: associateddomain:\n Проблемная ресурсная запись\Описание ошибки из API

    Если у записи нету атрибутов objectclass: dNSDomain2 или objectclass: domainRelatedObject запись должна игнорироваться.

    По завершению работы скрипта должен быть отчет сколько записей было добавлено, сколько записей пропущено и сколько ошибок возникло:

    added:
    skipped:
    errors:


    Окружение:
    Скрипт будет выполняться по крону раз в сутки, после того как для зоны сформирован новый текстовый файл. Для того чтоб идентифицировать, что зона изменилась и нужно заново заполнить на cloudflare записи, предлагаю сделать отдельный файл в который записывать md5 хеш содержимого файла, который был внесен на cloudflare. Если текущий хеш отличается от сохраненного нужно очистить зону на cloudflare, внести новые записи и записать в файл новый хеш.

    Для выполнения задания необходимо зарегистрировать бесплатный аккаунт на cloudflare. Для этого можно использовать домен capitest.dp.ua


    Пример файла:

    # Запись 1: dc=capitest,dc=dp,dc=ua,dc=dns,dc=f
    dn: dc=capitest,dc=dp,dc=ua,dc=dns,dc=f
    arecord: 178.20.159.158
    associateddomain: capitest.dp.ua
    dc: capitest
    mxrecord: 1 ASPMX.L.GOOGLE.COM
    mxrecord: 5 ALT1.ASPMX.L.GOOGLE.COM
    mxrecord: 5 ALT2.ASPMX.L.GOOGLE.COM
    mxrecord: 10 ALT3.ASPMX.L.GOOGLE.COM
    mxrecord: 10 ALT4.ASPMX.L.GOOGLE.COM
    nsrecord: alpha.freehost.com.ua
    nsrecord: beta.freehost.com.ua
    nsrecord: gamma.freehost.com.ua
    nsrecord: delta.freehost.com.ua
    objectclass: top
    objectclass: dNSDomain2
    objectclass: domainRelatedObject
    soarecord: alpha.freehost.com.ua. domainmaster.dns82.net. 2018090601 14400 3
    600 604800 86400
    txtrecord: google-site-verification=RJJZP5NfHg3wtfzM_NIcYuKzBhvawMLdwGiyQBWi
    UKk

    # Запись 2: dc=mail,dc=capitest,dc=dp,dc=ua,dc=dns,dc=f
    dn: dc=mail,dc=capitest,dc=dp,dc=ua,dc=dns,dc=f
    arecord: 194.0.200.251
    associateddomain: mail.capitest.dp.ua

Вгору