summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrei Pavel <andrei@isc.org>2024-02-20 16:37:09 +0100
committerAndrei Pavel <andrei@isc.org>2024-02-22 09:06:32 +0100
commitb905f39f355dea2685c60834ba6431a797622b2d (patch)
treedf07fa1e48dc05d4e8cb4c8a1a1d21afea5a76c5
parent[#3025] add isFile (diff)
downloadkea-b905f39f355dea2685c60834ba6431a797622b2d.tar.xz
kea-b905f39f355dea2685c60834ba6431a797622b2d.zip
[#3025] fix location detection in kea-admin
-rw-r--r--src/bin/admin/kea-admin.in57
1 files changed, 31 insertions, 26 deletions
diff --git a/src/bin/admin/kea-admin.in b/src/bin/admin/kea-admin.in
index a2617b1d9e..4d62192cce 100644
--- a/src/bin/admin/kea-admin.in
+++ b/src/bin/admin/kea-admin.in
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright (C) 2014-2023 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2014-2024 Internet Systems Consortium, Inc. ("ISC")
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -36,8 +36,8 @@ prefix="@prefix@"
export prefix
exec_prefix="@exec_prefix@"
export exec_prefix
+BASENAME=$(basename ${0})
SCRIPTS_DIR_DEFAULT="@datarootdir@/@PACKAGE@/scripts"
-scripts_dir="${SCRIPTS_DIR_DEFAULT}"
VERSION="@PACKAGE_VERSION@"
assume_yes=0
@@ -47,27 +47,28 @@ dhcp_version=0
dump_file=""
dump_qry=""
-# Include the installed admin-utils.sh if available. Fallback to sources otherwise.
-if test -f "@datarootdir@/@PACKAGE_NAME@/scripts/admin-utils.sh"; then
- . "@datarootdir@/@PACKAGE_NAME@/scripts/admin-utils.sh"
+# Detect if this is installed or in sources. Check for sources first, so that
+# the the unexpected situations with weird paths fall on the default case of
+# installed.
+script_path=$(cd "$(dirname "${0}")" && pwd)
+if test "${script_path}" = "@abs_top_builddir@/src/bin/admin"; then
+ admin_utils="@abs_top_builddir@/src/bin/admin/admin-utils.sh"
+ KEA_LFC="@abs_top_builddir@/src/bin/lfc/kea-lfc"
+ SCRIPTS_DIR="@abs_top_builddir@/src/share/database/scripts"
else
- . "@abs_top_builddir@/src/bin/admin/admin-utils.sh"
+ admin_utils="@datarootdir@/@PACKAGE_NAME@/scripts/admin-utils.sh"
+ KEA_LFC="@sbindir@/kea-lfc"
+ SCRIPTS_DIR="@datarootdir@/@PACKAGE@/scripts"
fi
-# Find the installed kea-lfc if available. Fallback to sources otherwise.
-if test -x "@sbindir@/kea-lfc"; then
- kea_lfc="@sbindir@/kea-lfc"
-else
- kea_lfc="@abs_top_builddir@/src/bin/lfc/kea-lfc"
-fi
+. "${admin_utils}"
# Prints out usage version.
usage() {
printf \
-'
-kea-admin %s
+'%s %s
-This is a kea-admin script that conducts administrative tasks on
+This is a script that conducts administrative tasks on
the Kea installation.
Usage: %s COMMAND BACKEND [parameters]
@@ -103,7 +104,7 @@ PARAMETERS: Parameters are optional in general, but may be required
-i or --input to specify the name of file from which leases will be uploaded
-o or --output to specify the name of file to which leases will be dumped
-y or --yes - assume yes on overwriting temporary files
-' "${VERSION}" "${0}" "${SCRIPTS_DIR_DEFAULT}"
+' "${BASENAME}" "${VERSION}" "${BASENAME}" "${SCRIPTS_DIR_DEFAULT}"
}
### Logging functions ###
@@ -267,10 +268,10 @@ mysql_init() {
printf "Verifying create permissions for %s\n" "$db_user"
mysql_can_create
- printf "Initializing database using script %s\n" $scripts_dir/mysql/dhcpdb_create.mysql
+ printf "Initializing database using script %s\n" "${SCRIPTS_DIR}/mysql/dhcpdb_create.mysql"
mysql -B --host="${db_host}" --user="${db_user}" \
--password="${db_password}" \
- "${db_name}" ${extra_arguments} < "${scripts_dir}/mysql/dhcpdb_create.mysql"
+ "${db_name}" ${extra_arguments} < "${SCRIPTS_DIR}/mysql/dhcpdb_create.mysql"
printf "mysql returned status code %s\n" "${EXIT_CODE}"
@@ -303,7 +304,7 @@ pgsql_init() {
exit 2
fi
- init_script="$scripts_dir/pgsql/dhcpdb_create.pgsql"
+ init_script="${SCRIPTS_DIR}/pgsql/dhcpdb_create.pgsql"
printf "Initializing database using script %s\n" $init_script
run_command \
pgsql_execute_script $init_script
@@ -340,7 +341,7 @@ mysql_upgrade() {
version=$(checked_mysql_version)
printf 'Schema version reported before upgrade: %s\n' "${version}"
- upgrade_scripts_dir=${scripts_dir}/mysql
+ upgrade_scripts_dir="${SCRIPTS_DIR}/mysql"
# Check if the scripts directory exists at all.
if [ ! -d ${upgrade_scripts_dir} ]; then
@@ -389,7 +390,7 @@ pgsql_upgrade() {
version=$(checked_pgsql_version)
printf 'Schema version reported before upgrade: %s\n' "${version}"
- upgrade_scripts_dir=${scripts_dir}/pgsql
+ upgrade_scripts_dir="${SCRIPTS_DIR}/pgsql"
# Check if the scripts directory exists at all.
if [ ! -d ${upgrade_scripts_dir} ]; then
@@ -503,7 +504,6 @@ memfile_dump() {
}
mysql_dump() {
-
# Check the lease type was given
if [ ${dhcp_version} -eq 0 ]; then
log_error "lease-dump: lease type ( -4 or -6 ) needs to be specified"
@@ -563,7 +563,6 @@ mysql_dump() {
log_info "Successfully dumped lease${dhcp_version} to ${dump_file}."
}
-### Functions used for dump
pgsql_dump() {
# Check the lease type was given
if [ ${dhcp_version} -eq 0 ]; then
@@ -707,7 +706,7 @@ lease_upload() {
cleaned_up_csv="/tmp/$(basename "${input_file}").tmp"
check_file_overwrite "${cleaned_up_csv}"
cp "${input_file}" "${cleaned_up_csv}"
- "${kea_lfc}" "-${dhcp_version}" -x "${cleaned_up_csv}" \
+ "${KEA_LFC}" "-${dhcp_version}" -x "${cleaned_up_csv}" \
-i "${cleaned_up_csv}.1" -o "${cleaned_up_csv}.output" \
-f "${cleaned_up_csv}.completed" -p "${cleaned_up_csv}.pid" \
-cignored-path
@@ -818,6 +817,12 @@ if [ -z "${command}" ]; then
exit 1
fi
+# Check if this is a simple request for usage.
+if test "${command}" = "--help" ; then
+ usage
+ exit 0
+fi
+
# Check if this is a simple question about version.
if test "${command}" = "-v" || test "${command}" = "--version" ; then
echo "${VERSION}"
@@ -917,8 +922,8 @@ do
;;
-d|--directory)
shift
- scripts_dir=${1-}
- if [ -z "${scripts_dir}" ]; then
+ SCRIPTS_DIR=${1-}
+ if [ -z "${SCRIPTS_DIR}" ]; then
log_error "-d or --directory requires a parameter"
usage
exit 1