]> jfr.im git - solanum.git/blobdiff - modules/m_info.c
ircd: implement EXTENDCHANS, based on ircd-seven (with some improvements from chatircd)
[solanum.git] / modules / m_info.c
index 62d75f759f37c0828446aa391c2bcc6cfd666e7e..202716a658ef9afc0353d8a0d1cb3143ea3399f6 100644 (file)
@@ -119,14 +119,38 @@ static struct InfoStruct info_table[] = {
                "client_exit",
                OUTPUT_BOOLEAN,
                &ConfigFileEntry.client_exit,
-               "Prepend 'Client Exit:' to user QUIT messages"
+               "Prepend 'Quit:' to user QUIT messages"
        },
        {
-               "client_flood",
+               "client_flood_max_lines",
                OUTPUT_DECIMAL,
-               &ConfigFileEntry.client_flood,
+               &ConfigFileEntry.client_flood_max_lines,
                "Number of lines before a client Excess Flood's",
        },
+       {
+               "client_flood_burst_rate",
+               OUTPUT_DECIMAL,
+               &ConfigFileEntry.client_flood_burst_rate,
+               "Maximum lines per second during flood grace period",
+       },
+       {
+               "client_flood_burst_max",
+               OUTPUT_DECIMAL,
+               &ConfigFileEntry.client_flood_burst_max,
+               "Number of lines to process at once before delaying",
+       },
+       {
+               "client_flood_message_num",
+               OUTPUT_DECIMAL,
+               &ConfigFileEntry.client_flood_message_num,
+               "Number of messages to allow per client_flood_message_time outside of burst",
+       },
+       {
+               "client_flood_message_time",
+               OUTPUT_DECIMAL,
+               &ConfigFileEntry.client_flood_message_time,
+               "Time to allow per client_flood_message_num outside of burst",
+       },
        {
                "connect_timeout",
                OUTPUT_DECIMAL,
@@ -218,6 +242,12 @@ static struct InfoStruct info_table[] = {
                &ConfigFileEntry.fname_serverlog,
                "Server connect/disconnect log file"
        },
+       {
+               "fname_killlog",
+               OUTPUT_STRING,
+               &ConfigFileEntry.fname_killlog,
+               "KILL log file"
+       },
        {
                "fname_klinelog",
                OUTPUT_STRING,
@@ -326,12 +356,6 @@ static struct InfoStruct info_table[] = {
                &ServerInfo.network_name,
                "Network name"
        },
-       {
-               "network_desc",
-               OUTPUT_STRING,
-               &ServerInfo.network_desc,
-               "Network description"
-       },
        {
                "nick_delay",
                OUTPUT_DECIMAL,
@@ -383,7 +407,7 @@ static struct InfoStruct info_table[] = {
        {
                "reject_after_count",
                OUTPUT_DECIMAL,
-               &ConfigFileEntry.reject_after_count,   
+               &ConfigFileEntry.reject_after_count,
                "Client rejection threshold setting",
        },
        {
@@ -455,13 +479,13 @@ static struct InfoStruct info_table[] = {
        {
                "throttle_count",
                OUTPUT_DECIMAL,
-               &ConfigFileEntry.throttle_count, 
+               &ConfigFileEntry.throttle_count,
                "Connection throttle threshold",
        },
        {
                "throttle_duration",
                OUTPUT_DECIMAL,
-               &ConfigFileEntry.throttle_duration, 
+               &ConfigFileEntry.throttle_duration,
                "Connection throttle duration",
        },
        {
@@ -486,7 +510,7 @@ static struct InfoStruct info_table[] = {
                "warn_no_nline",
                OUTPUT_BOOLEAN,
                &ConfigFileEntry.warn_no_nline,
-               "Display warning if connecting server lacks N-line"
+               "Display warning if connecting server lacks connect block"
        },
        {
                "use_propagated_bans",
@@ -494,6 +518,18 @@ static struct InfoStruct info_table[] = {
                &ConfigFileEntry.use_propagated_bans,
                "KLINE sets fully propagated bans"
        },
+       {
+               "max_ratelimit_tokens",
+               OUTPUT_DECIMAL,
+               &ConfigFileEntry.max_ratelimit_tokens,
+               "The maximum number of tokens that can be accumulated for executing rate-limited commands",
+       },
+       {
+               "away_interval",
+               OUTPUT_DECIMAL,
+               &ConfigFileEntry.away_interval,
+               "The minimum time between aways",
+       },
        {
                "default_split_server_count",
                OUTPUT_DECIMAL,
@@ -524,6 +560,12 @@ static struct InfoStruct info_table[] = {
                &ConfigChannel.kick_on_split_riding,
                "Kick users riding splits to join +i or +k channels"
        },
+       {
+               "disable_local_channels",
+               OUTPUT_BOOLEAN_YN,
+               &ConfigChannel.disable_local_channels,
+               "Disable local channels (&channels)"
+       },
        {
                "max_bans",
                OUTPUT_DECIMAL,
@@ -542,6 +584,12 @@ static struct InfoStruct info_table[] = {
                &ConfigChannel.max_chans_per_user,
                "Maximum number of channels a user can join",
        },
+       {
+               "max_chans_per_user_large",
+               OUTPUT_DECIMAL,
+               &ConfigChannel.max_chans_per_user_large,
+               "Maximum extended number of channels a user can join",
+       },
        {
                "no_create_on_split",
                OUTPUT_BOOLEAN_YN,
@@ -587,7 +635,7 @@ static struct InfoStruct info_table[] = {
        {
                "resv_forcepart",
                OUTPUT_BOOLEAN_YN,
-               { &ConfigChannel.resv_forcepart },
+               &ConfigChannel.resv_forcepart,
                "Force-part local users on channel RESV"
        },
        {
@@ -620,9 +668,9 @@ static struct InfoStruct info_table[] = {
 /* *INDENT-ON* */
 
 /*
-** m_info
-**  parv[1] = servername
-*/
+ ** m_info
+ **  parv[1] = servername
+ */
 static int
 m_info(struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
 {
@@ -632,7 +680,7 @@ m_info(struct Client *client_p, struct Client *source_p, int parc, const char *p
        {
                /* safe enough to give this on a local connect only */
                sendto_one(source_p, form_str(RPL_LOAD2HI),
-                          me.name, source_p->name, "INFO");
+                               me.name, source_p->name, "INFO");
                sendto_one_numeric(source_p, RPL_ENDOFINFO, form_str(RPL_ENDOFINFO));
                return 0;
        }
@@ -652,9 +700,9 @@ m_info(struct Client *client_p, struct Client *source_p, int parc, const char *p
 }
 
 /*
-** mo_info
-**  parv[1] = servername
-*/
+ ** mo_info
+ **  parv[1] = servername
+ */
 static int
 mo_info(struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
 {
@@ -710,12 +758,12 @@ send_birthdate_online_time(struct Client *source_p)
 {
        char tbuf[26]; /* this needs to be 26 - see ctime_r manpage */
        sendto_one(source_p, ":%s %d %s :Birth Date: %s, compile # %s",
-                  get_id(&me, source_p), RPL_INFO, 
-                  get_id(source_p, source_p), creation, generation);
+                       get_id(&me, source_p), RPL_INFO,
+                       get_id(source_p, source_p), creation, generation);
 
        sendto_one(source_p, ":%s %d %s :On-line since %s",
-                  get_id(&me, source_p), RPL_INFO, 
-                  get_id(source_p, source_p), rb_ctime(startup_time, tbuf, sizeof(tbuf)));
+                       get_id(&me, source_p), RPL_INFO,
+                       get_id(source_p, source_p), rb_ctime(startup_time, tbuf, sizeof(tbuf)));
 }
 
 /*
@@ -739,19 +787,19 @@ send_conf_options(struct Client *source_p)
        {
                if(infoptr->intvalue)
                {
-                       sendto_one(source_p, ":%s %d %s :%-30s %-5d [%-30s]",
-                                  get_id(&me, source_p), RPL_INFO,
-                                  get_id(source_p, source_p),
-                                  infoptr->name, infoptr->intvalue, 
-                                  infoptr->desc);
+                       sendto_one(source_p, ":%s %d %s :%-30s %-16d [%s]",
+                                       get_id(&me, source_p), RPL_INFO,
+                                       get_id(source_p, source_p),
+                                       infoptr->name, infoptr->intvalue,
+                                       infoptr->desc);
                }
                else
                {
-                       sendto_one(source_p, ":%s %d %s :%-30s %-5s [%-30s]",
-                                  get_id(&me, source_p), RPL_INFO,
-                                  get_id(source_p, source_p),
-                                  infoptr->name, infoptr->strvalue, 
-                                  infoptr->desc);
+                       sendto_one(source_p, ":%s %d %s :%-30s %-16s [%s]",
+                                       get_id(&me, source_p), RPL_INFO,
+                                       get_id(source_p, source_p),
+                                       infoptr->name, infoptr->strvalue,
+                                       infoptr->desc);
                }
        }
 
@@ -762,98 +810,98 @@ send_conf_options(struct Client *source_p)
        {
                switch (info_table[i].output_type)
                {
-                       /*
-                        * For "char *" references
-                        */
-               case OUTPUT_STRING:
-                       {
-                               char *option = *((char **) info_table[i].option);
-
-                               sendto_one(source_p, ":%s %d %s :%-30s %-5s [%-30s]",
-                                          get_id(&me, source_p), RPL_INFO,
-                                          get_id(source_p, source_p),
-                                          info_table[i].name,
-                                          option ? option : "NONE",
-                                          info_table[i].desc ? info_table[i].desc : "<none>");
-
-                               break;
-                       }
-                       /*
-                        * For "char foo[]" references
-                        */
-               case OUTPUT_STRING_PTR:
-                       {
-                               char *option = (char *) info_table[i].option;
-
-                               sendto_one(source_p, ":%s %d %s :%-30s %-5s [%-30s]",
-                                          get_id(&me, source_p), RPL_INFO,
-                                          get_id(source_p, source_p),
-                                          info_table[i].name,
-                                          EmptyString(option) ? "NONE" : option,
-                                          info_table[i].desc ? info_table[i].desc : "<none>");
-
-                               break;
-                       }
-                       /*
-                        * Output info_table[i].option as a decimal value.
-                        */
-               case OUTPUT_DECIMAL:
-                       {
-                               int option = *((int *) info_table[i].option);
-
-                               sendto_one(source_p, ":%s %d %s :%-30s %-5d [%-30s]",
-                                          get_id(&me, source_p), RPL_INFO,
-                                          get_id(source_p, source_p),
-                                          info_table[i].name,
-                                          option,
-                                          info_table[i].desc ? info_table[i].desc : "<none>");
-
-                               break;
-                       }
-
-                       /*
-                        * Output info_table[i].option as "ON" or "OFF"
-                        */
-               case OUTPUT_BOOLEAN:
-                       {
-                               int option = *((int *) info_table[i].option);
-
-                               sendto_one(source_p, ":%s %d %s :%-30s %-5s [%-30s]",
-                                          get_id(&me, source_p), RPL_INFO,
-                                          get_id(source_p, source_p),
-                                          info_table[i].name,
-                                          option ? "ON" : "OFF",
-                                          info_table[i].desc ? info_table[i].desc : "<none>");
-
-                               break;
-                       }
-                       /*
-                        * Output info_table[i].option as "YES" or "NO"
-                        */
-               case OUTPUT_BOOLEAN_YN:
-                       {
-                               int option = *((int *) info_table[i].option);
-
-                               sendto_one(source_p, ":%s %d %s :%-30s %-5s [%-30s]",
-                                          get_id(&me, source_p), RPL_INFO,
-                                          get_id(source_p, source_p),
-                                          info_table[i].name,
-                                          option ? "YES" : "NO",
-                                          info_table[i].desc ? info_table[i].desc : "<none>");
-
-                               break;
-                       }
-
-               case OUTPUT_BOOLEAN2:
-               {
-                       int option = *((int *) info_table[i].option);
-
-                       sendto_one(source_p, ":%s %d %s :%-30s %-5s [%-30s]",
-                                  me.name, RPL_INFO, source_p->name,
-                                  info_table[i].name,
-                                  option ? ((option == 1) ? "MASK" : "YES") : "NO",
-                                  info_table[i].desc ? info_table[i].desc : "<none>");
-               }               /* switch (info_table[i].output_type) */
+                               /*
+                                * For "char *" references
+                                */
+                       case OUTPUT_STRING:
+                               {
+                                       char *option = *((char **) info_table[i].option);
+
+                                       sendto_one(source_p, ":%s %d %s :%-30s %-16s [%s]",
+                                                       get_id(&me, source_p), RPL_INFO,
+                                                       get_id(source_p, source_p),
+                                                       info_table[i].name,
+                                                       option ? option : "NONE",
+                                                       info_table[i].desc ? info_table[i].desc : "<none>");
+
+                                       break;
+                               }
+                               /*
+                                * For "char foo[]" references
+                                */
+                       case OUTPUT_STRING_PTR:
+                               {
+                                       char *option = (char *) info_table[i].option;
+
+                                       sendto_one(source_p, ":%s %d %s :%-30s %-16s [%s]",
+                                                       get_id(&me, source_p), RPL_INFO,
+                                                       get_id(source_p, source_p),
+                                                       info_table[i].name,
+                                                       EmptyString(option) ? "NONE" : option,
+                                                       info_table[i].desc ? info_table[i].desc : "<none>");
+
+                                       break;
+                               }
+                               /*
+                                * Output info_table[i].option as a decimal value.
+                                */
+                       case OUTPUT_DECIMAL:
+                               {
+                                       int option = *((int *) info_table[i].option);
+
+                                       sendto_one(source_p, ":%s %d %s :%-30s %-16d [%s]",
+                                                       get_id(&me, source_p), RPL_INFO,
+                                                       get_id(source_p, source_p),
+                                                       info_table[i].name,
+                                                       option,
+                                                       info_table[i].desc ? info_table[i].desc : "<none>");
+
+                                       break;
+                               }
+
+                               /*
+                                * Output info_table[i].option as "ON" or "OFF"
+                                */
+                       case OUTPUT_BOOLEAN:
+                               {
+                                       int option = *((int *) info_table[i].option);
+
+                                       sendto_one(source_p, ":%s %d %s :%-30s %-16s [%s]",
+                                                       get_id(&me, source_p), RPL_INFO,
+                                                       get_id(source_p, source_p),
+                                                       info_table[i].name,
+                                                       option ? "ON" : "OFF",
+                                                       info_table[i].desc ? info_table[i].desc : "<none>");
+
+                                       break;
+                               }
+                               /*
+                                * Output info_table[i].option as "YES" or "NO"
+                                */
+                       case OUTPUT_BOOLEAN_YN:
+                               {
+                                       int option = *((int *) info_table[i].option);
+
+                                       sendto_one(source_p, ":%s %d %s :%-30s %-16s [%s]",
+                                                       get_id(&me, source_p), RPL_INFO,
+                                                       get_id(source_p, source_p),
+                                                       info_table[i].name,
+                                                       option ? "YES" : "NO",
+                                                       info_table[i].desc ? info_table[i].desc : "<none>");
+
+                                       break;
+                               }
+
+                       case OUTPUT_BOOLEAN2:
+                               {
+                                       int option = *((int *) info_table[i].option);
+
+                                       sendto_one(source_p, ":%s %d %s :%-30s %-16s [%s]",
+                                                       me.name, RPL_INFO, source_p->name,
+                                                       info_table[i].name,
+                                                       option ? ((option == 1) ? "MASK" : "YES") : "NO",
+                                                       info_table[i].desc ? info_table[i].desc : "<none>");
+                               }               /* switch (info_table[i].output_type) */
                }
        }                       /* forloop */
 
@@ -866,7 +914,7 @@ send_conf_options(struct Client *source_p)
 }
 
 /* info_spy()
- * 
+ *
  * input        - pointer to client
  * output       - none
  * side effects - hook doing_info is called