]> jfr.im git - solanum.git/blobdiff - src/s_conf.c
Pace aways.
[solanum.git] / src / s_conf.c
index d8808c70a953252cf1bd3f189e84994731f37de2..93849e028e7536dce8fa971c9189b7f010689419 100644 (file)
@@ -51,6 +51,7 @@
 #include "sslproc.h"
 #include "bandbi.h"
 #include "operhash.h"
+#include "chmode.h"
 
 struct config_server_hide ConfigServerHide;
 
@@ -483,14 +484,13 @@ attach_iline(struct Client *client_p, struct ConfItem *aconf)
        int local_count = 0;
        int global_count = 0;
        int ident_count = 0;
-       int unidented = 0;
+       int unidented;
 
        if(IsConfExemptLimits(aconf))
                return (attach_conf(client_p, aconf));
 
-       if(*client_p->username == '~')
-               unidented = 1;
-
+       unidented = !IsGotId(client_p) && !IsNoTilde(aconf) &&
+               (!IsConfDoSpoofIp(aconf) || !strchr(aconf->info.name, '@'));
 
        /* find_hostname() returns the head of the list to search */
        RB_DLINK_FOREACH(ptr, find_hostname(client_p->host))
@@ -745,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;
@@ -757,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;
@@ -773,6 +775,8 @@ set_default_conf(void)
        ConfigChannel.no_join_on_split = NO;
        ConfigChannel.no_create_on_split = YES;
        ConfigChannel.resv_forcepart = YES;
+       ConfigChannel.channel_target_change = YES;
+       ConfigChannel.disable_local_channels = NO;
 
        ConfigServerHide.flatten_links = 0;
        ConfigServerHide.links_delay = 300;
@@ -783,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;
@@ -792,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);
 }
@@ -820,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
@@ -857,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))
@@ -1562,9 +1586,7 @@ yyerror(const char *msg)
 int
 conf_fgets(char *lbuf, int max_size, FILE * fb)
 {
-       char *buff;
-
-       if((buff = fgets(lbuf, max_size, fb)) == NULL)
+       if(fgets(lbuf, max_size, fb) == NULL)
                return (0);
 
        return (strlen(lbuf));