Skip to content

Instantly share code, notes, and snippets.

@tkidd77
Forked from a-c-t-i-n-i-u-m/freenom.com.ddns.sh
Last active October 27, 2016 19:24
Show Gist options
  • Save tkidd77/af31147a4edbdbb49d22 to your computer and use it in GitHub Desktop.
Save tkidd77/af31147a4edbdbb49d22 to your computer and use it in GitHub Desktop.
Dynamic DNS support shell script for freenom.com
#!/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"
freenom_domain_host_record="www"
# warning! This script will blow away all other static records (if any exist) in your domain on freenom.com unless you edit/ add on to the script at line #38
# 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]=${freenom_domain_host_record}" -F "records[0][ttl]=14440" -F "records[0][value]=${current_ip}" \
#-F "dnsaction=modify" -F "records[1][line]=" -F "records[1][type]=A" -F "records[1][name]=www" -F "records[1][ttl]=14440" -F "records[1][value]=0.0.0.0" \
"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
@xand79
Copy link

xand79 commented Oct 27, 2016

I've extended your script here: https://gist.github.com/xand79/3998800ee1df9e2244d96750e829b8ff Thank you very much!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment