Использование API Cloudflare для заполнения DNS зоны домена (PHP)
Задача: Заполнить ДНС зону созданную на CloudFlare данными из LDIF(текстовый формат). Скрипт должен быть написан на PHP.
Пример LDIF файла ниже. Для заполнения использовать CloudFlare Api 4ой версии.
О том как использовать готовую библиотеку взаимодействия с CloudFlare habr dot com /ru/company/otus/blog/498936/
Структура тестового файла:
Файл разбит на записи. Каждая запись это отдельный хостнейм.
associateddomain — имя хостнейма (домена или субдомена)
Записи (ldif => cloudflare):
arecord => A
mxrecord => MX
txtrecord => TXT
nsrecord => ns
cnamerecord =>cname
TTL для записей общий. Его значение вынести в константы.
Для основной записи (домена) nsrecord нужно заменить с тех что в файле на
НС cloudflera. Значения вынести в константы. Основную запись можно
идентифицировать по наличию soarecord
У домена может быть несколько записей одного типа, нужно добавить через API их все. У MX
записи формат
различных записей у одного хоста
В случае возникновения ошибки в процессе добавления записи такую запись нужно залогировать. Формат
записи в логе: associateddomain:\n Проблемная ресурсная
запись\Описание ошибки из API
Если у записи нету атрибутов objectclass: dNSDomain2 или objectclass: domainRelatedObject запись должна игнорироваться.
По завершению работы скрипта должен быть отчет сколько записей было
добавлено, сколько записей пропущено и сколько ошибок возникло:
added:
skipped:
errors:
Окружение:
Скрипт будет выполняться по крону раз в сутки, после того как для зоны
сформирован новый LDIF. Для того чтоб идентифицировать, что зона
изменилась и нужно заново заполнить на cloudflare записи, предлагаю
сделать отдельный файл в который записывать md5 хеш содержимого ldif
файла, который был внесен на cloudflare. Если текущий хеш отличается от
сохраненного нужно очистить зону на cloudflare, внести новые записи и
записать в файл новый хеш.
Для выполнения задания необходимо зарегистрировать новый аккаунт на cloudflare. Домен для тестирования дадим