summaryrefslogtreecommitdiff
path: root/he-dyndns
blob: 3647c677a60dc328c82a1119faabcd26cf3c7fab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/bin/bash
#
# Copyright (C)2019 by Jason D. McCormick <jason@mfamily.org>
# Licensed under the Apache License 2.0. See LICENSE included
# with the distribution bundle that contained this file.
#

PATH="/usr/bin:/bin:/usr/sbin:/sbin"
 
## KNOWLEDGE IS GOOD ##
usage() { echo "Usage: $0 [-s SECRET] -d HOSTNAME[,HOSTNAME,...]" 1>&2; exit 1; }

## DO THE UPDATE FUNCTION ONCE FOR HAPPY EDITING ##
doUpdate() {
	/usr/bin/curl -s$1 "https://$FQDN:$CODE@$DNSSITE/nic/update?hostname=$FQDN" > $tfile
	if ! egrep -q '(good|nochg)' $tfile; then
		echo -n "v$1 change: "
		cat $tfile
		echo
		retval=1
	fi
}

## MAIN ##
while getopts "46hd:s:" arg; do
	case "${arg}" in
		4)
			DO4=Y
			;;
		6)
			DO6=Y
			;;
		d)
			FQDNS=${OPTARG}
			;;
		s)
			CODE=${OPTARG}
			;;
		*)
			usage
			;;
	esac
done

if [ -z "${FQDNS}" ]; then
	usage
fi

if [ ! -f /etc/he-dns-secret ] && [ -z "${CODE}" ]; then
	usage
fi

if [ -z "${CODE}" ]; then
	. /etc/he-dns-secret

	if [ -z "${CODE}" ]; then
		echo "/etc/he-dns-secret does not contain a CODE= variable"
		exit 1
	fi
fi

DNSSITE="dyn.dns.he.net";
retval=0
tfile=$(/bin/mktemp)

for FQDN in $(echo $FQDNS | tr ',' ' ')
do
	if [ ! -z ${DO4} ]; then
		doUpdate 4
	fi

	if [ ! -z ${DO6} ]; then
		doUpdate 6
	fi
done

rm $tfile

exit $retval