From b9ed302de17e2619db56e78ce1513cadf88484e4 Mon Sep 17 00:00:00 2001 From: Philip Prindeville Date: Mon, 23 Oct 2023 13:52:40 -0600 Subject: [PATCH] Remove hardcoded paths to commands, configs, etc. in source --- apps/backend/Makefile.in | 2 +- configure | 23 ++++++++++++++++++----- configure.ac | 11 ++++++++--- include/clixon_config.h.in | 12 ++++++++++++ lib/src/clixon_client.c | 2 +- util/clixon_netconf_ssh_callhome.c | 12 ++++++++---- 6 files changed, 48 insertions(+), 14 deletions(-) diff --git a/apps/backend/Makefile.in b/apps/backend/Makefile.in index 0b48743e..2a412bca 100644 --- a/apps/backend/Makefile.in +++ b/apps/backend/Makefile.in @@ -166,7 +166,7 @@ install-include: clixon_backend.h clixon_backend_client.h clixon_backend_transac .SUFFIXES: .c .o .c.o: - $(CC) $(INCLUDES) $(CPPFLAGS) -D__PROGRAM__=\"$(APPL)\" -DCLIXON_CONFIG_SBINDIR=\"$(sbindir)\" $(CFLAGS) -c $< + $(CC) $(INCLUDES) $(CPPFLAGS) -D__PROGRAM__=\"$(APPL)\" $(CFLAGS) -c $< # Just link test programs test.c : diff --git a/configure b/configure index d761ae85..248c4e4b 100755 --- a/configure +++ b/configure @@ -6602,6 +6602,24 @@ then : fi +# Default location for config file + +printf "%s\n" "#define CLIXON_DEFAULT_CONFIG \"${CLIXON_DEFAULT_CONFIG}\"" >>confdefs.h + + + +printf "%s\n" "#define CLIXON_CONFIG_BINDIR \"${BINDIR}\"" >>confdefs.h + + +printf "%s\n" "#define CLIXON_CONFIG_LOCALSTATEDIR \"${LOCALSTATEDIR}\"" >>confdefs.h + + +printf "%s\n" "#define CLIXON_CONFIG_SBINDIR \"${SBINDIR}\"" >>confdefs.h + + +printf "%s\n" "#define CLIXON_CONFIG_SYSCONFDIR \"${SYSCONFDIR}\"" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 printf %s "checking for socket in -lsocket... " >&6; } if test ${ac_cv_lib_socket_socket+y} @@ -6931,11 +6949,6 @@ if test -n "${CLICON_GROUP}"; then echo "Using CLICON_GROUP here: ${CLICON_GROUP}" fi -# Default location for config file - -printf "%s\n" "#define CLIXON_DEFAULT_CONFIG \"${CLIXON_DEFAULT_CONFIG}\"" >>confdefs.h - - # Dummy to disable native language support (nls) to remove warnings in buildroot # Check whether --enable-nls was given. if test ${enable_nls+y} diff --git a/configure.ac b/configure.ac index e6e7ae63..797e480a 100644 --- a/configure.ac +++ b/configure.ac @@ -361,6 +361,14 @@ AC_ARG_WITH([configfile], [AS_HELP_STRING([--with-configfile=FILE],[Set default path to config file])], [CLIXON_DEFAULT_CONFIG="$withval"],) +# Default location for config file +AC_DEFINE_UNQUOTED(CLIXON_DEFAULT_CONFIG,"${CLIXON_DEFAULT_CONFIG}",[Location for apps to find default config file]) + +AC_DEFINE_UNQUOTED(CLIXON_CONFIG_BINDIR, "${BINDIR}", [Pass-through $bindir]) +AC_DEFINE_UNQUOTED(CLIXON_CONFIG_LOCALSTATEDIR, "${LOCALSTATEDIR}", [Pass-through $localstatedir]) +AC_DEFINE_UNQUOTED(CLIXON_CONFIG_SBINDIR, "${SBINDIR}", [Pass-through $sbindir]) +AC_DEFINE_UNQUOTED(CLIXON_CONFIG_SYSCONFDIR, "${SYSCONFDIR}", [Pass-through $sysconfdir]) + AC_CHECK_LIB(socket, socket) AC_CHECK_LIB(dl, dlopen) @@ -443,9 +451,6 @@ if test -n "${CLICON_GROUP}"; then echo "Using CLICON_GROUP here: ${CLICON_GROUP}" fi -# Default location for config file -AC_DEFINE_UNQUOTED(CLIXON_DEFAULT_CONFIG,"${CLIXON_DEFAULT_CONFIG}",[Location for apps to find default config file]) - # Dummy to disable native language support (nls) to remove warnings in buildroot AC_ARG_ENABLE(nls) diff --git a/include/clixon_config.h.in b/include/clixon_config.h.in index 5476737f..32b8430e 100644 --- a/include/clixon_config.h.in +++ b/include/clixon_config.h.in @@ -1,5 +1,17 @@ /* include/clixon_config.h.in. Generated from configure.ac by autoheader. */ +/* Pass-through $bindir */ +#undef CLIXON_CONFIG_BINDIR + +/* Pass-through $localstatedir */ +#undef CLIXON_CONFIG_LOCALSTATEDIR + +/* Pass-through $sbindir */ +#undef CLIXON_CONFIG_SBINDIR + +/* Pass-through $sysconfdir */ +#undef CLIXON_CONFIG_SYSCONFDIR + /* Location for apps to find default config file */ #undef CLIXON_DEFAULT_CONFIG diff --git a/lib/src/clixon_client.c b/lib/src/clixon_client.c index f9c4dbc8..3134c342 100644 --- a/lib/src/clixon_client.c +++ b/lib/src/clixon_client.c @@ -74,7 +74,7 @@ /* Netconf binary default, override with environment variable: CLIXON_NETCONF_BIN * Could try to get path from install/makefile data */ -#define CLIXON_NETCONF_BIN "/usr/local/bin/clixon_netconf" +#define CLIXON_NETCONF_BIN CLIXON_CONFIG_BINDIR "/clixon_netconf" #define CLIXON_CLIENT_MAGIC 0x54fe649a diff --git a/util/clixon_netconf_ssh_callhome.c b/util/clixon_netconf_ssh_callhome.c index 78cafb22..2fb09082 100644 --- a/util/clixon_netconf_ssh_callhome.c +++ b/util/clixon_netconf_ssh_callhome.c @@ -68,6 +68,10 @@ sudo clixon_netconf_ssh_callhome -a 127.0.0.1 -c /var/tmp/./test_netconf_ssh_cal */ +#ifdef HAVE_CONFIG_H +#include "clixon_config.h" /* generated by config & autoconf */ +#endif + #include #include #include @@ -79,7 +83,7 @@ sudo clixon_netconf_ssh_callhome -a 127.0.0.1 -c /var/tmp/./test_netconf_ssh_cal #include #define NETCONF_CH_SSH 4334 -#define SSHDBIN_DEFAULT "/usr/sbin/sshd" +#define SSHDBIN_DEFAULT CLIXON_CONFIG_SBINDIR "/sshd" #define UTIL_OPTS "hD:f:a:p:s:c:C:" static int @@ -151,7 +155,7 @@ ssh_server_exec(int s, int nr; char *optstr = NULL; size_t len; - const char *formatstr = "Subsystem netconf /usr/local/bin/clixon_netconf -f %s"; + const char *formatstr = "Subsystem netconf " CLIXON_CONFIG_BINDIR "/clixon_netconf -f %s"; if (s < 0){ errno = EINVAL; @@ -237,7 +241,7 @@ usage(char *argv0) "\t-f ipv4|ipv6 \tSocket address family(inet:ipv4-address default)\n" "\t-a \tIP address (eg 1.2.3.4) - mandatory\n" "\t-p \tPort (default 4334)\n" - "\t-c \tClixon config file - (default /usr/local/etc/clixon.xml)\n" + "\t-c \tClixon config file - (default " CLIXON_DEFAULT_CONFIG ")\n" "\t-C \tSSHD config file - (default /dev/null)\n" "\t-s \tPath to sshd binary, default %s\n" , @@ -261,7 +265,7 @@ main(int argc, int s = -1; char *sshdbin = SSHDBIN_DEFAULT; char *sshdconfigfile = "/dev/null"; - char *clixonconfigfile = "/usr/local/etc/clixon.xml"; + char *clixonconfigfile = CLIXON_CONFIG_SYSCONFDIR "/clixon.xml"; optind = 1; opterr = 0;