]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - modules/m_info.c
Make it so that halfops cannot set +-h
[irc/rqf/shadowircd.git] / modules / m_info.c
index 3916eaeb9ab507c1409247a55888945315e50e5c..36cf629084ae55b98038a8eaf5a2e8e0c1b84a49 100644 (file)
@@ -29,7 +29,7 @@
 #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"
@@ -326,6 +326,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,
@@ -356,6 +368,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,
@@ -446,6 +464,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,
@@ -530,6 +560,36 @@ 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",
+       },
+       {
+               "use_halfop",
+               OUTPUT_BOOLEAN_YN,
+               &ConfigChannel.use_halfop,
+               "Enable chanmode +h (halfop)",
+       },
+       {
+               "use_owner",
+               OUTPUT_BOOLEAN_YN,
+               &ConfigChannel.use_owner,
+               "Enable chanmode +a (owner)",
+       },
        {
                "use_except",
                OUTPUT_BOOLEAN_YN,
@@ -554,6 +614,24 @@ 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"
+       },
+       {
+               "kick_no_rejoin_time",
+               OUTPUT_DECIMAL,
+               { &ConfigChannel.kick_no_rejoin_time },
+               "The amount of time that a user cannot rejoin a +J channel for after being kicked."
+       },
        {
                "disable_hidden",
                OUTPUT_BOOLEAN_YN,
@@ -585,7 +663,6 @@ static struct InfoStruct info_table[] = {
 
 /*
 ** m_info
-**  parv[0] = sender prefix
 **  parv[1] = servername
 */
 static int
@@ -618,7 +695,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
@@ -630,7 +706,11 @@ mo_info(struct Client *client_p, struct Client *source_p, int parc, const char *
                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);
 
@@ -670,13 +750,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)));
 }
 
 /*