Difference between revisions of "Njalla"

From MikroTik Wiki
Jump to: navigation, search
 
Line 1: Line 1:
 
Script to update the Njalla Dynamic DNS from RouterOS.  
 
Script to update the Njalla Dynamic DNS from RouterOS.  
  
<code>
+
  #                            ___  ___
#                            ___  ___
+
  #    ________  ___  ______  /  / /  / _____
#    ________  ___  ______  /  / /  / _____
+
  #    \      \ \__\_\___  \/  / /  /_\___  \
#    \      \ \__\_\___  \/  / /  /_\___  \
+
  #    /  \  / /  /  _  /  /_/  //  _  /
#    /  \  / /  /  _  /  /_/  //  _  /
+
  #  /  //  /\/  /    /  /    /  /    /  /
#  /  //  /\/  /    /  /    /  /    /  /
+
  #  / __//__/    /\_______\____\___\_______\
#  / __//__/    /\_______\____\___\_______\
+
  #  \/    \____/
#  \/    \____/
+
  #
#
+
  # Njal.la Dynamic DNS v1.0
# Njal.la Dynamic DNS v1.0
+
  #
#
+
  # This script requires these policies: read, policy, test.
# 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
# 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:
# Configurable items here:
+
 
 
+
  :local domain "<your-domain>"
:local domain "<your-domain>"
+
  :local key "<your-key>"
:local key "<your-key>"
+
  :local WANinterface "<your-wan-interface>"
:local WANinterface "<your-wan-interface>"
+
 
 
+
  # Leave the rest of the script as is.
# Leave the rest of the script as is.
+
  :global NjallaIP
:global NjallaIP
+
  :local ipv4addr
:local ipv4addr
+
 
 
+
  :set ipv4addr [/ip address get [/ip address find interface="$WANinterface"] address]
:set ipv4addr [/ip address get [/ip address find interface="$WANinterface"] address]
+
  :set ipv4addr [:pick [:tostr $ipv4addr] 0 [:find [:tostr $ipv4addr] "/"]]
:set ipv4addr [:pick [:tostr $ipv4addr] 0 [:find [:tostr $ipv4addr] "/"]]
+
 
 
+
  :if ([:len $ipv4addr] = 0) do={
:if ([:len $ipv4addr] = 0) do={
+
    :log error ("Could not get IP for interface " . $WANinterface)
  :log error ("Could not get IP for interface " . $WANinterface)
+
    :error ("Could not get IP for interface " . $WANinterface)
  :error ("Could not get IP for interface " . $WANinterface)
+
  }
}
+
 
 
+
  :if ($ipv4addr != $NjallaIP) do={
:if ($ipv4addr != $NjallaIP) do={
+
      :put "IPv4 address changed to $ipv4addr";
    :put "IPv4 address changed to $ipv4addr";
+
      :set NjallaIP $ipv4addr;
    :set NjallaIP $ipv4addr;
+
      :log info ("Updating dynamic IPv4 address to IP " . $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"
    /tool fetch check-certificate=no keep-result=no mode=https url="https://njal.la/update/?h=$domain&k=$key&a=$ipv4addr&quiet"
+
  } else {
} else {
+
      :log info ("Dynamic IPv4 address is still " . $ipv4addr)
    :log info ("Dynamic IPv4 address is still " . $ipv4addr)
+
  }
}
 
</code>
 

Latest revision as of 15:59, 27 December 2017

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)
 }