From 3efd1b309686a55c8d394afa316bb5149c00435c Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 10 Sep 2021 02:23:04 +0200 Subject: Adding ddns-client program. Signed-off-by: Daniel Baumann --- ddns-client/bin/ddns-client | 91 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100755 ddns-client/bin/ddns-client diff --git a/ddns-client/bin/ddns-client b/ddns-client/bin/ddns-client new file mode 100755 index 0000000..d98e70b --- /dev/null +++ b/ddns-client/bin/ddns-client @@ -0,0 +1,91 @@ +#!/bin/sh + +# Copyright (C) 2014-2021 Daniel Baumann +# +# SPDX-License-Identifier: GPL-3.0+ +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +set -e + +PROJECT="open-infrastructure" +SOFTWARE="network-tools" +PROGRAM="ddns-client" + +HOOKS="/etc/${SOFTWARE}/hooks" + +# Parameter +PARAMETER="${1}" + +if [ -z "${PARAMETER}" ] +then + echo "Usage: ${PROGRAM} COMMAND [OPTIONS]" >&2 + echo "Usage: ${PROGRAM} COMMAND1,COMMAND2,... [COMMON_OPTIONS]" >&2 + echo + echo "See ${PROGRAM}(1) and ${SOFTWARE}(7) for more information." + + exit 1 +fi + +# Command +COMMANDS="${1}" + +# Options +shift 1 +OPTIONS="${*}" + +for COMMAND in $(echo "${COMMANDS}" | sed -e 's|,| |g') +do + if [ ! -e "/usr/libexec/${PROGRAM}/${COMMAND}" ] + then + echo "'${COMMAND}': no such ${PROGRAM} command, see container(1)." >&2 + exit 1 + fi + + # Pre hooks + for FILE in "${HOOKS}/pre-${PROGRAM}".* "${HOOKS}/${NAME}.pre-${PROGRAM}" + do + if [ -x "${FILE}" ] + then + "${FILE}" + fi + done + + # logfile + case "${COMMAND}" in + create|remove) + if [ -z "${DDNS_CLIENT_USER}" ] + then + DDNS_CLIENT_USER="${SUDO_USER:-${USER}}" + fi + + DATE="$(date +%Y-%m-%d\ %H:%M:%S)" + HOST="$(hostname -f 2> /dev/null || hostname)" + + echo "${DATE} ${HOST} ${DDNS_CLIENT_USER} ${PROGRAM} ${COMMAND} ${OPTIONS}" >> "/var/log/${SOFTWARE}/${PROGRAM}.log" + ;; + esac + + # Run + "/usr/libexec/${PROGRAM}/${COMMAND}" "${OPTIONS}" + + # Post hooks + for FILE in "${HOOKS}/post-${PROGRAM}".* "${HOOKS}/${NAME}.post-${PROGRAM}" + do + if [ -x "${FILE}" ] + then + "${FILE}" + fi + done +done -- cgit v1.2.3