#include "modules.h"
#include "packet.h"
#include "chmode.h"
+#include "ratelimit.h"
static int m_join(struct Client *, struct Client *, int, const char **);
static int ms_join(struct Client *, struct Client *, int, const char **);
}
chptr->join_count++;
+ /* credit user for join */
+ credit_client_join(source_p);
+
/* we send the user their join here, because we could have to
* send a mode out next.
*/
#include "modules.h"
#include "s_conf.h"
#include "cache.h"
+#include "ratelimit.h"
static int m_motd(struct Client *, struct Client *, int, const char **);
static int mo_motd(struct Client *, struct Client *, int, const char **);
{
static time_t last_used = 0;
- if((last_used + ConfigFileEntry.pace_wait) > rb_current_time())
+ if((last_used + ConfigFileEntry.pace_wait) > rb_current_time() || !ratelimit_client(source_p, 6))
{
/* safe enough to give this on a local connect only */
sendto_one(source_p, form_str(RPL_LOAD2HI),
#include "modules.h"
#include "packet.h"
#include "s_newconf.h"
+#include "ratelimit.h"
#define FIELD_CHANNEL 0x0001
#define FIELD_HOP 0x0002
{
/* List all users on a given channel */
chptr = find_channel(parv[1] + operspy);
+
if(chptr != NULL)
{
+ if (!IsOper(source_p) && !ratelimit_client_who(source_p, rb_dlink_list_length(&chptr->members)/50))
+ {
+ sendto_one(source_p, form_str(RPL_LOAD2HI),
+ me.name, source_p->name, "WHO");
+ sendto_one(source_p, form_str(RPL_ENDOFWHO),
+ me.name, source_p->name, "*");
+ return 0;
+ }
+
if(operspy)
report_operspy(source_p, "WHO", chptr->chname);
else if(!SecretChannel(chptr))
do_who_on_channel(source_p, chptr, server_oper, NO, &fmt);
}
+
sendto_one(source_p, form_str(RPL_ENDOFWHO),
me.name, source_p->name, parv[1] + operspy);
return 0;
/* it has to be a global who at this point, limit it */
if(!IsOper(source_p))
{
- if((last_used + ConfigFileEntry.pace_wait) > rb_current_time())
+ if((last_used + ConfigFileEntry.pace_wait) > rb_current_time() || !ratelimit_client(source_p, 1))
{
sendto_one(source_p, form_str(RPL_LOAD2HI),
me.name, source_p->name, "WHO");
#include "hook.h"
#include "s_newconf.h"
#include "ipv4_from_ipv6.h"
+#include "ratelimit.h"
static void do_whois(struct Client *client_p, struct Client *source_p, int parc, const char *parv[]);
static void single_whois(struct Client *source_p, struct Client *target_p, int operspy);
if(!IsOper(source_p))
{
/* seeing as this is going across servers, we should limit it */
- if((last_used + ConfigFileEntry.pace_wait_simple) > rb_current_time())
+ if((last_used + ConfigFileEntry.pace_wait_simple) > rb_current_time() || !ratelimit_client(source_p, 2))
{
sendto_one(source_p, form_str(RPL_LOAD2HI),
me.name, source_p->name, "WHOIS");