Страница 1 из 1

Скрипт для FreeDNS.afraid.org

Добавлено: 14 фев 2015, 20:36
LESHIY_ODESSA
Ключевая особенность и отличие от других версий скриптов для этого сервиса в том, что скрипт работает если у вас несколько субдоменнов.

Ни разу не программист и даже хуже. Максимум ковырял cmd и bat файлы. Возможны какие то огрехи, но скрипт рабочий, использую пол года.
С удовольствием выслушаю замечания и предложения.

Код: Выделить всё

##############   Script FreeDNS.afraid.org   ##################
##############   PARSER EDITION   ##################
##############   CREATED LESHIY_ODESSA   ##################
 
# Указываем Direct URL, который находится https://freedns.afraid.org/dynamic/
# Если версия RouterOS 5.xx, то убрать из URL шифрование - "https" поменять на "http". Так же смотри ниже.
# Перед знаком "?" поставьте обратный слеш "\"
:global "direct-url" "http://freedns.afraid.org/dynamic/update.php\?3535345345bEtWMXF3S1J3Ojg2NTI0NzE="
 
# Указываем URL API "ASCII"
# Войдите под своим аккаунтом и откройте страницу  https://freedns.afraid.org/api/
# Затем скопируйте свой URL - Available API Interfaces : ASCII (!!! НЕ XML !!!)
# ВНИМАНИЕ !!!! - Перед вопросительным знаком ставим обратный слеш - "\".
# Если версия RouterOS 5.xx, то убрать из URL шифрование - "https" поменять на "http".
:global "api-url" "http://freedns.afraid.org/api/\?action=getdyndns&sha=4ftdfgdg53fr2a23faff18a9d1abf38b"
 
# Указываем ваш домен или субдомен.
:global "dns-domain" "ВАШ ДОМЕН"
 
# Задаем переменную для внешнего интерфейса
# при DUAL ACCESS указываем PPPoE (PPTP) интерфейс. Учитываем регистр букв.
:global "out-interface" "pppoe"
 
# !!!!!!!!!!!!!!!!! Больше ничего редактировать не нужно !!!!!!!!!!!!!!!!!
 
# Проверяем есть ли файл с IP домена - freedns.txt
:if ([:len [/file find name=freedns.txt]] > 0) do={
} else={
/tool fetch url=$"api-url" dst-path="/freedns.txt"
}
# Узнаем IP адрес домена с помощью API и парсинга.
# Парсим файл
:local "result" [/file get freedns.txt contents]
:local "startloc" ([:find $"result" $"dns-domain"] + ([:len $"dns-domain"] + 1))
:local "endloc" ([:find $"result" $"direct-url" -1] -1)
:global "dns-domain-ip" [:pick $"result" $"startloc" $"endloc"]
 
# Узнаем текущий IP адрес на внешнем интерфейсе
:global "current-ip" [/ip address get [find interface=$"out-interface"] address]
 
# Из полученного IP адреса исключаем маску подсети
:set "current-ip" [:pick $"current-ip" 0 ([:len $"current-ip"]-3) ]
 
# Сравниваем внешний IP с IP адресом DNS домена.
:if ($"current-ip" != $"dns-domain-ip") do={
 
# Если разные, то отправляем на freedns.afraid.org наш внешний IP с помощью Direct URL
:log info ("Service Dynamic DNS: old IP address $"dns-domain-ip" for $"dns-domain" CHANGED to -> $"current-ip"")
/tool fetch url=$"direct-url" keep-result=no
# Скачиваем файл с новым IP через 5 сек.
:delay 5
/tool fetch url=$"api-url" dst-path="/freedns.txt"
} else={
# Чтобы не засорять лог можно/нужно закомментировать эту строку.
:log info ("IP address is NOT CHANGED, the update is not required")
}
 
# Начиная с версии RouterOS version 6.0rc12 поддерживается шифрование /tool fetch mode=https
# В :global "direct-url" нужно тоже изменить на https://
# Для версии RouterOS 6.xx
# /tool fetch mode=https url=$"direct-url"
 
#      http://wiki.mikrotik.com/wiki/Manual:Scripting
#      http://wiki.mikrotik.com/wiki/Manual:Scripting-examples
#      http://wiki.mikrotik.com/wiki/Manual:Tools/Fetch
 
##############Script FreeDNS.afraid.org##################


Re: Скрипт для FreeDNS.afraid.org

Добавлено: 15 фев 2015, 18:47
podarok66
Спасибо, очень хорошо расписано))

Re: Скрипт для FreeDNS.afraid.org

Добавлено: 15 фев 2015, 19:10
gmx
Теперь, когда есть IP cloud, а также возможность указать для
регистрации локальный IP (если за НАТом провайдера), то необходимость в левых
DynDNS отпала. И слава Богу!