Использование API Cloudflare для заполнения DNS зоны домена
Задача: Заполнить ДНС зону созданную на CloudFlare данными из LDIF(текстовый формат). Скрипт должен быть написан на PHP.
Пример LDIF файла ниже. Для заполнения использовать CloudFlare Api 4ой версии. О том как использовать готовую библиотеку взаимодействия с CloudFlare https://habr.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:<name>\n Проблемная ресурсная запись\Описание ошибки из API
Если у записи нету атрибутов objectclass: dNSDomain2 или objectclass: domainRelatedObject запись должна игнорироваться.
По завершению работы скрипта должен быть отчет сколько записей было добавлено, сколько записей пропущено и сколько ошибок возникло:
added: <num>
skipped: <num>
errors: <num>
Окружение:
Скрипт будет выполняться по крону раз в сутки, после того как для зоны сформирован новый LDIF. Для того чтоб идентифицировать, что зона изменилась и нужно заново заполнить на cloudflare записи, предлагаю сделать отдельный файл в который записывать md5 хеш содержимого ldif файла, который был внесен на cloudflare. Если текущий хеш отличается от сохраненного нужно очистить зону на cloudflare, внести новые записи и записать в файл новый хеш.
Для выполнения задания необходимо зарегистрировать новый аккаунт на cloudflare. Для этого можно использовать домен capitest.dp.ua
Пример LDIF:
# Запись 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
dc: mail
objectclass: top
objectclass: dNSDomain2
objectclass: domainRelatedObject
# Запись 3: dc=mailer,dc=capitest,dc=dp,dc=ua,dc=dns,dc=f
dn: dc=mailer,dc=capitest,dc=dp,dc=ua,dc=dns,dc=f
associateddomain: mailer.capitest.dp.ua
cnamerecord: capitest.dp.ua
dc: mailer
objectclass: top
objectclass: dNSDomain2
objectclass: domainRelatedObject
# Запись 4: dc=mailler,dc=capitest,dc=dp,dc=ua,dc=dns,dc=f
dn: dc=mailler,dc=capitest,dc=dp,dc=ua,dc=dns,dc=f
associateddomain: mailler.capitest.dp.ua
cnamerecord: capitest.dp.ua
dc: mailler
objectclass: top
objectclass: dNSDomain2
objectclass: domainRelatedObject
# Запись 5: dc=www,dc=capitest,dc=dp,dc=ua,dc=dns,dc=f
dn: dc=www,dc=capitest,dc=dp,dc=ua,dc=dns,dc=f
associateddomain: www.capitest.dp.ua
cnamerecord: capitest.dp.ua
dc: www
objectclass: top
objectclass: dNSDomain2
objectclass: domainRelatedObject
Current freelance projects in the category PHP
Write meta data for ALT using AIA website on Laravel, the site has many images for which it is necessary to automatically generate correct semantic and relevant ALT descriptions for the images, with the possibility of verification. AI & Machine Learning, PHP ∙ 3 hours 18 minutes back ∙ 18 proposals |
Completion of the website on Ocstore 3
16 USD
Ocstore 3 Template Upstore Fix some issues https://docs.google.com/document/d/1-TmTo3lh_ElFjPMQCGs2sVCsVSzq-V-Z/edit?usp=sharing&ouid=105344407605205919725&rtpof=true&sd=true I look forward to your proposals PHP, Web Programming ∙ 6 hours 58 minutes back ∙ 52 proposals |
A developer is needed to complete and integrate a project for automatic data collection and processing.
16 USD
The main part of the parser has already been implemented. The parser works in a Windows environment through Microsoft Edge: the site has anti-bot protection, so data collection is performed not through direct HTTP requests, but through a live browser session. The scripts control… PHP, Web Programming ∙ 9 hours 14 minutes back ∙ 19 proposals |
Updating plugins and themes for the WP site putevka.uz"A technical audit of the WordPress site needs to be conducted, checking the relevance, security, and compatibility of the installed plugins and theme. Based on the results, legal options for updating, replacing outdated solutions, or transitioning to officially available… HTML & CSS, PHP ∙ 11 hours 50 minutes back ∙ 32 proposals |
Integration of the "Where to Watch" block (Laravel / Livewire)It is necessary to implement the integration of an external streaming platform for a website about movies and series on Laravel / Livewire. What needs to be done: Implement the import of an external content catalog that is updated once a day. Match content by IMDb ID and/or TMDB… PHP, Web Programming ∙ 1 day 2 hours back ∙ 36 proposals |