Joshua hace 9 años
padre
commit
ed94411eaa
Se han modificado 1 ficheros con 62 adiciones y 0 borrados
  1. 62 0
      cloudflareddns.sh

+ 62 - 0
cloudflareddns.sh

@@ -0,0 +1,62 @@
+#!/bin/sh
+
+# DSM Config
+__USERNAME__="$(echo ${@} | cut -d' ' -f1)"
+__PASSWORD__="$(echo ${@} | cut -d' ' -f2)"
+__HOSTNAME__="$(echo ${@} | cut -d' ' -f3)"
+__MYIP__="$(echo ${@}  | cut -d' ' -f4)"
+
+# log location
+__LOGFILE__="/var/log/cloudflareddns.log"
+
+# CloudFlare Config
+__RECTYPE__="A"
+__RECID__=""
+__ZONE_ID__=""
+__TTL__="1"
+__PROXY__="true"
+
+log() {
+    __LOGTIME__=$(date +"%b %e %T")
+    if [ "${#}" -lt 1 ]; then
+        false
+    else
+        __LOGMSG__="${1}"
+    fi
+    if [ "${#}" -lt 2 ]; then
+        __LOGPRIO__=7
+    else
+        __LOGPRIO__=${2}
+    fi
+
+    logger -p ${__LOGPRIO__} -t "$(basename ${0})" "${__LOGMSG__}"
+    echo "${__LOGTIME__} $(basename ${0}) (${__LOGPRIO__}): ${__LOGMSG__}" >> ${__LOGFILE__}
+}
+
+__URL__="https://api.cloudflare.com/client/v4/zones/${__ZONE_ID__}/dns_records/${__RECID__}"
+
+# Update DNS record:
+log "Updating with ${__MYIP__}..."
+__RESPONSE__=$(curl -s -X PUT "${__URL__}" \
+     -H "X-Auth-Email: ${__USERNAME__}" \
+     -H "X-Auth-Key: ${__PASSWORD__}" \
+     -H "Content-Type: application/json" \
+     --data "{\"type\":\"${__RECTYPE__}\",\"name\":\"${__HOSTNAME__}\",\"content\":\"${__MYIP__}\",\"ttl\":${__TTL__},\"proxied\":${__PROXY__}}")
+
+# Strip the result element from response json
+__RESULT__=$(echo ${__RESPONSE__} | grep -Po '"success":\K.*?[^\\],')
+echo ${__RESPONSE__}
+case ${__RESULT__} in
+    'true,')
+        __STATUS__='good'
+        true
+        ;;
+    *)
+        __STATUS__="${__RESULT__}"
+        log "__RESPONSE__=${__RESPONSE__}"
+        false
+        ;;
+esac
+log "Status: ${__STATUS__}"
+
+printf "%s" "${__STATUS__}"