}
/**
- * Output SSL configuration variable containing a file name.
- * And make sure that the given file is readable.
+ * Make sure that a configured file is readable.
*
- * @returns true when the file is readable.
+ * Currently, this function is only used for SSL-related options ...
+ *
+ * @param Var Configuration variable
+ * @param Filename Configured filename
*/
-static bool
-ssl_print_configvar(const char *name, const char *file)
+static void
+CheckFileReadable(const char *Var, const char *Filename)
{
FILE *fp;
- if (!file) {
- printf(" %s =\n", name);
- return true;
- }
-
- fp = fopen(file, "r");
+ fp = fopen(Filename, "r");
if (fp)
fclose(fp);
else
- fprintf(stderr, "ERROR: %s \"%s\": %s\n",
- name, file, strerror(errno));
-
- printf(" %s = %s\n", name, file);
- return fp != NULL;
-}
-
-/**
- * Output SSL-related configuration variables.
- *
- * @returns true when all SSL-related configuration variables are valid.
- */
-static bool
-ConfSSL_Puts(void)
-{
- bool ret;
-
- ret = ssl_print_configvar("SSLKeyFile", Conf_SSLOptions.KeyFile);
-
- if (!ssl_print_configvar("SSLCertFile", Conf_SSLOptions.CertFile))
- ret = false;
-
- if (!ssl_print_configvar("SSLDHFile", Conf_SSLOptions.DHFile))
- ret = false;
-
- if (array_bytes(&Conf_SSLOptions.KeyFilePassword))
- puts(" SSLKeyFilePassword = <secret>");
-
- array_free_wipe(&Conf_SSLOptions.KeyFilePassword);
-
- return ret;
+ Config_Error(LOG_ERR, "Can't read \"%s\" (\"%s\"): %s",
+ Filename, Var, strerror(errno));
}
#endif
config_valid = Validate_Config(true, false);
/* Valid tty? */
- if( isatty( fileno( stdin )) && isatty( fileno( stdout ))) {
- puts( "OK, press enter to see a dump of your service configuration ..." );
- getchar( );
- } else {
- puts( "Ok, dump of your server configuration follows:\n" );
- }
+ if(isatty(fileno(stdin)) && isatty(fileno(stdout))) {
+ puts("OK, press enter to see a dump of your server configuration ...");
+ getchar();
+ } else
+ puts("Ok, dump of your server configuration follows:\n");
puts("[GLOBAL]");
printf(" Name = %s\n", Conf_ServerName);
#ifndef STRICT_RFC
printf(" RequireAuthPing = %s\n", yesno_to_str(Conf_AuthPing));
#endif
+ printf(" ScrubCTCP = %s\n", yesno_to_str(Conf_ScrubCTCP));
#ifdef SSL_SUPPORT
printf(" SSLCertFile = %s\n", Conf_SSLOptions.CertFile);
printf(" SSLDHFile = %s\n", Conf_SSLOptions.DHFile);
#endif
Conf_PredefChannelsOnly = false;
#ifdef SYSLOG
+ Conf_ScrubCTCP = false;
#ifdef LOG_LOCAL5
Conf_SyslogFacility = LOG_LOCAL5;
#else
continue;
}
- Config_Error( LOG_ERR, "%s, line %d: Unknown section \"%s\"!", NGIRCd_ConfFile, line, section );
+ Config_Error(LOG_ERR,
+ "%s, line %d: Unknown section \"%s\"!",
+ NGIRCd_ConfFile, line, section);
section[0] = 0x1;
}
if( section[0] == 0x1 ) continue;
/* No MOTD phrase configured? (re)try motd file. */
if (array_bytes(&Conf_Motd) == 0)
Read_Motd(Conf_MotdFile);
+
+#ifdef SSL_SUPPORT
+ /* Make sure that all SSL-related files are readable */
+ CheckFileReadable("SSLCertFile", Conf_SSLOptions.CertFile);
+ CheckFileReadable("SSLDHFile", Conf_SSLOptions.DHFile);
+ CheckFileReadable("SSLKeyFile", Conf_SSLOptions.KeyFile);
+#endif
+
return true;
}
/**
* Handle legacy "NoXXX" options in [GLOBAL] section.
*
- * TODO: This function and support for "NoXXX" should be removed starting
- * with ngIRCd release 19! (One release after marking it "deprecated").
+ * TODO: This function and support for "NoXXX" could be removed starting
+ * with ngIRCd release 19 (one release after marking it "deprecated").
*
* @param Var Variable name.
* @param Arg Argument string.
static bool
CheckLegacyNoOption(const char *Var, const char *Arg)
{
- if( strcasecmp( Var, "NoDNS" ) == 0 ) {
+ if(strcasecmp(Var, "NoDNS") == 0) {
Conf_DNS = !Check_ArgIsTrue( Arg );
return true;
}
size_t len;
const char *section;
- assert( Line > 0 );
- assert( Var != NULL );
- assert( Arg != NULL );
+ assert(Line > 0);
+ assert(Var != NULL);
+ assert(Arg != NULL);
if (strcasecmp(Var, "Name") == 0) {
len = strlcpy(Conf_ServerName, Arg, sizeof(Conf_ServerName));
if (len == 0)
return;
if (len >= LINE_LEN) {
- Config_Error_TooLong( Line, Var );
+ Config_Error_TooLong(Line, Var);
return;
}
if (!array_copyb(&Conf_Motd, Arg, len + 1))
- Config_Error(LOG_WARNING, "%s, line %d: Could not append MotdPhrase: %s",
- NGIRCd_ConfFile, Line, strerror(errno));
+ Config_Error(LOG_WARNING,
+ "%s, line %d: Could not append MotdPhrase: %s",
+ NGIRCd_ConfFile, Line, strerror(errno));
Using_MotdFile = false;
return;
}
}
if (CheckLegacyNoOption(Var, Arg)) {
- Config_Error(LOG_WARNING, "%s, line %d: \"No\"-Prefix has been removed, use \"%s = %s\" in [FEATURES] section instead",
- NGIRCd_ConfFile, Line, NoNo(Var), InvertArg(Arg));
+ /* TODO: This function and support for "NoXXX" could be
+ * be removed starting with ngIRCd release 19 (one release
+ * after marking it "deprecated"). */
+ Config_Error(LOG_WARNING,
+ "%s, line %d (section \"Global\"): \"No\"-Prefix is deprecated, use \"%s = %s\" in [Options] section!",
+ NGIRCd_ConfFile, Line, NoNo(Var), InvertArg(Arg));
if (strcasecmp(Var, "NoIdent") == 0)
WarnIdent(Line);
else if (strcasecmp(Var, "NoPam") == 0)
return;
}
#endif
+ if (strcasecmp(Var, "ScrubCTCP") == 0) {
+ Conf_ScrubCTCP = Check_ArgIsTrue(Arg);
+ return;
+ }
#ifdef SSL_SUPPORT
if (strcasecmp(Var, "SSLCertFile") == 0) {
assert(Conf_SSLOptions.CertFile == NULL);
vsnprintf( msg, MAX_LOG_MSG_LEN, Format, ap );
va_end( ap );
- if (Use_Log) Log( Level, "%s", msg );
- else puts( msg );
+ if (!Use_Log) {
+ if (Level <= LOG_WARNING)
+ printf(" - %s\n", msg);
+ else
+ puts(msg);
+ } else
+ Log(Level, "%s", msg);
}
#ifdef DEBUG