本文整理汇总了C++中IsFloodDone函数的典型用法代码示例。如果您正苦于以下问题:C++ IsFloodDone函数的具体用法?C++ IsFloodDone怎么用?C++ IsFloodDone使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了IsFloodDone函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: m_part
/*
** m_part
** parv[0] = sender prefix
** parv[1] = channel
** parv[2] = reason
*/
static void
m_part(struct Client *client_p, struct Client *source_p,
int parc, char *parv[])
{
char *p = NULL, *name = NULL;
char reason[KICKLEN + 1] = { '\0' };
if (IsServer(source_p))
return;
if (EmptyString(parv[1]))
{
sendto_one(source_p, form_str(ERR_NEEDMOREPARAMS),
me.name, source_p->name, "PART");
return;
}
if (parc > 2 && !EmptyString(parv[2]))
strlcpy(reason, parv[2], sizeof(reason));
/* Finish the flood grace period... */
if (MyClient(source_p) && !IsFloodDone(source_p))
flood_endgrace(source_p);
for (name = strtoken(&p, parv[1], ","); name;
name = strtoken(&p, NULL, ","))
part_one_client(source_p, name, reason);
}
示例2: m_message
/*
* inputs - flag privmsg or notice
* - pointer to command "PRIVMSG" or "NOTICE"
* - pointer to client_p
* - pointer to source_p
* - pointer to channel
*/
static void
m_message(int p_or_n,
char *command,
struct Client *client_p,
struct Client *source_p, int parc, char *parv[])
{
int i;
if (parc < 2 || *parv[1] == '\0')
{
if (p_or_n != NOTICE)
sendto_one(source_p, form_str(source_p,ERR_NORECIPIENT), me.name,
source_p->name, command);
return;
}
if (parc < 3 || *parv[2] == '\0')
{
if (p_or_n != NOTICE)
sendto_one(source_p, form_str(source_p,ERR_NOTEXTTOSEND), me.name,
source_p->name);
return;
}
/* Finish the flood grace period... */
if(MyClient(source_p) && !IsFloodDone(source_p))
flood_endgrace(source_p);
if (build_target_list(p_or_n, command, client_p, source_p, parv[1],
parv[2]) < 0)
{
/* Sigh. We need to relay this command to the hub */
if (!ServerInfo.hub && (uplink != NULL))
sendto_one(uplink, ":%s %s %s :%s",
source_p->name, command, parv[1], parv[2]);
return;
}
for (i = 0; i < ntargets; i++)
{
switch (targets[i].type)
{
case ENTITY_CHANNEL:
msg_channel(p_or_n, command, client_p, source_p,
(struct Channel *)targets[i].ptr, parv[2]);
break;
case ENTITY_CHANOPS_ON_CHANNEL:
msg_channel_flags(p_or_n, command, client_p, source_p,
(struct Channel *)targets[i].ptr,
targets[i].flags, parv[2]);
break;
case ENTITY_CLIENT:
msg_client(p_or_n, command, source_p,
(struct Client *)targets[i].ptr, parv[2]);
break;
}
}
}
示例3: m_part
/*
** m_part
** parv[0] = sender prefix
** parv[1] = channel
** parv[2] = reason
*/
static int
m_part(struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
{
char *p, *name;
char reason[REASONLEN + 1];
char *s = LOCAL_COPY(parv[1]);
reason[0] = '\0';
if(parc > 2)
strlcpy(reason, parv[2], sizeof(reason));
name = strtoken(&p, s, ",");
/* Finish the flood grace period... */
if(MyClient(source_p) && !IsFloodDone(source_p))
flood_endgrace(source_p);
while (name)
{
part_one_client(client_p, source_p, name, reason);
name = strtoken(&p, NULL, ",");
}
return 0;
}
示例4: m_away
/*
** m_away
** parv[1] = away message
*/
static int
m_away(struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
{
if(MyClient(source_p) && source_p->localClient->next_away &&
!IsFloodDone(source_p))
flood_endgrace(source_p);
if(!IsClient(source_p))
return 0;
if(parc < 2 || EmptyString(parv[1])) {
/* Marking as not away */
if(source_p->user->away != NULL) {
/* we now send this only if they were away before --is */
sendto_server(client_p, NULL, CAP_TS6, NOCAPS,
":%s AWAY", use_id(source_p));
free_away(source_p);
sendto_common_channels_local_butone(source_p, CLICAP_AWAY_NOTIFY, NOCAPS, ":%s!%[email protected]%s AWAY",
source_p->name, source_p->username, source_p->host);
}
if(MyConnect(source_p))
sendto_one_numeric(source_p, RPL_UNAWAY, form_str(RPL_UNAWAY));
return 0;
}
/* Rate limit this because it is sent to common channels. */
if (MyClient(source_p)) {
if(!IsOper(source_p) &&
source_p->localClient->next_away > rb_current_time()) {
sendto_one(source_p, form_str(RPL_LOAD2HI),
me.name, source_p->name, "AWAY");
return 0;
}
if(source_p->localClient->next_away < rb_current_time() -
ConfigFileEntry.away_interval)
source_p->localClient->next_away = rb_current_time();
else
source_p->localClient->next_away = rb_current_time() +
ConfigFileEntry.away_interval;
}
if(source_p->user->away == NULL)
allocate_away(source_p);
if(strncmp(source_p->user->away, parv[1], AWAYLEN - 1)) {
rb_strlcpy(source_p->user->away, parv[1], AWAYLEN);
sendto_server(client_p, NULL, CAP_TS6, NOCAPS,
":%s AWAY :%s", use_id(source_p), source_p->user->away);
}
if(MyConnect(source_p))
sendto_one_numeric(source_p, RPL_NOWAWAY, form_str(RPL_NOWAWAY));
sendto_common_channels_local_butone(source_p, CLICAP_AWAY_NOTIFY, NOCAPS, ":%s!%[email protected]%s AWAY :%s",
source_p->name, source_p->username, source_p->host,
source_p->user->away);
return 0;
}
示例5: do_join_0
static void do_join_0(struct Client *client_p, struct Client *source_p)
{
struct Channel *chptr=NULL;
dlink_node *lp;
/* Finish the flood grace period... */
if(MyClient(source_p) && !IsFloodDone(source_p))
flood_endgrace(source_p);
sendto_server(client_p, NULL, NOCAPS, NOCAPS,
":%s JOIN 0", source_p->name);
if (source_p->user->channel.head &&
MyConnect(source_p) && !IsOper(source_p))
check_spambot_warning(source_p, NULL);
while ((lp = source_p->user->channel.head))
{
chptr = lp->data;
sendto_channel_local(ALL_MEMBERS,chptr, ":%s!%[email protected]%s PART %s",
source_p->name,
source_p->username,
source_p->host,
chptr->chname);
remove_user_from_channel(chptr, source_p);
}
}
示例6: m_part
/*
** m_part
** parv[0] = sender prefix
** parv[1] = channel
** parv[2] = reason
*/
static void
m_part(struct Client *client_p, struct Client *source_p, int parc, char *parv[])
{
char *p, *name;
char reason[TOPICLEN + 1];
if(EmptyString(parv[1]))
{
sendto_one(source_p, form_str(ERR_NEEDMOREPARAMS), me.name, parv[0], "PART");
return;
}
reason[0] = '\0';
if(parc > 2)
strlcpy(reason, parv[2], sizeof(reason));
name = strtoken(&p, parv[1], ",");
/* Finish the flood grace period... */
if(MyClient(source_p) && !IsFloodDone(source_p))
flood_endgrace(source_p);
while (name)
{
part_one_client(client_p, source_p, name, reason);
name = strtoken(&p, (char *) NULL, ",");
}
return;
}
示例7: mo_away
static void
mo_away(struct Client *client_p, struct Client *source_p,
int parc, char *parv[])
{
char *cur_away_msg = source_p->user->away;
char *new_away_msg;
size_t nbytes = 0;
if (!IsFloodDone(source_p))
flood_endgrace(source_p);
if (parc < 2 || EmptyString(parv[1]))
{
/* Marking as not away */
if (cur_away_msg)
{
/* we now send this only if they were away before --is */
sendto_server(client_p, source_p, NULL, CAP_TS6, NOCAPS,
NOFLAGS, ":%s AWAY", ID(source_p));
sendto_server(client_p, source_p, NULL, NOCAPS, CAP_TS6,
NOFLAGS, ":%s AWAY", source_p->name);
MyFree(cur_away_msg);
source_p->user->away = NULL;
}
sendto_one(source_p, form_str(RPL_UNAWAY),
me.name, parv[0]);
return;
}
source_p->user->last_away = CurrentTime;
new_away_msg = parv[1];
nbytes = strlen(new_away_msg);
if (nbytes > (size_t)TOPICLEN) {
new_away_msg[TOPICLEN] = '\0';
nbytes = TOPICLEN;
}
/* we now send this only if they
* weren't away already --is */
if (!cur_away_msg)
{
sendto_server(client_p, source_p, NULL, CAP_TS6, NOCAPS,
NOFLAGS, ":%s AWAY :%s", ID(source_p), new_away_msg);
sendto_server(client_p, source_p, NULL, NOCAPS, CAP_TS6,
NOFLAGS, ":%s AWAY :%s", source_p->name, new_away_msg);
}
else
MyFree(cur_away_msg);
cur_away_msg = MyMalloc(nbytes + 1);
strcpy(cur_away_msg, new_away_msg);
source_p->user->away = cur_away_msg;
sendto_one(source_p, form_str(RPL_NOWAWAY), me.name, parv[0]);
}
示例8: m_cycle
static int
m_cycle(struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
{
char *p, *name;
char *s = LOCAL_COPY(parv[1]);
struct Channel *chptr;
struct membership *msptr;
name = rb_strtok_r(s, ",", &p);
/* Finish the flood grace period... */
if(MyClient(source_p) && !IsFloodDone(source_p))
flood_endgrace(source_p);
while(name) {
if((chptr = find_channel(name)) == NULL) {
sendto_one_numeric(source_p, ERR_NOSUCHCHANNEL, form_str(ERR_NOSUCHCHANNEL), name);
return 0;
}
msptr = find_channel_membership(chptr, source_p);
if(msptr == NULL) {
sendto_one_numeric(source_p, ERR_NOTONCHANNEL, form_str(ERR_NOTONCHANNEL), name);
return 0;
}
if(MyConnect(source_p) && !IsOper(source_p) && !IsExemptSpambot(source_p))
check_spambot_warning(source_p, NULL);
if((is_any_op(msptr) || !MyConnect(source_p) ||
((can_send(chptr, source_p, msptr) > 0 &&
(source_p->localClient->firsttime +
ConfigFileEntry.anti_spam_exit_message_time) < rb_current_time())))) {
sendto_server(client_p, chptr, CAP_TS6, NOCAPS,
":%s PART %s :Cycling", use_id(source_p), chptr->chname);
sendto_channel_local(ALL_MEMBERS, chptr, ":%s!%[email protected]%s PART %s :Cycling",
source_p->name, source_p->username,
source_p->host, chptr->chname);
} else {
sendto_server(client_p, chptr, CAP_TS6, NOCAPS,
":%s PART %s", use_id(source_p), chptr->chname);
sendto_channel_local(ALL_MEMBERS, chptr, ":%s!%[email protected]%s PART %s",
source_p->name, source_p->username,
source_p->host, chptr->chname);
}
remove_user_from_channel(msptr);
chptr = NULL;
msptr = NULL;
name = rb_strtok_r(NULL, ",", &p);
}
user_join(client_p, source_p, parv[1], parc > 2 ? parv[2] : NULL);
return 0;
}
示例9: m_mode
/*! \brief MODE command handler
*
* \param source_p Pointer to allocated Client struct from which the message
* originally comes from. This can be a local or remote client.
* \param parc Integer holding the number of supplied arguments.
* \param parv Argument vector where parv[0] .. parv[parc-1] are non-NULL
* pointers.
* \note Valid arguments for this command are:
* - parv[0] = command
* - parv[1] = channel or nick name
* - parv[2] = modes to be added or removed
*/
static int
m_mode(struct Client *source_p, int parc, char *parv[])
{
struct Channel *chptr = NULL;
if (EmptyString(parv[1]))
{
sendto_one_numeric(source_p, &me, ERR_NEEDMOREPARAMS, "MODE");
return 0;
}
/* Now, try to find the channel in question */
if (!IsChanPrefix(*parv[1]))
{
/* If here, it has to be a non-channel name */
set_user_mode(source_p, parc, parv);
return 0;
}
if ((chptr = hash_find_channel(parv[1])) == NULL)
{
sendto_one_numeric(source_p, &me, ERR_NOSUCHCHANNEL, parv[1]);
return 0;
}
/* Now known the channel exists */
if (parc < 3)
{
char modebuf[MODEBUFLEN] = "";
char parabuf[MODEBUFLEN] = "";
channel_modes(chptr, source_p, modebuf, parabuf);
sendto_one_numeric(source_p, &me, RPL_CHANNELMODEIS, chptr->name, modebuf, parabuf);
sendto_one_numeric(source_p, &me, RPL_CREATIONTIME, chptr->name, chptr->creationtime);
return 0;
}
/*
* bounce all modes from people we deop on sjoin
* servers have always gotten away with murder,
* including telnet servers *g* - Dianora
*/
if (IsServer(source_p) || HasFlag(source_p, FLAGS_SERVICE))
set_channel_mode(source_p, chptr, NULL, parc - 2, parv + 2);
else
{
struct Membership *member = find_channel_link(source_p, chptr);
/* Finish the flood grace period... */
if (MyClient(source_p) && !IsFloodDone(source_p))
if (!((parc == 3) && (parv[2][0] == 'b') && (parv[2][1] == '\0')))
flood_endgrace(source_p);
set_channel_mode(source_p, chptr, member, parc - 2, parv + 2);
}
return 0;
}
示例10: m_oper
/*
** m_oper
** parv[0] = sender prefix
** parv[1] = oper name
** parv[2] = oper password
*/
static void
m_oper(struct Client *client_p, struct Client *source_p,
int parc, char *parv[])
{
struct ConfItem *conf;
struct AccessItem *aconf=NULL;
const char *name = parv[1];
const char *password = parv[2];
if (EmptyString(password))
{
sendto_one(source_p, form_str(ERR_NEEDMOREPARAMS),
me.name, source_p->name, "OPER");
return;
}
/* end the grace period */
if (!IsFloodDone(source_p))
flood_endgrace(source_p);
if ((conf = find_password_conf(name,source_p)) == NULL)
{
sendto_one(source_p, form_str(ERR_NOOPERHOST), me.name, source_p->name);
conf = find_exact_name_conf(OPER_TYPE, name, NULL, NULL);
failed_oper_notice(source_p, name, (conf != NULL) ?
"host mismatch" : "no oper {} block");
log_failed_oper(source_p, name);
return;
}
aconf = (struct AccessItem *)map_to_conf(conf);
if (match_oper_password(password, aconf))
{
if (attach_conf(source_p, conf) != 0)
{
sendto_one(source_p, ":%s NOTICE %s :Can't attach conf!",
me.name, source_p->name);
failed_oper_notice(source_p, name, "can't attach conf!");
log_failed_oper(source_p, name);
return;
}
oper_up(source_p);
ilog(L_TRACE, "OPER %s by %s!%[email protected]%s",
name, source_p->name, source_p->username, source_p->host);
log_oper(source_p, name);
}
else
{
sendto_one(source_p, form_str(ERR_PASSWDMISMATCH), me.name, parv[0]);
failed_oper_notice(source_p, name, "password mismatch");
log_failed_oper(source_p, name);
}
}
示例11: m_time
/*
* m_time
* parv[1] = servername
*/
static void
m_time(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
{
/* this is not rate limited, so end the grace period */
if(MyClient(source_p) && !IsFloodDone(source_p))
flood_endgrace(source_p);
if(hunt_server(client_p, source_p, ":%s TIME :%s", 1, parc, parv) == HUNTED_ISME)
sendto_one_numeric(source_p, RPL_TIME, form_str(RPL_TIME),
me.name, date());
}
示例12: m_away
/*
* m_away
* parv[0] = sender prefix
* parv[1] = away message
*/
static void
m_away(struct Client *client_p, struct Client *source_p,
int parc, char *parv[])
{
if (!IsFloodDone(source_p))
flood_endgrace(source_p);
if (parc < 2 || EmptyString(parv[1]))
{
/* Marking as not away */
if (source_p->away[0])
{
source_p->away[0] = '\0';
/* we now send this only if they were away before --is */
sendto_server(client_p, CAP_TS6, NOCAPS,
":%s AWAY", ID(source_p));
sendto_server(client_p, NOCAPS, CAP_TS6,
":%s AWAY", source_p->name);
sendto_common_channels_local(source_p, 1, CAP_AWAY_NOTIFY,
":%s!%[email protected]%s AWAY",
source_p->name, source_p->username,
source_p->host);
}
sendto_one(source_p, form_str(RPL_UNAWAY),
me.name, source_p->name);
return;
}
if ((CurrentTime - source_p->localClient->last_away) < ConfigFileEntry.pace_wait)
{
sendto_one(source_p, form_str(RPL_LOAD2HI),
me.name, source_p->name);
return;
}
source_p->localClient->last_away = CurrentTime;
sendto_one(source_p, form_str(RPL_NOWAWAY), me.name, source_p->name);
if (!strncmp(source_p->away, parv[1], sizeof(source_p->away) - 1))
return;
strlcpy(source_p->away, parv[1], sizeof(source_p->away));
sendto_common_channels_local(source_p, 1, CAP_AWAY_NOTIFY,
":%s!%[email protected]%s AWAY :%s",
source_p->name, source_p->username,
source_p->host, source_p->away);
sendto_server(client_p, CAP_TS6, NOCAPS,
":%s AWAY :%s", ID(source_p), source_p->away);
sendto_server(client_p, NOCAPS, CAP_TS6,
":%s AWAY :%s", source_p->name, source_p->away);
}
示例13: m_oper
/*
** m_oper
** parv[0] = sender prefix
** parv[1] = oper name
** parv[2] = oper password
*/
static void
m_oper(struct Client *client_p, struct Client *source_p,
int parc, char *parv[])
{
struct MaskItem *conf = NULL;
const char *name = parv[1];
const char *password = parv[2];
if (EmptyString(password))
{
sendto_one(source_p, form_str(ERR_NEEDMOREPARAMS),
me.name, source_p->name, "OPER");
return;
}
/* end the grace period */
if (!IsFloodDone(source_p))
flood_endgrace(source_p);
if ((conf = find_exact_name_conf(CONF_OPER, source_p, name, NULL, NULL)) == NULL)
{
sendto_one(source_p, form_str(ERR_NOOPERHOST), me.name, source_p->name);
conf = find_exact_name_conf(CONF_OPER, NULL, name, NULL, NULL);
failed_oper_notice(source_p, name, (conf != NULL) ?
"host mismatch" : "no oper {} block");
return;
}
if (match_conf_password(password, conf))
{
if (attach_conf(source_p, conf) != 0)
{
sendto_one(source_p, ":%s NOTICE %s :Can't attach conf!",
me.name, source_p->name);
failed_oper_notice(source_p, name, "can't attach conf!");
return;
}
++conf->count;
oper_up(source_p);
ilog(LOG_TYPE_OPER, "OPER %s by %s!%[email protected]%s",
name, source_p->name, source_p->username, source_p->host);
}
else
{
sendto_one(source_p, form_str(ERR_PASSWDMISMATCH), me.name, source_p->name);
failed_oper_notice(source_p, name, "password mismatch");
}
}
示例14: m_time
/*! \brief TIME command handler
*
* \param source_p Pointer to allocated Client struct from which the message
* originally comes from. This can be a local or remote client.
* \param parc Integer holding the number of supplied arguments.
* \param parv Argument vector where parv[0] .. parv[parc-1] are non-NULL
* pointers.
* \note Valid arguments for this command are:
* - parv[0] = command
* - parv[1] = nickname/servername
*/
static int
m_time(struct Client *source_p, int parc, char *parv[])
{
/* This is not rate limited, so end the grace period */
if (!IsFloodDone(source_p))
flood_endgrace(source_p);
/* This is safe enough to use during non hidden server mode */
if (!ConfigServerHide.disable_remote_commands)
if (hunt_server(source_p, ":%s TIME :%s", 1, parc, parv) != HUNTED_ISME)
return 0;
sendto_one_numeric(source_p, &me, RPL_TIME, me.name, date(0));
return 0;
}
示例15: m_time
/*
* m_time
* parv[0] = sender prefix
* parv[1] = servername
*/
static int
m_time(struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
{
/* this is not rate limited, so end the grace period */
char buf[80];
if (MyClient(source_p) && !IsFloodDone(source_p))
flood_endgrace(source_p);
if (hunt_server(client_p, source_p, ":%s TIME :%s", 1, parc, parv) == HUNTED_ISME)
{
sendto_one_numeric(source_p, RPL_TIME, form_str(RPL_TIME),
me.name, rb_date(rb_current_time(), buf, sizeof(buf)));
}
return 0;
}