mirror of
https://github.com/osmarks/ngircd.git
synced 2025-01-07 06:10:28 +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
|
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
|
- 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
|
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"),
|
deduce a valid IRC server name from the local host name ("node name"),
|
||||||
|
@ -35,7 +35,8 @@
|
|||||||
;AdminEMail = admin@irc.server
|
;AdminEMail = admin@irc.server
|
||||||
|
|
||||||
# Text file which contains the ngIRCd help text. This file is required
|
# 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
|
;HelpFile = :DOCDIR:/Commands.txt
|
||||||
|
|
||||||
# Info text of the server. This will be shown by WHOIS and
|
# 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
|
;Listen = 127.0.0.1,192.168.0.1
|
||||||
|
|
||||||
# Text file with the "message of the day" (MOTD). This message will
|
# 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
|
;MotdFile = :ETCDIR:/ngircd.motd
|
||||||
|
|
||||||
# A simple Phrase (<127 chars) if you don't want to use a motd file.
|
# 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
|
# Directory containing configuration snippets (*.conf), that should
|
||||||
# be read in after parsing this configuration file.
|
# 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
|
;IncludeDir = :ETCDIR:/conf.d
|
||||||
|
|
||||||
# Enhance user privacy slightly (useful for IRC server on TOR or I2P)
|
# 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
|
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.
|
||||||
Please note: Changes made to this file take effect when ngircd starts up
|
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
|
.TP
|
||||||
\fBInfo\fR (string)
|
\fBInfo\fR (string)
|
||||||
Info text of the server. This will be shown by WHOIS and LINKS requests for
|
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
|
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
|
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
|
take effect when ngircd starts up or is instructed to re-read its
|
||||||
configuration file.
|
configuration file. Default: a built-in standard path.
|
||||||
.TP
|
.TP
|
||||||
\fBMotdPhrase\fR (string)
|
\fBMotdPhrase\fR (string)
|
||||||
A simple Phrase (<127 chars) if you don't want to use a MOTD file.
|
A simple Phrase (<127 chars) if you don't want to use a MOTD file.
|
||||||
@ -294,7 +295,17 @@ Default: yes.
|
|||||||
\fBIncludeDir\fR (string)
|
\fBIncludeDir\fR (string)
|
||||||
Directory containing configuration snippets (*.conf), that should be read in
|
Directory containing configuration snippets (*.conf), that should be read in
|
||||||
after parsing the current configuration file.
|
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
|
.TP
|
||||||
\fBMorePrivacy\fR (boolean)
|
\fBMorePrivacy\fR (boolean)
|
||||||
This will cause ngIRCd to censor user idle time, logon time as well as the
|
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;
|
struct dirent *entry;
|
||||||
int i, n;
|
int i, n;
|
||||||
FILE *fd;
|
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 */
|
/* Open configuration file */
|
||||||
fd = fopen( NGIRCd_ConfFile, "r" );
|
fd = fopen(ptr, "r");
|
||||||
if( ! fd ) {
|
if (!fd) {
|
||||||
/* No configuration file found! */
|
if (NGIRCd_ConfFile[0]) {
|
||||||
Config_Error( LOG_ALERT, "Can't read configuration \"%s\": %s",
|
Config_Error(LOG_ALERT,
|
||||||
NGIRCd_ConfFile, strerror( errno ));
|
"Can't read specified configuration file \"%s\": %s",
|
||||||
if (!IsStarting)
|
ptr, strerror(errno));
|
||||||
return false;
|
if (IsStarting) {
|
||||||
Config_Error( LOG_ALERT, "%s exiting due to fatal errors!", PACKAGE_NAME );
|
Config_Error(LOG_ALERT,
|
||||||
exit( 1 );
|
"%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();
|
opers_free();
|
||||||
Set_Defaults(IsStarting);
|
Set_Defaults(IsStarting);
|
||||||
|
|
||||||
if (TestOnly)
|
if (TestOnly && fd)
|
||||||
Config_Error(LOG_INFO,
|
Config_Error(LOG_INFO,
|
||||||
"Reading configuration from \"%s\" ...",
|
"Reading configuration from \"%s\" ...",
|
||||||
NGIRCd_ConfFile );
|
NGIRCd_ConfFile );
|
||||||
@ -962,16 +980,23 @@ Read_Config(bool TestOnly, bool IsStarting)
|
|||||||
ConfSSL_Init();
|
ConfSSL_Init();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Read_Config_File(NGIRCd_ConfFile, fd);
|
if (fd) {
|
||||||
fclose(fd);
|
Read_Config_File(NGIRCd_ConfFile, fd);
|
||||||
|
fclose(fd);
|
||||||
|
}
|
||||||
|
|
||||||
if (Conf_IncludeDir[0]) {
|
if (Conf_IncludeDir[0]) {
|
||||||
|
/* Include directory was set in the main configuration file. So
|
||||||
|
* use it and show errors. */
|
||||||
dh = opendir(Conf_IncludeDir);
|
dh = opendir(Conf_IncludeDir);
|
||||||
if (!dh)
|
if (!dh)
|
||||||
Config_Error(LOG_ALERT,
|
Config_Error(LOG_ALERT,
|
||||||
"Can't open include directory \"%s\": %s",
|
"Can't open include directory \"%s\": %s",
|
||||||
Conf_IncludeDir, strerror(errno));
|
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));
|
strlcpy(Conf_IncludeDir, SYSCONFDIR, sizeof(Conf_IncludeDir));
|
||||||
strlcat(Conf_IncludeDir, CONFIG_DIR, sizeof(Conf_IncludeDir));
|
strlcat(Conf_IncludeDir, CONFIG_DIR, sizeof(Conf_IncludeDir));
|
||||||
dh = opendir(Conf_IncludeDir);
|
dh = opendir(Conf_IncludeDir);
|
||||||
|
@ -92,8 +92,6 @@ main(int argc, const char *argv[])
|
|||||||
#ifdef SNIFFER
|
#ifdef SNIFFER
|
||||||
NGIRCd_Sniffer = false;
|
NGIRCd_Sniffer = false;
|
||||||
#endif
|
#endif
|
||||||
strlcpy(NGIRCd_ConfFile, SYSCONFDIR, sizeof(NGIRCd_ConfFile));
|
|
||||||
strlcat(NGIRCd_ConfFile, CONFIG_FILE, sizeof(NGIRCd_ConfFile));
|
|
||||||
|
|
||||||
Fill_Version();
|
Fill_Version();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user