Njalla

From MikroTik Wiki
Jump to navigation Jump to search

Script to update the Njalla Dynamic DNS from RouterOS.

 #                            ___  ___
 #    ________  ___  ______  /  / /  / _____
 #    \       \ \__\_\___  \/  / /  /_\___  \
 #    /   \   / /  /   _   /  /_/  //   _   /
 #   /   //  /\/  /    /  /    /   /    /  /
 #  / __//__/    /\_______\____\___\_______\
 #  \/     \____/
 #
 # Njal.la Dynamic DNS v1.0
 #
 # This script requires these policies: read, policy, test.
 #
 # To add this to the scheduler, first add this script as "njalla", then use: /system scheduler add interval=5m name=njalla on-event=njalla policy=read,write,policy,test start-time=startup
 #
 # Configurable items here:
 
 :local domain "<your-domain>"
 :local key "<your-key>"
 :local WANinterface "<your-wan-interface>"
 
 # Leave the rest of the script as is.
 :global NjallaIP
 :local ipv4addr
 
 :set ipv4addr [/ip address get [/ip address find interface="$WANinterface"] address]
 :set ipv4addr [:pick [:tostr $ipv4addr] 0 [:find [:tostr $ipv4addr] "/"]]
 
 :if ([:len $ipv4addr] = 0) do={
    :log error ("Could not get IP for interface " . $WANinterface)
    :error ("Could not get IP for interface " . $WANinterface)
 }
 
 :if ($ipv4addr != $NjallaIP) do={
     :put "IPv4 address changed to $ipv4addr";
     :set NjallaIP $ipv4addr;
     :log info ("Updating dynamic IPv4 address to IP " . $ipv4addr)
     /tool fetch check-certificate=no keep-result=no mode=https url="https://njal.la/update/?h=$domain&k=$key&a=$ipv4addr&quiet"
 } else {
     :log info ("Dynamic IPv4 address is still " . $ipv4addr)
 }