* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
* Please read the file COPYING, README and AUTHORS for more information.
- *
- * Configuration management (reading, parsing & validation)
*/
-
#include "portab.h"
+/**
+ * @file
+ * Configuration management (reading, parsing & validation)
+ */
+
#include "imp.h"
#include <assert.h>
#include <errno.h>
printf(" MaxConnections = %ld\n", Conf_MaxConnections);
printf(" MaxConnectionsIP = %d\n", Conf_MaxConnectionsIP);
printf(" MaxJoins = %d\n", Conf_MaxJoins > 0 ? Conf_MaxJoins : -1);
- printf(" MaxNickLength = %u\n\n", Conf_MaxNickLength - 1);
+ printf(" MaxNickLength = %u\n", Conf_MaxNickLength - 1);
+ printf(" NoticeAuth = %s\n", yesno_to_str(Conf_NoticeAuth));
+ printf(" CloakHost = %s\n", Conf_CloakHost);
+ printf(" CloakUserToNick = %s\n", yesno_to_str(Conf_CloakUserToNick));
+#ifndef STRICT_RFC
+ printf(" RequireAuthPing = %s\n", yesno_to_str(Conf_AuthPing));
+#endif
- puts("[FEATURES]");
+ printf("\n[FEATURES]\n");
printf(" DNS = %s\n", yesno_to_str(Conf_DNS));
printf(" Ident = %s\n", yesno_to_str(Conf_Ident));
printf(" PAM = %s\n", yesno_to_str(Conf_PAM));
Conf_PongTimeout = 20;
Conf_ConnectRetry = 60;
Conf_DNS = true;
+ Conf_NoticeAuth = false;
Conf_Oper_Count = 0;
Conf_Channel_Count = 0;
Conf_MaxJoins = 10;
Conf_MaxNickLength = CLIENT_NICK_LEN_DEFAULT;
+ strcpy(Conf_CloakHost, "");
+ Conf_CloakUserToNick = false;
+
#ifdef SYSLOG
#ifdef LOG_LOCAL5
Conf_SyslogFacility = LOG_LOCAL5;
Conf_SyslogFacility = 0;
#endif
#endif
+
+#ifndef STRICT_RFC
+ Conf_AuthPing = false;
+#endif
+
Set_Defaults_Optional();
/* Initialize server configuration structures */
fp = fopen(filename, "r");
if (!fp) {
- Log(LOG_WARNING, "Can't read MOTD file \"%s\": %s",
+ Config_Error(LOG_WARNING, "Can't read MOTD file \"%s\": %s",
filename, strerror(errno));
return;
}
Config_Error_TooLong( Line, Var );
return;
}
+ if( strcasecmp( Var, "CloakHost" ) == 0 ) {
+ /* Client hostname */
+ len = strlcpy( Conf_CloakHost, Arg, sizeof( Conf_CloakHost ));
+ if (len >= sizeof( Conf_CloakHost ))
+ Config_Error_TooLong( Line, Var );
+ return;
+ }
+ if( strcasecmp( Var, "CloakUserToNick" ) == 0 ) {
+ /* Use client nick name as user name */
+ Conf_CloakUserToNick = Check_ArgIsTrue( Arg );
+ return;
+ }
if( strcasecmp( Var, "Info" ) == 0 ) {
/* Info text of server */
len = strlcpy( Conf_ServerInfo, Arg, sizeof( Conf_ServerInfo ));
}
if (CheckLegacyNoOption(Var, Arg)) {
- Config_Error(LOG_WARNING, "%s, line %d: \"No\"-Prefix has been removed, use "
- "\"%s = %s\" in [FEATURES] section instead",
+ 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));
if (strcasecmp(Var, "NoIdent") == 0)
WarnIdent(Line);
Conf_MaxNickLength = Handle_MaxNickLength(Line, Arg);
return;
}
+ if(strcasecmp(Var, "NoticeAuth") == 0) {
+ /* send NOTICE AUTH messages to clients on connect */
+ Conf_NoticeAuth = Check_ArgIsTrue(Arg);
+ return;
+ }
if( strcasecmp( Var, "Listen" ) == 0 ) {
/* IP-Address to bind sockets */
Conf_SyslogFacility);
return;
}
+#endif
+#ifndef STRICT_RFC
+ if (strcasecmp(Var, "RequireAuthPing") == 0 ) {
+ /* Require new clients to do an "autheticatin PING-PONG" */
+ Conf_AuthPing = Check_ArgIsTrue(Arg);
+ return;
+ }
#endif
Config_Error(LOG_ERR, "%s, line %d (section \"Global\"): Unknown variable \"%s\"!",
NGIRCd_ConfFile, Line, Var);
WarnPAM(Line);
return;
}
+
+ Config_Error(LOG_ERR,
+ "%s, line %d (section \"Features\"): Unknown variable \"%s\"!",
+ NGIRCd_ConfFile, Line, Var);
}
static void