]> jfr.im git - solanum.git/blobdiff - src/s_conf.c
Pace aways.
[solanum.git] / src / s_conf.c
index e45a0e381b91035a262d196872bc4038eb4077b3..93849e028e7536dce8fa971c9189b7f010689419 100644 (file)
@@ -51,6 +51,7 @@
 #include "sslproc.h"
 #include "bandbi.h"
 #include "operhash.h"
+#include "chmode.h"
 
 struct config_server_hide ConfigServerHide;
 
@@ -744,6 +745,8 @@ set_default_conf(void)
        ConfigFileEntry.global_snotices = YES;
        ConfigFileEntry.operspy_dont_care_user_info = NO;
        ConfigFileEntry.use_propagated_bans = YES;
+       ConfigFileEntry.max_ratelimit_tokens = 30;
+       ConfigFileEntry.away_interval = 30;
 
 #ifdef HAVE_LIBZ
        ConfigFileEntry.compression_level = 4;
@@ -756,8 +759,8 @@ set_default_conf(void)
 
        ConfigChannel.use_except = YES;
        ConfigChannel.use_invex = YES;
-       ConfigChannel.use_knock = YES;
        ConfigChannel.use_forward = YES;
+       ConfigChannel.use_knock = YES;
        ConfigChannel.knock_delay = 300;
        ConfigChannel.knock_delay_channel = 60;
        ConfigChannel.max_chans_per_user = 15;
@@ -784,7 +787,6 @@ set_default_conf(void)
        ConfigFileEntry.min_nonwildcard_simple = 3;
        ConfigFileEntry.default_floodcount = 8;
        ConfigFileEntry.default_ident_timeout = 5;
-       ConfigFileEntry.client_flood = CLIENT_FLOOD_DEFAULT;
        ConfigFileEntry.tkline_expire_notices = 0;
 
         ConfigFileEntry.reject_after_count = 5;
@@ -793,8 +795,16 @@ set_default_conf(void)
        ConfigFileEntry.throttle_count = 4;
        ConfigFileEntry.throttle_duration = 60;
 
+       ConfigFileEntry.client_flood_max_lines = CLIENT_FLOOD_DEFAULT;
+       ConfigFileEntry.client_flood_burst_rate = 5;
+       ConfigFileEntry.client_flood_burst_max = 5;
+       ConfigFileEntry.client_flood_message_time = 1;
+       ConfigFileEntry.client_flood_message_num = 2;
+
        ServerInfo.default_max_clients = MAXCONNECTIONS;
 
+       ConfigFileEntry.nicklen = NICKLEN;
+
        if (!alias_dict)
                alias_dict = irc_dictionary_create(strcasecmp);
 }
@@ -821,6 +831,7 @@ read_conf(FILE * file)
        /* Some global values are also loaded here. */
        check_class();          /* Make sure classes are valid */
        privilegeset_delete_all_illegal();
+       construct_cflags_strings();
 }
 
 static void
@@ -858,9 +869,21 @@ validate_conf(void)
                                
        }
 
-       if((ConfigFileEntry.client_flood < CLIENT_FLOOD_MIN) ||
-          (ConfigFileEntry.client_flood > CLIENT_FLOOD_MAX))
-               ConfigFileEntry.client_flood = CLIENT_FLOOD_MAX;
+       /* RFC 1459 says 1 message per 2 seconds on average and bursts of
+        * 5 messages are acceptable, so allow at least that.
+        */
+       if(ConfigFileEntry.client_flood_burst_rate < 5)
+               ConfigFileEntry.client_flood_burst_rate = 5;
+       if(ConfigFileEntry.client_flood_burst_max < 5)
+               ConfigFileEntry.client_flood_burst_max = 5;
+       if(ConfigFileEntry.client_flood_message_time >
+                       ConfigFileEntry.client_flood_message_num * 2)
+               ConfigFileEntry.client_flood_message_time =
+                       ConfigFileEntry.client_flood_message_num * 2;
+
+       if((ConfigFileEntry.client_flood_max_lines < CLIENT_FLOOD_MIN) ||
+          (ConfigFileEntry.client_flood_max_lines > CLIENT_FLOOD_MAX))
+               ConfigFileEntry.client_flood_max_lines = CLIENT_FLOOD_MAX;
 
        if(!split_users || !split_servers ||
           (!ConfigChannel.no_create_on_split && !ConfigChannel.no_join_on_split))