Created
July 7, 2015 12:07
-
-
Save a-c-t-i-n-i-u-m/bc4b1ff265b277dbf195 to your computer and use it in GitHub Desktop.
Dynamic DNS support shell script for freenom.com
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# settings | |
# Login information of freenom.com | |
freenom_email="main@address" | |
freenom_passwd="pswd" | |
# Open DNS management page in your browser. | |
# URL vs settings: | |
# https://my.freenom.com/clientarea.php?managedns={freenom_domain_name}&domainid={freenom_domain_id} | |
freenom_domain_name="domain.name" | |
freenom_domain_id="000000000" | |
# main | |
# get current ip address | |
current_ip="$(curl -s "https://api.ipify.org/")" | |
if [ "${current_ip}" == "" ]; then | |
echo "Could not get current IP address." 1>&2 | |
exit 1 | |
fi | |
# login | |
cookie_file=$(mktemp) | |
loginResult=$(curl --compressed -k -L -c "${cookie_file}" \ | |
-F "username=${freenom_email}" -F "password=${freenom_passwd}" \ | |
"https://my.freenom.com/dologin.php" 2>&1) | |
if [ "$(echo -e "${loginResult}" | grep "/clientarea.php?incorrect=true")" != "" ]; then | |
echo "Login failed." 1>&2 | |
exit 1 | |
fi | |
# update | |
updateResult=$(curl --compressed -k -L -b "${cookie_file}" \ | |
-F "dnsaction=modify" -F "records[0][line]=" -F "records[0][type]=A" -F "records[0][name]=" -F "records[0][ttl]=14440" -F "records[0][value]=${current_ip}" \ | |
"https://my.freenom.com/clientarea.php?managedns=${freenom_domain_name}&domainid=${freenom_domain_id}" 2>&1) | |
if [ "$(echo -e "$updateResult" | grep "<li class=\"dnssuccess\">")" == "" ]; then | |
echo "Update failed." 1>&2 | |
exit 1 | |
fi | |
# logout | |
curl --compressed -k -b "${cookie_file}" "https://my.freenom.com/logout.php" > /dev/null 2>&1 | |
# clean up | |
rm -f ${cookie_file} | |
exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Mmmmm... I'm testing it with my two domains on freenom.
I'm not sure that 14400 for TTL value is a good idea. I've set 300 for this value, so the update of address of *.duckdns.org will do every 5 minutes and not every 4 hours.
On freenom I had also set the main address of the domain, i.e. the one without host name and with only the domain name (so you could write "ping domain.tk" or http://domain.tk, or get an HTTPS certificate issued for the domain domani.tk).
With this change of yours, that line in the freenom config is lost, because you need to use a numeric address to configure it.
So the https certificate doesn't work either. So the https certificate for the domains doesn't work either.
Thank you, anyway.
Regards