mirror of
https://github.com/matrix-construct/construct
synced 2024-12-26 15:33:54 +01:00
Refactor umodes.
This commit is contained in:
parent
2088193118
commit
f33b369609
83 changed files with 433 additions and 385 deletions
|
@ -38,7 +38,7 @@ h_can_join(hook_data_channel *data)
|
|||
client::client *source_p = data->client;
|
||||
const auto &chptr(data->chptr);
|
||||
|
||||
if((chptr->mode.mode & mymode) && !IsAdmin(source_p)) {
|
||||
if((chptr->mode.mode & mymode) && !is(*source_p, umode::ADMIN)) {
|
||||
sendto_one_numeric(source_p, 519, "%s :Cannot join channel (+A) - you are not an IRC server administrator", chptr->name.c_str());
|
||||
data->approved = chan::mode::ERR_CUSTOM;
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ h_can_join(hook_data_channel *data)
|
|||
client::client *source_p = data->client;
|
||||
const auto &chptr(data->chptr);
|
||||
|
||||
if(!(chptr->mode.mode & mymode) && !IsSSLClient(source_p)) {
|
||||
if(!(chptr->mode.mode & mymode) && !is(*source_p, umode::SSLCLIENT)) {
|
||||
/* XXX This is equal to ERR_THROTTLE */
|
||||
sendto_one_numeric(source_p, 480, "%s :Cannot join channel (-U) - SSL/TLS required", chptr->name.c_str());
|
||||
data->approved = chan::mode::ERR_CUSTOM;
|
||||
|
|
|
@ -39,7 +39,7 @@ h_can_join(hook_data_channel *data)
|
|||
client::client *source_p = data->client;
|
||||
const auto &chptr(data->chptr);
|
||||
|
||||
if((chptr->mode.mode & mymode) && !IsOper(source_p)) {
|
||||
if((chptr->mode.mode & mymode) && !is(*source_p, umode::OPER)) {
|
||||
sendto_one_numeric(source_p, 520, "%s :Cannot join channel (+O) - you are not an IRC operator", chptr->name.c_str());
|
||||
data->approved = chan::mode::ERR_CUSTOM;
|
||||
}
|
||||
|
|
|
@ -44,10 +44,10 @@ hdl_can_kick(hook_data_channel_approval *data)
|
|||
client::client *who = data->target;
|
||||
const auto &chptr(data->chptr);
|
||||
|
||||
if(IsOper(source_p))
|
||||
if(is(*source_p, umode::OPER))
|
||||
return;
|
||||
|
||||
if((chptr->mode.mode & mymode) && IsOper(who))
|
||||
if((chptr->mode.mode & mymode) && is(*who, umode::OPER))
|
||||
{
|
||||
sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, "%s attempted to kick %s from %s (which is +M)",
|
||||
source_p->name, who->name, chptr->name.c_str());
|
||||
|
|
|
@ -38,7 +38,7 @@ h_can_join(hook_data_channel *data)
|
|||
client::client *source_p = data->client;
|
||||
const auto &chptr(data->chptr);
|
||||
|
||||
if((chptr->mode.mode & mymode) && !IsSSLClient(source_p)) {
|
||||
if((chptr->mode.mode & mymode) && !is(*source_p, umode::SSLCLIENT)) {
|
||||
/* XXX This is equal to ERR_THROTTLE */
|
||||
sendto_one_numeric(source_p, 480, "%s :Cannot join channel (+S) - SSL/TLS required", chptr->name.c_str());
|
||||
data->approved = chan::mode::ERR_CUSTOM;
|
||||
|
|
|
@ -24,6 +24,6 @@ h_can_create_channel_authenticated(hook_data_client_approval *data)
|
|||
{
|
||||
client::client *source_p = data->client;
|
||||
|
||||
if (suser(user(*source_p)).empty() && !IsOper(source_p))
|
||||
if (suser(user(*source_p)).empty() && !is(*source_p, umode::OPER))
|
||||
data->approved = ERR_NEEDREGGEDNICK;
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ h_can_create_channel_authenticated(hook_data_client_approval *data)
|
|||
{
|
||||
client::client *source_p = data->client;
|
||||
|
||||
if (!IsOper(source_p))
|
||||
if (!is(*source_p, umode::OPER))
|
||||
{
|
||||
sendto_one_notice(source_p, ":*** Channel creation is restricted to network staff only.");
|
||||
data->approved = ERR_NEEDREGGEDNICK;
|
||||
|
|
|
@ -44,5 +44,5 @@ eb_oper(const char *data, client::client *client_p, chan::chan *chptr, mode::typ
|
|||
return HasPrivilege(client_p, data) ? MATCH : NOMATCH;
|
||||
}
|
||||
|
||||
return IsOper(client_p) ? MATCH : NOMATCH;
|
||||
return is(*client_p, umode::OPER) ? MATCH : NOMATCH;
|
||||
}
|
||||
|
|
|
@ -35,5 +35,5 @@ static int eb_ssl(const char *data, client::client *client_p,
|
|||
if (data != NULL)
|
||||
return INVALID;
|
||||
|
||||
return IsSSLClient(client_p) ? MATCH : NOMATCH;
|
||||
return is(*client_p, umode::SSLCLIENT) ? MATCH : NOMATCH;
|
||||
}
|
||||
|
|
|
@ -69,7 +69,7 @@ static int eb_usermode(const char *data, client::client *client_p,
|
|||
}
|
||||
}
|
||||
|
||||
return ((client_p->umodes & modes_ack) == modes_ack &&
|
||||
!(client_p->umodes & modes_nak)) ?
|
||||
return ((client_p->mode & modes_ack) == modes_ack &&
|
||||
!(client_p->mode & modes_nak)) ?
|
||||
MATCH : NOMATCH;
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ h_noi_umode_changed(hook_data_umode_changed *hdata)
|
|||
{
|
||||
client::client *source_p = hdata->client;
|
||||
|
||||
if (my(*source_p) && !IsOper(source_p) && !is_invisible(*source_p)) {
|
||||
SetInvisible(source_p);
|
||||
if (my(*source_p) && !is(*source_p, umode::OPER) && !is(*source_p, umode::INVISIBLE)) {
|
||||
set(*source_p, umode::INVISIBLE);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -80,7 +80,7 @@ do_dehelper(client::client &source, client::client &target)
|
|||
{
|
||||
const char *fakeparv[4];
|
||||
|
||||
if(!(target.umodes & UMODE_HELPOPS))
|
||||
if(!(target.mode & UMODE_HELPOPS))
|
||||
return;
|
||||
|
||||
sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, "%s is using DEHELPER on %s",
|
||||
|
@ -145,14 +145,14 @@ h_hdl_stats_request(hook_data_int *hdata)
|
|||
static void
|
||||
h_hdl_new_remote_user(client::client *client_p)
|
||||
{
|
||||
if (client_p->umodes & UMODE_HELPOPS)
|
||||
if (client_p->mode & UMODE_HELPOPS)
|
||||
rb_dlinkAddAlloc(client_p, &helper_list);
|
||||
}
|
||||
|
||||
static void
|
||||
h_hdl_client_exit(hook_data_client_exit *hdata)
|
||||
{
|
||||
if (hdata->target->umodes & UMODE_HELPOPS)
|
||||
if (hdata->target->mode & UMODE_HELPOPS)
|
||||
rb_dlinkFindDestroy(hdata->target, &helper_list);
|
||||
}
|
||||
|
||||
|
@ -162,21 +162,21 @@ h_hdl_umode_changed(hook_data_umode_changed *hdata)
|
|||
client::client &source = *hdata->client;
|
||||
|
||||
/* didn't change +H umode, we don't need to do anything */
|
||||
if (!((hdata->oldumodes ^ source.umodes) & UMODE_HELPOPS))
|
||||
if (!((hdata->oldumodes ^ source.mode) & UMODE_HELPOPS))
|
||||
return;
|
||||
|
||||
if (source.umodes & UMODE_HELPOPS)
|
||||
if (source.mode & UMODE_HELPOPS)
|
||||
{
|
||||
if (my(source) && !HasPrivilege(&source, "usermode:helpops"))
|
||||
{
|
||||
source.umodes &= ~UMODE_HELPOPS;
|
||||
source.mode &= umode(~UMODE_HELPOPS);
|
||||
sendto_one(&source, form_str(ERR_NOPRIVS), me.name, source.name, "usermode:helpops");
|
||||
return;
|
||||
}
|
||||
|
||||
rb_dlinkAddAlloc(&source, &helper_list);
|
||||
}
|
||||
else if (!(source.umodes & UMODE_HELPOPS))
|
||||
else if (!(source.mode & UMODE_HELPOPS))
|
||||
rb_dlinkFindDestroy(&source, &helper_list);
|
||||
}
|
||||
|
||||
|
@ -186,7 +186,7 @@ h_hdl_whois(hook_data_client *hdata)
|
|||
client::client &source = *hdata->client;
|
||||
client::client *target_p = hdata->target;
|
||||
|
||||
if ((target_p->umodes & UMODE_HELPOPS) && away(user(*target_p)).empty())
|
||||
if ((target_p->mode & UMODE_HELPOPS) && away(user(*target_p)).empty())
|
||||
{
|
||||
sendto_one_numeric(&source, RPL_WHOISHELPOP, form_str(RPL_WHOISHELPOP), target_p->name);
|
||||
}
|
||||
|
|
|
@ -19,5 +19,5 @@ DECLARE_MODULE_AV2(hide_uncommon_channels, NULL, NULL, NULL, NULL, huc_hfnlist,
|
|||
static void
|
||||
h_huc_doing_whois_channel_visibility(hook_data_client *hdata)
|
||||
{
|
||||
hdata->approved = (is_public(hdata->chptr) && !is_invisible(*hdata->target)) || is_member(hdata->chptr, hdata->client);
|
||||
hdata->approved = (is_public(hdata->chptr) && !is(*hdata->target, umode::INVISIBLE)) || is_member(hdata->chptr, hdata->client);
|
||||
}
|
||||
|
|
|
@ -457,9 +457,9 @@ doing_stats_hook(hook_data_int *hdata)
|
|||
client::client &source = *hdata->client;
|
||||
if(hdata->arg2 != (int) 's')
|
||||
return;
|
||||
if((ConfigFileEntry.stats_k_oper_only == 2) && !IsOper(&source))
|
||||
if((ConfigFileEntry.stats_k_oper_only == 2) && !is(source, umode::OPER))
|
||||
return;
|
||||
if ((ConfigFileEntry.stats_k_oper_only == 1) && !IsOper(&source))
|
||||
if ((ConfigFileEntry.stats_k_oper_only == 1) && !is(source, umode::OPER))
|
||||
{
|
||||
hurt = hurt_find(source.sockhost);
|
||||
if (hurt != NULL)
|
||||
|
|
|
@ -162,14 +162,14 @@ check_umode_change(void *vdata)
|
|||
return;
|
||||
|
||||
/* didn't change +h umode, we don't need to do anything */
|
||||
if (!((data->oldumodes ^ source_p->umodes) & user_modes['h']))
|
||||
if (!((data->oldumodes ^ source_p->mode) & user_modes['h']))
|
||||
return;
|
||||
|
||||
if (source_p->umodes & user_modes['h'])
|
||||
if (source_p->mode & user_modes['h'])
|
||||
{
|
||||
if (is_ip_spoof(*source_p) || source_p->localClient->mangledhost == NULL || (is_dyn_spoof(*source_p) && strcmp(source_p->host, source_p->localClient->mangledhost)))
|
||||
{
|
||||
source_p->umodes &= ~user_modes['h'];
|
||||
source_p->mode &= umode(~user_modes['h']);
|
||||
return;
|
||||
}
|
||||
if (strcmp(source_p->host, source_p->localClient->mangledhost))
|
||||
|
@ -180,7 +180,7 @@ check_umode_change(void *vdata)
|
|||
sendto_one_numeric(source_p, RPL_HOSTHIDDEN, "%s :is now your hidden host",
|
||||
source_p->host);
|
||||
}
|
||||
else if (!(source_p->umodes & user_modes['h']))
|
||||
else if (!(source_p->mode & user_modes['h']))
|
||||
{
|
||||
if (source_p->localClient->mangledhost != NULL &&
|
||||
!strcmp(source_p->host, source_p->localClient->mangledhost))
|
||||
|
@ -197,7 +197,7 @@ check_new_user(void *vdata)
|
|||
|
||||
if (is_ip_spoof(*source_p))
|
||||
{
|
||||
source_p->umodes &= ~user_modes['h'];
|
||||
source_p->mode &= umode(~user_modes['h']);
|
||||
return;
|
||||
}
|
||||
source_p->localClient->mangledhost = (char *)rb_malloc(HOSTLEN + 1);
|
||||
|
@ -206,8 +206,8 @@ check_new_user(void *vdata)
|
|||
else
|
||||
do_host_cloak_host(source_p->orighost, source_p->localClient->mangledhost);
|
||||
if (is_dyn_spoof(*source_p))
|
||||
source_p->umodes &= ~user_modes['h'];
|
||||
if (source_p->umodes & user_modes['h'])
|
||||
source_p->mode &= umode(~user_modes['h']);
|
||||
if (source_p->mode & user_modes['h'])
|
||||
{
|
||||
rb_strlcpy(source_p->host, source_p->localClient->mangledhost, sizeof(source_p->host));
|
||||
if (irccmp(source_p->host, source_p->orighost))
|
||||
|
|
|
@ -168,14 +168,14 @@ check_umode_change(void *vdata)
|
|||
return;
|
||||
|
||||
/* didn't change +h umode, we don't need to do anything */
|
||||
if (!((data->oldumodes ^ source_p->umodes) & user_modes['h']))
|
||||
if (!((data->oldumodes ^ source_p->mode) & user_modes['h']))
|
||||
return;
|
||||
|
||||
if (source_p->umodes & user_modes['h'])
|
||||
if (source_p->mode & user_modes['h'])
|
||||
{
|
||||
if (is_ip_spoof(*source_p) || source_p->localClient->mangledhost == NULL || (is_dyn_spoof(*source_p) && strcmp(source_p->host, source_p->localClient->mangledhost)))
|
||||
{
|
||||
source_p->umodes &= ~user_modes['h'];
|
||||
source_p->mode &= umode(~user_modes['h']);
|
||||
return;
|
||||
}
|
||||
if (strcmp(source_p->host, source_p->localClient->mangledhost))
|
||||
|
@ -186,7 +186,7 @@ check_umode_change(void *vdata)
|
|||
sendto_one_numeric(source_p, RPL_HOSTHIDDEN, "%s :is now your hidden host",
|
||||
source_p->host);
|
||||
}
|
||||
else if (!(source_p->umodes & user_modes['h']))
|
||||
else if (!(source_p->mode & user_modes['h']))
|
||||
{
|
||||
if (source_p->localClient->mangledhost != NULL &&
|
||||
!strcmp(source_p->host, source_p->localClient->mangledhost))
|
||||
|
@ -203,7 +203,7 @@ check_new_user(void *vdata)
|
|||
|
||||
if (is_ip_spoof(*source_p))
|
||||
{
|
||||
source_p->umodes &= ~user_modes['h'];
|
||||
source_p->mode &= umode(~user_modes['h']);
|
||||
return;
|
||||
}
|
||||
source_p->localClient->mangledhost = (char *)rb_malloc(HOSTLEN);
|
||||
|
@ -212,8 +212,8 @@ check_new_user(void *vdata)
|
|||
else
|
||||
do_host_cloak_host(source_p->orighost, source_p->localClient->mangledhost);
|
||||
if (is_dyn_spoof(*source_p))
|
||||
source_p->umodes &= ~user_modes['h'];
|
||||
if (source_p->umodes & user_modes['h'])
|
||||
source_p->mode &= umode(~user_modes['h']);
|
||||
if (source_p->mode & user_modes['h'])
|
||||
{
|
||||
rb_strlcpy(source_p->host, source_p->localClient->mangledhost, sizeof(source_p->host));
|
||||
if (irccmp(source_p->host, source_p->orighost))
|
||||
|
|
|
@ -162,14 +162,14 @@ check_umode_change(void *vdata)
|
|||
return;
|
||||
|
||||
/* didn't change +h umode, we don't need to do anything */
|
||||
if (!((data->oldumodes ^ source_p->umodes) & user_modes['x']))
|
||||
if (!((data->oldumodes ^ source_p->mode) & user_modes['x']))
|
||||
return;
|
||||
|
||||
if (source_p->umodes & user_modes['x'])
|
||||
if (source_p->mode & user_modes['x'])
|
||||
{
|
||||
if (is_ip_spoof(*source_p) || source_p->localClient->mangledhost == NULL || (is_dyn_spoof(*source_p) && strcmp(source_p->host, source_p->localClient->mangledhost)))
|
||||
{
|
||||
source_p->umodes &= ~user_modes['x'];
|
||||
source_p->mode &= umode(~user_modes['x']);
|
||||
return;
|
||||
}
|
||||
if (strcmp(source_p->host, source_p->localClient->mangledhost))
|
||||
|
@ -180,7 +180,7 @@ check_umode_change(void *vdata)
|
|||
sendto_one_numeric(source_p, RPL_HOSTHIDDEN, "%s :is now your hidden host",
|
||||
source_p->host);
|
||||
}
|
||||
else if (!(source_p->umodes & user_modes['x']))
|
||||
else if (!(source_p->mode & user_modes['x']))
|
||||
{
|
||||
if (source_p->localClient->mangledhost != NULL &&
|
||||
!strcmp(source_p->host, source_p->localClient->mangledhost))
|
||||
|
@ -197,7 +197,7 @@ check_new_user(void *vdata)
|
|||
|
||||
if (is_ip_spoof(*source_p))
|
||||
{
|
||||
source_p->umodes &= ~user_modes['x'];
|
||||
source_p->mode &= umode(~user_modes['x']);
|
||||
return;
|
||||
}
|
||||
source_p->localClient->mangledhost = (char *)rb_malloc(HOSTLEN + 1);
|
||||
|
@ -206,8 +206,8 @@ check_new_user(void *vdata)
|
|||
else
|
||||
do_host_cloak_host(source_p->orighost, source_p->localClient->mangledhost);
|
||||
if (is_dyn_spoof(*source_p))
|
||||
source_p->umodes &= ~user_modes['x'];
|
||||
if (source_p->umodes & user_modes['x'])
|
||||
source_p->mode &= umode(~user_modes['x']);
|
||||
if (source_p->mode & user_modes['x'])
|
||||
{
|
||||
rb_strlcpy(source_p->host, source_p->localClient->mangledhost, sizeof(source_p->host));
|
||||
if (irccmp(source_p->host, source_p->orighost))
|
||||
|
|
|
@ -110,14 +110,14 @@ check_umode_change(void *vdata)
|
|||
return;
|
||||
|
||||
/* didn't change +h umode, we don't need to do anything */
|
||||
if (!((data->oldumodes ^ source_p->umodes) & user_modes['h']))
|
||||
if (!((data->oldumodes ^ source_p->mode) & user_modes['h']))
|
||||
return;
|
||||
|
||||
if (source_p->umodes & user_modes['h'])
|
||||
if (source_p->mode & user_modes['h'])
|
||||
{
|
||||
if (is_ip_spoof(*source_p) || source_p->localClient->mangledhost == NULL || (is_dyn_spoof(*source_p) && strcmp(source_p->host, source_p->localClient->mangledhost)))
|
||||
{
|
||||
source_p->umodes &= ~user_modes['h'];
|
||||
source_p->mode &= umode(~user_modes['h']);
|
||||
return;
|
||||
}
|
||||
if (strcmp(source_p->host, source_p->localClient->mangledhost))
|
||||
|
@ -128,7 +128,7 @@ check_umode_change(void *vdata)
|
|||
sendto_one_numeric(source_p, RPL_HOSTHIDDEN, "%s :is now your hidden host",
|
||||
source_p->host);
|
||||
}
|
||||
else if (!(source_p->umodes & user_modes['h']))
|
||||
else if (!(source_p->mode & user_modes['h']))
|
||||
{
|
||||
if (source_p->localClient->mangledhost != NULL &&
|
||||
!strcmp(source_p->host, source_p->localClient->mangledhost))
|
||||
|
@ -145,7 +145,7 @@ check_new_user(void *vdata)
|
|||
|
||||
if (is_ip_spoof(*source_p))
|
||||
{
|
||||
source_p->umodes &= ~user_modes['h'];
|
||||
source_p->mode &= umode(~user_modes['h']);
|
||||
return;
|
||||
}
|
||||
source_p->localClient->mangledhost = (char *)rb_malloc(HOSTLEN);
|
||||
|
@ -154,8 +154,8 @@ check_new_user(void *vdata)
|
|||
else
|
||||
do_host_cloak(source_p->orighost, source_p->localClient->mangledhost, 0);
|
||||
if (is_dyn_spoof(*source_p))
|
||||
source_p->umodes &= ~user_modes['h'];
|
||||
if (source_p->umodes & user_modes['h'])
|
||||
source_p->mode &= umode(~user_modes['h']);
|
||||
if (source_p->mode & user_modes['h'])
|
||||
{
|
||||
rb_strlcpy(source_p->host, source_p->localClient->mangledhost, sizeof(source_p->host));
|
||||
if (irccmp(source_p->host, source_p->orighost))
|
||||
|
|
|
@ -47,18 +47,18 @@ DECLARE_MODULE_AV2(adminwall, NULL, NULL, adminwall_clist, NULL, NULL, NULL, NUL
|
|||
static void
|
||||
mo_adminwall(struct MsgBuf *msgbuf_p, client::client &client, client::client &source, int parc, const char *parv[])
|
||||
{
|
||||
if(!IsAdmin(&source))
|
||||
if(!is(source, umode::ADMIN))
|
||||
{
|
||||
sendto_one(&source, form_str(ERR_NOPRIVS),
|
||||
me.name, source.name, "adminwall");
|
||||
return;
|
||||
}
|
||||
sendto_wallops_flags(UMODE_ADMIN, &source, "ADMINWALL - %s", parv[1]);
|
||||
sendto_wallops_flags(umode::ADMIN, &source, "ADMINWALL - %s", parv[1]);
|
||||
sendto_match_servs(&source, "*", CAP_ENCAP, NOCAPS, "ENCAP * ADMINWALL :%s", parv[1]);
|
||||
}
|
||||
|
||||
static void
|
||||
me_adminwall(struct MsgBuf *msgbuf_p, client::client &client, client::client &source, int parc, const char *parv[])
|
||||
{
|
||||
sendto_wallops_flags(UMODE_ADMIN, &source, "ADMINWALL - %s", parv[1]);
|
||||
sendto_wallops_flags(umode::ADMIN, &source, "ADMINWALL - %s", parv[1]);
|
||||
}
|
||||
|
|
|
@ -50,7 +50,7 @@ m_findforwards(struct MsgBuf *msgbuf_p, client::client &client, client::client &
|
|||
*p = '\0';
|
||||
|
||||
/* Allow ircops to search for forwards to nonexistent channels */
|
||||
if(!IsOper(&source))
|
||||
if(!is(source, umode::OPER))
|
||||
{
|
||||
if((chptr = chan::get(parv[1], std::nothrow)) == NULL || (msptr = get(chptr->members, source, std::nothrow)) == NULL)
|
||||
{
|
||||
|
|
|
@ -63,7 +63,7 @@ m_identify(struct MsgBuf *msgbuf_p, client::client &client, client::client &sour
|
|||
}
|
||||
|
||||
nick = parv[1][0] == '#' ? SVS_chanserv_NICK : SVS_nickserv_NICK;
|
||||
if ((target_p = client::find_named_person(nick)) && IsService(target_p))
|
||||
if ((target_p = client::find_named_person(nick)) && is(*target_p, umode::SERVICE))
|
||||
{
|
||||
sendto_one(target_p, ":%s PRIVMSG %s :IDENTIFY %s", get_id(&source, target_p), get_id(target_p, target_p), reconstruct_parv(parc - 1, &parv[1]));
|
||||
}
|
||||
|
|
|
@ -48,7 +48,7 @@ DECLARE_MODULE_AV2(locops, NULL, NULL, locops_clist, NULL, NULL, NULL, NULL, loc
|
|||
static void
|
||||
m_locops(struct MsgBuf *msgbuf_p, client::client &client, client::client &source, int parc, const char *parv[])
|
||||
{
|
||||
sendto_wallops_flags(UMODE_LOCOPS, &source, "LOCOPS - %s", parv[1]);
|
||||
sendto_wallops_flags(umode::LOCOPS, &source, "LOCOPS - %s", parv[1]);
|
||||
|
||||
if(rb_dlink_list_length(&cluster_conf_list) > 0)
|
||||
cluster_generic(&source, "LOCOPS", SHARED_LOCOPS, CAP_CLUSTER,
|
||||
|
@ -68,7 +68,7 @@ ms_locops(struct MsgBuf *msgbuf_p, client::client &client, client::client &sourc
|
|||
return;
|
||||
|
||||
if(find_shared_conf("*", "*", source.servptr->name, SHARED_LOCOPS))
|
||||
sendto_wallops_flags(UMODE_LOCOPS, &source, "SLOCOPS - %s", parv[2]);
|
||||
sendto_wallops_flags(umode::LOCOPS, &source, "SLOCOPS - %s", parv[2]);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -79,6 +79,6 @@ me_locops(struct MsgBuf *msgbuf_p, client::client &client, client::client &sourc
|
|||
return;
|
||||
|
||||
if(find_shared_conf("*", "*", source.servptr->name, SHARED_LOCOPS))
|
||||
sendto_wallops_flags(UMODE_LOCOPS, &source, "SLOCOPS - %s", parv[1]);
|
||||
sendto_wallops_flags(umode::LOCOPS, &source, "SLOCOPS - %s", parv[1]);
|
||||
}
|
||||
|
||||
|
|
|
@ -71,7 +71,7 @@ mo_ojoin(struct MsgBuf *msgbuf_p, client::client &client, client::client &source
|
|||
if(move_me == 1)
|
||||
parv[1]--;
|
||||
|
||||
sendto_wallops_flags(UMODE_WALLOP, &me,
|
||||
sendto_wallops_flags(umode::WALLOP, &me,
|
||||
"OJOIN called for %s by %s!%s@%s",
|
||||
parv[1], source.name, source.username, source.host);
|
||||
ilog(L_MAIN, "OJOIN called for %s by %s",
|
||||
|
|
|
@ -103,7 +103,7 @@ mo_okick(struct MsgBuf *msgbuf_p, client::client &client, client::client &source
|
|||
return;
|
||||
}
|
||||
|
||||
sendto_wallops_flags(UMODE_WALLOP, &me,
|
||||
sendto_wallops_flags(umode::WALLOP, &me,
|
||||
"OKICK called for %s %s by %s!%s@%s",
|
||||
chptr->name.c_str(), target_p->name,
|
||||
source.name, source.username, source.host);
|
||||
|
|
|
@ -93,7 +93,7 @@ mo_omode(struct MsgBuf *msgbuf_p, client::client &client, client::client &source
|
|||
rb_strlcat(params, parv[i], sizeof params);
|
||||
}
|
||||
|
||||
sendto_wallops_flags(UMODE_WALLOP, &me,
|
||||
sendto_wallops_flags(umode::WALLOP, &me,
|
||||
"OMODE called for [%s] [%s] by %s!%s@%s",
|
||||
parv[1], params, source.name, source.username, source.host);
|
||||
ilog(L_MAIN, "OMODE called for [%s] [%s] by %s",
|
||||
|
|
|
@ -75,7 +75,7 @@ mo_opme(struct MsgBuf *msgbuf_p, client::client &client, client::client &source,
|
|||
|
||||
msptr->flags |= chan::CHANOP;
|
||||
|
||||
sendto_wallops_flags(UMODE_WALLOP, &me,
|
||||
sendto_wallops_flags(umode::WALLOP, &me,
|
||||
"OPME called for [%s] by %s!%s@%s",
|
||||
parv[1], source.name, source.username, source.host);
|
||||
ilog(L_MAIN, "OPME called for [%s] by %s",
|
||||
|
|
|
@ -143,7 +143,7 @@ m_remove(struct MsgBuf *msgbuf_p, client::client &client, client::client &source
|
|||
|
||||
if(msptr != NULL)
|
||||
{
|
||||
if(my(source) && IsService(who))
|
||||
if(my(source) && is(*who, umode::SERVICE))
|
||||
{
|
||||
sendto_one(&source, form_str(ERR_ISCHANSERVICE),
|
||||
me.name, source.name, who->name, chptr->name.c_str());
|
||||
|
|
|
@ -164,7 +164,7 @@ m_displaymsg(struct MsgBuf *msgbuf_p, client::client &source, const char *channe
|
|||
return;
|
||||
|
||||
/* enforce target change on roleplay commands */
|
||||
if(!is_chanop(msptr) && !is_voiced(msptr) && !IsOper(&source) && !add_channel_target(&source, chptr))
|
||||
if(!is_chanop(msptr) && !is_voiced(msptr) && !is(source, umode::OPER) && !add_channel_target(&source, chptr))
|
||||
{
|
||||
sendto_one(&source, form_str(ERR_TARGCHANGE),
|
||||
me.name, source.name, chptr->name.c_str());
|
||||
|
|
|
@ -28,7 +28,7 @@ block_services_kill(void *vdata)
|
|||
if (!data->approved)
|
||||
return;
|
||||
|
||||
if (IsService(data->target))
|
||||
if (is(*data->target, umode::SERVICE))
|
||||
{
|
||||
sendto_one_numeric(data->client, ERR_ISCHANSERVICE,
|
||||
"KILL %s :Cannot kill a network service",
|
||||
|
|
|
@ -21,8 +21,8 @@ h_nl_umode_changed(hook_data_umode_changed *hdata)
|
|||
{
|
||||
client::client *source_p = hdata->client;
|
||||
|
||||
if (my(*source_p) && source_p->umodes & UMODE_LOCOPS)
|
||||
if (my(*source_p) && source_p->mode & umode::LOCOPS)
|
||||
{
|
||||
source_p->umodes &= ~UMODE_LOCOPS;
|
||||
source_p->mode &= ~umode::LOCOPS;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,13 +23,13 @@ h_noi_umode_changed(hook_data_umode_changed *hdata)
|
|||
{
|
||||
client::client *source_p = hdata->client;
|
||||
|
||||
if (my(*source_p) && IsOper(source_p) && !IsOperInvis(source_p) &&
|
||||
is_invisible(*source_p))
|
||||
if (my(*source_p) && is(*source_p, umode::OPER) && !IsOperInvis(source_p) &&
|
||||
is(*source_p, umode::INVISIBLE))
|
||||
{
|
||||
ClearInvisible(source_p);
|
||||
clear(*source_p, umode::INVISIBLE);
|
||||
/* If they tried /umode +i, complain; do not complain
|
||||
* if they opered up while invisible -- jilles */
|
||||
if (hdata->oldumodes & UMODE_OPER)
|
||||
if (hdata->oldumodes & umode::OPER)
|
||||
sendto_one_notice(source_p, ":*** Opers may not set themselves invisible");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -101,19 +101,19 @@ check_umode_change(void *vdata)
|
|||
if (!my(*source_p))
|
||||
return;
|
||||
|
||||
if (data->oldumodes & UMODE_OPER && !IsOper(source_p))
|
||||
source_p->umodes &= ~user_modes['p'];
|
||||
if (data->oldumodes & umode::OPER && !is(*source_p, umode::OPER))
|
||||
source_p->mode &= umode(~user_modes['p']);
|
||||
|
||||
/* didn't change +p umode, we don't need to do anything */
|
||||
if (!((data->oldumodes ^ source_p->umodes) & user_modes['p']))
|
||||
if (!((data->oldumodes ^ source_p->mode) & user_modes['p']))
|
||||
return;
|
||||
|
||||
if (source_p->umodes & user_modes['p'])
|
||||
if (source_p->mode & user_modes['p'])
|
||||
{
|
||||
if (!IsOperOverride(source_p))
|
||||
{
|
||||
sendto_one_notice(source_p, ":*** You need oper:override privilege for +p");
|
||||
source_p->umodes &= ~user_modes['p'];
|
||||
source_p->mode &= umode(~user_modes['p']);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -122,7 +122,7 @@ check_umode_change(void *vdata)
|
|||
sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, "%s has enabled oper-override (+p)",
|
||||
get_oper_name(source_p));
|
||||
}
|
||||
else if (!(source_p->umodes & user_modes['p']))
|
||||
else if (!(source_p->mode & user_modes['p']))
|
||||
{
|
||||
rb_dlink_node *n, *tn;
|
||||
|
||||
|
@ -153,7 +153,7 @@ hack_channel_access(void *vdata)
|
|||
if (data->approved == chan::CHANOP)
|
||||
return;
|
||||
|
||||
if (data->client->umodes & user_modes['p'])
|
||||
if (data->client->mode & user_modes['p'])
|
||||
{
|
||||
update_session_deadline(data->client, NULL);
|
||||
data->approved = CHFL_OVERRIDE;
|
||||
|
@ -173,7 +173,7 @@ hack_can_join(void *vdata)
|
|||
if (data->approved == 0)
|
||||
return;
|
||||
|
||||
if (data->client->umodes & user_modes['p'])
|
||||
if (data->client->mode & user_modes['p'])
|
||||
{
|
||||
update_session_deadline(data->client, NULL);
|
||||
data->approved = 0;
|
||||
|
@ -193,7 +193,7 @@ hack_can_kick(void *vdata)
|
|||
if (alevel != CHFL_OVERRIDE)
|
||||
return;
|
||||
|
||||
if (data->client->umodes & user_modes['p'])
|
||||
if (data->client->mode & user_modes['p'])
|
||||
{
|
||||
update_session_deadline(data->client, NULL);
|
||||
sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, "%s is using oper-override on %s (KICK %s)",
|
||||
|
@ -212,7 +212,7 @@ hack_can_send(void *vdata)
|
|||
if (data->approved == chan::CAN_SEND_NONOP || data->approved == chan::CAN_SEND_OPV)
|
||||
return;
|
||||
|
||||
if (data->client->umodes & user_modes['p'])
|
||||
if (data->client->mode & user_modes['p'])
|
||||
{
|
||||
data->approved = chan::CAN_SEND_NONOP;
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ h_sgo_umode_changed(void *vdata)
|
|||
if (my_connect(*source_p) || !has_sent_eob(*source_p->servptr))
|
||||
return;
|
||||
|
||||
if (!(data->oldumodes & UMODE_OPER) && IsOper(source_p))
|
||||
if (!(data->oldumodes & umode::OPER) && is(*source_p, umode::OPER))
|
||||
sendto_realops_snomask_from(SNO_GENERAL, L_ALL, source_p->servptr,
|
||||
"%s (%s@%s) is now an operator",
|
||||
source_p->name, source_p->username, source_p->host);
|
||||
|
|
|
@ -52,7 +52,7 @@ show_whois(hook_data_client *data)
|
|||
|
||||
if(my(*target_p) &&
|
||||
#ifdef OPERONLY
|
||||
IsOper(target_p) &&
|
||||
is(*target_p, umode::OPER) &&
|
||||
#endif
|
||||
(source_p != target_p) &&
|
||||
(target_p->snomask & snomask_modes['W']))
|
||||
|
|
|
@ -704,14 +704,14 @@ int dump_pcre_config(client::client &client, client::client &source, int parc, c
|
|||
static
|
||||
int spamexpr_info(client::client &client, client::client &source, int parc, const char *parv[])
|
||||
{
|
||||
if(parc > 0 && !IsOper(&source))
|
||||
if(parc > 0 && !is(source, umode::OPER))
|
||||
{
|
||||
sendto_one(&source, form_str(ERR_NOPRIVS), me.name, source.name, "SPAMEXPR INFO");
|
||||
sendto_one_notice(&source, ":Only operators can give arguments to this command.");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(parc < 1 && IsOper(&source))
|
||||
if(parc < 1 && is(source, umode::OPER))
|
||||
{
|
||||
dump_pcre_config(client, source, parc, parv);
|
||||
return 0;
|
||||
|
@ -754,7 +754,7 @@ int spamexpr_info(client::client &client, client::client &source, int parc, cons
|
|||
static
|
||||
int spamexpr_list(client::client &client, client::client &source, int parc, const char *parv[])
|
||||
{
|
||||
if(parc > 0 && !IsOper(&source))
|
||||
if(parc > 0 && !is(source, umode::OPER))
|
||||
{
|
||||
sendto_one(&source, form_str(ERR_NOPRIVS), me.name, source.name, "SPAMEXPR LIST");
|
||||
sendto_one_notice(&source, ":Only operators can give arguments to this command.");
|
||||
|
@ -790,7 +790,7 @@ int spamexpr_list(client::client &client, client::client &source, int parc, cons
|
|||
static
|
||||
int spamexpr_add(client::client &client, client::client &source, int parc, const char *parv[])
|
||||
{
|
||||
if(!IsOper(&source) && !is_server(source))
|
||||
if(!is(source, umode::OPER) && !is_server(source))
|
||||
{
|
||||
sendto_one(&source, form_str(ERR_NOPRIVS), me.name, source.name, "SPAMEXPR ADD");
|
||||
return 0;
|
||||
|
@ -846,7 +846,7 @@ int spamexpr_add(client::client &client, client::client &source, int parc, const
|
|||
static
|
||||
int spamexpr_del(client::client &client, client::client &source, int parc, const char *parv[])
|
||||
{
|
||||
if(!IsOper(&source) && !is_server(source))
|
||||
if(!is(source, umode::OPER) && !is_server(source))
|
||||
{
|
||||
sendto_one(&source, form_str(ERR_NOPRIVS), me.name, source.name, "SPAMEXPR DEL");
|
||||
return 0;
|
||||
|
@ -886,7 +886,7 @@ int spamexpr_del(client::client &client, client::client &source, int parc, const
|
|||
static
|
||||
int spamexpr_test(client::client &client, client::client &source, int parc, const char *parv[])
|
||||
{
|
||||
if(!IsOper(&source))
|
||||
if(!is(source, umode::OPER))
|
||||
{
|
||||
sendto_one(&source, form_str(ERR_NOPRIVS), me.name, source.name, "SPAMEXPR TEST");
|
||||
return 0;
|
||||
|
@ -937,7 +937,7 @@ int spamexpr_test(client::client &client, client::client &source, int parc, cons
|
|||
static
|
||||
int spamexpr_sync(client::client &client, client::client &source, int parc, const char *parv[])
|
||||
{
|
||||
if(!IsOper(&source) && !is_server(source))
|
||||
if(!is(source, umode::OPER) && !is_server(source))
|
||||
{
|
||||
sendto_one(&source, form_str(ERR_NOPRIVS), me.name, source.name, "SPAMEXPR SYNC");
|
||||
return 0;
|
||||
|
|
|
@ -38,7 +38,7 @@ umode_noctcp_process(hook_data_privmsg_user *data) {
|
|||
return;
|
||||
}
|
||||
|
||||
if (data->target_p->umodes & user_modes['C'] && *data->text == '\001' && rb_strncasecmp(data->text + 1, "ACTION", 6)) {
|
||||
if (data->target_p->mode & user_modes['C'] && *data->text == '\001' && rb_strncasecmp(data->text + 1, "ACTION", 6)) {
|
||||
sendto_one_numeric(data->source_p, ERR_CANNOTSENDTOUSER, form_str(ERR_CANNOTSENDTOUSER), data->target_p->name, "+C set");
|
||||
data->approved = ERR_CANNOTSENDTOUSER;
|
||||
return;
|
||||
|
|
|
@ -71,6 +71,61 @@ namespace serv
|
|||
} // namespace ircd
|
||||
|
||||
|
||||
namespace ircd {
|
||||
namespace client {
|
||||
namespace mode {
|
||||
|
||||
enum mode : uint
|
||||
{
|
||||
SERVNOTICE = 0x0001, // server notices
|
||||
WALLOP = 0x0002, // send wallops to them
|
||||
OPERWALL = 0x0004, // operwalls
|
||||
INVISIBLE = 0x0008, // makes user invisible
|
||||
CALLERID = 0x0010, // block unless caller id's
|
||||
LOCOPS = 0x0020, // show locops
|
||||
SERVICE = 0x0040,
|
||||
DEAF = 0x0080,
|
||||
NOFORWARD = 0x0100, // don't forward
|
||||
REGONLYMSG = 0x0200, // only allow logged in users to msg
|
||||
OPER = 0x1000, // operator
|
||||
ADMIN = 0x2000, // admin on server
|
||||
SSLCLIENT = 0x4000, // using SSL
|
||||
};
|
||||
|
||||
const mode DEFAULT_OPER_UMODES
|
||||
{
|
||||
SERVNOTICE |
|
||||
OPERWALL |
|
||||
WALLOP |
|
||||
LOCOPS
|
||||
};
|
||||
|
||||
inline bool
|
||||
is(const mode &mask, const mode &bits)
|
||||
{
|
||||
return (mask & bits) == bits;
|
||||
}
|
||||
|
||||
inline void
|
||||
set(mode &mask, const mode &bits)
|
||||
{
|
||||
mask |= bits;
|
||||
}
|
||||
|
||||
inline void
|
||||
clear(mode &mask, const mode &bits)
|
||||
{
|
||||
mask &= ~bits;
|
||||
}
|
||||
|
||||
} // namespace mode
|
||||
} // namespace client
|
||||
|
||||
using umode = client::mode::mode;
|
||||
|
||||
} // namespace ircd
|
||||
|
||||
|
||||
namespace ircd {
|
||||
namespace client {
|
||||
|
||||
|
@ -85,23 +140,6 @@ enum class status : uint8_t
|
|||
CLIENT = 0x40,
|
||||
};
|
||||
|
||||
|
||||
#define UMODE_SERVNOTICE 0x0001 /* server notices */
|
||||
#define UMODE_WALLOP 0x0002 /* send wallops to them */
|
||||
#define UMODE_OPERWALL 0x0004 /* Operwalls */
|
||||
#define UMODE_INVISIBLE 0x0008 /* makes user invisible */
|
||||
#define UMODE_CALLERID 0x0010 /* block unless caller id's */
|
||||
#define UMODE_LOCOPS 0x0020 /* show locops */
|
||||
#define UMODE_SERVICE 0x0040
|
||||
#define UMODE_DEAF 0x0080
|
||||
#define UMODE_NOFORWARD 0x0100 /* don't forward */
|
||||
#define UMODE_REGONLYMSG 0x0200 /* only allow logged in users to msg */
|
||||
|
||||
/* user information flags, only settable by remote mode or local oper */
|
||||
#define UMODE_OPER 0x1000 /* Operator */
|
||||
#define UMODE_ADMIN 0x2000 /* Admin on server */
|
||||
#define UMODE_SSLCLIENT 0x4000 /* using SSL */
|
||||
|
||||
enum flags
|
||||
{
|
||||
PINGSENT = 0x00000001, // Unreplied ping sent
|
||||
|
@ -170,7 +208,7 @@ struct client
|
|||
rb_dlink_list whowas_clist;
|
||||
|
||||
time_t tsinfo; /* TS on the nick, SVINFO on server */
|
||||
unsigned int umodes; /* opers, normal users subset */
|
||||
mode::mode mode;
|
||||
uint64_t flags; /* client flags */
|
||||
|
||||
unsigned int snomask; /* server notice mask */
|
||||
|
@ -388,44 +426,24 @@ struct ListClient
|
|||
int operspy;
|
||||
};
|
||||
|
||||
/* oper flags */
|
||||
#define MyOper(x) (my_connect(*x) && IsOper(x))
|
||||
|
||||
#define SetOper(x) {(x)->umodes |= UMODE_OPER; \
|
||||
if (my(*(x))) (x)->handler = OPER_HANDLER;}
|
||||
|
||||
#define ClearOper(x) {(x)->umodes &= ~(UMODE_OPER|UMODE_ADMIN); \
|
||||
if (my(*(x)) && !IsOper((x)) && !is_server(*(x))) \
|
||||
(x)->handler = CLIENT_HANDLER; }
|
||||
|
||||
|
||||
#define DEFAULT_OPER_UMODES (UMODE_SERVNOTICE | UMODE_OPERWALL | \
|
||||
UMODE_WALLOP | UMODE_LOCOPS)
|
||||
#define DEFAULT_OPER_SNOMASK SNO_GENERAL
|
||||
|
||||
#define IsOper(x) ((x)->umodes & UMODE_OPER)
|
||||
#define IsAdmin(x) ((x)->umodes & UMODE_ADMIN)
|
||||
|
||||
inline bool
|
||||
is_invisible(const client &client)
|
||||
is(const client &client, const mode::mode &mode)
|
||||
{
|
||||
return client.umodes & UMODE_INVISIBLE;
|
||||
return is(client.mode, mode);
|
||||
}
|
||||
|
||||
#define SetInvisible(x) ((x)->umodes |= UMODE_INVISIBLE)
|
||||
#define ClearInvisible(x) ((x)->umodes &= ~UMODE_INVISIBLE)
|
||||
#define IsSSLClient(x) ((x)->umodes & UMODE_SSLCLIENT)
|
||||
#define SetSSLClient(x) ((x)->umodes |= UMODE_SSLCLIENT)
|
||||
#define ClearSSLClient(x) ((x)->umodes &= ~UMODE_SSLCLIENT)
|
||||
#define SendWallops(x) ((x)->umodes & UMODE_WALLOP)
|
||||
#define SendLocops(x) ((x)->umodes & UMODE_LOCOPS)
|
||||
#define SendServNotice(x) ((x)->umodes & UMODE_SERVNOTICE)
|
||||
#define SendOperwall(x) ((x)->umodes & UMODE_OPERWALL)
|
||||
#define IsSetCallerId(x) ((x)->umodes & UMODE_CALLERID)
|
||||
#define IsService(x) ((x)->umodes & UMODE_SERVICE)
|
||||
#define IsDeaf(x) ((x)->umodes & UMODE_DEAF)
|
||||
#define IsNoForward(x) ((x)->umodes & UMODE_NOFORWARD)
|
||||
#define IsSetRegOnlyMsg(x) ((x)->umodes & UMODE_REGONLYMSG)
|
||||
inline void
|
||||
set(client &client, const mode::mode &mode)
|
||||
{
|
||||
return set(client.mode, mode);
|
||||
}
|
||||
|
||||
inline void
|
||||
clear(client &client, const mode::mode &mode)
|
||||
{
|
||||
return clear(client.mode, mode);
|
||||
}
|
||||
|
||||
inline void
|
||||
set_got_id(client &client)
|
||||
|
@ -638,11 +656,7 @@ set_server(client &client)
|
|||
client.handler = SERVER_HANDLER;
|
||||
}
|
||||
|
||||
inline bool
|
||||
is_oper(const client &client)
|
||||
{
|
||||
return client.umodes & UMODE_OPER;
|
||||
}
|
||||
bool is_oper(const client &);
|
||||
|
||||
inline void
|
||||
set_client(client &client)
|
||||
|
@ -731,6 +745,35 @@ my(const client &client)
|
|||
return my_connect(client) && is_client(client);
|
||||
}
|
||||
|
||||
inline bool
|
||||
my_oper(const client &client)
|
||||
{
|
||||
return my_connect(client) && is_oper(client);
|
||||
}
|
||||
|
||||
inline bool
|
||||
is_oper(const client &client)
|
||||
{
|
||||
return is(client, mode::OPER);
|
||||
}
|
||||
|
||||
inline void
|
||||
set_oper(client &client)
|
||||
{
|
||||
set(client, mode::OPER);
|
||||
if (my(client))
|
||||
client.handler = OPER_HANDLER;
|
||||
}
|
||||
|
||||
inline void
|
||||
clear_oper(client &client)
|
||||
{
|
||||
clear(client, mode::OPER);
|
||||
clear(client, mode::ADMIN);
|
||||
if (my(client) && !is_server(client))
|
||||
client.handler = CLIENT_HANDLER;
|
||||
}
|
||||
|
||||
inline void
|
||||
set_mark(client &client)
|
||||
{
|
||||
|
|
|
@ -54,6 +54,8 @@ namespace ircd {
|
|||
#define SNO_SPY 0x00000800
|
||||
#define SNO_OPERSPY 0x00001000
|
||||
|
||||
#define DEFAULT_OPER_SNOMASK SNO_GENERAL
|
||||
|
||||
char *construct_snobuf(unsigned int val);
|
||||
unsigned int parse_snobuf_to_mask(unsigned int val, const char *sno);
|
||||
unsigned int find_snomask_slot(void);
|
||||
|
|
|
@ -467,7 +467,7 @@ chan::channel_member_names(chan *chptr, client::client *client_p, int show_eon)
|
|||
auto *const target_p(pair.first);
|
||||
const auto &member(pair.second);
|
||||
|
||||
if(is_invisible(*target_p) && !is_member(chptr, client_p))
|
||||
if(is(*target_p, umode::INVISIBLE) && !is_member(chptr, client_p))
|
||||
continue;
|
||||
|
||||
if (IsCapable(client_p, CLICAP_USERHOST_IN_NAMES))
|
||||
|
@ -859,11 +859,11 @@ chan::can_send(chan *chptr, client::client *source_p, membership *msptr)
|
|||
moduledata.approved = CAN_SEND_NONOP;
|
||||
moduledata.dir = MODE_QUERY;
|
||||
|
||||
if(is_server(*source_p) || IsService(source_p))
|
||||
if(is_server(*source_p) || is(*source_p, umode::SERVICE))
|
||||
return CAN_SEND_OPV;
|
||||
|
||||
if(my(*source_p) && hash_find_resv(chptr->name.c_str()) &&
|
||||
!IsOper(source_p) && !is_exempt_resv(*source_p))
|
||||
!is(*source_p, umode::OPER) && !is_exempt_resv(*source_p))
|
||||
moduledata.approved = CAN_SEND_NO;
|
||||
|
||||
if(msptr == NULL)
|
||||
|
@ -1181,7 +1181,7 @@ chan::channel_modes(chan *chptr, client::client *client_p)
|
|||
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
if(mode::table[i].set_func == mode::functor::hidden && (!IsOper(client_p) || !is_client(*client_p)))
|
||||
if(mode::table[i].set_func == mode::functor::hidden && (!is(*client_p, umode::OPER) || !is_client(*client_p)))
|
||||
continue;
|
||||
if(chptr->mode.mode & mode::table[i].type)
|
||||
*mbuf++ = i;
|
||||
|
|
|
@ -583,7 +583,7 @@ mode::functor::hidden(client::client *source_p, chan *chptr,
|
|||
int alevel, int parc, int *parn,
|
||||
const char **parv, int *errors, int dir, char c, type mode_type)
|
||||
{
|
||||
if(!IsOper(source_p) && !is_server(*source_p))
|
||||
if(!is(*source_p, umode::OPER) && !is_server(*source_p))
|
||||
{
|
||||
if(!(*errors & SM_ERR_NOPRIVS))
|
||||
sendto_one_numeric(source_p, ERR_NOPRIVILEGES, form_str(ERR_NOPRIVILEGES));
|
||||
|
@ -630,7 +630,7 @@ mode::functor::staff(client::client *source_p, chan *chptr,
|
|||
int alevel, int parc, int *parn,
|
||||
const char **parv, int *errors, int dir, char c, type mode_type)
|
||||
{
|
||||
if(!IsOper(source_p) && !is_server(*source_p))
|
||||
if(!is(*source_p, umode::OPER) && !is_server(*source_p))
|
||||
{
|
||||
if(!(*errors & SM_ERR_NOPRIVS))
|
||||
sendto_one_numeric(source_p, ERR_NOPRIVILEGES, form_str(ERR_NOPRIVILEGES));
|
||||
|
@ -984,7 +984,7 @@ mode::functor::op(client::client *source_p, chan *chptr,
|
|||
}
|
||||
else
|
||||
{
|
||||
if(my(*source_p) && IsService(targ_p))
|
||||
if(my(*source_p) && is(*targ_p, umode::SERVICE))
|
||||
{
|
||||
sendto_one(source_p, form_str(ERR_ISCHANSERVICE),
|
||||
me.name, source_p->name, targ_p->name, chptr->name.c_str());
|
||||
|
@ -1200,7 +1200,7 @@ mode::functor::forward(client::client *source_p, chan *chptr,
|
|||
if(!allow_mode_change(source_p, chptr, alevel, errors, c))
|
||||
return;
|
||||
#else
|
||||
if(!IsOper(source_p) && !is_server(*source_p))
|
||||
if(!is(*source_p, umode::OPER) && !is_server(*source_p))
|
||||
{
|
||||
if(!(*errors & SM_ERR_NOPRIVS))
|
||||
sendto_one_numeric(source_p, ERR_NOPRIVILEGES, form_str(ERR_NOPRIVILEGES));
|
||||
|
|
|
@ -916,9 +916,9 @@ client::update_client_exit_stats(client *client_p)
|
|||
else if(is_client(*client_p))
|
||||
{
|
||||
--Count.total;
|
||||
if(IsOper(client_p))
|
||||
if(is(*client_p, umode::OPER))
|
||||
--Count.oper;
|
||||
if(is_invisible(*client_p))
|
||||
if(is(*client_p, umode::INVISIBLE))
|
||||
--Count.invisi;
|
||||
}
|
||||
|
||||
|
@ -1168,7 +1168,7 @@ client::is_remote_connect(client *client_p)
|
|||
return FALSE;
|
||||
|
||||
oper = find_named_person(client_p->serv->by);
|
||||
return oper != NULL && IsOper(oper) && !my_connect(*oper);
|
||||
return oper != NULL && my_oper(*oper);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1396,7 +1396,7 @@ client::exit_generic_client(client *client_p, client *source_p, client *from,
|
|||
|
||||
rb_dlink_node *ptr, *next_ptr;
|
||||
|
||||
if(IsOper(source_p))
|
||||
if(is(*source_p, umode::OPER))
|
||||
rb_dlinkFindDestroy(source_p, &oper_list);
|
||||
|
||||
sendto_common_channels_local(source_p, NOCAPS, NOCAPS, ":%s!%s@%s QUIT :%s",
|
||||
|
@ -1659,7 +1659,7 @@ client::exit_local_client(client *client_p, client *source_p, client *from,
|
|||
rb_dlinkDelete(&source_p->localClient->tnode, &lclient_list);
|
||||
me.serv->users.erase(source_p->lnode);
|
||||
|
||||
if(IsOper(source_p))
|
||||
if(is(*source_p, umode::OPER))
|
||||
rb_dlinkFindDestroy(source_p, &local_oper_list);
|
||||
|
||||
sendto_realops_snomask(SNO_CCONN, L_ALL,
|
||||
|
@ -1873,11 +1873,11 @@ client::show_ip(client *source_p, client *target_p)
|
|||
* to local opers.
|
||||
*/
|
||||
if(!ConfigFileEntry.hide_spoof_ips &&
|
||||
(source_p == NULL || MyOper(source_p)))
|
||||
(source_p == NULL || my_oper(*source_p)))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
else if(is_dyn_spoof(*target_p) && (source_p != NULL && !IsOper(source_p)))
|
||||
else if(is_dyn_spoof(*target_p) && (source_p != NULL && !is(*source_p, umode::OPER)))
|
||||
return 0;
|
||||
else
|
||||
return 1;
|
||||
|
@ -1888,7 +1888,7 @@ client::show_ip_conf(struct ConfItem *aconf, client *source_p)
|
|||
{
|
||||
if(IsConfDoSpoofIp(aconf))
|
||||
{
|
||||
if(!ConfigFileEntry.hide_spoof_ips && MyOper(source_p))
|
||||
if(!ConfigFileEntry.hide_spoof_ips && my_oper(*source_p))
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
|
@ -1901,10 +1901,10 @@ int
|
|||
client::show_ip_whowas(struct Whowas *whowas, client *source_p)
|
||||
{
|
||||
if(whowas->flags & WHOWAS_IP_SPOOFING)
|
||||
if(ConfigFileEntry.hide_spoof_ips || !MyOper(source_p))
|
||||
if(ConfigFileEntry.hide_spoof_ips || !my_oper(*source_p))
|
||||
return 0;
|
||||
if(whowas->flags & WHOWAS_DYNSPOOF)
|
||||
if(!IsOper(source_p))
|
||||
if(!is(*source_p, umode::OPER))
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -710,13 +710,13 @@ show_iline_prefix(client::client *sptr, struct ConfItem *aconf, char *name)
|
|||
*prefix_ptr++ = '+';
|
||||
if(IsConfDoSpoofIp(aconf))
|
||||
*prefix_ptr++ = '=';
|
||||
if(IsOper(sptr) && IsConfExemptFlood(aconf))
|
||||
if(is(*sptr, umode::OPER) && IsConfExemptFlood(aconf))
|
||||
*prefix_ptr++ = '|';
|
||||
if(IsOper(sptr) && IsConfExemptDNSBL(aconf) && !IsConfExemptKline(aconf))
|
||||
if(is(*sptr, umode::OPER) && IsConfExemptDNSBL(aconf) && !IsConfExemptKline(aconf))
|
||||
*prefix_ptr++ = '$';
|
||||
if(IsOper(sptr) && IsConfExemptKline(aconf))
|
||||
if(is(*sptr, umode::OPER) && IsConfExemptKline(aconf))
|
||||
*prefix_ptr++ = '^';
|
||||
if(IsOper(sptr) && IsConfExemptLimits(aconf))
|
||||
if(is(*sptr, umode::OPER) && IsConfExemptLimits(aconf))
|
||||
*prefix_ptr++ = '>';
|
||||
*prefix_ptr = '\0';
|
||||
strncpy(prefix_ptr, name, USERLEN);
|
||||
|
@ -744,7 +744,7 @@ report_auth(client::client *client_p)
|
|||
{
|
||||
aconf = arec->aconf;
|
||||
|
||||
if(!IsOper(client_p) && IsConfDoSpoofIp(aconf))
|
||||
if(!is(*client_p, umode::OPER) && IsConfDoSpoofIp(aconf))
|
||||
continue;
|
||||
|
||||
get_printable_conf(aconf, &name, &host, &pass, &user, &port,
|
||||
|
|
|
@ -300,15 +300,15 @@ struct mode_table
|
|||
|
||||
/* *INDENT-OFF* */
|
||||
static struct mode_table umode_table[] = {
|
||||
{"callerid", UMODE_CALLERID },
|
||||
{"deaf", UMODE_DEAF },
|
||||
{"invisible", UMODE_INVISIBLE },
|
||||
{"locops", UMODE_LOCOPS },
|
||||
{"noforward", UMODE_NOFORWARD },
|
||||
{"regonlymsg", UMODE_REGONLYMSG},
|
||||
{"servnotice", UMODE_SERVNOTICE},
|
||||
{"wallop", UMODE_WALLOP },
|
||||
{"operwall", UMODE_OPERWALL },
|
||||
{"callerid", umode::CALLERID },
|
||||
{"deaf", umode::DEAF },
|
||||
{"invisible", umode::INVISIBLE },
|
||||
{"locops", umode::LOCOPS },
|
||||
{"noforward", umode::NOFORWARD },
|
||||
{"regonlymsg", umode::REGONLYMSG},
|
||||
{"servnotice", umode::SERVNOTICE},
|
||||
{"wallop", umode::WALLOP },
|
||||
{"operwall", umode::OPERWALL },
|
||||
{NULL, 0}
|
||||
};
|
||||
|
||||
|
|
|
@ -99,7 +99,7 @@ parse_client_queued(client::client *client_p)
|
|||
/* allow opers 4 times the amount of messages as users. why 4?
|
||||
* why not. :) --fl_
|
||||
*/
|
||||
if(IsOper(client_p) && ConfigFileEntry.no_oper_flood)
|
||||
if(is(*client_p, umode::OPER) && ConfigFileEntry.no_oper_flood)
|
||||
allow_read *= 4;
|
||||
/*
|
||||
* Handle flood protection here - if we exceed our flood limit on
|
||||
|
@ -279,7 +279,7 @@ read_packet(rb_fde_t * F, void *data)
|
|||
if(!is_any_server(*client_p) &&
|
||||
(rb_linebuf_alloclen(&client_p->localClient->buf_recvq) > ConfigFileEntry.client_flood_max_lines))
|
||||
{
|
||||
if(!(ConfigFileEntry.no_oper_flood && IsOper(client_p)))
|
||||
if(!(ConfigFileEntry.no_oper_flood && is(*client_p, umode::OPER)))
|
||||
{
|
||||
exit_client(client_p, client_p, client_p, "Excess Flood");
|
||||
return;
|
||||
|
|
|
@ -663,7 +663,7 @@ set_default_conf(void)
|
|||
ConfigFileEntry.servicestring = NULL;
|
||||
ConfigFileEntry.sasl_service = NULL;
|
||||
|
||||
ConfigFileEntry.default_umodes = UMODE_INVISIBLE;
|
||||
ConfigFileEntry.default_umodes = umode::INVISIBLE;
|
||||
ConfigFileEntry.failed_oper_notice = true;
|
||||
ConfigFileEntry.anti_nick_flood = false;
|
||||
ConfigFileEntry.disable_fake_channels = false;
|
||||
|
@ -724,9 +724,9 @@ set_default_conf(void)
|
|||
ConfigFileEntry.compression_level = 4;
|
||||
#endif
|
||||
|
||||
ConfigFileEntry.oper_umodes = UMODE_LOCOPS | UMODE_SERVNOTICE |
|
||||
UMODE_OPERWALL | UMODE_WALLOP;
|
||||
ConfigFileEntry.oper_only_umodes = UMODE_SERVNOTICE;
|
||||
ConfigFileEntry.oper_umodes = umode::LOCOPS | umode::SERVNOTICE |
|
||||
umode::OPERWALL | umode::WALLOP;
|
||||
ConfigFileEntry.oper_only_umodes = umode::SERVNOTICE;
|
||||
ConfigFileEntry.oper_snomask = SNO_GENERAL;
|
||||
|
||||
ConfigChannel.use_except = true;
|
||||
|
@ -1221,7 +1221,7 @@ get_oper_name(client::client *client_p)
|
|||
/* +5 for !,@,{,} and null */
|
||||
static char buffer[NICKLEN + USERLEN + HOSTLEN + HOSTLEN + 5];
|
||||
|
||||
if(MyOper(client_p))
|
||||
if(my_oper(*client_p))
|
||||
{
|
||||
snprintf(buffer, sizeof(buffer), "%s!%s@%s{%s}",
|
||||
client_p->name, client_p->username,
|
||||
|
@ -1305,7 +1305,7 @@ get_printable_kline(client::client *source_p, struct ConfItem *aconf,
|
|||
*user = EmptyString(aconf->user) ? null : aconf->user;
|
||||
*reason = get_user_ban_reason(aconf);
|
||||
|
||||
if(!IsOper(source_p))
|
||||
if(!is(*source_p, umode::OPER))
|
||||
*oper_reason = NULL;
|
||||
else
|
||||
{
|
||||
|
|
111
ircd/s_user.cc
111
ircd/s_user.cc
|
@ -30,6 +30,7 @@ void user_welcome(client::client *source_p);
|
|||
char umodebuf[128];
|
||||
|
||||
static int orphaned_umodes = 0;
|
||||
|
||||
int user_modes[256] = {
|
||||
/* 0x00 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0F */
|
||||
/* 0x10 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1F */
|
||||
|
@ -39,7 +40,7 @@ int user_modes[256] = {
|
|||
0, /* A */
|
||||
0, /* B */
|
||||
0, /* C */
|
||||
UMODE_DEAF, /* D */
|
||||
umode::DEAF, /* D */
|
||||
0, /* E */
|
||||
0, /* F */
|
||||
0, /* G */
|
||||
|
@ -52,43 +53,43 @@ int user_modes[256] = {
|
|||
0, /* N */
|
||||
0, /* O */
|
||||
0, /* P */
|
||||
UMODE_NOFORWARD, /* Q */
|
||||
UMODE_REGONLYMSG, /* R */
|
||||
UMODE_SERVICE, /* S */
|
||||
umode::NOFORWARD, /* Q */
|
||||
umode::REGONLYMSG, /* R */
|
||||
umode::SERVICE, /* S */
|
||||
0, /* T */
|
||||
0, /* U */
|
||||
0, /* V */
|
||||
0, /* W */
|
||||
0, /* X */
|
||||
0, /* Y */
|
||||
UMODE_SSLCLIENT, /* Z */
|
||||
umode::SSLCLIENT, /* Z */
|
||||
/* 0x5B */ 0, 0, 0, 0, 0, 0, /* 0x60 */
|
||||
UMODE_ADMIN, /* a */
|
||||
umode::ADMIN, /* a */
|
||||
0, /* b */
|
||||
0, /* c */
|
||||
0, /* d */
|
||||
0, /* e */
|
||||
0, /* f */
|
||||
UMODE_CALLERID, /* g */
|
||||
umode::CALLERID, /* g */
|
||||
0, /* h */
|
||||
UMODE_INVISIBLE, /* i */
|
||||
umode::INVISIBLE, /* i */
|
||||
0, /* j */
|
||||
0, /* k */
|
||||
UMODE_LOCOPS, /* l */
|
||||
umode::LOCOPS, /* l */
|
||||
0, /* m */
|
||||
0, /* n */
|
||||
UMODE_OPER, /* o */
|
||||
umode::OPER, /* o */
|
||||
0, /* p */
|
||||
0, /* q */
|
||||
0, /* r */
|
||||
UMODE_SERVNOTICE, /* s */
|
||||
umode::SERVNOTICE, /* s */
|
||||
0, /* t */
|
||||
0, /* u */
|
||||
0, /* v */
|
||||
UMODE_WALLOP, /* w */
|
||||
umode::WALLOP, /* w */
|
||||
0, /* x */
|
||||
0, /* y */
|
||||
UMODE_OPERWALL, /* z */
|
||||
umode::OPERWALL, /* z */
|
||||
/* 0x7B */ 0, 0, 0, 0, 0, /* 0x7F */
|
||||
/* 0x80 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x9F */
|
||||
/* 0x90 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x9F */
|
||||
|
@ -556,7 +557,7 @@ register_local_user(client::client *client_p, client::client *source_p)
|
|||
set_dyn_spoof(*source_p);
|
||||
}
|
||||
|
||||
source_p->umodes |= ConfigFileEntry.default_umodes & ~ConfigFileEntry.oper_only_umodes & ~orphaned_umodes;
|
||||
source_p->mode |= umode(ConfigFileEntry.default_umodes & ~ConfigFileEntry.oper_only_umodes & ~orphaned_umodes);
|
||||
|
||||
call_hook(h_new_local_user, source_p);
|
||||
|
||||
|
@ -597,9 +598,9 @@ register_local_user(client::client *client_p, client::client *source_p)
|
|||
}
|
||||
|
||||
if (IsSSL(source_p))
|
||||
source_p->umodes |= UMODE_SSLCLIENT;
|
||||
source_p->mode |= umode::SSLCLIENT;
|
||||
|
||||
if (source_p->umodes & UMODE_INVISIBLE)
|
||||
if (source_p->mode & umode::INVISIBLE)
|
||||
Count.invisi++;
|
||||
|
||||
s_assert(!is_client(*source_p));
|
||||
|
@ -945,7 +946,7 @@ show_other_user_mode(client::client *source_p, client::client *target_p)
|
|||
*m++ = '+';
|
||||
|
||||
for (i = 0; i < 128; i++) /* >= 127 is extended ascii */
|
||||
if (target_p->umodes & user_modes[i])
|
||||
if (target_p->mode & user_modes[i])
|
||||
*m++ = (char) i;
|
||||
*m = '\0';
|
||||
|
||||
|
@ -1009,7 +1010,7 @@ user_mode(client::client *client_p, client::client *source_p, int parc, const ch
|
|||
|
||||
if(source_p != target_p)
|
||||
{
|
||||
if (MyOper(source_p) && parc < 3)
|
||||
if (my_oper(*source_p) && parc < 3)
|
||||
show_other_user_mode(source_p, target_p);
|
||||
else
|
||||
sendto_one(source_p, form_str(ERR_USERSDONTMATCH), me.name, source_p->name);
|
||||
|
@ -1022,7 +1023,7 @@ user_mode(client::client *client_p, client::client *source_p, int parc, const ch
|
|||
*m++ = '+';
|
||||
|
||||
for (i = 0; i < 128; i++) /* >= 127 is extended ascii */
|
||||
if (source_p->umodes & user_modes[i])
|
||||
if (source_p->mode & user_modes[i])
|
||||
*m++ = (char) i;
|
||||
|
||||
*m = '\0';
|
||||
|
@ -1036,7 +1037,7 @@ user_mode(client::client *client_p, client::client *source_p, int parc, const ch
|
|||
}
|
||||
|
||||
/* find flags already set for user */
|
||||
setflags = source_p->umodes;
|
||||
setflags = source_p->mode;
|
||||
setsnomask = source_p->snomask;
|
||||
|
||||
/*
|
||||
|
@ -1055,10 +1056,10 @@ user_mode(client::client *client_p, client::client *source_p, int parc, const ch
|
|||
case 'o':
|
||||
if(what == MODE_ADD)
|
||||
{
|
||||
if(is_server(*client_p) && !IsOper(source_p))
|
||||
if(is_server(*client_p) && !is_oper(*source_p))
|
||||
{
|
||||
++Count.oper;
|
||||
SetOper(source_p);
|
||||
set_oper(*source_p);
|
||||
rb_dlinkAddAlloc(source_p, &oper_list);
|
||||
}
|
||||
}
|
||||
|
@ -1068,17 +1069,17 @@ user_mode(client::client *client_p, client::client *source_p, int parc, const ch
|
|||
* found by Pat Szuta, Perly , perly@xnet.com
|
||||
*/
|
||||
|
||||
if(!IsOper(source_p))
|
||||
if(!is_oper(*source_p))
|
||||
break;
|
||||
|
||||
ClearOper(source_p);
|
||||
clear_oper(*source_p);
|
||||
|
||||
Count.oper--;
|
||||
|
||||
if(my_connect(*source_p))
|
||||
{
|
||||
source_p->umodes &= ~ConfigFileEntry.oper_only_umodes;
|
||||
if (!(source_p->umodes & UMODE_SERVNOTICE) && source_p->snomask != 0)
|
||||
clear(*source_p, umode(ConfigFileEntry.oper_only_umodes));
|
||||
if (!is(*source_p, umode::SERVNOTICE) && source_p->snomask != 0)
|
||||
{
|
||||
source_p->snomask = 0;
|
||||
showsnomask = true;
|
||||
|
@ -1113,10 +1114,10 @@ user_mode(client::client *client_p, client::client *source_p, int parc, const ch
|
|||
case 's':
|
||||
if (my_connect(*source_p))
|
||||
{
|
||||
if(!IsOper(source_p)
|
||||
&& (ConfigFileEntry.oper_only_umodes & UMODE_SERVNOTICE))
|
||||
if(!is_oper(*source_p)
|
||||
&& (ConfigFileEntry.oper_only_umodes & umode::SERVNOTICE))
|
||||
{
|
||||
if (what == MODE_ADD || source_p->umodes & UMODE_SERVNOTICE)
|
||||
if (what == MODE_ADD || is(*source_p, umode::SERVNOTICE))
|
||||
badflag = true;
|
||||
continue;
|
||||
}
|
||||
|
@ -1131,9 +1132,9 @@ user_mode(client::client *client_p, client::client *source_p, int parc, const ch
|
|||
else
|
||||
source_p->snomask = 0;
|
||||
if (source_p->snomask != 0)
|
||||
source_p->umodes |= UMODE_SERVNOTICE;
|
||||
set(*source_p, umode::SERVNOTICE);
|
||||
else
|
||||
source_p->umodes &= ~UMODE_SERVNOTICE;
|
||||
clear(*source_p, umode::SERVNOTICE);
|
||||
break;
|
||||
}
|
||||
/* FALLTHROUGH */
|
||||
|
@ -1147,19 +1148,19 @@ user_mode(client::client *client_p, client::client *source_p, int parc, const ch
|
|||
if((flag = user_modes[(unsigned char) *pm]))
|
||||
{
|
||||
if(my_connect(*source_p)
|
||||
&& ((!IsOper(source_p)
|
||||
&& ((!is_oper(*source_p)
|
||||
&& (ConfigFileEntry.oper_only_umodes & flag))
|
||||
|| (orphaned_umodes & flag)))
|
||||
{
|
||||
if (what == MODE_ADD || source_p->umodes & flag)
|
||||
if (what == MODE_ADD || source_p->mode & flag)
|
||||
badflag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(what == MODE_ADD)
|
||||
source_p->umodes |= flag;
|
||||
set(*source_p, umode(flag));
|
||||
else
|
||||
source_p->umodes &= ~flag;
|
||||
clear(*source_p, umode(flag));
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -1179,17 +1180,17 @@ user_mode(client::client *client_p, client::client *source_p, int parc, const ch
|
|||
source_p->snomask &= ~SNO_NCHANGE; /* only tcm's really need this */
|
||||
}
|
||||
|
||||
if(my(*source_p) && (source_p->umodes & UMODE_OPERWALL) && !IsOperOperwall(source_p))
|
||||
if(my(*source_p) && is(*source_p, umode::OPERWALL) && !IsOperOperwall(source_p))
|
||||
{
|
||||
sendto_one_notice(source_p, ":*** You need oper and operwall flag for +z");
|
||||
source_p->umodes &= ~UMODE_OPERWALL;
|
||||
source_p->mode &= ~umode::OPERWALL;
|
||||
}
|
||||
|
||||
if(my_connect(*source_p) && (source_p->umodes & UMODE_ADMIN) &&
|
||||
if(my_connect(*source_p) && (source_p->mode & umode::ADMIN) &&
|
||||
(!IsOperAdmin(source_p) || IsOperHiddenAdmin(source_p)))
|
||||
{
|
||||
sendto_one_notice(source_p, ":*** You need oper and admin flag for +a");
|
||||
source_p->umodes &= ~UMODE_ADMIN;
|
||||
clear(*source_p, umode::ADMIN);
|
||||
}
|
||||
|
||||
/* let modules providing usermodes know that we've changed our usermode --nenolod */
|
||||
|
@ -1198,9 +1199,9 @@ user_mode(client::client *client_p, client::client *source_p, int parc, const ch
|
|||
hdata.oldsnomask = setsnomask;
|
||||
call_hook(h_umode_changed, &hdata);
|
||||
|
||||
if(!(setflags & UMODE_INVISIBLE) && is_invisible(*source_p))
|
||||
if(!(setflags & umode::INVISIBLE) && is(*source_p, umode::INVISIBLE))
|
||||
++Count.invisi;
|
||||
if((setflags & UMODE_INVISIBLE) && !is_invisible(*source_p))
|
||||
if((setflags & umode::INVISIBLE) && !is(*source_p, umode::INVISIBLE))
|
||||
--Count.invisi;
|
||||
/*
|
||||
* compare new flags with old flags and send string which
|
||||
|
@ -1237,7 +1238,7 @@ send_umode(client::client *client_p, client::client *source_p, int old, char *um
|
|||
{
|
||||
flag = user_modes[i];
|
||||
|
||||
if((flag & old) && !(source_p->umodes & flag))
|
||||
if((flag & old) && !(source_p->mode & flag))
|
||||
{
|
||||
if(what == MODE_DEL)
|
||||
*m++ = (char) i;
|
||||
|
@ -1248,7 +1249,7 @@ send_umode(client::client *client_p, client::client *source_p, int old, char *um
|
|||
*m++ = (char) i;
|
||||
}
|
||||
}
|
||||
else if(!(flag & old) && (source_p->umodes & flag))
|
||||
else if(!(flag & old) && (source_p->mode & flag))
|
||||
{
|
||||
if(what == MODE_ADD)
|
||||
*m++ = (char) i;
|
||||
|
@ -1345,24 +1346,26 @@ user_welcome(client::client *source_p)
|
|||
void
|
||||
oper_up(client::client *source_p, struct oper_conf *oper_p)
|
||||
{
|
||||
unsigned int old = source_p->umodes, oldsnomask = source_p->snomask;
|
||||
using umode = client::mode::mode;
|
||||
|
||||
unsigned int old = source_p->mode, oldsnomask = source_p->snomask;
|
||||
hook_data_umode_changed hdata;
|
||||
|
||||
SetOper(source_p);
|
||||
set_oper(*source_p);
|
||||
|
||||
if(oper_p->umodes)
|
||||
source_p->umodes |= oper_p->umodes;
|
||||
source_p->mode |= umode(oper_p->umodes);
|
||||
else if(ConfigFileEntry.oper_umodes)
|
||||
source_p->umodes |= ConfigFileEntry.oper_umodes;
|
||||
source_p->mode |= umode(ConfigFileEntry.oper_umodes);
|
||||
else
|
||||
source_p->umodes |= DEFAULT_OPER_UMODES;
|
||||
source_p->mode |= client::mode::DEFAULT_OPER_UMODES;
|
||||
|
||||
if (oper_p->snomask)
|
||||
{
|
||||
source_p->snomask |= oper_p->snomask;
|
||||
source_p->umodes |= UMODE_SERVNOTICE;
|
||||
source_p->mode |= umode::SERVNOTICE;
|
||||
}
|
||||
else if (source_p->umodes & UMODE_SERVNOTICE)
|
||||
else if (source_p->mode & umode::SERVNOTICE)
|
||||
{
|
||||
/* Only apply these if +s is already set -- jilles */
|
||||
if (ConfigFileEntry.oper_snomask)
|
||||
|
@ -1384,11 +1387,11 @@ oper_up(client::client *source_p, struct oper_conf *oper_p)
|
|||
rb_dlinkAddAlloc(source_p, &oper_list);
|
||||
|
||||
if(IsOperAdmin(source_p) && !IsOperHiddenAdmin(source_p))
|
||||
source_p->umodes |= UMODE_ADMIN;
|
||||
source_p->mode |= umode::ADMIN;
|
||||
if(!IsOperN(source_p))
|
||||
source_p->snomask &= ~SNO_NCHANGE;
|
||||
if(!IsOperOperwall(source_p))
|
||||
source_p->umodes &= ~UMODE_OPERWALL;
|
||||
source_p->mode &= ~umode::OPERWALL;
|
||||
hdata.client = source_p;
|
||||
hdata.oldumodes = old;
|
||||
hdata.oldsnomask = oldsnomask;
|
||||
|
@ -1397,9 +1400,9 @@ oper_up(client::client *source_p, struct oper_conf *oper_p)
|
|||
sendto_realops_snomask(SNO_GENERAL, L_ALL,
|
||||
"%s (%s!%s@%s) is now an operator", oper_p->name, source_p->name,
|
||||
source_p->username, source_p->host);
|
||||
if(!(old & UMODE_INVISIBLE) && is_invisible(*source_p))
|
||||
if(!(old & umode::INVISIBLE) && is(*source_p, umode::INVISIBLE))
|
||||
++Count.invisi;
|
||||
if((old & UMODE_INVISIBLE) && !is_invisible(*source_p))
|
||||
if((old & umode::INVISIBLE) && !is(*source_p, umode::INVISIBLE))
|
||||
--Count.invisi;
|
||||
send_umode_out(source_p, source_p, old);
|
||||
sendto_one_numeric(source_p, RPL_SNOMASK, form_str(RPL_SNOMASK),
|
||||
|
|
10
ircd/send.cc
10
ircd/send.cc
|
@ -518,7 +518,7 @@ sendto_channel_flags(client::client *one, int type, client::client *source_p,
|
|||
if(type && ((member.flags & type) == 0))
|
||||
continue;
|
||||
|
||||
if(IsDeaf(target_p))
|
||||
if(is(*target_p, umode::DEAF))
|
||||
continue;
|
||||
|
||||
if(!my(*target_p))
|
||||
|
@ -616,7 +616,7 @@ sendto_channel_opmod(client::client *one, client::client *source_p,
|
|||
if((member.flags & chan::CHANOP) == 0)
|
||||
continue;
|
||||
|
||||
if(IsDeaf(target_p))
|
||||
if(is(*target_p, umode::DEAF))
|
||||
continue;
|
||||
|
||||
if(!my(*target_p))
|
||||
|
@ -673,7 +673,7 @@ sendto_channel_local(int type, chan::chan *chptr, const char *pattern, ...)
|
|||
|
||||
if(type == chan::ONLY_OPERS)
|
||||
{
|
||||
if (!IsOper(target_p))
|
||||
if (!is(*target_p, umode::OPER))
|
||||
continue;
|
||||
}
|
||||
else if(type && ((member.flags & type) == 0))
|
||||
|
@ -1309,11 +1309,11 @@ sendto_wallops_flags(int flags, client::client *source_p, const char *pattern, .
|
|||
|
||||
va_end(args);
|
||||
|
||||
RB_DLINK_FOREACH_SAFE(ptr, next_ptr, is_person(*source_p) && flags == UMODE_WALLOP ? lclient_list.head : local_oper_list.head)
|
||||
RB_DLINK_FOREACH_SAFE(ptr, next_ptr, is_person(*source_p) && flags == umode::WALLOP ? lclient_list.head : local_oper_list.head)
|
||||
{
|
||||
client_p = (client::client *)ptr->data;
|
||||
|
||||
if(client_p->umodes & flags)
|
||||
if (is(*client_p, umode(flags)))
|
||||
_send_linebuf(client_p, &linebuf);
|
||||
}
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@ add_target(client::client *source_p, client::client *target_p)
|
|||
uint32_t hashv;
|
||||
|
||||
/* can msg themselves or services without using any target slots */
|
||||
if(source_p == target_p || IsService(target_p))
|
||||
if(source_p == target_p || is(*target_p, umode::SERVICE))
|
||||
return 1;
|
||||
|
||||
/* special condition for those who have had PRIVMSG crippled to allow them
|
||||
|
@ -55,7 +55,7 @@ add_target(client::client *source_p, client::client *target_p)
|
|||
*
|
||||
* XXX: is this controversial?
|
||||
*/
|
||||
if(source_p->localClient->target_last > rb_current_time() && IsOper(target_p))
|
||||
if(source_p->localClient->target_last > rb_current_time() && is(*target_p, umode::OPER))
|
||||
return 1;
|
||||
|
||||
hashv = fnv_hash_upper((const unsigned char *)use_id(target_p), 32);
|
||||
|
@ -162,7 +162,7 @@ add_reply_target(client::client *source_p, client::client *target_p)
|
|||
uint32_t *targets;
|
||||
|
||||
/* can msg themselves or services without using any target slots */
|
||||
if(source_p == target_p || IsService(target_p))
|
||||
if(source_p == target_p || is(*target_p, umode::SERVICE))
|
||||
return;
|
||||
|
||||
hashv = fnv_hash_upper((const unsigned char *)use_id(target_p), 32);
|
||||
|
|
|
@ -48,7 +48,7 @@ m_ban(struct MsgBuf *msgbuf_p, client::client &client, client::client &source, i
|
|||
{
|
||||
sendto_one_notice(&source, ":The BAN command is not user-accessible.");
|
||||
sendto_one_notice(&source, ":To ban a user from a channel, see /QUOTE HELP CMODE");
|
||||
if (IsOper(&source))
|
||||
if (is(source, umode::OPER))
|
||||
sendto_one_notice(&source, ":To ban a user from a server or from the network, see /QUOTE HELP KLINE");
|
||||
}
|
||||
|
||||
|
|
|
@ -84,7 +84,7 @@ check_forward(client::client &source, chan::chan *chptr,
|
|||
return chptr;
|
||||
|
||||
/* User is +Q, or forwarding disabled */
|
||||
if (IsNoForward(&source) || !ConfigChannel.use_forward)
|
||||
if (is(source, umode::NOFORWARD) || !ConfigChannel.use_forward)
|
||||
return NULL;
|
||||
|
||||
while (depth < 16)
|
||||
|
@ -180,7 +180,7 @@ m_join(struct MsgBuf *msgbuf_p, client::client &client, client::client &source,
|
|||
form_str(ERR_BADCHANNAME), name);
|
||||
|
||||
/* dont warn for opers */
|
||||
if(!is_exempt_jupe(source) && !IsOper(&source))
|
||||
if(!is_exempt_jupe(source) && !is(source, umode::OPER))
|
||||
sendto_realops_snomask(SNO_SPY, L_NETWIDE,
|
||||
"User %s (%s@%s) is attempting to join locally juped channel %s (%s)",
|
||||
source.name, source.username,
|
||||
|
@ -194,7 +194,7 @@ m_join(struct MsgBuf *msgbuf_p, client::client &client, client::client &source,
|
|||
continue;
|
||||
}
|
||||
|
||||
if(splitmode && !IsOper(&source) && (*name != '&') &&
|
||||
if(splitmode && !is(source, umode::OPER) && (*name != '&') &&
|
||||
ConfigChannel.no_join_on_split)
|
||||
{
|
||||
sendto_one(&source, form_str(ERR_UNAVAILRESOURCE),
|
||||
|
@ -254,7 +254,7 @@ m_join(struct MsgBuf *msgbuf_p, client::client &client, client::client &source,
|
|||
continue;
|
||||
}
|
||||
|
||||
if(splitmode && !IsOper(&source) && (*name != '&') &&
|
||||
if(splitmode && !is(source, umode::OPER) && (*name != '&') &&
|
||||
ConfigChannel.no_create_on_split)
|
||||
{
|
||||
sendto_one(&source, form_str(ERR_UNAVAILRESOURCE),
|
||||
|
@ -306,7 +306,7 @@ m_join(struct MsgBuf *msgbuf_p, client::client &client, client::client &source,
|
|||
chptr = chptr2;
|
||||
|
||||
if(flags == 0 &&
|
||||
!IsOper(&source) && !is_exempt_spambot(source))
|
||||
!is(source, umode::OPER) && !is_exempt_spambot(source))
|
||||
chan::check_spambot_warning(&source, name);
|
||||
|
||||
/* add the user to the channel */
|
||||
|
@ -976,7 +976,7 @@ do_join_0(client::client &client, client::client &source)
|
|||
for(const auto &pit : chans(user(source)))
|
||||
{
|
||||
if(my_connect(source) &&
|
||||
!IsOper(&source) && !is_exempt_spambot(source))
|
||||
!is(source, umode::OPER) && !is_exempt_spambot(source))
|
||||
chan::check_spambot_warning(&source, NULL);
|
||||
|
||||
auto &msptr(pit.second);
|
||||
|
@ -998,7 +998,7 @@ check_channel_name_loc(client::client &source, const char *name)
|
|||
if(EmptyString(name))
|
||||
return false;
|
||||
|
||||
if(ConfigFileEntry.disable_fake_channels && !IsOper(&source))
|
||||
if(ConfigFileEntry.disable_fake_channels && !is(source, umode::OPER))
|
||||
{
|
||||
for(p = name; *p; ++p)
|
||||
if(!rfc1459::is_chan(*p) || rfc1459::is_fake_chan(*p))
|
||||
|
|
|
@ -118,7 +118,7 @@ m_kick(struct MsgBuf *msgbuf_p, client::client &client, client::client &source,
|
|||
|
||||
if(msptr != NULL)
|
||||
{
|
||||
if(my(source) && IsService(who))
|
||||
if(my(source) && is(*who, umode::SERVICE))
|
||||
{
|
||||
sendto_one(&source, form_str(ERR_ISCHANSERVICE),
|
||||
me.name,
|
||||
|
|
|
@ -238,9 +238,9 @@ ms_kill(struct MsgBuf *msgbuf_p, client::client &client, client::client &source,
|
|||
/* path must contain at least 2 !'s, or bitchx falsely declares it
|
||||
* local --fl
|
||||
*/
|
||||
if(IsOper(&source)) /* send it normally */
|
||||
if(is(source, umode::OPER)) /* send it normally */
|
||||
{
|
||||
sendto_realops_snomask(IsService(&source) ? SNO_SKILL : SNO_GENERAL, L_ALL,
|
||||
sendto_realops_snomask(is(source, umode::SERVICE) ? SNO_SKILL : SNO_GENERAL, L_ALL,
|
||||
"Received KILL message for %s!%s@%s. From %s Path: %s!%s!%s!%s %s",
|
||||
target_p->name, target_p->username, target_p->orighost, source.name,
|
||||
source.servptr->name, source.host, source.username,
|
||||
|
|
|
@ -338,7 +338,7 @@ build_target_list(enum message_type msgtype, client::client &client,
|
|||
|
||||
msptr = get(chptr->members, source, std::nothrow);
|
||||
|
||||
if(!is_server(source) && !IsService(&source) && !is_chanop(msptr) && !is_voiced(msptr))
|
||||
if(!is_server(source) && !is(source, umode::SERVICE) && !is_chanop(msptr) && !is_voiced(msptr))
|
||||
{
|
||||
sendto_one(&source, form_str(ERR_CHANOPRIVSNEEDED),
|
||||
get_id(&me, &source),
|
||||
|
@ -395,7 +395,7 @@ build_target_list(enum message_type msgtype, client::client &client,
|
|||
continue;
|
||||
}
|
||||
|
||||
if(strchr(nick, '@') || (IsOper(&source) && (*nick == '$')))
|
||||
if(strchr(nick, '@') || (is(source, umode::OPER) && (*nick == '$')))
|
||||
{
|
||||
handle_special(msgtype, client, source, nick, text);
|
||||
continue;
|
||||
|
@ -512,7 +512,7 @@ msg_channel(enum message_type msgtype,
|
|||
if((result = can_send(chptr, &source, NULL)))
|
||||
{
|
||||
if(result != chan::CAN_SEND_OPV && my(source) &&
|
||||
!IsOper(&source) &&
|
||||
!is(source, umode::OPER) &&
|
||||
!add_channel_target(&source, chptr))
|
||||
{
|
||||
sendto_one(&source, form_str(ERR_TARGCHANGE),
|
||||
|
@ -534,7 +534,7 @@ msg_channel(enum message_type msgtype,
|
|||
else if(chptr->mode.mode & chan::mode::OPMODERATE &&
|
||||
(!(chptr->mode.mode & chan::mode::NOPRIVMSGS) || is_member(chptr, &source)))
|
||||
{
|
||||
if(my(source) && !IsOper(&source) && !add_channel_target(&source, chptr))
|
||||
if(my(source) && !is(source, umode::OPER) && !add_channel_target(&source, chptr))
|
||||
{
|
||||
sendto_one(&source, form_str(ERR_TARGCHANGE),
|
||||
me.name,
|
||||
|
@ -727,10 +727,10 @@ msg_client(enum message_type msgtype,
|
|||
* as a way of griefing. --nenolod
|
||||
*/
|
||||
if(msgtype != MESSAGE_TYPE_NOTICE &&
|
||||
(IsSetCallerId(&source) ||
|
||||
(IsSetRegOnlyMsg(&source) && suser(user(*target_p)).empty())) &&
|
||||
(is(source, umode::CALLERID) ||
|
||||
(is(source, umode::REGONLYMSG) && suser(user(*target_p)).empty())) &&
|
||||
!accept_message(target_p, &source) &&
|
||||
!IsOper(target_p))
|
||||
!is(*target_p, umode::OPER))
|
||||
{
|
||||
if(rb_dlink_list_length(&source.localClient->allow_list) <
|
||||
(unsigned long)ConfigFileEntry.max_accept)
|
||||
|
@ -753,7 +753,7 @@ msg_client(enum message_type msgtype,
|
|||
source.localClient->last = rb_current_time();
|
||||
|
||||
/* auto cprivmsg/cnotice */
|
||||
do_floodcount = !IsOper(&source) &&
|
||||
do_floodcount = !is(source, umode::OPER) &&
|
||||
!find_allowing_channel(&source, target_p);
|
||||
|
||||
/* target change stuff, dont limit ctcp replies as that
|
||||
|
@ -817,11 +817,11 @@ msg_client(enum message_type msgtype,
|
|||
}
|
||||
|
||||
/* XXX Controversial? allow opers always to send through a +g */
|
||||
if(!is_server(source) && (IsSetCallerId(target_p) ||
|
||||
(IsSetRegOnlyMsg(target_p) && suser(user(source)).empty())))
|
||||
if(!is_server(source) && (is(*target_p, umode::CALLERID) ||
|
||||
(is(*target_p, umode::REGONLYMSG) && suser(user(source)).empty())))
|
||||
{
|
||||
/* Here is the anti-flood bot/spambot code -db */
|
||||
if(accept_message(&source, target_p) || IsOper(&source))
|
||||
if(accept_message(&source, target_p) || is(source, umode::OPER))
|
||||
{
|
||||
add_reply_target(target_p, &source);
|
||||
sendto_one(target_p, ":%s!%s@%s %s %s :%s",
|
||||
|
@ -829,7 +829,7 @@ msg_client(enum message_type msgtype,
|
|||
source.username,
|
||||
source.host, cmdname[msgtype], target_p->name, text);
|
||||
}
|
||||
else if (IsSetRegOnlyMsg(target_p) && suser(user(source)).empty())
|
||||
else if (is(*target_p, umode::REGONLYMSG) && suser(user(source)).empty())
|
||||
{
|
||||
if (msgtype != MESSAGE_TYPE_NOTICE)
|
||||
sendto_one_numeric(&source, ERR_NONONREG,
|
||||
|
@ -894,7 +894,7 @@ flood_attack_client(enum message_type msgtype, client::client &source, client::c
|
|||
* and msg user@server.
|
||||
* -- jilles
|
||||
*/
|
||||
if(GlobalSetOptions.floodcount && is_client(source) && &source != target_p && !IsService(target_p))
|
||||
if(GlobalSetOptions.floodcount && is_client(source) && &source != target_p && !is(*target_p, umode::SERVICE))
|
||||
{
|
||||
if((target_p->first_received_message_time + 1) < rb_current_time())
|
||||
{
|
||||
|
@ -972,7 +972,7 @@ handle_special(enum message_type msgtype, client::client &client,
|
|||
return;
|
||||
}
|
||||
|
||||
if(!IsOper(&source))
|
||||
if(!is(source, umode::OPER))
|
||||
{
|
||||
if(strchr(nick, '%') || (strncmp(nick, "opers", 5) == 0))
|
||||
{
|
||||
|
@ -1015,11 +1015,11 @@ handle_special(enum message_type msgtype, client::client &client,
|
|||
*
|
||||
* Armin, 8Jun90 (gruner@informatik.tu-muenchen.de)
|
||||
*/
|
||||
if(IsOper(&source) && *nick == '$')
|
||||
if(is(source, umode::OPER) && *nick == '$')
|
||||
{
|
||||
if((*(nick + 1) == '$' || *(nick + 1) == '#'))
|
||||
nick++;
|
||||
else if(MyOper(&source))
|
||||
else if(my_oper(source))
|
||||
{
|
||||
sendto_one(&source,
|
||||
":%s NOTICE %s :The command %s %s is no longer supported, please use $%s",
|
||||
|
|
|
@ -368,11 +368,11 @@ do_modlist(client::client &source, const char *pattern)
|
|||
break;
|
||||
case MAPI_ORIGIN_CORE:
|
||||
origin = "builtin";
|
||||
display = IsOper(&source);
|
||||
display = is(source, umode::OPER);
|
||||
break;
|
||||
default:
|
||||
origin = "unknown";
|
||||
display = IsOper(&source);
|
||||
display = is(source, umode::OPER);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -260,7 +260,7 @@ ms_nick(struct MsgBuf *msgbuf_p, client::client &client, client::client &source,
|
|||
nick = parc > 1 ? parv[1] : "?";
|
||||
server = parc > 7 ? parv[7] : "?";
|
||||
|
||||
sendto_wallops_flags(UMODE_WALLOP, &me,
|
||||
sendto_wallops_flags(umode::WALLOP, &me,
|
||||
"Link %s cancelled, TS5 nickname %s on %s introduced (old server?)",
|
||||
client.name, nick, server);
|
||||
sendto_server(NULL, NULL, CAP_TS6, NOCAPS,
|
||||
|
@ -611,7 +611,7 @@ change_local_nick(client::client &client, client::client &source,
|
|||
source.localClient->last_nick_change = rb_current_time();
|
||||
source.localClient->number_of_nick_changes++;
|
||||
|
||||
if(ConfigFileEntry.anti_nick_flood && !IsOper(&source) &&
|
||||
if(ConfigFileEntry.anti_nick_flood && !is(source, umode::OPER) &&
|
||||
source.localClient->number_of_nick_changes > ConfigFileEntry.max_nick_changes)
|
||||
{
|
||||
sendto_one(&source, form_str(ERR_NICKTOOFAST),
|
||||
|
@ -1046,7 +1046,7 @@ register_client(client::client &client, client::client *server,
|
|||
{
|
||||
flag = user_modes[(unsigned char) *m];
|
||||
|
||||
if(flag & UMODE_SERVICE)
|
||||
if(flag & umode::SERVICE)
|
||||
{
|
||||
int hit = 0;
|
||||
rb_dlink_node *ptr;
|
||||
|
@ -1068,18 +1068,18 @@ register_client(client::client &client, client::client *server,
|
|||
}
|
||||
|
||||
/* increment +i count if theyre invis */
|
||||
if(!(source->umodes & UMODE_INVISIBLE) && (flag & UMODE_INVISIBLE))
|
||||
if(!(source->mode & umode::INVISIBLE) && (flag & umode::INVISIBLE))
|
||||
Count.invisi++;
|
||||
|
||||
/* increment opered count if theyre opered */
|
||||
if(!(source->umodes & UMODE_OPER) && (flag & UMODE_OPER))
|
||||
if(!(source->mode & umode::OPER) && (flag & umode::OPER))
|
||||
Count.oper++;
|
||||
|
||||
source->umodes |= flag;
|
||||
source->mode |= umode(flag);
|
||||
m++;
|
||||
}
|
||||
|
||||
if(IsOper(source) && !IsService(source))
|
||||
if(is(*source, umode::OPER) && !is(*source, umode::SERVICE))
|
||||
rb_dlinkAddAlloc(source, &oper_list);
|
||||
|
||||
set_remote_client(*source);
|
||||
|
@ -1158,7 +1158,7 @@ static void bad_nickname(client::client &client, const char *nick)
|
|||
{
|
||||
char squitreason[100];
|
||||
|
||||
sendto_wallops_flags(UMODE_WALLOP, &me,
|
||||
sendto_wallops_flags(umode::WALLOP, &me,
|
||||
"Squitting %s because of bad nickname %s (NICKLEN mismatch?)",
|
||||
client.name, nick);
|
||||
sendto_server(NULL, NULL, CAP_TS6, NOCAPS,
|
||||
|
|
|
@ -102,7 +102,7 @@ part_one_client(client::client &client, client::client &source, char *name, cons
|
|||
return;
|
||||
}
|
||||
|
||||
if(my_connect(source) && !IsOper(&source) && !is_exempt_spambot(source))
|
||||
if(my_connect(source) && !is(source, umode::OPER) && !is_exempt_spambot(source))
|
||||
chan::check_spambot_warning(&source, NULL);
|
||||
|
||||
/*
|
||||
|
|
|
@ -61,7 +61,7 @@ m_quit(struct MsgBuf *msgbuf_p, client::client &client, client::client &source,
|
|||
comment = reason;
|
||||
}
|
||||
|
||||
if(!IsOper(&source) &&
|
||||
if(!is(source, umode::OPER) &&
|
||||
(source.localClient->firsttime + ConfigFileEntry.anti_spam_exit_message_time) >
|
||||
rb_current_time())
|
||||
{
|
||||
|
|
|
@ -521,7 +521,7 @@ ms_sid(struct MsgBuf *msgbuf_p, client::client &client, client::client &source,
|
|||
/* collision on the SID? */
|
||||
if((target_p = find_id(parv[3])) != NULL)
|
||||
{
|
||||
sendto_wallops_flags(UMODE_WALLOP, &me,
|
||||
sendto_wallops_flags(umode::WALLOP, &me,
|
||||
"Link %s cancelled, SID %s for server %s already in use by %s",
|
||||
client.name, parv[3], parv[1], target_p->name);
|
||||
sendto_server(NULL, NULL, CAP_TS6, NOCAPS,
|
||||
|
|
|
@ -122,7 +122,7 @@ ms_squit(struct MsgBuf *msgbuf_p, client::client &client, client::client &source
|
|||
*/
|
||||
else if(my_connect(*target_p))
|
||||
{
|
||||
sendto_wallops_flags(UMODE_WALLOP, &me,
|
||||
sendto_wallops_flags(umode::WALLOP, &me,
|
||||
"Remote SQUIT %s from %s (%s)",
|
||||
target_p->name, source.name, comment);
|
||||
|
||||
|
|
|
@ -126,7 +126,7 @@ m_alias(struct MsgBuf *msgbuf, client::client &client, client::client &source, i
|
|||
{
|
||||
/* nick, must be +S */
|
||||
target_p = client::find_named_person(aptr->target.c_str());
|
||||
if(target_p != NULL && !IsService(target_p))
|
||||
if(target_p != NULL && !is(*target_p, umode::SERVICE))
|
||||
target_p = NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -85,7 +85,7 @@ m_away(struct MsgBuf *msgbuf_p, client::client &client, client::client &source,
|
|||
/* Rate limit this because it is sent to common channels. */
|
||||
if (my(source))
|
||||
{
|
||||
if(!IsOper(&source) &&
|
||||
if(!is(source, umode::OPER) &&
|
||||
source.localClient->next_away > rb_current_time())
|
||||
{
|
||||
sendto_one(&source, form_str(RPL_LOAD2HI),
|
||||
|
|
|
@ -100,7 +100,7 @@ m_challenge(struct MsgBuf *msgbuf_p, client::client &client, client::client &sou
|
|||
int len = 0;
|
||||
|
||||
/* if theyre an oper, reprint oper motd and ignore */
|
||||
if(IsOper(&source))
|
||||
if(is(source, umode::OPER))
|
||||
{
|
||||
sendto_one(&source, form_str(RPL_YOUREOPER), me.name, source.name);
|
||||
send_oper_motd(&source);
|
||||
|
|
|
@ -122,7 +122,7 @@ do_chghost(client::client &source, client::client *target_p,
|
|||
}
|
||||
if (my(source))
|
||||
sendto_one_notice(&source, ":Changed hostname for %s to %s", target_p->name, target_p->host);
|
||||
if (!is_server(source) && !IsService(&source))
|
||||
if (!is_server(source) && !is(source, umode::SERVICE))
|
||||
sendto_realops_snomask(SNO_GENERAL, L_ALL, "%s changed hostname for %s to %s", get_oper_name(&source), target_p->name, target_p->host);
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -207,7 +207,7 @@ ms_connect(struct MsgBuf *msgbuf_p, client::client &client, client::client &sour
|
|||
/*
|
||||
* Notify all operators about remote connect requests
|
||||
*/
|
||||
sendto_wallops_flags(UMODE_WALLOP, &me,
|
||||
sendto_wallops_flags(umode::WALLOP, &me,
|
||||
"Remote CONNECT %s %d from %s",
|
||||
parv[1], port, source.name);
|
||||
sendto_server(NULL, NULL, CAP_TS6, NOCAPS,
|
||||
|
|
|
@ -124,7 +124,7 @@ me_etrace(struct MsgBuf *msgbuf_p, client::client &client, client::client &sourc
|
|||
{
|
||||
client::client *target_p;
|
||||
|
||||
if(!IsOper(&source) || parc < 2 || EmptyString(parv[1]))
|
||||
if(!is(source, umode::OPER) || parc < 2 || EmptyString(parv[1]))
|
||||
return;
|
||||
|
||||
/* we cant etrace remote clients.. we shouldnt even get sent them */
|
||||
|
@ -154,7 +154,7 @@ do_etrace(client::client &source, int ipv4, int ipv6)
|
|||
|
||||
sendto_one(&source, form_str(RPL_ETRACE),
|
||||
me.name, source.name,
|
||||
IsOper(target_p) ? "Oper" : "User",
|
||||
is(*target_p, umode::OPER) ? "Oper" : "User",
|
||||
get_client_class(target_p),
|
||||
target_p->name, target_p->username, target_p->host,
|
||||
show_ip(&source, target_p) ? target_p->sockhost : "255.255.255.255",
|
||||
|
@ -191,14 +191,14 @@ do_single_etrace(client::client &source, client::client *target_p)
|
|||
if(!show_ip(&source, target_p))
|
||||
sendto_one(&source, form_str(RPL_ETRACEFULL),
|
||||
me.name, source.name,
|
||||
IsOper(target_p) ? "Oper" : "User",
|
||||
is(*target_p, umode::OPER) ? "Oper" : "User",
|
||||
get_client_class(target_p),
|
||||
target_p->name, target_p->username, target_p->host,
|
||||
"255.255.255.255", "<hidden> <hidden>", target_p->info);
|
||||
else
|
||||
sendto_one(&source, form_str(RPL_ETRACEFULL),
|
||||
me.name, source.name,
|
||||
IsOper(target_p) ? "Oper" : "User",
|
||||
is(*target_p, umode::OPER) ? "Oper" : "User",
|
||||
get_client_class(target_p),
|
||||
target_p->name, target_p->username,
|
||||
target_p->host, target_p->sockhost,
|
||||
|
@ -262,7 +262,7 @@ m_chantrace(struct MsgBuf *msgbuf_p, client::client &client, client::client &sou
|
|||
|
||||
sendto_one(&source, form_str(RPL_ETRACE),
|
||||
me.name, source.name,
|
||||
IsOper(target_p) ? "Oper" : "User",
|
||||
is(*target_p, umode::OPER) ? "Oper" : "User",
|
||||
/* class field -- pretend its server.. */
|
||||
target_p->servptr->name,
|
||||
target_p->name, target_p->username, target_p->host,
|
||||
|
@ -307,7 +307,7 @@ match_masktrace(client::client &source, rb_dlink_list *list,
|
|||
|
||||
sendto_one(&source, form_str(RPL_ETRACE),
|
||||
me.name, source.name,
|
||||
IsOper(target_p) ? "Oper" : "User",
|
||||
is(*target_p, umode::OPER) ? "Oper" : "User",
|
||||
/* class field -- pretend its server.. */
|
||||
target_p->servptr->name,
|
||||
target_p->name, target_p->username, target_p->host,
|
||||
|
|
|
@ -87,7 +87,7 @@ do_grant(client::client &source, client::client *target_p, const char *new_privs
|
|||
|
||||
if (!strcmp(new_privset, "deoper"))
|
||||
{
|
||||
if (!IsOper(target_p))
|
||||
if (!is(*target_p, umode::OPER))
|
||||
{
|
||||
sendto_one_notice(&source, ":You can't deoper someone who isn't an oper.");
|
||||
return;
|
||||
|
@ -115,7 +115,7 @@ do_grant(client::client &source, client::client *target_p, const char *new_privs
|
|||
|
||||
if (!dodeoper)
|
||||
{
|
||||
if (!IsOper(target_p))
|
||||
if (!is(*target_p, umode::OPER))
|
||||
{
|
||||
sendto_one_notice(target_p, ":%s is opering you with privilege set %s", source.name, privset->name);
|
||||
sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, "%s is opering %s with privilege set %s", get_oper_name(&source), target_p->name, privset->name);
|
||||
|
|
|
@ -690,7 +690,7 @@ mo_info(struct MsgBuf *msgbuf_p, client::client &client, client::client &source,
|
|||
info_spy(source);
|
||||
send_info_text(source);
|
||||
|
||||
if(IsOper(&source))
|
||||
if(is(source, umode::OPER))
|
||||
{
|
||||
send_conf_options(source);
|
||||
sendto_one_numeric(&source, RPL_INFO, ":%s",
|
||||
|
|
|
@ -148,7 +148,7 @@ m_invite(struct MsgBuf *msgbuf_p, client::client &client, client::client &source
|
|||
|
||||
if(my_connect(source))
|
||||
{
|
||||
if (ConfigFileEntry.target_change && !IsOper(&source) &&
|
||||
if (ConfigFileEntry.target_change && !is(source, umode::OPER) &&
|
||||
!find_allowing_channel(&source, target_p) &&
|
||||
!add_target(&source, target_p))
|
||||
{
|
||||
|
@ -173,11 +173,11 @@ m_invite(struct MsgBuf *msgbuf_p, client::client &client, client::client &source
|
|||
|
||||
if(my_connect(*target_p))
|
||||
{
|
||||
if(!IsOper(&source) && (IsSetCallerId(target_p) ||
|
||||
(IsSetRegOnlyMsg(target_p) && !suser(user(source))[0])) &&
|
||||
if(!is(source, umode::OPER) && (is(*target_p, umode::CALLERID) ||
|
||||
(is(*target_p, umode::REGONLYMSG) && !suser(user(source))[0])) &&
|
||||
!accept_message(&source, target_p))
|
||||
{
|
||||
if (IsSetRegOnlyMsg(target_p) && !suser(user(source))[0])
|
||||
if (is(*target_p, umode::REGONLYMSG) && !suser(user(source))[0])
|
||||
{
|
||||
sendto_one_numeric(&source, ERR_NONONREG,
|
||||
form_str(ERR_NONONREG),
|
||||
|
|
|
@ -128,7 +128,7 @@ m_knock(struct MsgBuf *msgbuf_p, client::client &client, client::client &source,
|
|||
* allow one knock per user per knock_delay
|
||||
* allow one knock per channel per knock_delay_channel
|
||||
*/
|
||||
if(!IsOper(&source) &&
|
||||
if(!is(source, umode::OPER) &&
|
||||
(source.localClient->last_knock + ConfigChannel.knock_delay) > rb_current_time())
|
||||
{
|
||||
sendto_one(&source, form_str(ERR_TOOMANYKNOCK),
|
||||
|
|
|
@ -76,7 +76,7 @@ m_names(struct MsgBuf *msgbuf_p, client::client &client, client::client &source,
|
|||
}
|
||||
else
|
||||
{
|
||||
if(!IsOper(&source))
|
||||
if(!is(source, umode::OPER))
|
||||
{
|
||||
if((last_used + ConfigFileEntry.pace_wait) > rb_current_time())
|
||||
{
|
||||
|
@ -132,7 +132,7 @@ names_global(client::client &source)
|
|||
target_p = (client::client *)ptr->data;
|
||||
dont_show = false;
|
||||
|
||||
if(!is_person(*target_p) || is_invisible(*target_p))
|
||||
if(!is_person(*target_p) || is(*target_p, umode::INVISIBLE))
|
||||
continue;
|
||||
|
||||
/* we want to show -i clients that are either:
|
||||
|
|
|
@ -54,7 +54,7 @@ m_oper(struct MsgBuf *msgbuf_p, client::client &client, client::client &source,
|
|||
name = parv[1];
|
||||
password = parv[2];
|
||||
|
||||
if(IsOper(&source))
|
||||
if(is(source, umode::OPER))
|
||||
{
|
||||
sendto_one(&source, form_str(RPL_YOUREOPER), me.name, source.name);
|
||||
cache::motd::send_oper(&source);
|
||||
|
@ -85,7 +85,7 @@ m_oper(struct MsgBuf *msgbuf_p, client::client &client, client::client &source,
|
|||
return;
|
||||
}
|
||||
|
||||
if(IsOperConfNeedSSL(oper_p) && !IsSSLClient(&source))
|
||||
if(IsOperConfNeedSSL(oper_p) && !is(source, umode::SSLCLIENT))
|
||||
{
|
||||
sendto_one_numeric(&source, ERR_NOOPERHOST, form_str(ERR_NOOPERHOST));
|
||||
ilog(L_FOPER, "FAILED OPER (%s) by (%s!%s@%s) (%s) -- requires SSL/TLS",
|
||||
|
|
|
@ -80,7 +80,7 @@ static void show_privs(client::client &source, client::client *target_p)
|
|||
buf[0] = '\0';
|
||||
if (target_p->localClient->privset)
|
||||
rb_strlcat(buf, target_p->localClient->privset->privs, sizeof buf);
|
||||
if (IsOper(target_p))
|
||||
if (is(*target_p, umode::OPER))
|
||||
{
|
||||
if (buf[0] != '\0')
|
||||
rb_strlcat(buf, " ", sizeof buf);
|
||||
|
@ -115,7 +115,7 @@ me_privs(struct MsgBuf *msgbuf_p, client::client &client, client::client &source
|
|||
{
|
||||
client::client *target_p;
|
||||
|
||||
if (!IsOper(&source) || parc < 2 || EmptyString(parv[1]))
|
||||
if (!is(source, umode::OPER) || parc < 2 || EmptyString(parv[1]))
|
||||
return;
|
||||
|
||||
/* we cannot show privs for remote clients */
|
||||
|
|
|
@ -76,7 +76,7 @@ sasl_visible(client::client *client)
|
|||
if (ConfigFileEntry.sasl_service)
|
||||
agent_p = find_named_client(ConfigFileEntry.sasl_service);
|
||||
|
||||
return agent_p != NULL && IsService(agent_p);
|
||||
return agent_p != NULL && is(*agent_p, umode::SERVICE);
|
||||
}
|
||||
|
||||
static const char *
|
||||
|
@ -131,7 +131,7 @@ m_authenticate(struct MsgBuf *msgbuf_p, client::client &client, client::client &
|
|||
}
|
||||
|
||||
saslserv_p = find_named_client(ConfigFileEntry.sasl_service);
|
||||
if(saslserv_p == NULL || !IsService(saslserv_p))
|
||||
if(saslserv_p == NULL || !is(*saslserv_p, umode::SERVICE))
|
||||
{
|
||||
sendto_one(&source, form_str(ERR_SASLABORTED), me.name, EmptyString(source.name) ? "*" : source.name);
|
||||
return;
|
||||
|
@ -207,7 +207,7 @@ me_sasl(struct MsgBuf *msgbuf_p, client::client &client, client::client &source,
|
|||
/* We only accept messages from SASL agents; these must have umode +S
|
||||
* (so the server must be listed in a service{} block).
|
||||
*/
|
||||
if(!IsService(agent_p))
|
||||
if(!is(*agent_p, umode::SERVICE))
|
||||
return;
|
||||
|
||||
/* Reject if someone has already answered. */
|
||||
|
|
|
@ -208,7 +208,7 @@ scan_umodes(struct MsgBuf *msgbuf_p, client::client &client, client::client &sou
|
|||
else
|
||||
sockhost = target_p->sockhost;
|
||||
|
||||
working_umodes = target_p->umodes;
|
||||
working_umodes = target_p->mode;
|
||||
|
||||
/* require that we have the allowed umodes... */
|
||||
if ((working_umodes & allowed_umodes) != allowed_umodes)
|
||||
|
@ -236,7 +236,7 @@ scan_umodes(struct MsgBuf *msgbuf_p, client::client &client, client::client &sou
|
|||
|
||||
for (i = 0; i < 128; i++)
|
||||
{
|
||||
if (target_p->umodes & user_modes[i])
|
||||
if (is(*target_p, umode(user_modes[i])))
|
||||
*m++ = (char) i;
|
||||
}
|
||||
|
||||
|
|
|
@ -321,7 +321,7 @@ h_svc_stats(hook_data_int *data)
|
|||
char statchar = (char) data->arg2;
|
||||
rb_dlink_node *ptr;
|
||||
|
||||
if (statchar == 'U' && IsOper(data->client))
|
||||
if (statchar == 'U' && is(*data->client, umode::OPER))
|
||||
{
|
||||
RB_DLINK_FOREACH(ptr, service_list.head)
|
||||
{
|
||||
|
|
|
@ -213,7 +213,7 @@ m_stats(struct MsgBuf *msgbuf_p, client::client &client, client::client &source,
|
|||
|
||||
statchar = parv[1][0];
|
||||
|
||||
if(my(source) && !IsOper(&source))
|
||||
if(my(source) && !is(source, umode::OPER))
|
||||
{
|
||||
/* Check the user is actually allowed to do /stats, and isnt flooding */
|
||||
if((last_used + ConfigFileEntry.pace_wait) > rb_current_time())
|
||||
|
@ -254,7 +254,7 @@ m_stats(struct MsgBuf *msgbuf_p, client::client &client, client::client &source,
|
|||
me.name, source.name, "admin");
|
||||
goto stats_out;
|
||||
}
|
||||
if(cmd->need_oper && !IsOper(&source))
|
||||
if(cmd->need_oper && !is(source, umode::OPER))
|
||||
{
|
||||
sendto_one_numeric(&source, ERR_NOPRIVILEGES,
|
||||
form_str (ERR_NOPRIVILEGES));
|
||||
|
@ -325,7 +325,7 @@ stats_connect(client::client &source)
|
|||
|
||||
if((ConfigFileEntry.stats_c_oper_only ||
|
||||
(ConfigServerHide.flatten_links && !is_exempt_shide(source))) &&
|
||||
!IsOper(&source))
|
||||
!is(source, umode::OPER))
|
||||
{
|
||||
sendto_one_numeric(&source, ERR_NOPRIVILEGES,
|
||||
form_str(ERR_NOPRIVILEGES));
|
||||
|
@ -341,7 +341,7 @@ stats_connect(client::client &source)
|
|||
|
||||
s = buf;
|
||||
|
||||
if(IsOper(&source))
|
||||
if(is(source, umode::OPER))
|
||||
{
|
||||
if(ServerConfAutoconn(server_p))
|
||||
*s++ = 'A';
|
||||
|
@ -528,7 +528,7 @@ stats_hubleaf(client::client &source)
|
|||
|
||||
if((ConfigFileEntry.stats_h_oper_only ||
|
||||
(ConfigServerHide.flatten_links && !is_exempt_shide(source))) &&
|
||||
!IsOper(&source))
|
||||
!is(source, umode::OPER))
|
||||
{
|
||||
sendto_one_numeric(&source, ERR_NOPRIVILEGES,
|
||||
form_str (ERR_NOPRIVILEGES));
|
||||
|
@ -555,12 +555,12 @@ static void
|
|||
stats_auth (client::client &source)
|
||||
{
|
||||
/* Oper only, if unopered, return ERR_NOPRIVS */
|
||||
if((ConfigFileEntry.stats_i_oper_only == 2) && !IsOper (&source))
|
||||
if((ConfigFileEntry.stats_i_oper_only == 2) && !is(source, umode::OPER))
|
||||
sendto_one_numeric(&source, ERR_NOPRIVILEGES,
|
||||
form_str (ERR_NOPRIVILEGES));
|
||||
|
||||
/* If unopered, Only return matching auth blocks */
|
||||
else if((ConfigFileEntry.stats_i_oper_only == 1) && !IsOper (&source))
|
||||
else if((ConfigFileEntry.stats_i_oper_only == 1) && !is(source, umode::OPER))
|
||||
{
|
||||
struct ConfItem *aconf;
|
||||
char *name, *host, *user, *classname;
|
||||
|
@ -599,12 +599,12 @@ static void
|
|||
stats_tklines(client::client &source)
|
||||
{
|
||||
/* Oper only, if unopered, return ERR_NOPRIVS */
|
||||
if((ConfigFileEntry.stats_k_oper_only == 2) && !IsOper (&source))
|
||||
if((ConfigFileEntry.stats_k_oper_only == 2) && !is(source, umode::OPER))
|
||||
sendto_one_numeric(&source, ERR_NOPRIVILEGES,
|
||||
form_str (ERR_NOPRIVILEGES));
|
||||
|
||||
/* If unopered, Only return matching klines */
|
||||
else if((ConfigFileEntry.stats_k_oper_only == 1) && !IsOper (&source))
|
||||
else if((ConfigFileEntry.stats_k_oper_only == 1) && !is(source, umode::OPER))
|
||||
{
|
||||
struct ConfItem *aconf;
|
||||
char *host, *pass, *user, *oper_reason;
|
||||
|
@ -701,12 +701,12 @@ static void
|
|||
stats_klines(client::client &source)
|
||||
{
|
||||
/* Oper only, if unopered, return ERR_NOPRIVS */
|
||||
if((ConfigFileEntry.stats_k_oper_only == 2) && !IsOper (&source))
|
||||
if((ConfigFileEntry.stats_k_oper_only == 2) && !is(source, umode::OPER))
|
||||
sendto_one_numeric(&source, ERR_NOPRIVILEGES,
|
||||
form_str (ERR_NOPRIVILEGES));
|
||||
|
||||
/* If unopered, Only return matching klines */
|
||||
else if((ConfigFileEntry.stats_k_oper_only == 1) && !IsOper (&source))
|
||||
else if((ConfigFileEntry.stats_k_oper_only == 1) && !is(source, umode::OPER))
|
||||
{
|
||||
struct ConfItem *aconf;
|
||||
char *host, *pass, *user, *oper_reason;
|
||||
|
@ -778,7 +778,7 @@ stats_oper(client::client &source)
|
|||
struct oper_conf *oper_p;
|
||||
rb_dlink_node *ptr;
|
||||
|
||||
if(!IsOper(&source) && ConfigFileEntry.stats_o_oper_only)
|
||||
if(!is(source, umode::OPER) && ConfigFileEntry.stats_o_oper_only)
|
||||
{
|
||||
sendto_one_numeric(&source, ERR_NOPRIVILEGES,
|
||||
form_str (ERR_NOPRIVILEGES));
|
||||
|
@ -792,7 +792,7 @@ stats_oper(client::client &source)
|
|||
sendto_one_numeric(&source, RPL_STATSOLINE,
|
||||
form_str(RPL_STATSOLINE),
|
||||
oper_p->username, oper_p->host, oper_p->name,
|
||||
IsOper(&source) ? oper_p->privset->name : "0", "-1");
|
||||
is(source, umode::OPER) ? oper_p->privset->name : "0", "-1");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -833,7 +833,7 @@ stats_operedup (client::client &source)
|
|||
{
|
||||
target_p = (client::client *)oper_ptr->data;
|
||||
|
||||
if(IsOperInvis(target_p) && !IsOper(&source))
|
||||
if(IsOperInvis(target_p) && !is(source, umode::OPER))
|
||||
continue;
|
||||
|
||||
if(away(user(*target_p)).size())
|
||||
|
@ -856,7 +856,7 @@ stats_operedup (client::client &source)
|
|||
static void
|
||||
stats_ports (client::client &source)
|
||||
{
|
||||
if(!IsOper (&source) && ConfigFileEntry.stats_P_oper_only)
|
||||
if(!is(source, umode::OPER) && ConfigFileEntry.stats_P_oper_only)
|
||||
sendto_one_numeric(&source, ERR_NOPRIVILEGES,
|
||||
form_str (ERR_NOPRIVILEGES));
|
||||
else
|
||||
|
@ -1188,7 +1188,7 @@ stats_servers (client::client &source)
|
|||
int days, hours, minutes;
|
||||
int j = 0;
|
||||
|
||||
if(ConfigServerHide.flatten_links && !IsOper(&source) &&
|
||||
if(ConfigServerHide.flatten_links && !is(source, umode::OPER) &&
|
||||
!is_exempt_shide(source))
|
||||
{
|
||||
sendto_one_numeric(&source, ERR_NOPRIVILEGES,
|
||||
|
@ -1264,7 +1264,7 @@ stats_gecos(client::client &source)
|
|||
static void
|
||||
stats_class(client::client &source)
|
||||
{
|
||||
if(ConfigFileEntry.stats_y_oper_only && !IsOper(&source))
|
||||
if(ConfigFileEntry.stats_y_oper_only && !is(source, umode::OPER))
|
||||
sendto_one_numeric(&source, ERR_NOPRIVILEGES,
|
||||
form_str (ERR_NOPRIVILEGES));
|
||||
else
|
||||
|
@ -1515,7 +1515,7 @@ stats_servlinks (client::client &source)
|
|||
int j = 0;
|
||||
char buf[128];
|
||||
|
||||
if(ConfigServerHide.flatten_links && !IsOper (&source) &&
|
||||
if(ConfigServerHide.flatten_links && !is(source, umode::OPER) &&
|
||||
!is_exempt_shide(source))
|
||||
{
|
||||
sendto_one_numeric(&source, ERR_NOPRIVILEGES,
|
||||
|
@ -1544,7 +1544,7 @@ stats_servlinks (client::client &source)
|
|||
rb_current_time() - target_p->localClient->firsttime,
|
||||
(rb_current_time() > target_p->localClient->lasttime) ?
|
||||
(rb_current_time() - target_p->localClient->lasttime) : 0,
|
||||
IsOper (&source) ? show_capabilities (target_p) : "TS");
|
||||
is(source, umode::OPER) ? show_capabilities (target_p) : "TS");
|
||||
}
|
||||
|
||||
sendto_one_numeric(&source, RPL_STATSDEBUG,
|
||||
|
@ -1636,7 +1636,7 @@ stats_ltrace(client::client &source, int parc, const char *parv[])
|
|||
if(doall)
|
||||
{
|
||||
/* local opers get everyone */
|
||||
if(MyOper(&source))
|
||||
if(my_oper(source))
|
||||
{
|
||||
stats_l_list(source, name, doall, wilds, &unknown_list, statchar, NULL);
|
||||
stats_l_list(source, name, doall, wilds, &lclient_list, statchar, NULL);
|
||||
|
@ -1650,7 +1650,7 @@ stats_ltrace(client::client &source, int parc, const char *parv[])
|
|||
stats_l_list(source, name, doall, wilds, &local_oper_list, statchar, stats_l_should_show_oper);
|
||||
}
|
||||
|
||||
if (!ConfigServerHide.flatten_links || IsOper(&source) ||
|
||||
if (!ConfigServerHide.flatten_links || is(source, umode::OPER) ||
|
||||
is_exempt_shide(source))
|
||||
stats_l_list(source, name, doall, wilds, &serv_list, statchar, NULL);
|
||||
|
||||
|
@ -1704,7 +1704,7 @@ stats_l_client(client::client &source, client::client *target_p,
|
|||
rb_current_time() - target_p->localClient->firsttime,
|
||||
(rb_current_time() > target_p->localClient->lasttime) ?
|
||||
(rb_current_time() - target_p->localClient->lasttime) : 0,
|
||||
IsOper(&source) ? show_capabilities(target_p) : "-");
|
||||
is(source, umode::OPER) ? show_capabilities(target_p) : "-");
|
||||
}
|
||||
|
||||
else
|
||||
|
|
|
@ -97,7 +97,7 @@ m_topic(struct MsgBuf *msgbuf_p, client::client &client, client::client &source,
|
|||
if (my(source) &&
|
||||
!is_chanop(msptr) &&
|
||||
!is_voiced(msptr) &&
|
||||
!IsOper(&source) &&
|
||||
!is(source, umode::OPER) &&
|
||||
!add_channel_target(&source, chptr))
|
||||
{
|
||||
sendto_one(&source, form_str(ERR_TARGCHANGE),
|
||||
|
|
|
@ -110,7 +110,7 @@ m_trace(struct MsgBuf *msgbuf_p, client::client &client, client::client &source,
|
|||
/* giving this out with flattened links defeats the
|
||||
* object --fl
|
||||
*/
|
||||
if(IsOper(&source) || is_exempt_shide(source) ||
|
||||
if(is(source, umode::OPER) || is_exempt_shide(source) ||
|
||||
!ConfigServerHide.flatten_links)
|
||||
sendto_one_numeric(&source, RPL_TRACELINK,
|
||||
form_str(RPL_TRACELINK),
|
||||
|
@ -174,7 +174,7 @@ m_trace(struct MsgBuf *msgbuf_p, client::client &client, client::client &source,
|
|||
/* give non-opers a limited trace output of themselves (if local),
|
||||
* opers and servers (if no shide) --fl
|
||||
*/
|
||||
if(!IsOper(&source))
|
||||
if(!is(source, umode::OPER))
|
||||
{
|
||||
if(my(source))
|
||||
{
|
||||
|
@ -218,15 +218,15 @@ m_trace(struct MsgBuf *msgbuf_p, client::client &client, client::client &source,
|
|||
target_p = (client::client *)ptr->data;
|
||||
|
||||
/* dont show invisible users to remote opers */
|
||||
if(is_invisible(*target_p) && dow && !my_connect(source) && !IsOper(target_p))
|
||||
if(is(*target_p, umode::INVISIBLE) && dow && !my_connect(source) && !is(*target_p, umode::OPER))
|
||||
continue;
|
||||
|
||||
if(!doall && wilds && !match(tname, target_p->name))
|
||||
continue;
|
||||
|
||||
/* remote opers may not see invisible normal users */
|
||||
if(dow && !my_connect(source) && !IsOper(target_p) &&
|
||||
is_invisible(*target_p))
|
||||
if(dow && !my_connect(source) && !is(*target_p, umode::OPER) &&
|
||||
is(*target_p, umode::INVISIBLE))
|
||||
continue;
|
||||
|
||||
cnt = report_this_status(source, target_p);
|
||||
|
@ -362,8 +362,8 @@ report_this_status(client::client &source, client::client *target_p)
|
|||
case client::status::CLIENT:
|
||||
{
|
||||
sendto_one_numeric(&source,
|
||||
IsOper(target_p) ? RPL_TRACEOPERATOR : RPL_TRACEUSER,
|
||||
IsOper(target_p) ? form_str(RPL_TRACEOPERATOR) : form_str(RPL_TRACEUSER),
|
||||
is(*target_p, umode::OPER) ? RPL_TRACEOPERATOR : RPL_TRACEUSER,
|
||||
is(*target_p, umode::OPER) ? form_str(RPL_TRACEOPERATOR) : form_str(RPL_TRACEUSER),
|
||||
class_name, name,
|
||||
show_ip(&source, target_p) ? ip : empty_sockhost,
|
||||
(unsigned long)(rb_current_time() - target_p->localClient->lasttime),
|
||||
|
|
|
@ -75,7 +75,7 @@ m_userhost(struct MsgBuf *msgbuf_p, client::client &client, client::client &sour
|
|||
{
|
||||
rl = sprintf(response, "%s%s=%c%s@%s ",
|
||||
target_p->name,
|
||||
IsOper(target_p) ? "*" : "",
|
||||
is(*target_p, umode::OPER) ? "*" : "",
|
||||
(away(user(*target_p)).size())? '-' : '+',
|
||||
target_p->username,
|
||||
target_p->sockhost);
|
||||
|
@ -84,7 +84,7 @@ m_userhost(struct MsgBuf *msgbuf_p, client::client &client, client::client &sour
|
|||
{
|
||||
rl = sprintf(response, "%s%s=%c%s@%s ",
|
||||
target_p->name,
|
||||
IsOper(target_p) ? "*" : "",
|
||||
is(*target_p, umode::OPER) ? "*" : "",
|
||||
(away(user(*target_p)).size())? '-' : '+',
|
||||
target_p->username, target_p->host);
|
||||
}
|
||||
|
|
|
@ -58,7 +58,7 @@ mo_operwall(struct MsgBuf *msgbuf_p, client::client &client, client::client &sou
|
|||
return;
|
||||
}
|
||||
|
||||
sendto_wallops_flags(UMODE_OPERWALL, &source, "OPERWALL - %s", parv[1]);
|
||||
sendto_wallops_flags(umode::OPERWALL, &source, "OPERWALL - %s", parv[1]);
|
||||
sendto_server(&client, NULL, CAP_TS6, NOCAPS, ":%s OPERWALL :%s",
|
||||
use_id(&source), parv[1]);
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ ms_operwall(struct MsgBuf *msgbuf_p, client::client &client, client::client &sou
|
|||
{
|
||||
sendto_server(&client, NULL, CAP_TS6, NOCAPS, ":%s OPERWALL :%s",
|
||||
use_id(&source), parv[1]);
|
||||
sendto_wallops_flags(UMODE_OPERWALL, &source, "OPERWALL - %s", parv[1]);
|
||||
sendto_wallops_flags(umode::OPERWALL, &source, "OPERWALL - %s", parv[1]);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -101,7 +101,7 @@ ms_wallops(struct MsgBuf *msgbuf_p, client::client &client, client::client &sour
|
|||
prefix = "WALLOPS - ";
|
||||
}
|
||||
|
||||
sendto_wallops_flags(UMODE_WALLOP, &source, "%s%s", prefix, parv[1]);
|
||||
sendto_wallops_flags(umode::WALLOP, &source, "%s%s", prefix, parv[1]);
|
||||
|
||||
sendto_server(&client, NULL, CAP_TS6, NOCAPS, ":%s WALLOPS :%s",
|
||||
use_id(&source), parv[1]);
|
||||
|
|
|
@ -176,7 +176,7 @@ m_who(struct MsgBuf *msgbuf_p, client::client &client, client::client &source, i
|
|||
|
||||
if(chptr != NULL)
|
||||
{
|
||||
if (!IsOper(&source) && !ratelimit_client_who(&source, size(chptr->members)/50))
|
||||
if (!is(source, umode::OPER) && !ratelimit_client_who(&source, size(chptr->members)/50))
|
||||
{
|
||||
sendto_one(&source, form_str(RPL_LOAD2HI),
|
||||
me.name, source.name, "WHO");
|
||||
|
@ -202,11 +202,11 @@ m_who(struct MsgBuf *msgbuf_p, client::client &client, client::client &source, i
|
|||
/* '/who nick' */
|
||||
|
||||
if(((target_p = client::find_named_person(mask)) != NULL) &&
|
||||
(!server_oper || IsOper(target_p)))
|
||||
(!server_oper || is(*target_p, umode::OPER)))
|
||||
{
|
||||
int isinvis = 0;
|
||||
|
||||
isinvis = is_invisible(*target_p);
|
||||
isinvis = is(*target_p, umode::INVISIBLE);
|
||||
for(const auto &pit : chans(user(*target_p)))
|
||||
{
|
||||
chptr = pit.first;
|
||||
|
@ -238,7 +238,7 @@ m_who(struct MsgBuf *msgbuf_p, client::client &client, client::client &source, i
|
|||
flood_endgrace(&source);
|
||||
|
||||
/* it has to be a global who at this point, limit it */
|
||||
if(!IsOper(&source))
|
||||
if(!is(source, umode::OPER))
|
||||
{
|
||||
if((last_used + ConfigFileEntry.pace_wait) > rb_current_time() || !ratelimit_client(&source, 1))
|
||||
{
|
||||
|
@ -291,10 +291,10 @@ who_common_channel(client::client &source, chan::chan *chptr,
|
|||
const auto &target(pit.first);
|
||||
const auto &member(pit.second);
|
||||
|
||||
if(!is_invisible(*target) || is_marked(*target))
|
||||
if(!is(*target, umode::INVISIBLE) || is_marked(*target))
|
||||
continue;
|
||||
|
||||
if(server_oper && !IsOper(target))
|
||||
if(server_oper && !is(*target, umode::OPER))
|
||||
continue;
|
||||
|
||||
set_mark(*target);
|
||||
|
@ -304,7 +304,7 @@ who_common_channel(client::client &source, chan::chan *chptr,
|
|||
if((mask == NULL) ||
|
||||
match(mask, target->name) || match(mask, target->username) ||
|
||||
match(mask, target->host) || match(mask, target->servptr->name) ||
|
||||
(IsOper(&source) && match(mask, target->orighost)) ||
|
||||
(is(source, umode::OPER) && match(mask, target->orighost)) ||
|
||||
match(mask, target->info))
|
||||
{
|
||||
do_who(source, target, chptr, nullptr, fmt);
|
||||
|
@ -361,13 +361,13 @@ who_global(client::client &source, const char *mask, int server_oper, int opersp
|
|||
if(!is_person(*target_p))
|
||||
continue;
|
||||
|
||||
if(is_invisible(*target_p) && !operspy)
|
||||
if(is(*target_p, umode::INVISIBLE) && !operspy)
|
||||
{
|
||||
clear_mark(*target_p);
|
||||
continue;
|
||||
}
|
||||
|
||||
if(server_oper && !IsOper(target_p))
|
||||
if(server_oper && !is(*target_p, umode::OPER))
|
||||
continue;
|
||||
|
||||
if(maxmatches > 0)
|
||||
|
@ -375,7 +375,7 @@ who_global(client::client &source, const char *mask, int server_oper, int opersp
|
|||
if(!mask ||
|
||||
match(mask, target_p->name) || match(mask, target_p->username) ||
|
||||
match(mask, target_p->host) || match(mask, target_p->servptr->name) ||
|
||||
(IsOper(&source) && match(mask, target_p->orighost)) ||
|
||||
(is(source, umode::OPER) && match(mask, target_p->orighost)) ||
|
||||
match(mask, target_p->info))
|
||||
{
|
||||
do_who(source, target_p, nullptr, nullptr, fmt);
|
||||
|
@ -411,10 +411,10 @@ do_who_on_channel(client::client &source, chan::chan *chptr,
|
|||
const auto &target(pit.first);
|
||||
auto &member(pit.second);
|
||||
|
||||
if(server_oper && !IsOper(target))
|
||||
if(server_oper && !is(*target, umode::OPER))
|
||||
continue;
|
||||
|
||||
if(source_member || !is_invisible(*target))
|
||||
if(source_member || !is(*target, umode::INVISIBLE))
|
||||
do_who(source, target, chptr, &member, fmt);
|
||||
}
|
||||
}
|
||||
|
@ -464,14 +464,14 @@ do_who(client::client &source, client::client *target_p, chan::chan *chan, chan:
|
|||
const char *q;
|
||||
|
||||
sprintf(status, "%c%s%s",
|
||||
away(user(*target_p)).size()? 'G' : 'H', IsOper(target_p) ? "*" : "", msptr ? find_status(msptr, fmt->fields || IsCapable(&source, CLICAP_MULTI_PREFIX)) : "");
|
||||
away(user(*target_p)).size()? 'G' : 'H', is(*target_p, umode::OPER) ? "*" : "", msptr ? find_status(msptr, fmt->fields || IsCapable(&source, CLICAP_MULTI_PREFIX)) : "");
|
||||
|
||||
if (fmt->fields == 0)
|
||||
sendto_one(&source, form_str(RPL_WHOREPLY), me.name,
|
||||
source.name, msptr ? chan->name.c_str() : "*",
|
||||
target_p->username, target_p->host,
|
||||
target_p->servptr->name, target_p->name, status,
|
||||
ConfigServerHide.flatten_links && !IsOper(&source) && !is_exempt_shide(source) ? 0 : target_p->hopcount,
|
||||
ConfigServerHide.flatten_links && !is(source, umode::OPER) && !is_exempt_shide(source) ? 0 : target_p->hopcount,
|
||||
target_p->info);
|
||||
else
|
||||
{
|
||||
|
@ -501,7 +501,7 @@ do_who(client::client &source, client::client *target_p, chan::chan *chan, chan:
|
|||
if (fmt->fields & FIELD_FLAGS)
|
||||
append_format(str, sizeof str, &pos, " %s", status);
|
||||
if (fmt->fields & FIELD_HOP)
|
||||
append_format(str, sizeof str, &pos, " %d", ConfigServerHide.flatten_links && !IsOper(&source) && !is_exempt_shide(source) ? 0 : target_p->hopcount);
|
||||
append_format(str, sizeof str, &pos, " %d", ConfigServerHide.flatten_links && !is(source, umode::OPER) && !is_exempt_shide(source) ? 0 : target_p->hopcount);
|
||||
if (fmt->fields & FIELD_IDLE)
|
||||
append_format(str, sizeof str, &pos, " %d", (int)(my(*target_p) ? rb_current_time() - target_p->localClient->last : 0));
|
||||
if (fmt->fields & FIELD_ACCOUNT)
|
||||
|
|
|
@ -70,7 +70,7 @@ m_whois(struct MsgBuf *msgbuf_p, client::client &client, client::client &source,
|
|||
return;
|
||||
}
|
||||
|
||||
if(!IsOper(&source))
|
||||
if(!is(source, umode::OPER))
|
||||
{
|
||||
/* seeing as this is going across servers, we should limit it */
|
||||
if((last_used + ConfigFileEntry.pace_wait_simple) > rb_current_time() || !ratelimit_client(&source, 2))
|
||||
|
@ -250,7 +250,7 @@ single_whois(client::client &source, client::client *target_p, int operspy)
|
|||
hdata.client = &source;
|
||||
hdata.target = target_p;
|
||||
|
||||
if (!IsService(target_p))
|
||||
if (!is(*target_p, umode::SERVICE))
|
||||
{
|
||||
for(const auto &pit : chans(user(*target_p)))
|
||||
{
|
||||
|
@ -292,16 +292,16 @@ single_whois(client::client &source, client::client *target_p, int operspy)
|
|||
sendto_one_numeric(&source, RPL_AWAY, form_str(RPL_AWAY),
|
||||
target_p->name, away(user(*target_p)).c_str());
|
||||
|
||||
if(IsOper(target_p) && (!ConfigFileEntry.hide_opers_in_whois || IsOper(&source)))
|
||||
if(is(*target_p, umode::OPER) && (!ConfigFileEntry.hide_opers_in_whois || is(source, umode::OPER)))
|
||||
{
|
||||
sendto_one_numeric(&source, RPL_WHOISOPERATOR, form_str(RPL_WHOISOPERATOR),
|
||||
target_p->name,
|
||||
IsService(target_p) ? ConfigFileEntry.servicestring :
|
||||
(IsAdmin(target_p) ? GlobalSetOptions.adminstring :
|
||||
is(*target_p, umode::SERVICE) ? ConfigFileEntry.servicestring :
|
||||
(is(*target_p, umode::ADMIN) ? GlobalSetOptions.adminstring :
|
||||
GlobalSetOptions.operstring));
|
||||
}
|
||||
|
||||
if(my(*target_p) && !EmptyString(target_p->localClient->opername) && IsOper(&source))
|
||||
if(my(*target_p) && !EmptyString(target_p->localClient->opername) && is(source, umode::OPER))
|
||||
{
|
||||
char buf[512];
|
||||
snprintf(buf, sizeof(buf), "is opered as %s, privset %s",
|
||||
|
@ -310,7 +310,7 @@ single_whois(client::client &source, client::client *target_p, int operspy)
|
|||
target_p->name, buf);
|
||||
}
|
||||
|
||||
if(IsSSLClient(target_p))
|
||||
if(is(*target_p, umode::SSLCLIENT))
|
||||
{
|
||||
char cbuf[256] = "is using a secure connection";
|
||||
|
||||
|
@ -319,7 +319,7 @@ single_whois(client::client &source, client::client *target_p, int operspy)
|
|||
|
||||
sendto_one_numeric(&source, RPL_WHOISSECURE, form_str(RPL_WHOISSECURE),
|
||||
target_p->name, cbuf);
|
||||
if((&source == target_p || IsOper(&source)) &&
|
||||
if((&source == target_p || is(source, umode::OPER)) &&
|
||||
target_p->certfp != NULL)
|
||||
sendto_one_numeric(&source, RPL_WHOISCERTFP,
|
||||
form_str(RPL_WHOISCERTFP),
|
||||
|
@ -328,7 +328,7 @@ single_whois(client::client &source, client::client *target_p, int operspy)
|
|||
|
||||
if(my(*target_p))
|
||||
{
|
||||
if (is_dyn_spoof(*target_p) && (IsOper(&source) || &source == target_p))
|
||||
if (is_dyn_spoof(*target_p) && (is(source, umode::OPER) || &source == target_p))
|
||||
{
|
||||
/* trick here: show a nonoper their own IP if
|
||||
* dynamic spoofed but not if auth{} spoofed
|
||||
|
@ -366,7 +366,7 @@ single_whois(client::client &source, client::client *target_p, int operspy)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (is_dyn_spoof(*target_p) && (IsOper(&source) || &source == target_p))
|
||||
if (is_dyn_spoof(*target_p) && (is(source, umode::OPER) || &source == target_p))
|
||||
{
|
||||
clear_dyn_spoof(*target_p);
|
||||
sendto_one_numeric(&source, RPL_WHOISHOST,
|
||||
|
|
|
@ -56,7 +56,7 @@ m_whowas(struct MsgBuf *msgbuf_p, client::client &client, client::client &source
|
|||
|
||||
static time_t last_used = 0L;
|
||||
|
||||
if(my(source) && !IsOper(&source))
|
||||
if(my(source) && !is(source, umode::OPER))
|
||||
{
|
||||
if(last_used + (parc > 3 ? ConfigFileEntry.pace_wait :
|
||||
ConfigFileEntry.pace_wait_simple
|
||||
|
|
Loading…
Reference in a new issue