]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - modules/m_info.c
Do not install ban .conf files (like kline.conf, rsv.conf, etc) as they aren't used...
[irc/rqf/shadowircd.git] / modules / m_info.c
index 6468f829a8fd3905647446beec11609e4dc2342f..dd14294328589a824023db00c33a6551b4be9f51 100644 (file)
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
  *  USA
  *
- *  $Id: m_info.c 3396 2007-04-05 00:38:52Z jilles $
  */
 
 #include "stdinc.h"
-#include "tools.h"
 #include "m_info.h"
 #include "channel.h"
 #include "client.h"
 #include "common.h"
-#include "irc_string.h"
+#include "match.h"
 #include "ircd.h"
 #include "hook.h"
 #include "numeric.h"
@@ -93,10 +91,10 @@ static struct InfoStruct info_table[] = {
                "Farconnect notices available or operspy accountability limited"
        },
        {
-               "max_clients",
+               "max_connections",
                OUTPUT_DECIMAL,
-               &ServerInfo.max_clients,
-               "Maximum clients allowed (configured)",
+               &maxconnections,
+               "Max number connections"
        },
        {
                "anti_nick_flood",
@@ -110,6 +108,12 @@ static struct InfoStruct info_table[] = {
                &ConfigFileEntry.anti_spam_exit_message_time,
                "Duration a client must be connected for to have an exit message"
        },
+       {
+               "use_part_messages",
+               OUTPUT_BOOLEAN_YN,
+               &ConfigFileEntry.use_part_messages,
+               "Whether or not the server should allow users to show messages on PART"
+       },
        {
                "caller_id_wait",
                OUTPUT_DECIMAL,
@@ -134,12 +138,24 @@ static struct InfoStruct info_table[] = {
                &ConfigFileEntry.connect_timeout,
                "Connect timeout for connections to servers"
        },
+       {
+               "default_ident_timeout",
+               OUTPUT_DECIMAL,
+               &ConfigFileEntry.default_ident_timeout,
+               "Amount of time the server waits for ident responses from clients",
+       },
        {
                "default_floodcount",
                OUTPUT_DECIMAL,
                &ConfigFileEntry.default_floodcount,
                "Startup value of FLOODCOUNT",
        },
+       {
+               "hide_channel_below_users",
+               OUTPUT_DECIMAL,
+               &ConfigFileEntry.hide_channel_below_users,
+               "Hide channels below this many users in standard /LIST output",
+       },
        {
                "default_adminstring",
                OUTPUT_STRING,
@@ -152,6 +168,18 @@ static struct InfoStruct info_table[] = {
                &ConfigFileEntry.default_operstring,
                "Default operstring at startup.",
        },
+       {
+               "default_operhost",
+               OUTPUT_STRING,
+               &ConfigFileEntry.default_operhost,
+               "Default vhost for operators to receive upon opering up.",
+       },
+       {
+               "static_quit",
+               OUTPUT_STRING,
+               &ConfigFileEntry.static_quit,
+               "Quit message to show for all users.",
+       },
        {
                "servicestring",
                OUTPUT_STRING,
@@ -170,18 +198,18 @@ static struct InfoStruct info_table[] = {
                &ConfigFileEntry.disable_fake_channels,
                "Controls whether bold etc are disabled for JOIN"
        },
-       {
-               "dot_in_ip6_addr",
-               OUTPUT_BOOLEAN,
-               &ConfigFileEntry.dot_in_ip6_addr,
-               "Suffix a . to ip6 addresses",
-       },
        {
                "dots_in_ident",
                OUTPUT_DECIMAL,
                &ConfigFileEntry.dots_in_ident,
                "Number of permissable dots in an ident"
        },
+       {
+               "expire_override_time",
+               OUTPUT_DECIMAL,
+               &ConfigFileEntry.expire_override_time,
+               "Period of time after which to unset user mode +p"
+       },
        {
                "failed_oper_notice",
                OUTPUT_BOOLEAN,
@@ -225,12 +253,6 @@ static struct InfoStruct info_table[] = {
                &ConfigFileEntry.fname_klinelog,
                "KLINE etc log file"
        },
-       {
-               "fname_glinelog",
-               OUTPUT_STRING,
-               &ConfigFileEntry.fname_glinelog,
-               "GLINE log file"
-       },
        {
                "fname_operspylog",
                OUTPUT_STRING,
@@ -243,30 +265,6 @@ static struct InfoStruct info_table[] = {
                &ConfigFileEntry.fname_ioerrorlog,
                "IO error log file"
        },
-       {
-               "glines",
-               OUTPUT_BOOLEAN,
-               &ConfigFileEntry.glines,
-               "G-line (network-wide K-line) support"
-       },
-       {
-               "gline_time",
-               OUTPUT_DECIMAL,
-               &ConfigFileEntry.gline_time,
-               "Expiry time for G-lines"
-       },
-       {
-               "gline_min_cidr",
-               OUTPUT_DECIMAL,
-               &ConfigFileEntry.gline_min_cidr,
-               "Minimum CIDR bitlen for ipv4 glines"
-       },
-       {
-               "gline_min_cidr6",
-               OUTPUT_DECIMAL,
-               &ConfigFileEntry.gline_min_cidr6,
-               "Minimum CIDR bitlen for ipv6 glines"
-       },
        {
                "global_snotices",
                OUTPUT_BOOLEAN_YN,
@@ -291,12 +289,6 @@ static struct InfoStruct info_table[] = {
                &ServerInfo.hub,
                "Server is a hub"
        },
-       {
-               "idletime",
-               OUTPUT_DECIMAL,
-               &ConfigFileEntry.idletime,
-               "Number of minutes before a client is considered idle"
-       },
        {
                "kline_delay",
                OUTPUT_DECIMAL,
@@ -349,7 +341,7 @@ static struct InfoStruct info_table[] = {
                "min_nonwildcard",
                OUTPUT_DECIMAL,
                &ConfigFileEntry.min_nonwildcard,
-               "Minimum non-wildcard chars in K/G lines",
+               "Minimum non-wildcard chars in K lines",
        },
        {
                "min_nonwildcard_simple",
@@ -369,6 +361,18 @@ static struct InfoStruct info_table[] = {
                &ServerInfo.network_desc,
                "Network description"
        },
+       {
+               "autochanmodes",
+               OUTPUT_STRING,
+               &ConfigChannel.autochanmodes,
+               "Channelmodes set on channel creation"
+       },
+       {
+               "exemptchanops",
+               OUTPUT_STRING,
+               &ConfigChannel.exemptchanops,
+               "Channelmodes that chanops are exempt from"
+       },
        {
                "nick_delay",
                OUTPUT_DECIMAL,
@@ -381,6 +385,12 @@ static struct InfoStruct info_table[] = {
                &ConfigFileEntry.no_oper_flood,
                "Disable flood control for operators",
        },
+       {
+               "true_no_oper_flood",
+               OUTPUT_BOOLEAN,
+               &ConfigFileEntry.true_no_oper_flood,
+               "Really disable flood control for opers, not just make it very high",
+       },
        {
                "non_redundant_klines",
                OUTPUT_BOOLEAN,
@@ -399,6 +409,12 @@ static struct InfoStruct info_table[] = {
                &ConfigFileEntry.operspy_dont_care_user_info,
                "Remove accountability and some '!' requirement from non-channel operspy"
        },
+       {
+               "secret_channels_in_whois",
+               OUTPUT_BOOLEAN,
+               &ConfigFileEntry.secret_channels_in_whois,
+               "Defines whether secret channels are always shown in whois to opers with oper:spy priv."
+       },
        {
                "pace_wait",
                OUTPUT_DECIMAL,
@@ -489,6 +505,18 @@ static struct InfoStruct info_table[] = {
                &ConfigFileEntry.stats_y_oper_only,
                "STATS Y is only shown to operators",
        },
+       {
+               "throttle_count",
+               OUTPUT_DECIMAL,
+               &ConfigFileEntry.throttle_count, 
+               "Connection throttle threshold",
+       },
+       {
+               "throttle_duration",
+               OUTPUT_DECIMAL,
+               &ConfigFileEntry.throttle_duration, 
+               "Connection throttle duration",
+       },
        {
                "tkline_expire_notices",
                OUTPUT_BOOLEAN,
@@ -513,6 +541,12 @@ static struct InfoStruct info_table[] = {
                &ConfigFileEntry.warn_no_nline,
                "Display warning if connecting server lacks N-line"
        },
+       {
+               "use_propagated_bans",
+               OUTPUT_BOOLEAN,
+               &ConfigFileEntry.use_propagated_bans,
+               "KLINE sets fully propagated bans"
+       },
        {
                "default_split_server_count",
                OUTPUT_DECIMAL,
@@ -573,6 +607,42 @@ static struct InfoStruct info_table[] = {
                &ConfigChannel.no_join_on_split,
                "Disallow joining channels when split",
        },
+       {
+               "only_ascii_channels",
+               OUTPUT_BOOLEAN_YN,
+               &ConfigChannel.only_ascii_channels,
+               "Controls whether non-ASCII is disabled for JOIN"
+       },
+       {
+               "cycle_host_change",
+               OUTPUT_BOOLEAN_YN,
+               &ConfigChannel.cycle_host_change,
+               "Controls if when a users' host changes, they cycle channels",
+       },
+       {
+               "host_in_topic",
+               OUTPUT_BOOLEAN_YN,
+               &ConfigChannel.host_in_topic,
+               "Defines whether a topicsetters host or just nick is shown on TOPIC",
+       },
+       {
+               "admin_on_channel_create",
+               OUTPUT_BOOLEAN_YN,
+               &ConfigChannel.admin_on_channel_create,
+               "Give users +ao on channel create",
+       },
+       {
+               "use_halfop",
+               OUTPUT_BOOLEAN_YN,
+               &ConfigChannel.use_halfop,
+               "Enable chanmode +h (halfop)",
+       },
+       {
+               "use_admin",
+               OUTPUT_BOOLEAN_YN,
+               &ConfigChannel.use_admin,
+               "Enable chanmode +a (admin)",
+       },
        {
                "use_except",
                OUTPUT_BOOLEAN_YN,
@@ -597,6 +667,18 @@ static struct InfoStruct info_table[] = {
                &ConfigChannel.use_knock,
                "Enable /KNOCK",
        },
+    {
+        "use_local_channels",
+        OUTPUT_BOOLEAN_YN,
+        &ConfigChannel.use_local_channels,
+        "Enable local channels (&channels)"
+    },
+       {
+               "resv_forcepart",
+               OUTPUT_BOOLEAN_YN,
+               &ConfigChannel.resv_forcepart,
+               "Force-part local users on channel RESV"
+       },
        {
                "disable_hidden",
                OUTPUT_BOOLEAN_YN,
@@ -628,7 +710,6 @@ static struct InfoStruct info_table[] = {
 
 /*
 ** m_info
-**  parv[0] = sender prefix
 **  parv[1] = servername
 */
 static int
@@ -636,7 +717,7 @@ m_info(struct Client *client_p, struct Client *source_p, int parc, const char *p
 {
        static time_t last_used = 0L;
 
-       if((last_used + ConfigFileEntry.pace_wait) > CurrentTime)
+       if((last_used + ConfigFileEntry.pace_wait) > rb_current_time())
        {
                /* safe enough to give this on a local connect only */
                sendto_one(source_p, form_str(RPL_LOAD2HI),
@@ -645,7 +726,7 @@ m_info(struct Client *client_p, struct Client *source_p, int parc, const char *p
                return 0;
        }
        else
-               last_used = CurrentTime;
+               last_used = rb_current_time();
 
        if(hunt_server(client_p, source_p, ":%s INFO :%s", 1, parc, parv) != HUNTED_ISME)
                return 0;
@@ -661,7 +742,6 @@ m_info(struct Client *client_p, struct Client *source_p, int parc, const char *p
 
 /*
 ** mo_info
-**  parv[0] = sender prefix
 **  parv[1] = servername
 */
 static int
@@ -670,11 +750,14 @@ mo_info(struct Client *client_p, struct Client *source_p, int parc, const char *
        if(hunt_server(client_p, source_p, ":%s INFO :%s", 1, parc, parv) == HUNTED_ISME)
        {
                info_spy(source_p);
-
                send_info_text(source_p);
 
                if(IsOper(source_p))
+               {
                        send_conf_options(source_p);
+                       sendto_one_numeric(source_p, RPL_INFO, ":%s",
+                                       rb_lib_version());
+               }
 
                send_birthdate_online_time(source_p);
 
@@ -714,13 +797,14 @@ send_info_text(struct Client *source_p)
 static void
 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);
 
        sendto_one(source_p, ":%s %d %s :On-line since %s",
                   get_id(&me, source_p), RPL_INFO, 
-                  get_id(source_p, source_p), myctime(startup_time));
+                  get_id(source_p, source_p), rb_ctime(startup_time, tbuf, sizeof(tbuf)));
 }
 
 /*