mirror of
https://github.com/osmarks/ngircd.git
synced 2025-01-05 13:20:29 +00:00
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:
parent
3ab6c85284
commit
b4c8e74ccb
@ -10,6 +10,14 @@
|
||||
|
||||
ngIRCd 27
|
||||
|
||||
- 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. So now you 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).
|
||||
- The server "Name" in the "[Global]" section of the configuration file no
|
||||
longer needs to be set: When not set (or empty), ngIRCd now tries to
|
||||
deduce a valid IRC server name from the local host name ("node name"),
|
||||
|
@ -35,7 +35,8 @@
|
||||
;AdminEMail = admin@irc.server
|
||||
|
||||
# Text file which contains the ngIRCd help text. This file is required
|
||||
# to display help texts when using the "HELP <cmd>" command.
|
||||
# to display help texts when using the "HELP <cmd>" command. Default: a
|
||||
# built-in standard path (check "ngircd --configtest").
|
||||
;HelpFile = :DOCDIR:/Commands.txt
|
||||
|
||||
# Info text of the server. This will be shown by WHOIS and
|
||||
@ -50,7 +51,8 @@
|
||||
;Listen = 127.0.0.1,192.168.0.1
|
||||
|
||||
# Text file with the "message of the day" (MOTD). This message will
|
||||
# be shown to all users connecting to the server:
|
||||
# be shown to all users connecting to the server: Default: a built-in
|
||||
# standard path (check "ngircd --configtest").
|
||||
;MotdFile = :ETCDIR:/ngircd.motd
|
||||
|
||||
# A simple Phrase (<127 chars) if you don't want to use a motd file.
|
||||
@ -194,6 +196,9 @@
|
||||
|
||||
# Directory containing configuration snippets (*.conf), that should
|
||||
# be read in after parsing this configuration file.
|
||||
# Default: a built-in directory name when no configuration file was
|
||||
# explicitly given on the command line (check "ngircd --configtest"),
|
||||
# none (empty) otherwise.
|
||||
;IncludeDir = :ETCDIR:/conf.d
|
||||
|
||||
# Enhance user privacy slightly (useful for IRC server on TOR or I2P)
|
||||
|
@ -107,7 +107,8 @@ command. This information is not required by the server but by RFC!
|
||||
Text file which contains the ngIRCd help text. This file is required
|
||||
to display help texts when using the "HELP <cmd>" command.
|
||||
Please note: Changes made to this file take effect when ngircd starts up
|
||||
or is instructed to re-read its configuration file.
|
||||
or is instructed to re-read its configuration file. Default: a built-in
|
||||
standard path.
|
||||
.TP
|
||||
\fBInfo\fR (string)
|
||||
Info text of the server. This will be shown by WHOIS and LINKS requests for
|
||||
@ -123,7 +124,7 @@ IP addresses and interfaces by default.
|
||||
Text file with the "message of the day" (MOTD). This message will be shown to
|
||||
all users connecting to the server. Please note: Changes made to this file
|
||||
take effect when ngircd starts up or is instructed to re-read its
|
||||
configuration file.
|
||||
configuration file. Default: a built-in standard path.
|
||||
.TP
|
||||
\fBMotdPhrase\fR (string)
|
||||
A simple Phrase (<127 chars) if you don't want to use a MOTD file.
|
||||
@ -294,7 +295,17 @@ Default: yes.
|
||||
\fBIncludeDir\fR (string)
|
||||
Directory containing configuration snippets (*.conf), that should be read in
|
||||
after parsing the current configuration file.
|
||||
Default: none.
|
||||
Default: a built-in directory name when no configuration file was explicitly
|
||||
given on the command line (check "ngircd --configtest"), none (empty)
|
||||
otherwise.
|
||||
.PP
|
||||
.RS
|
||||
This way no default include directory is used when a possibly non-default
|
||||
configuration file was explicitly specified using "--config"/"-f" on the
|
||||
command line which (intentionally) did not specify an
|
||||
.I "IncludeDir"
|
||||
directive.
|
||||
.RE
|
||||
.TP
|
||||
\fBMorePrivacy\fR (boolean)
|
||||
This will cause ngIRCd to censor user idle time, logon time as well as the
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user