static char Conf_MotdFile[FNAME_LEN];
static void Set_Defaults PARAMS(( bool InitServers ));
-static bool Read_Config PARAMS(( bool ngircd_starting ));
+static bool Read_Config PARAMS(( bool TestOnly, bool IsStarting ));
static bool Validate_Config PARAMS(( bool TestOnly, bool Rehash ));
static void Handle_GLOBAL PARAMS(( int Line, char *Var, char *Arg ));
GLOBAL void
Conf_Init( void )
{
- Read_Config( true );
+ Read_Config(false, true);
Validate_Config(false, false);
}
GLOBAL bool
Conf_Rehash( void )
{
- if (!Read_Config(false))
+ if (!Read_Config(false, false))
return false;
Validate_Config(false, true);
Use_Log = false;
- if (! Read_Config(true))
+ if (!Read_Config(true, true))
return 1;
config_valid = Validate_Config(true, false);
printf(" OperServerMode = %s\n", yesno_to_str(Conf_OperServerMode));
#ifdef PAM
printf(" PAM = %s\n", yesno_to_str(Conf_PAM));
+ printf(" PAMIsOptional = %s\n", yesno_to_str(Conf_PAMIsOptional));
#endif
printf(" PredefChannelsOnly = %s\n", yesno_to_str(Conf_PredefChannelsOnly));
#ifndef STRICT_RFC
#else
Conf_PAM = false;
#endif
+ Conf_PAMIsOptional = false;
Conf_PredefChannelsOnly = false;
#ifdef SYSLOG
Conf_ScrubCTCP = false;
* successfully; false otherwise.
*/
static bool
-Read_Config( bool ngircd_starting )
+Read_Config(bool TestOnly, bool IsStarting)
{
char section[LINE_LEN], str[LINE_LEN], *var, *arg, *ptr;
const UINT16 defaultport = 6667;
/* No configuration file found! */
Config_Error( LOG_ALERT, "Can't read configuration \"%s\": %s",
NGIRCd_ConfFile, strerror( errno ));
- if (!ngircd_starting)
+ if (!IsStarting)
return false;
Config_Error( LOG_ALERT, "%s exiting due to fatal errors!", PACKAGE_NAME );
exit( 1 );
}
opers_free();
- Set_Defaults( ngircd_starting );
+ Set_Defaults(IsStarting);
- Config_Error( LOG_INFO, "Reading configuration from \"%s\" ...", NGIRCd_ConfFile );
+ if (TestOnly)
+ Config_Error(LOG_INFO,
+ "Reading configuration from \"%s\" ...",
+ NGIRCd_ConfFile );
/* Clean up server configuration structure: mark all already
* configured servers as "once" so that they are deleted
/* Is this the beginning of a new section? */
if(( str[0] == '[' ) && ( str[strlen( str ) - 1] == ']' )) {
strlcpy( section, str, sizeof( section ));
- if (strcasecmp(section, "[GLOBAL]") == 0 ||
- strcasecmp(section, "[LIMITS]") == 0 ||
- strcasecmp(section, "[OPTIONS]") == 0 ||
- strcasecmp(section, "[SSL]") == 0)
+ if (strcasecmp(section, "[GLOBAL]") == 0
+ || strcasecmp(section, "[LIMITS]") == 0
+ || strcasecmp(section, "[OPTIONS]") == 0
+#ifdef SSL_SUPPORT
+ || strcasecmp(section, "[SSL]") == 0
+#endif
+ )
continue;
if( strcasecmp( section, "[SERVER]" ) == 0 ) {
else {
Conf_GID = (unsigned int)atoi(Arg);
if (!Conf_GID && strcmp(Arg, "0"))
- Config_Error_NaN(Line, Var);
+ Config_Error(LOG_WARNING,
+ "%s, line %d: Value of \"%s\" is not a valid group name or ID!",
+ NGIRCd_ConfFile, Line, Var);
}
return;
}
else {
Conf_UID = (unsigned int)atoi(Arg);
if (!Conf_UID && strcmp(Arg, "0"))
- Config_Error_NaN(Line, Var);
+ Config_Error(LOG_WARNING,
+ "%s, line %d: Value of \"%s\" is not a valid user name or ID!",
+ NGIRCd_ConfFile, Line, Var);
}
return;
}
WarnPAM(Line);
return;
}
+ if (strcasecmp(Var, "PAMIsOptional") == 0 ) {
+ Conf_PAMIsOptional = Check_ArgIsTrue(Arg);
+ return;
+ }
if (strcasecmp(Var, "PredefChannelsOnly") == 0) {
Conf_PredefChannelsOnly = Check_ArgIsTrue(Arg);
return;