Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # HomingBeacon Main Dynamic DNS Update Script
- # Written by Sam Norris, ChangeIP.com
- # 20100728 Tested on RouterOS 4.9
- # 20110511 Tested on RouterOS 5.2
- # Set your specific ChangeIP.com preferences here.
- :global ddnsuser "USERNAME"
- :global ddnspass "PASS"
- :global ddnshost "HOST"
- # Change ddnsport to 8245 to bypass proxy.
- :local ddnsport 80
- # Do not edit anything below this line. You have been warned.
- # Abusive updates to the system will cause firewall blocks.
- # Please be considerate and
- # do not let this script run more than once per 3-5 minutes.
- :log info "DDNS: Starting."
- # Initialize checkpoint
- :global ddnscheckpoint
- :if ([:typeof $ddnscheckpoint] = "time") do={
- :log info ("DDNS: Last check was " . ([/system clock get time] - $ddnscheckpoint))
- } else={
- :log info "DDNS: Cannot determine checkpoint, set now."
- :global ddnscheckpoint ( [/system clock get time] - 1d )
- }
- # Get the current IP
- :if ([/system clock get time] - $ddnscheckpoint > [:totime 180s] || [/system clock get time] - $ddnscheckpoint < [:totime 0s]) do={
- :log info "DDNS: Performing remote IP detection."
- /tool fetch address="ip.changeip.com" host="ip.changeip.com" src-path=("/?" . [/int eth get 0 mac-address ]) dst-path="ip.changeip.com.txt" mode=http port=$ddnsport
- :global ddnscheckpoint [/system clock get time]
- } else={
- :log info "DDNS: Please be considerate and wait a few seconds longer."
- :break
- }
- # Parse the IP address received from fetch script.
- :global ddnslastip
- :local html [/file get "ip.changeip.com.txt" contents]
- :local ddnsip [:pick $html ([:find $html "<!--IPADDR="] + 11) [:find $html "-->"] ]
- # Is it a valid IP and is it different than the last one?
- :if ([:typeof [:toip $ddnsip]] = "ip" AND $ddnsip != $ddnslastip ) do={
- :log info "DDNS: Sending UPDATE with $ddnsip"
- :log info [/tool dns-update name=$ddnshost address=$ddnsip key-name=$ddnsuser key=$ddnspass ]
- :global ddnslastip $ddnsip
- } else={
- :log info "DDNS: No update required."
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment