]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/conf.c
Add "FNC" (forced nick changes) to ISUPPORT(005) numeric
[ngircd-alex.git] / src / ngircd / conf.c
index 3a796f038c00ead7b6a650d320a90a57f875e7f1..ef36a2fe5d1c1842c851624c5322c91979554084 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2018 Alexander Barton (alex@barton.de) and Contributors.
+ * Copyright (c)2001-2019 Alexander Barton (alex@barton.de) and Contributors.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -388,6 +388,7 @@ Conf_Test( void )
        printf("  MaxConnectionsIP = %d\n", Conf_MaxConnectionsIP);
        printf("  MaxJoins = %d\n", Conf_MaxJoins > 0 ? Conf_MaxJoins : -1);
        printf("  MaxNickLength = %u\n", Conf_MaxNickLength - 1);
+       printf("  MaxPenaltyTime = %ld\n", Conf_MaxPenaltyTime);
        printf("  MaxListSize = %d\n", Conf_MaxListSize);
        printf("  PingTimeout = %d\n", Conf_PingTimeout);
        printf("  PongTimeout = %d\n", Conf_PongTimeout);
@@ -765,6 +766,7 @@ Set_Defaults(bool InitServers)
        Conf_MaxConnectionsIP = 5;
        Conf_MaxJoins = 10;
        Conf_MaxNickLength = CLIENT_NICK_LEN_DEFAULT;
+       Conf_MaxPenaltyTime = -1;
        Conf_MaxListSize = 100;
        Conf_PingTimeout = 120;
        Conf_PongTimeout = 20;
@@ -900,6 +902,8 @@ Read_Config(bool TestOnly, bool IsStarting)
        FILE *fd;
        DIR *dh;
 
+       Log(LOG_INFO, "Using configuration file \"%s\" ...", NGIRCd_ConfFile);
+
        /* Open configuration file */
        fd = fopen( NGIRCd_ConfFile, "r" );
        if( ! fd ) {
@@ -1641,6 +1645,12 @@ Handle_LIMITS(const char *File, int Line, char *Var, char *Arg)
                        Config_Error_NaN(File, Line, Var);
                return;
        }
+       if (strcasecmp(Var, "MaxPenaltyTime") == 0) {
+               Conf_MaxPenaltyTime = atol(Arg);
+               if (Conf_MaxPenaltyTime < -1)
+                       Conf_MaxPenaltyTime = -1;       /* "unlimited" */
+               return;
+       }
        if (strcasecmp(Var, "PingTimeout") == 0) {
                Conf_PingTimeout = atoi(Arg);
                if (Conf_PingTimeout < 5) {
@@ -2224,7 +2234,8 @@ Validate_Config(bool Configtest, bool Rehash)
                break;
        } while (*(++ptr));
 
-       if (!Conf_ServerName[0]) {
+       if (!Conf_ServerName[0] || !strchr(Conf_ServerName, '.'))
+       {
                /* No server name configured! */
                config_valid = false;
                Config_Error(LOG_ALERT,
@@ -2238,20 +2249,6 @@ Validate_Config(bool Configtest, bool Rehash)
                }
        }
 
-       if (Conf_ServerName[0] && !strchr(Conf_ServerName, '.')) {
-               /* No dot in server name! */
-               config_valid = false;
-               Config_Error(LOG_ALERT,
-                            "Invalid server name configured in \"%s\" (section 'Global': 'Name'): Dot missing!",
-                            NGIRCd_ConfFile);
-               if (!Configtest) {
-                       Config_Error(LOG_ALERT,
-                                    "%s exiting due to fatal errors!",
-                                    PACKAGE_NAME);
-                       exit(1);
-               }
-       }
-
 #ifdef STRICT_RFC
        if (!Conf_ServerAdminMail[0]) {
                /* No administrative contact configured! */
@@ -2281,6 +2278,11 @@ Validate_Config(bool Configtest, bool Rehash)
                             "This server uses PAM, \"Password\" in [Global] section will be ignored!");
 #endif
 
+       if (Conf_MaxPenaltyTime != -1)
+               Config_Error(LOG_WARNING,
+                            "Maximum penalty increase ('MaxPenaltyTime') is set to %ld, this is not recommended!",
+                            Conf_MaxPenaltyTime);
+
 #ifdef DEBUG
        servers = servers_once = 0;
        for (i = 0; i < MAX_SERVERS; i++) {