p = buffer;
- if(is_owner(msptr))
+ if(is_admin(msptr))
{
if(!combine)
return "!";
return 0;
}
-/* is_owner()
+/* is_admin()
*
- * input - membership to check for owner
- * output - 1 if the user is an owner, 0 if the user is not or owner
+ * input - membership to check for admin
+ * output - 1 if the user is an admin, 0 if the user is not or admin
* is disabled.
* side effects -
*
*/
int
-is_owner(struct membership *msptr)
+is_admin(struct membership *msptr)
{
- if(!ConfigChannel.use_owner)
+ if(!ConfigChannel.use_admin)
return 0;
if(is_chmode_a(msptr))
return 1;
/* is_any_op()
*
* input - membership to check for ops
- * output - 1 if the user is op, halfop, or owner, 0 elsewise
+ * output - 1 if the user is op, halfop, or admin, 0 elsewise
* side effects -
*/
int
is_any_op(struct membership *msptr)
{
- if(is_chanop(msptr) || is_halfop(msptr) || is_owner(msptr))
+ if(is_chanop(msptr) || is_halfop(msptr) || is_admin(msptr))
return 1;
else
return 0;
/* is_chanop_voiced()
*
* input - memebership to check for status
- * output - 1 if the user is op, halfop, owner, or voice, 0 elsewise
+ * output - 1 if the user is op, halfop, admin, or voice, 0 elsewise
* side effects -
*/
int
is_chanop_voiced(struct membership *msptr)
{
- if(is_chanop(msptr) || is_voiced(msptr) || is_halfop(msptr) || is_owner(msptr))
+ if(is_chanop(msptr) || is_voiced(msptr) || is_halfop(msptr) || is_admin(msptr))
return 1;
else
return 0;
int
can_kick_deop(struct membership *source, struct membership *target)
{
- if(is_chanop(source) && !is_owner(target))
+ if(is_chanop(source) && !is_admin(target))
return 1;
else if(is_halfop(source) && !is_any_op(target))
return 1;
- else if(is_owner(source))
+ else if(is_admin(source))
return 1;
return 0;
char src_host[NICKLEN + USERLEN + HOSTLEN + 6];
char src_iphost[NICKLEN + USERLEN + HOSTLEN + 6];
char src_althost[NICKLEN + USERLEN + HOSTLEN + 6];
+ char *text = rb_strdup("");
int use_althost = 0;
int i = 0;
hook_data_channel moduledata;
s_assert(source_p->localClient != NULL);
- if(IsOverride(source_p))
- {
- sendto_realops_snomask(SNO_GENERAL, L_NETWIDE,
- "%s is overriding JOIN to [%s]",
- get_oper_name(source_p), chptr->chname);
- return 0;
- }
-
rb_sprintf(src_host, "%s!%s@%s", source_p->name, source_p->username, source_p->host);
rb_sprintf(src_iphost, "%s!%s@%s", source_p->name, source_p->username, source_p->sockhost);
if(source_p->localClient->mangledhost != NULL)
if((is_banned(chptr, source_p, NULL, src_host, src_iphost)) == CHFL_BAN)
return (ERR_BANNEDFROMCHAN);
+ rb_sprintf(text, "K%s", source_p->id);
+
DICTIONARY_FOREACH(md, &iter, chptr->metadata)
{
- if(!strcmp(md->name, "KICKNOREJOIN") && !strcmp(md->value, source_p->id) && (md->timevalue + ConfigChannel.kick_no_rejoin_time > rb_current_time()))
+ if(!strcmp(md->value, "KICKNOREJOIN") && !strcmp(md->name, text) && (md->timevalue + ConfigChannel.kick_no_rejoin_time > rb_current_time()))
return ERR_KICKNOREJOIN;
/* cleanup any stale KICKNOREJOIN metadata we find while we're at it */
- if(!strcmp(md->name, "KICKNOREJOIN") && !(md->timevalue + ConfigChannel.kick_no_rejoin_time > rb_current_time()))
+ if(!strcmp(md->value, "KICKNOREJOIN") && !(md->timevalue + ConfigChannel.kick_no_rejoin_time > rb_current_time()))
channel_metadata_delete(chptr, md->name, 0);
}
if(is_chanop_voiced(msptr))
return CAN_SEND_OPV;
- if(IsOverride(source_p))
- return CAN_SEND_NONOP;
-
if(chptr->mode.mode & MODE_MODERATED)
return CAN_SEND_NO;
/* can_join checks for +i key, bans etc */
if((i = can_join(source_p, chptr, key)))
{
- if ((i != ERR_NEEDREGGEDNICK && i != ERR_THROTTLE && i != ERR_INVITEONLYCHAN && i != ERR_CHANNELISFULL) ||
+ if(IsOverride(source_p))
+ {
+ sendto_wallops_flags(UMODE_WALLOP, &me,
+ "%s is overriding JOIN to [%s]",
+ get_oper_name(source_p), chptr->chname);
+ sendto_server(NULL, chptr, NOCAPS, NOCAPS,
+ ":%s WALLOPS :%s is overriding JOIN to [%s]",
+ me.name, get_oper_name(source_p), chptr->chname);
+ }
+ else if ((i != ERR_NEEDREGGEDNICK && i != ERR_THROTTLE && i != ERR_INVITEONLYCHAN && i != ERR_CHANNELISFULL) ||
(!ConfigChannel.use_forward || (chptr = check_forward(source_p, chptr, key)) == NULL))
{
/* might be wrong, but is there any other better location for such?
continue;
}
-
- sendto_one_numeric(source_p, ERR_LINKCHANNEL, form_str(ERR_LINKCHANNEL), name, chptr->chname);
+ else
+ sendto_one_numeric(source_p, ERR_LINKCHANNEL, form_str(ERR_LINKCHANNEL), name, chptr->chname);
}
if(flags == 0 &&