* along with this program; if not, write to the Free Software
* 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 "m_info.h"
#include "channel.h"
#include "client.h"
-#include "common.h"
#include "match.h"
#include "ircd.h"
#include "hook.h"
#include "parse.h"
#include "modules.h"
+static const char info_desc[] =
+ "Provides the INFO command for retrieving server copyright, credits, and other info";
+
static void send_conf_options(struct Client *source_p);
static void send_birthdate_online_time(struct Client *source_p);
static void send_info_text(struct Client *source_p);
static void info_spy(struct Client *);
-static int m_info(struct Client *, struct Client *, int, const char **);
-static int mo_info(struct Client *, struct Client *, int, const char **);
+static void m_info(struct MsgBuf *, struct Client *, struct Client *, int, const char **);
+static void mo_info(struct MsgBuf *, struct Client *, struct Client *, int, const char **);
struct Message info_msgtab = {
- "INFO", 0, 0, 0, MFLG_SLOW,
+ "INFO", 0, 0, 0, 0,
{mg_unreg, {m_info, 0}, {mo_info, 0}, mg_ignore, mg_ignore, {mo_info, 0}}
};
{ NULL, NULL }
};
-DECLARE_MODULE_AV1(info, NULL, NULL, info_clist, info_hlist, NULL, "$Revision: 3396 $");
+DECLARE_MODULE_AV2(info, NULL, NULL, info_clist, info_hlist, NULL, NULL, NULL, info_desc);
/*
* jdc -- Structure for our configuration value table
"client_exit",
OUTPUT_BOOLEAN,
&ConfigFileEntry.client_exit,
- "Prepend 'Client Exit:' to user QUIT messages"
+ "Prepend 'Quit:' to user QUIT messages"
},
{
"client_flood_max_lines",
"client_flood_burst_rate",
OUTPUT_DECIMAL,
&ConfigFileEntry.client_flood_burst_rate,
- "Maximum lines per second during flood grace period, times client_flood_message_time",
+ "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, times client_flood_message_time",
+ "Number of lines to process at once before delaying",
},
{
"client_flood_message_num",
&ConfigFileEntry.fname_serverlog,
"Server connect/disconnect log file"
},
+ {
+ "fname_killlog",
+ OUTPUT_STRING,
+ &ConfigFileEntry.fname_killlog,
+ "KILL log file"
+ },
{
"fname_klinelog",
OUTPUT_STRING,
&ConfigFileEntry.hide_spoof_ips,
"Hide IPs of spoofed users"
},
- {
- "hub",
- OUTPUT_BOOLEAN_YN,
- &ServerInfo.hub,
- "Server is a hub"
- },
- {
- "kline_delay",
- OUTPUT_DECIMAL,
- &ConfigFileEntry.kline_delay,
- "Duration of time to delay kline checking"
- },
{
"kline_reason",
OUTPUT_STRING,
&ServerInfo.network_name,
"Network name"
},
- {
- "network_desc",
- OUTPUT_STRING,
- &ServerInfo.network_desc,
- "Network description"
- },
{
"nick_delay",
OUTPUT_DECIMAL,
{
"reject_after_count",
OUTPUT_DECIMAL,
- &ConfigFileEntry.reject_after_count,
+ &ConfigFileEntry.reject_after_count,
"Client rejection threshold setting",
},
{
{
"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",
},
{
"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",
&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,
&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,
** m_info
** parv[1] = servername
*/
-static int
-m_info(struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
+static void
+m_info(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
{
static time_t last_used = 0L;
sendto_one(source_p, form_str(RPL_LOAD2HI),
me.name, source_p->name, "INFO");
sendto_one_numeric(source_p, RPL_ENDOFINFO, form_str(RPL_ENDOFINFO));
- return 0;
+ return;
}
else
last_used = rb_current_time();
if(hunt_server(client_p, source_p, ":%s INFO :%s", 1, parc, parv) != HUNTED_ISME)
- return 0;
+ return;
info_spy(source_p);
send_birthdate_online_time(source_p);
sendto_one_numeric(source_p, RPL_ENDOFINFO, form_str(RPL_ENDOFINFO));
- return 0;
}
/*
** mo_info
** parv[1] = servername
*/
-static int
-mo_info(struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
+static void
+mo_info(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
{
if(hunt_server(client_p, source_p, ":%s INFO :%s", 1, parc, parv) == HUNTED_ISME)
{
sendto_one_numeric(source_p, RPL_ENDOFINFO, form_str(RPL_ENDOFINFO));
}
-
- return 0;
}
/*
{
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(&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(&me, source_p), RPL_INFO,
get_id(source_p, source_p), rb_ctime(startup_time, tbuf, sizeof(tbuf)));
}
/*
* Now send them a list of all our configuration options
- * (mostly from config.h)
+ * (mostly from defaults.h)
*/
for (infoptr = MyInformation; infoptr->name; infoptr++)
{
if(infoptr->intvalue)
{
- sendto_one(source_p, ":%s %d %s :%-30s %-5d [%-30s]",
+ 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->name, infoptr->intvalue,
infoptr->desc);
}
else
{
- sendto_one(source_p, ":%s %d %s :%-30s %-5s [%-30s]",
+ 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->name, infoptr->strvalue,
infoptr->desc);
}
}
{
switch (info_table[i].output_type)
{
- /*
- * For "char *" references
- */
+ /*
+ * For "char *" references
+ */
case OUTPUT_STRING:
{
char *option = *((char **) info_table[i].option);
- sendto_one(source_p, ":%s %d %s :%-30s %-5s [%-30s]",
+ 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,
{
char *option = (char *) info_table[i].option;
- sendto_one(source_p, ":%s %d %s :%-30s %-5s [%-30s]",
+ 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,
{
int option = *((int *) info_table[i].option);
- sendto_one(source_p, ":%s %d %s :%-30s %-5d [%-30s]",
+ 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,
{
int option = *((int *) info_table[i].option);
- sendto_one(source_p, ":%s %d %s :%-30s %-5s [%-30s]",
+ 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,
{
int option = *((int *) info_table[i].option);
- sendto_one(source_p, ":%s %d %s :%-30s %-5s [%-30s]",
+ 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,
{
int option = *((int *) info_table[i].option);
- sendto_one(source_p, ":%s %d %s :%-30s %-5s [%-30s]",
+ 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_spy()
- *
+ *
* input - pointer to client
* output - none
* side effects - hook doing_info is called