22
Янв

Доменное имя и динамический ip на Mikrotik сервис Cloudflare api v4

Это обновлённый скрипт для обновления динамического ip на сервисе Cloudflare. Прошлую версию можно посмотреть тут

Суть обновления в том, что сервис Cloudflare начал требовать в новой версии API авторизацию через заголовки.

На ранних версиях ROS, нельзя было их передавать вовсе. После баталий на форуме прикрутили возможность отправлять один заголовок, но нам нужно минимум 3. На версии RouterOS 7.1 доступна возможность отправлять несколько заголовков одновременно.

Для начала нам нужно воспользоваться любой линуксовой машиной с териминалом, чтобы получить необходимые записи.

Нам нужен Global API Key, получить его можно тут

После чего, в терминале выполняем запрос к API

[bash title=»код»]curl -X GET "https://api.cloudflare.com/client/v4/zones?name=hd.zp.ua" -H "X-Auth-Email: ваша почта" -H "X-Auth-Key: ваш apikey" -H "Content-Type: application/json"[/bash]

Вы получите ответ, где нужно найти ваш «id«:»824d6c45707d99340fa03b0a04ea9664»

Далее, подставляем наш id в следующий запрос и получаем записи зоны

[bash title=»код»]curl -X GET "https://api.cloudflare.com/client/v4/zones/824d6c45707d99340fa03b0a04ea9664/dns_records?type=A&page=1&per_page=100&order=type&direction=desc&match=all" \
-H "X-Auth-Email: ваша почта" \
-H "X-Auth-Key: Global API Key" \
-H "Content-Type: application/json"[/bash]

Дальше вы получаете ответ с вашими записями зоны

[bash title=»код»]{"result":[{"id":"40f946775d6c698deb627v16c0d337a4","zone_id":"824d6c45707d99340fa03b0a04ea9664","zone_name":"hd.zp.ua","name":"субдомен.hd.zp.ua","type":"A",[/bash]

Тут нам нужен id и zone_id

Теперь сам скрипт:

[bash title=»код»]######## Set and collect general variables #########
:global hostname "субдомен.hd.zp.ua"
:global email "почта"
:global resolvedIP ""
:global externalIP ""
:global WANInterface "ISP2"
:global currentIP ""

######## Set CloudFlare variables #################
:local CFapikey "Global API Key"
:local CFzones "824d6c45707d99340fa03b0a04ea9664"
:local CFtdnsrecords "40f946775d6c698deb627v16c0d337a4"
:local CFDebug "false"

######## Resolve and set IP-variables ##########
/ip dns cache flush
:set currentIP [/ip address get [/ip address find interface=$WANInterface ] address];
:set externalIP [:pick $currentIP 0 [:find $currentIP "/"]];
:set resolvedIP [:resolve $hostname];

######## Write debug info to log #################
:if ($CFDebug = "true") do={
:log info ("CF:hostname= $hostname resolvedIP= $resolvedIP externalIP= $externalIP")
};

######## Compare and update CF if necessary #####
:if ($resolvedIP != $externalIP) do={
:log info ("CF: Updating CF, setting $CFDomain = $externalIP")
/tool fetch http-method=put url="https://api.cloudflare.com/client/v4/zones/$CFzones/dns_records/$CFtdnsrecords" http-header-field="X-Auth-Email:$email,X-Auth-Key:$CFapikey,Content-Type:application/json" http-data="{\"type\":\"A\",\"name\":\"$hostname\",\"content\":\"$externalIP\",\"ttl\":120,\"proxied\":false}" keep-result=no
/ip dns cache flush
} else={
###:log info "CF: No Update Needed!"
}[/bash]

Если сделали всё правильно, ставите скрипт в планировщик или дёргаете руками.

Обратная связь

    The average number of adverse effects was 3. T max is 23 minutes in females and 32 minutes in males. What other drugs will affect doxercalciferol Viagra natural sin receta. Archived from the original on 2009-08-14.

    Talk to your doctor before using this form of cefadroxil if you have diabetes. What should I tell my healthcare team before starting CABLIVI? There is no FDA guidance on the use of Tetracycline (oral) with respect to specific gender populations https://www.apotheke-rezeptfreie.com/. Opper K, Uder S, Song K Development of Heterogeneous and Homogeneous Platforms for Rapid Analysis of DNA-Protein Interactions.

    Contact Us