]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/conf.c
New configuration option "RequireAuthPing": PING-PONG on login
[ngircd-alex.git] / src / ngircd / conf.c
index 622cb9f8f3667a0c7b983a7f982e28312b37c162..452f744f0d103d906b8bfe905176848f687f2de8 100644 (file)
@@ -295,7 +295,6 @@ Conf_Test( void )
 
        puts( "[GLOBAL]" );
        printf("  Name = %s\n", Conf_ServerName);
-       printf("  ClientHost = %s\n", Conf_ClientHost);
        printf("  Info = %s\n", Conf_ServerInfo);
 #ifndef PAM
        printf("  Password = %s\n", Conf_ServerPwd);
@@ -352,9 +351,14 @@ Conf_Test( void )
        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("  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));
@@ -591,7 +595,6 @@ Set_Defaults(bool InitServers)
        int i;
 
        strcpy(Conf_ServerName, "");
-       strcpy(Conf_ClientHost, "");
        snprintf(Conf_ServerInfo, sizeof Conf_ServerInfo, "%s %s",
                 PACKAGE_NAME, PACKAGE_VERSION);
        strcpy(Conf_ServerPwd, "");
@@ -631,6 +634,9 @@ Set_Defaults(bool InitServers)
        Conf_MaxJoins = 10;
        Conf_MaxNickLength = CLIENT_NICK_LEN_DEFAULT;
 
+       strcpy(Conf_CloakHost, "");
+       Conf_CloakUserToNick = false;
+
 #ifdef SYSLOG
 #ifdef LOG_LOCAL5
        Conf_SyslogFacility = LOG_LOCAL5;
@@ -638,6 +644,11 @@ Set_Defaults(bool InitServers)
        Conf_SyslogFacility = 0;
 #endif
 #endif
+
+#ifndef STRICT_RFC
+       Conf_AuthPing = false;
+#endif
+
        Set_Defaults_Optional();
 
        /* Initialize server configuration structures */
@@ -972,13 +983,18 @@ Handle_GLOBAL( int Line, char *Var, char *Arg )
                        Config_Error_TooLong( Line, Var );
                return;
        }
-       if( strcasecmp( Var, "ClientHost" ) == 0 ) {
+       if( strcasecmp( Var, "CloakHost" ) == 0 ) {
                /* Client hostname */
-               len = strlcpy( Conf_ClientHost, Arg, sizeof( Conf_ClientHost ));
-               if (len >= sizeof( Conf_ClientHost ))
+               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 ));
@@ -1120,8 +1136,7 @@ Handle_GLOBAL( int Line, char *Var, char *Arg )
        }
 
        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);
@@ -1241,6 +1256,13 @@ Handle_GLOBAL( int Line, char *Var, char *Arg )
                                                           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);
@@ -1271,6 +1293,10 @@ Handle_FEATURES(int Line, char *Var, char *Arg)
                WarnPAM(Line);
                return;
        }
+
+       Config_Error(LOG_ERR,
+                    "%s, line %d (section \"Features\"): Unknown variable \"%s\"!",
+                    NGIRCd_ConfFile, Line, Var);
 }
 
 static void