本文整理汇总了C++中IsPerson函数的典型用法代码示例。如果您正苦于以下问题:C++ IsPerson函数的具体用法?C++ IsPerson怎么用?C++ IsPerson使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了IsPerson函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: m_quit
/*
* m_quit
* parv[0] = sender prefix
* parv[1] = comment
*/
int m_quit(struct Client *cptr,
struct Client *sptr,
int parc,
char *parv[])
#ifdef TIDY_QUIT
{
buf[0] = '\0';
if ((parc > 1) && parv[1])
{
if (strlen(parv[1]) > (MAX_QUIT_LENGTH - 2))
parv[1][MAX_QUIT_LENGTH - 2] = '\0';
/* Don't add quotes to a null message */
if (MyConnect(sptr) && *parv[1])
{
strncpy_irc(buf, "\"", 2);
strncat(buf, strip_colour(parv[1]), MAX_QUIT_LENGTH - 2);
strncat(buf, "\"", 1);
}
else
strncpy_irc(buf, parv[1], BUFSIZE);
}
sptr->flags |= FLAGS_NORMALEX;
#ifdef ANTI_SPAM_EXIT_MESSAGE
/* Your quit message is suppressed if:
*
* You haven't been connected to the server for long enough
*/
if( !IsServer(sptr) && MyConnect(sptr) &&
(sptr->firsttime + ANTI_SPAM_EXIT_MESSAGE_TIME) > CurrentTime)
strcpy(buf, "Client Quit");
else if (MyConnect(sptr) && IsPerson(sptr))
{
/* Or you are in a channel to which you cannot send */
struct SLink *chptr;
for (chptr = sptr->user->channel; chptr; chptr = chptr->next)
{
if (can_send(sptr, chptr->value.chptr) != 0)
{
strcpy(buf, "Client Quit");
break;
}
}
}
#endif
if (IsPerson(sptr))
{
sendto_local_ops_flag(UMODE_CCONN,
"Client exiting: %s (%[email protected]%s) [%s] [%s] [%s]",
sptr->name, sptr->username, sptr->host,
#ifdef WINTRHAWK
buf,
#else
(sptr->flags & FLAGS_NORMALEX) ? "Client Quit" : comment,
#endif /* WINTRHAWK */
sptr->sockhost, sptr->servptr ? sptr->servptr->name : "<null>");
}
return IsServer(sptr) ? 0 : exit_client(cptr, sptr, sptr, buf);
}
示例2: log_user_exit
/* log_user_exit()
*
* inputs - pointer to connecting client
* output - NONE
* side effects - Current exiting client is logged to
* either SYSLOG or to file.
*/
void
log_user_exit(struct Client *source_p)
{
time_t on_for = CurrentTime - source_p->firsttime;
#ifdef SYSLOG_USERS
if (IsPerson(source_p))
{
ilog(L_INFO, "%s (%3ld:%02ld:%02ld): %s!%[email protected]%s %ld/%ld\n",
myctime(source_p->firsttime),
(signed long) on_for / 3600,
(signed long) (on_for % 3600)/60,
(signed long) on_for % 60,
source_p->name, source_p->username, source_p->host,
source_p->localClient->sendK,
source_p->localClient->receiveK);
}
#else
{
char linebuf[BUFSIZ];
/*
* This conditional makes the logfile active only after
* it's been created - thus logging can be turned off by
* removing the file.
* -Taner
*/
if (IsPerson(source_p))
{
if (user_log_fb == NULL)
{
if ((ConfigLoggingEntry.userlog[0] != '\0') &&
(user_log_fb = fbopen(ConfigLoggingEntry.userlog, "r")) != NULL)
{
fbclose(user_log_fb);
user_log_fb = fbopen(ConfigLoggingEntry.userlog, "a");
}
}
if (user_log_fb != NULL)
{
size_t nbytes = ircsprintf(linebuf,
"%s (%3ld:%02ld:%02ld): %s!%[email protected]%s %d/%d\n",
myctime(source_p->firsttime),
(signed long) on_for / 3600,
(signed long) (on_for % 3600)/60,
(signed long) on_for % 60,
source_p->name, source_p->username, source_p->host,
source_p->localClient->sendK,
source_p->localClient->receiveK);
fbputs(linebuf, user_log_fb, nbytes);
}
}
}
#endif
}
示例3: send_message_remote
/* send_message_remote()
*
* inputs - pointer to client from message is being sent
* - pointer to client to send to
* - pointer to preformatted buffer
* - length of input buffer
* output - none
* side effects - Despite the function name, this only sends to directly
* connected clients.
*
*/
static void
send_message_remote(struct Client *to, struct Client *from,
char *buf, int len)
{
if (!MyConnect(to))
{
sendto_realops_flags(UMODE_ALL, L_ALL,
"server send message to %s [%s] dropped from %s(Not local server)",
to->name, to->from->name, from->name);
return;
}
/* Optimize by checking if (from && to) before everything */
/* we set to->from up there.. */
if (!MyClient(from) && IsPerson(to) && (to == from->from))
{
if (IsServer(from))
{
sendto_realops_flags(UMODE_ALL, L_ALL,
"Send message to %s [%s] dropped from %s(Fake Dir)",
to->name, to->from->name, from->name);
return;
}
sendto_realops_flags(UMODE_ALL, L_ALL,
"Ghosted: %s[%[email protected]%s] from %s[%[email protected]%s] (%s)",
to->name, to->username, to->host,
from->name, from->username, from->host,
to->from->name);
sendto_server(NULL, CAP_TS6, NOCAPS,
":%s KILL %s :%s (%s[%[email protected]%s] Ghosted %s)",
me.id, to->name, me.name, to->name,
to->username, to->host, to->from->name);
sendto_server(NULL, NOCAPS, CAP_TS6,
":%s KILL %s :%s (%s[%[email protected]%s] Ghosted %s)",
me.name, to->name, me.name, to->name,
to->username, to->host, to->from->name);
SetKilled(to);
if (IsPerson(from))
sendto_one(from, form_str(ERR_GHOSTEDCLIENT),
me.name, from->name, to->name, to->username,
to->host, to->from);
exit_client(NULL, to, &me, "Ghosted client");
return;
}
send_message(to, buf, len);
}
示例4: sprintf
char *get_client_name(aClient *sptr, int showip)
{
static char nbuf[HOSTLEN * 2 + USERLEN + 5];
if (MyConnect(sptr))
{
#ifdef UNIXPORT
if (IsUnixSocket(sptr))
{
if (showip)
sprintf(nbuf, "%s[%s]",
sptr->name, sptr->sockhost);
else
sprintf(nbuf, "%s[%s]",
sptr->name, me.sockhost);
}
else
#endif
{
if (showip)
(void)sprintf(nbuf, "%s[%.*[email protected]%s]",
sptr->name, USERLEN,
(!(sptr->flags & FLAGS_GOTID)) ? "" :
sptr->auth, sptr->user ? sptr->user->sip :
#ifdef INET6
inetntop(AF_INET6,
(char *)&sptr->ip,
ipv6string, sizeof(ipv6string))
#else
inetntoa((char *)&sptr->ip)
#endif
);
else
{
if (mycmp(sptr->name, sptr->sockhost))
/* Show username for clients and
* ident for others.
*/
sprintf(nbuf, "%s[%.*[email protected]%s]",
sptr->name, USERLEN,
IsPerson(sptr) ?
sptr->user->username :
sptr->auth,
IsPerson(sptr) ? sptr->user->host :
sptr->sockhost);
else
return sptr->name;
}
}
return nbuf;
}
return sptr->name;
}
示例5: m_servlist
int m_servlist(aClient *cptr, aClient *sptr, int parc, char *parv[])
{
aClient *acptr;
char *mask;
mask = IsParam(1) ? parv[1] : NULL;
for (acptr = client; acptr; acptr = acptr->next)
{
if (!IsPerson(acptr) || !IsServices(acptr))
continue;
if (mask && _match(mask, acptr->name))
continue;
sendto_one(sptr, TEXT_SERVLIST,
me.name, sptr->name,
acptr->name, acptr->user->username, GetHost(acptr),
acptr->srvptr->name, acptr->srvptr->hopcount,
acptr->info);
}
sendto_one(sptr, TEXT_SERVLISTEND,
me.name, sptr->name,
mask ? mask : "*");
return 0;
}
示例6: unload_all_unused_snomasks
void unload_all_unused_snomasks()
{
long removed_sno = 0;
int i;
for (i = 0; i < UMODETABLESZ; i++)
{
if (Snomask_Table[i].unloaded)
{
removed_sno |= Snomask_Table[i].mode;
Snomask_Table[i].flag = '\0';
Snomask_Table[i].unloaded = 0;
}
}
if (!removed_sno) /* Nothing was unloaded */
return;
for (i = 0; i <= LastSlot; i++)
{
aClient *cptr = local[i];
long oldsno;
if (!cptr || !IsPerson(cptr))
continue;
oldsno = cptr->user->snomask;
cptr->user->snomask &= ~(removed_sno);
if (oldsno != cptr->user->snomask)
sendto_one(cptr, rpl_str(RPL_SNOMASK), me.name,
cptr->name, get_snostr(cptr->user->snomask));
}
}
示例7: CMD_FUNC
/*
** m_admin
** parv[0] = sender prefix
** parv[1] = servername
*/
DLLFUNC CMD_FUNC(m_admin)
{
ConfigItem_admin *admin;
/* Users may want to get the address in case k-lined, etc. -- Barubary
* Only allow remote ADMINs if registered -- Barubary */
if (IsPerson(sptr) || IsServer(cptr))
if (hunt_server(cptr, sptr, ":%s ADMIN :%s", 1, parc, parv) != HUNTED_ISME)
return 0;
if (!conf_admin_tail)
{
sendto_one(sptr, err_str(ERR_NOADMININFO),
me.name, parv[0], me.name);
return 0;
}
sendto_one(sptr, rpl_str(RPL_ADMINME), me.name, parv[0], me.name);
/* cycle through the list backwards */
for (admin = conf_admin_tail; admin;
admin = (ConfigItem_admin *) admin->prev)
{
if (!admin->next)
sendto_one(sptr, rpl_str(RPL_ADMINLOC1),
me.name, parv[0], admin->line);
else if (!admin->next->next)
sendto_one(sptr, rpl_str(RPL_ADMINLOC2),
me.name, parv[0], admin->line);
else
sendto_one(sptr, rpl_str(RPL_ADMINEMAIL),
me.name, parv[0], admin->line);
}
return 0;
}
示例8: ms_wallops
/*
* ms_wallops (write to *all* opers currently online)
* parv[1] = message text
*/
static int
ms_wallops(struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
{
const char *prefix = "";
if (MyClient(source_p) && !IsOperMassNotice(source_p))
{
sendto_one(source_p, form_str(ERR_NOPRIVS),
me.name, source_p->name, "mass_notice");
return 0;
}
if (IsPerson(source_p))
{
if (!strncmp(parv[1], "OPERWALL - ", 11) ||
!strncmp(parv[1], "LOCOPS - ", 9) ||
!strncmp(parv[1], "SLOCOPS - ", 10) ||
!strncmp(parv[1], "ADMINWALL - ", 12))
prefix = "WALLOPS - ";
}
sendto_wallops_flags(UMODE_WALLOP, source_p, "%s%s", prefix, parv[1]);
sendto_server(client_p, NULL, CAP_TS6, NOCAPS, ":%s WALLOPS :%s",
use_id(source_p), parv[1]);
return 0;
}
示例9: send_linebuf_remote
/* send_linebuf_remote()
*
* inputs - client to attach to, sender, linebuf
* outputs -
* side effects - client has linebuf attached
*/
static void
send_linebuf_remote(struct Client *to, struct Client *from, buf_head_t *linebuf)
{
if(to->from)
to = to->from;
/* test for fake direction */
if(!MyClient(from) && IsPerson(to) && (to == from->from))
{
if(IsServer(from))
{
sendto_realops_flags(UMODE_ALL, L_ALL,
"Send message to %s[%s] dropped from %s(Fake Dir)",
to->name, to->from->name, from->name);
return;
}
sendto_realops_flags(UMODE_ALL, L_ALL,
"Ghosted: %s[%[email protected]%s] from %s[%[email protected]%s] (%s)",
to->name, to->username, to->host,
from->name, from->username, from->host, to->from->name);
kill_client_serv_butone(NULL, to, "%s (%s[%[email protected]%s] Ghosted %s)",
me.name, to->name, to->username,
to->host, to->from->name);
to->flags |= FLAGS_KILLED;
exit_client(NULL, to, &me, "Ghosted client");
return;
}
_send_linebuf(to, linebuf);
return;
}
示例10: SnomaskDel
void SnomaskDel(Snomask *sno)
{
if (loop.ircd_rehashing)
sno->unloaded = 1;
else
{
int i;
for (i = 0; i <= LastSlot; i++)
{
aClient *cptr = local[i];
long oldsno;
if (!cptr || !IsPerson(cptr))
continue;
oldsno = cptr->user->snomask;
cptr->user->snomask &= ~sno->mode;
if (oldsno != cptr->user->snomask)
sendto_one(cptr, rpl_str(RPL_SNOMASK), me.name,
cptr->name, get_snostr(cptr->user->snomask));
}
sno->flag = '\0';
}
if (sno->owner) {
ModuleObject *snoobj;
for (snoobj = sno->owner->objects; snoobj; snoobj = snoobj->next) {
if (snoobj->type == MOBJ_SNOMASK && snoobj->object.snomask == sno) {
DelListItem(snoobj, sno->owner->objects);
MyFree(snoobj);
break;
}
}
sno->owner = NULL;
}
return;
}
示例11: unload_all_unused_umodes
void unload_all_unused_umodes()
{
long removed_umode = 0;
int i;
aClient *cptr;
for (i = 0; i < UMODETABLESZ; i++)
{
if (Usermode_Table[i].unloaded)
removed_umode |= Usermode_Table[i].mode;
}
if (!removed_umode) /* Nothing was unloaded */
return;
for (cptr = client; cptr; cptr = cptr->next)
{
long oldumode = 0;
if (!IsPerson(cptr))
continue;
oldumode = cptr->umodes;
cptr->umodes &= ~(removed_umode);
if (MyClient(cptr))
send_umode_out(cptr, cptr, oldumode);
}
for (i = 0; i < UMODETABLESZ; i++)
{
if (Usermode_Table[i].unloaded)
{
AllUmodes &= ~(Usermode_Table[i].mode);
SendUmodes &= ~(Usermode_Table[i].mode);
Usermode_Table[i].flag = '\0';
Usermode_Table[i].unloaded = 0;
}
}
make_umodestr();
}
示例12: dead_link
/*
* dead_link - Adds client to a list of clients that need an exit_client()
*
*/
void dead_link(struct Client *client_p)
{
dlink_node *m;
const char *notice;
if(IsClosing(client_p))
return;
linebuf_donebuf(&client_p->localClient->buf_recvq);
linebuf_donebuf(&client_p->localClient->buf_sendq);
if(client_p->flags & FLAGS_SENDQEX)
notice = "Max SendQ exceeded";
else
notice = "Dead link";
if (!IsPerson(client_p) && !IsUnknown(client_p) && !IsClosing(client_p))
{
sendto_realops_flags(FLAGS_ALL, L_ADMIN,
notice, get_client_name(client_p, HIDE_IP));
sendto_realops_flags(FLAGS_ALL, L_OPER,
notice, get_client_name(client_p, MASK_IP));
}
Debug((DEBUG_ERROR, notice, get_client_name(to, HIDE_IP)));
assert(dlinkFind(&abort_list, client_p) == NULL);
m = make_dlink_node();
dlinkAdd(client_p, m, &abort_list);
SetDead(client_p); /* You are dead my friend */
}
示例13: log_failed_oper
/* log_failed_oper()
*
* inputs - pointer to client that failed to oper up
* - oper name
* output - none
* side effects - ffailed_operlog is written to, if its present
*/
void
log_failed_oper(struct Client *source_p, const char *name)
{
if (ConfigLoggingEntry.failed_operlog[0] == '\0')
return;
if (IsPerson(source_p))
{
FBFILE *oper_fb;
if ((oper_fb = fbopen(ConfigLoggingEntry.failed_operlog, "r")) != NULL)
{
fbclose(oper_fb);
oper_fb = fbopen(ConfigLoggingEntry.failed_operlog, "a");
}
if (oper_fb != NULL)
{
char linebuf[BUFSIZE];
size_t nbytes = ircsprintf(linebuf,
"%s FAILED OPER (%s) by (%s!%[email protected]%s)\n",
myctime(CurrentTime), name, source_p->name,
source_p->username, source_p->host);
fbputs(linebuf, oper_fb, nbytes);
fbclose(oper_fb);
}
}
}
示例14: deliver_it
/*
* Attempt to send a sequence of bytes to the connection.
* Returns
*
* < 0 Some fatal error occurred, (but not EWOULDBLOCK).
* This return is a request to close the socket and
* clean up the link.
*
* >= 0 No real error occurred, returns the number of
* bytes actually transferred. EWOULDBLOCK and other
* possibly similar conditions should be mapped to
* zero return. Upper level routine will have to
* decide what to do with those unwritten bytes...
*
* *NOTE* alarm calls have been preserved, so this should
* work equally well whether blocking or non-blocking
* mode is used...
*/
int
deliver_it(aClient *cptr, char *str, int len)
{
int retval;
aClient *acpt = cptr->acpt;
#ifdef DEBUGMODE
writecalls++;
#endif
if (IsDead(cptr)
|| (!IsServer(cptr) && !IsPerson(cptr) &&
!IsHandshake(cptr) && !IsUnknown(cptr))) {
str[len]='\0';
sendto_ops("* * * DEBUG ERROR * * * !!! Calling deliver_it() for %s, status %d %s, with message: %s",
cptr->name, cptr->status,
IsDead(cptr)?"DEAD":"", str);
return -1;
}
retval = socket_write(cptr->sock, str, len);
/*
* Convert WOULDBLOCK to a return of "0 bytes moved". This
* should occur only if socket was non-blocking. Note, that
* all is Ok, if the 'write' just returns '0' instead of an
* error and errno=EWOULDBLOCK.
*/
#ifdef DEBUGMODE
if (retval < 0) {
writeb[0]++;
Debug((DEBUG_ERROR,"write error (%s) to %s",
strerror(errno), cptr->name));
} else if (retval == 0)
writeb[1]++;
else if (retval < 16)
writeb[2]++;
else if (retval < 32)
writeb[3]++;
else if (retval < 64)
writeb[4]++;
else if (retval < 128)
writeb[5]++;
else if (retval < 256)
writeb[6]++;
else if (retval < 512)
writeb[7]++;
else if (retval < 1024)
writeb[8]++;
else
writeb[9]++;
#endif
if (retval > 0) {
cptr->sendB += retval;
me.sendB += retval;
if (cptr->sendB > 1023) {
cptr->sendK += (cptr->sendB >> 10);
cptr->sendB &= 0x03ff; /* 2^10 = 1024, 3ff = 1023 */
}
示例15: ovr_ircop_only
static int ovr_ircop_only(Cmdoverride *ovr, aClient *cptr, aClient *sptr, int parc, char *parv[]) {
if (IsPerson(sptr) && !IsOper(sptr)) {
sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, sptr->name);
return -1;
}
return CallCmdoverride(ovr, cptr, sptr, parc, parv);
}