I self-host a Minecraft server, and keeping up with IP address changes is very annoying. When someone suggested I use freemyip, I immediately checked it out, and liked the simplicity of it. I got a subdomain, and I was ready to go.
I logged into my router, checked the list of DDNS providers, and... it wasn't there. I searched around for how to add a DDNS provider to my router, but no luck.
I then remembered that I had rooted the router before, and tried to log in via SSH.
Unfortunately, I had forgotten the password I set when I rooted it.
I used autoflashgui to reset the password (I put echo root:root | chpasswd
in the command field, and selected "Ping" as the execution method), and I was in.
I started poking around on the command line:
root@dsldevice:~# cd /www
root@dsldevice:/www# ls
cards docroot lua snippets wizard-cards
root@dsldevice:/www# ls docroot/
ajax css gateway.lp intercept.lp login.lp parental-block.lp password.lp
change-access-key.lp font img js modals password-reset.lp
root@dsldevice:/www# grep freedns docroot/*
root@dsldevice:/www# grep freedns docroot/*/*
docroot/modals/wanservices-modal.lp: ddns_supported_services["freedns.afraid.org-basicauth"] = "afraid.org-basicauth"
docroot/modals/wanservices-modal.lp: ddns_supported_services["freedns.afraid.org-keyauth"] = "afraid.org-keyauth"
root@dsldevice:/www# cd docroot/modals/
root@dsldevice:/www/docroot/modals# vi wanservices-modal.lp
...
-- open the supported services file that come with the ddns package
local ddns_supported_services , valid_services = {}, {}
local path = format("/etc/ddns/%s", name)
local f = io.open(path, "r")
...
root@dsldevice:/www/docroot/modals# ls /etc/ddns/
root@dsldevice:/www/docroot/modals# cat /etc/ddns/*
...
"freedns.afraid.org" "http://[USERNAME]:[PASSWORD]@freedns.afraid.org/nic/update?hostname=[DOMAIN]&myip=[IP]"
...
So, I found the right file; all I needed to do was add an entry, which I proceeded to do.
"freemyip.com" "https://freemyip.com/update?token=[PASSWORD]&domain=[DOMAIN]"
I then looked in the router settings; the entry was there, I added the token and domain, and it worked perfectly. (First try!)