Use a default "IncludeDir" only when no config file was specified

No longer use a default built-in value for the "IncludeDir" directive
when a configuration file was explicitly specified on the command line
using "--config"/"-f": This way no default include directory is scanned
when a possibly non-default configuration file is used which
(intentionally) did not specify an "IncludeDir" directive.

With this patch you now can use "-f /dev/null" for checking all built-in
defaults, regardless of any local configuration files in the default
drop-in directory (which would have been read in until this change).
This commit is contained in:
Alexander Barton
2024-01-21 20:15:47 +01:00
parent 3ab6c85284
commit b4c8e74ccb
5 changed files with 69 additions and 22 deletions
+40 -15
View File
@@ -903,26 +903,44 @@ Read_Config(bool TestOnly, bool IsStarting)
struct dirent *entry;
int i, n;
FILE *fd;
DIR *dh;
DIR *dh = NULL;
Config_Error(LOG_INFO, "Using configuration file \"%s\" ...", NGIRCd_ConfFile);
if (!NGIRCd_ConfFile[0]) {
/* No configuration file name explicitly given on the command
* line, use defaults but ignore errors when this file can't be
* read later on. */
strlcpy(file, SYSCONFDIR, sizeof(file));
strlcat(file, CONFIG_FILE, sizeof(file));
ptr = file;
} else
ptr = NGIRCd_ConfFile;
Config_Error(LOG_INFO, "Using %s configuration file \"%s\" ...",
!NGIRCd_ConfFile[0] ? "default" : "specified", ptr);
/* Open configuration file */
fd = fopen( NGIRCd_ConfFile, "r" );
if( ! fd ) {
/* No configuration file found! */
Config_Error( LOG_ALERT, "Can't read configuration \"%s\": %s",
NGIRCd_ConfFile, strerror( errno ));
if (!IsStarting)
return false;
Config_Error( LOG_ALERT, "%s exiting due to fatal errors!", PACKAGE_NAME );
exit( 1 );
fd = fopen(ptr, "r");
if (!fd) {
if (NGIRCd_ConfFile[0]) {
Config_Error(LOG_ALERT,
"Can't read specified configuration file \"%s\": %s",
ptr, strerror(errno));
if (IsStarting) {
Config_Error(LOG_ALERT,
"%s exiting due to fatal errors!",
PACKAGE_NAME);
exit(1);
}
}
Config_Error(LOG_WARNING,
"Can't read default configuration file \"%s\": %s - Ignored.",
ptr, strerror(errno));
}
opers_free();
Set_Defaults(IsStarting);
if (TestOnly)
if (TestOnly && fd)
Config_Error(LOG_INFO,
"Reading configuration from \"%s\" ...",
NGIRCd_ConfFile );
@@ -962,16 +980,23 @@ Read_Config(bool TestOnly, bool IsStarting)
ConfSSL_Init();
#endif
Read_Config_File(NGIRCd_ConfFile, fd);
fclose(fd);
if (fd) {
Read_Config_File(NGIRCd_ConfFile, fd);
fclose(fd);
}
if (Conf_IncludeDir[0]) {
/* Include directory was set in the main configuration file. So
* use it and show errors. */
dh = opendir(Conf_IncludeDir);
if (!dh)
Config_Error(LOG_ALERT,
"Can't open include directory \"%s\": %s",
Conf_IncludeDir, strerror(errno));
} else {
} else if (!NGIRCd_ConfFile[0]) {
/* No include dir set in the configuration file used (if any)
* but no config file explicitly specified either: so use the
* default include path here as well! */
strlcpy(Conf_IncludeDir, SYSCONFDIR, sizeof(Conf_IncludeDir));
strlcat(Conf_IncludeDir, CONFIG_DIR, sizeof(Conf_IncludeDir));
dh = opendir(Conf_IncludeDir);
-2
View File
@@ -92,8 +92,6 @@ main(int argc, const char *argv[])
#ifdef SNIFFER
NGIRCd_Sniffer = false;
#endif
strlcpy(NGIRCd_ConfFile, SYSCONFDIR, sizeof(NGIRCd_ConfFile));
strlcat(NGIRCd_ConfFile, CONFIG_FILE, sizeof(NGIRCd_ConfFile));
Fill_Version();