summaryrefslogtreecommitdiffstats
path: root/ddns-client
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@open-infrastructure.net>2021-09-10 00:23:04 +0000
committerDaniel Baumann <daniel.baumann@open-infrastructure.net>2021-09-12 11:22:01 +0000
commit3efd1b309686a55c8d394afa316bb5149c00435c (patch)
treea904a834d796ac9ee9759ff69779a6e3202aa692 /ddns-client
parentAdding ddns-client Makefile. (diff)
downloadnetwork-tools-3efd1b309686a55c8d394afa316bb5149c00435c.tar.xz
network-tools-3efd1b309686a55c8d394afa316bb5149c00435c.zip
Adding ddns-client program.
Signed-off-by: Daniel Baumann <daniel.baumann@open-infrastructure.net>
Diffstat (limited to 'ddns-client')
-rwxr-xr-xddns-client/bin/ddns-client91
1 files changed, 91 insertions, 0 deletions
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 <daniel.baumann@open-infrastructure.net>
+#
+# 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 <https://www.gnu.org/licenses/>.
+
+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