#!/usr/bin/env bash
CACERT='-----BEGIN CERTIFICATE-----
MIICDjCCAcCgAwIBAgIUNZ7icbUvUaPBFR+LqqPoVG6Aw7swBQYDK2VwMIGMMQsw
CQYDVQQGEwJjYTEPMA0GA1UECAwGUXVlYmVjMREwDwYDVQQHDAhNb250cmVhbDET
MBEGA1UECgwKQmluYXJ5Ym9uZTEaMBgGA1UEAwwRbnMuYmluYXJ5Ym9uZS5jb20x
KDAmBgkqhkiG9w0BCQEWGWhvc3RtYXN0ZXJAYmluYXJ5Ym9uZS5jb20wHhcNMjYw
NzIzMDE1ODAzWhcNMzYwNzIwMDE1ODAzWjCBjDELMAkGA1UEBhMCY2ExDzANBgNV
BAgMBlF1ZWJlYzERMA8GA1UEBwwITW9udHJlYWwxEzARBgNVBAoMCkJpbmFyeWJv
bmUxGjAYBgNVBAMMEW5zLmJpbmFyeWJvbmUuY29tMSgwJgYJKoZIhvcNAQkBFhlo
b3N0bWFzdGVyQGJpbmFyeWJvbmUuY29tMCowBQYDK2VwAyEAyrQyhbXaz8rL8+KV
ZnJB9RnS7aX9Xng8tvM/cAGymN2jMjAwMB0GA1UdDgQWBBTt0/LXzLpyy9R607Le
P5vn7Z+eETAPBgNVHRMBAf8EBTADAQH/MAUGAytlcANBAKbgiP2VL9nDk3E4nOUs
ccnPY+KTvtBHIsXFW6pw/FTNFyww4pQoY6+1bYNfcGPGETKPZZ23lpm5IBHrfUep
iAM=
-----END CERTIFICATE-----'
persist=0
if [[ "$1" == "-t" ]]; then
	persist=1
	shift
fi
if [[ $# -eq 0 || $1 == "--help" || $# -lt 2 ]]; then
	case "$1" in
		--help|"")
		;;
		*)
			echo "Error: invalid arguments" >&2
		;;
	esac
	echo "Dynamic DNS update client for dyn.binarybone.com v1"
	echo "Usage: $0 [-t] <login> <secret>"
	echo "-t     daemon mode"
	exit 0
fi
while true; do
	{
		echo "login $1"
		echo "secret $2"
		echo "exe dyn"
	} | openssl s_client -quiet -CAfile <(printf '%s\n' "$CACERT") -verify_return_error -connect dyn.binarybone.com:53280 2>/dev/null
	result=${PIPESTATUS[1]}
	[[ $persist -eq 1 ]] || break
	if [[ $result -eq 0 ]]; then
		sleep 5m
	else
		echo "Dynamic DNS error updating $1"
		sleep 1m
	fi
done
