|
@@ -420,7 +420,8 @@ static void cmd_mns_ban(struct userrec *u, int idx, char *par)
|
|
|
if (!chname)
|
|
if (!chname)
|
|
|
chname = dcc[idx].u.chat->con_chan;
|
|
chname = dcc[idx].u.chat->con_chan;
|
|
|
get_user_flagrec(u, &user, chname);
|
|
get_user_flagrec(u, &user, chname);
|
|
|
- if (!((glob_op(user) && !chan_deop(user)) || chan_op(user))) {
|
|
|
|
|
|
|
+
|
|
|
|
|
+ if ((!chan_op(user) && (!glob_op(user) || chan_deop(user)))) {
|
|
|
dprintf(idx, "You don't have access to remove bans on %s.\n", chname);
|
|
dprintf(idx, "You don't have access to remove bans on %s.\n", chname);
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
@@ -432,7 +433,7 @@ static void cmd_mns_ban(struct userrec *u, int idx, char *par)
|
|
|
if (lastdeletedmask)
|
|
if (lastdeletedmask)
|
|
|
mask = lastdeletedmask;
|
|
mask = lastdeletedmask;
|
|
|
else
|
|
else
|
|
|
- mask = s;
|
|
|
|
|
|
|
+ mask = s;
|
|
|
putlog(LOG_CMDS, "*", "#%s# -ban %s", dcc[idx].nick, mask);
|
|
putlog(LOG_CMDS, "*", "#%s# -ban %s", dcc[idx].nick, mask);
|
|
|
dprintf(idx, "%s: %s\n", IRC_REMOVEDBAN, mask);
|
|
dprintf(idx, "%s: %s\n", IRC_REMOVEDBAN, mask);
|
|
|
for (chan = chanset; chan != NULL; chan = chan->next)
|
|
for (chan = chanset; chan != NULL; chan = chan->next)
|
|
@@ -448,18 +449,23 @@ static void cmd_mns_ban(struct userrec *u, int idx, char *par)
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
if ((i = atoi(ban)) > 0) {
|
|
if ((i = atoi(ban)) > 0) {
|
|
|
|
|
+ /* substract the numer of global bans to get the number of the channel ban */
|
|
|
egg_snprintf(s, sizeof s, "%d", i);
|
|
egg_snprintf(s, sizeof s, "%d", i);
|
|
|
- j = u_delban(chan, s, 1);
|
|
|
|
|
- if (j > 0) {
|
|
|
|
|
- if (lastdeletedmask)
|
|
|
|
|
- mask = lastdeletedmask;
|
|
|
|
|
- else
|
|
|
|
|
- mask = s;
|
|
|
|
|
- putlog(LOG_CMDS, "*", "#%s# (%s) -ban %s", dcc[idx].nick, chan->dname,
|
|
|
|
|
- mask);
|
|
|
|
|
- dprintf(idx, "Removed %s channel ban: %s\n", chan->dname, mask);
|
|
|
|
|
- add_mode(chan, '-', 'b', mask);
|
|
|
|
|
- return;
|
|
|
|
|
|
|
+ j = u_delban(0, s, 0);
|
|
|
|
|
+ if (j < 0) {
|
|
|
|
|
+ egg_snprintf(s, sizeof s, "%d", -j);
|
|
|
|
|
+ j = u_delban(chan, s, 1);
|
|
|
|
|
+ if (j > 0) {
|
|
|
|
|
+ if (lastdeletedmask)
|
|
|
|
|
+ mask = lastdeletedmask;
|
|
|
|
|
+ else
|
|
|
|
|
+ mask = s;
|
|
|
|
|
+ putlog(LOG_CMDS, "*", "#%s# (%s) -ban %s", dcc[idx].nick, chan->dname,
|
|
|
|
|
+ mask);
|
|
|
|
|
+ dprintf(idx, "Removed %s channel ban: %s\n", chan->dname, mask);
|
|
|
|
|
+ add_mode(chan, '-', 'b', mask);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
i = 0;
|
|
i = 0;
|
|
|
for (b = chan->channel.ban; b && b->mask && b->mask[0]; b = b->next) {
|
|
for (b = chan->channel.ban; b && b->mask && b->mask[0]; b = b->next) {
|
|
@@ -488,8 +494,7 @@ static void cmd_mns_ban(struct userrec *u, int idx, char *par)
|
|
|
for (b = chan->channel.ban; b && b->mask && b->mask[0]; b = b->next) {
|
|
for (b = chan->channel.ban; b && b->mask && b->mask[0]; b = b->next) {
|
|
|
if (!rfc_casecmp(b->mask, ban)) {
|
|
if (!rfc_casecmp(b->mask, ban)) {
|
|
|
add_mode(chan, '-', 'b', b->mask);
|
|
add_mode(chan, '-', 'b', b->mask);
|
|
|
- dprintf(idx, "%s '%s' on %s.\n",
|
|
|
|
|
- IRC_REMOVEDBAN, b->mask, chan->dname);
|
|
|
|
|
|
|
+ dprintf(idx, "%s '%s' on %s.\n", IRC_REMOVEDBAN, b->mask, chan->dname);
|
|
|
putlog(LOG_CMDS, "*", "#%s# (%s) -ban %s [on channel]",
|
|
putlog(LOG_CMDS, "*", "#%s# (%s) -ban %s [on channel]",
|
|
|
dcc[idx].nick, dcc[idx].u.chat->con_chan, ban);
|
|
dcc[idx].nick, dcc[idx].u.chat->con_chan, ban);
|
|
|
return;
|
|
return;
|
|
@@ -498,12 +503,13 @@ static void cmd_mns_ban(struct userrec *u, int idx, char *par)
|
|
|
}
|
|
}
|
|
|
dprintf(idx, "No such ban.\n");
|
|
dprintf(idx, "No such ban.\n");
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
#ifdef S_IRCNET
|
|
#ifdef S_IRCNET
|
|
|
static void cmd_mns_exempt (struct userrec *u, int idx, char *par)
|
|
static void cmd_mns_exempt (struct userrec *u, int idx, char *par)
|
|
|
{
|
|
{
|
|
|
- int i = 0, j;
|
|
|
|
|
|
|
+ int console = 0, i = 0, j;
|
|
|
struct chanset_t *chan = NULL;
|
|
struct chanset_t *chan = NULL;
|
|
|
- char s[UHOSTLEN], *exempt, *chname;
|
|
|
|
|
|
|
+ char s[UHOSTLEN], *exempt, *chname, *mask;
|
|
|
masklist *e;
|
|
masklist *e;
|
|
|
|
|
|
|
|
if (!use_exempts) {
|
|
if (!use_exempts) {
|
|
@@ -517,84 +523,104 @@ static void cmd_mns_exempt (struct userrec *u, int idx, char *par)
|
|
|
exempt = newsplit(&par);
|
|
exempt = newsplit(&par);
|
|
|
if (par[0] && strchr(CHANMETA, par[0]))
|
|
if (par[0] && strchr(CHANMETA, par[0]))
|
|
|
chname = newsplit(&par);
|
|
chname = newsplit(&par);
|
|
|
- else
|
|
|
|
|
|
|
+ else {
|
|
|
chname = dcc[idx].u.chat->con_chan;
|
|
chname = dcc[idx].u.chat->con_chan;
|
|
|
|
|
+ console = 1;
|
|
|
|
|
+ }
|
|
|
if (chname || !(u->flags & USER_MASTER)) {
|
|
if (chname || !(u->flags & USER_MASTER)) {
|
|
|
if (!chname)
|
|
if (!chname)
|
|
|
chname = dcc[idx].u.chat->con_chan;
|
|
chname = dcc[idx].u.chat->con_chan;
|
|
|
- get_user_flagrec(u,&user,chname);
|
|
|
|
|
- if (!((glob_op(user) && !chan_deop(user)) || chan_op(user))) {
|
|
|
|
|
|
|
+ get_user_flagrec(u, &user, chname);
|
|
|
|
|
+ if ((!chan_op(user) && (!glob_op(user) || chan_deop(user)))) {
|
|
|
dprintf(idx, "You don't have access to remove exempts on %s.\n", chname);
|
|
dprintf(idx, "You don't have access to remove exempts on %s.\n", chname);
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
strncpyz(s, exempt, sizeof s);
|
|
strncpyz(s, exempt, sizeof s);
|
|
|
- i = u_delexempt(NULL, s, (u->flags & USER_MASTER));
|
|
|
|
|
- if (i > 0) {
|
|
|
|
|
- putlog(LOG_CMDS, "*", "#%s# -exempt %s", dcc[idx].nick, s);
|
|
|
|
|
- dprintf(idx, "%s: %s\n", IRC_REMOVEDEXEMPT, s);
|
|
|
|
|
- for (chan = chanset; chan != NULL; chan = chan->next)
|
|
|
|
|
- add_mode(chan, '-', 'e', s);
|
|
|
|
|
- return;
|
|
|
|
|
|
|
+ if (console) {
|
|
|
|
|
+ i = u_delexempt(NULL, s, (u->flags & USER_MASTER));
|
|
|
|
|
+ if (i > 0) {
|
|
|
|
|
+ if (lastdeletedmask)
|
|
|
|
|
+ mask = lastdeletedmask;
|
|
|
|
|
+ else
|
|
|
|
|
+ mask = s;
|
|
|
|
|
+ putlog(LOG_CMDS, "*", "#%s# -exempt %s", dcc[idx].nick, mask);
|
|
|
|
|
+ dprintf(idx, "%s: %s\n", IRC_REMOVEDEXEMPT, mask);
|
|
|
|
|
+ for (chan = chanset; chan != NULL; chan = chan->next)
|
|
|
|
|
+ add_mode(chan, '-', 'e', mask);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
/* Channel-specific exempt? */
|
|
/* Channel-specific exempt? */
|
|
|
if (chname)
|
|
if (chname)
|
|
|
chan = findchan_by_dname(chname);
|
|
chan = findchan_by_dname(chname);
|
|
|
if (chan) {
|
|
if (chan) {
|
|
|
- if (atoi(exempt) > 0) {
|
|
|
|
|
- egg_snprintf(s, sizeof s, "%d", -i);
|
|
|
|
|
- j = u_delexempt(chan, s, 1);
|
|
|
|
|
- if (j > 0) {
|
|
|
|
|
- putlog(LOG_CMDS, "*", "#%s# (%s) -exempt %s", dcc[idx].nick,
|
|
|
|
|
- chan->dname, s);
|
|
|
|
|
- dprintf(idx, "Removed %s channel exempt: %s\n", chan->dname, s);
|
|
|
|
|
- add_mode(chan, '-', 'e', s);
|
|
|
|
|
- return;
|
|
|
|
|
|
|
+ if ((i = atoi(exempt)) > 0) {
|
|
|
|
|
+ /* substract the numer of global exempts to get the number of the channel exempt */
|
|
|
|
|
+ egg_snprintf(s, sizeof s, "%d", i);
|
|
|
|
|
+ j = u_delexempt(0, s, 0);
|
|
|
|
|
+ if (j < 0) {
|
|
|
|
|
+ egg_snprintf(s, sizeof s, "%d", -j);
|
|
|
|
|
+ j = u_delexempt(chan, s, 1);
|
|
|
|
|
+ if (j > 0) {
|
|
|
|
|
+ if (lastdeletedmask)
|
|
|
|
|
+ mask = lastdeletedmask;
|
|
|
|
|
+ else
|
|
|
|
|
+ mask = s;
|
|
|
|
|
+ putlog(LOG_CMDS, "*", "#%s# (%s) -exempt %s", dcc[idx].nick,
|
|
|
|
|
+ chan->dname, mask);
|
|
|
|
|
+ dprintf(idx, "Removed %s channel exempt: %s\n", chan->dname, mask);
|
|
|
|
|
+ add_mode(chan, '-', 'e', mask);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
i = 0;
|
|
i = 0;
|
|
|
for (e = chan->channel.exempt; e && e->mask && e->mask[0]; e = e->next) {
|
|
for (e = chan->channel.exempt; e && e->mask && e->mask[0]; e = e->next) {
|
|
|
- if (!u_equals_mask(global_exempts, e->mask) &&
|
|
|
|
|
- !u_equals_mask(chan->exempts, e->mask)) {
|
|
|
|
|
- i++;
|
|
|
|
|
- if (i == -j) {
|
|
|
|
|
- add_mode(chan, '-', 'e', e->mask);
|
|
|
|
|
- dprintf(idx, "%s '%s' on %s.\n", IRC_REMOVEDEXEMPT,
|
|
|
|
|
- e->mask, chan->dname);
|
|
|
|
|
- putlog(LOG_CMDS, "*", "#%s# (%s) -exempt %s [on channel]",
|
|
|
|
|
- dcc[idx].nick, dcc[idx].u.chat->con_chan, exempt);
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ if (!u_equals_mask(global_exempts, e->mask) &&
|
|
|
|
|
+ !u_equals_mask(chan->exempts, e->mask)) {
|
|
|
|
|
+ i++;
|
|
|
|
|
+ if (i == -j) {
|
|
|
|
|
+ add_mode(chan, '-', 'e', e->mask);
|
|
|
|
|
+ dprintf(idx, "%s '%s' on %s.\n", IRC_REMOVEDEXEMPT,
|
|
|
|
|
+ e->mask, chan->dname);
|
|
|
|
|
+ putlog(LOG_CMDS, "*", "#%s# (%s) -exempt %s [on channel]",
|
|
|
|
|
+ dcc[idx].nick, dcc[idx].u.chat->con_chan, exempt);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} else {
|
|
|
j = u_delexempt(chan, exempt, 1);
|
|
j = u_delexempt(chan, exempt, 1);
|
|
|
if (j > 0) {
|
|
if (j > 0) {
|
|
|
- putlog(LOG_CMDS, "*", "#%s# (%s) -exempt %s", dcc[idx].nick,
|
|
|
|
|
- dcc[idx].u.chat->con_chan, exempt);
|
|
|
|
|
- dprintf(idx, "Removed %s channel exempt: %s\n", chname, exempt);
|
|
|
|
|
- add_mode(chan, '-', 'e', exempt);
|
|
|
|
|
- return;
|
|
|
|
|
|
|
+ putlog(LOG_CMDS, "*", "#%s# (%s) -exempt %s", dcc[idx].nick,
|
|
|
|
|
+ dcc[idx].u.chat->con_chan, exempt);
|
|
|
|
|
+ dprintf(idx, "Removed %s channel exempt: %s\n", chname, exempt);
|
|
|
|
|
+ add_mode(chan, '-', 'e', exempt);
|
|
|
|
|
+ return;
|
|
|
}
|
|
}
|
|
|
for (e = chan->channel.exempt; e && e->mask && e->mask[0]; e = e->next) {
|
|
for (e = chan->channel.exempt; e && e->mask && e->mask[0]; e = e->next) {
|
|
|
- if (!rfc_casecmp(e->mask, exempt)) {
|
|
|
|
|
- add_mode(chan, '-', 'e', e->mask);
|
|
|
|
|
- dprintf(idx, "%s '%s' on %s.\n",
|
|
|
|
|
- IRC_REMOVEDEXEMPT, e->mask, chan->dname);
|
|
|
|
|
- putlog(LOG_CMDS, "*", "#%s# (%s) -exempt %s [on channel]",
|
|
|
|
|
- dcc[idx].nick, dcc[idx].u.chat->con_chan, exempt);
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ if (!rfc_casecmp(e->mask, exempt)) {
|
|
|
|
|
+ add_mode(chan, '-', 'e', e->mask);
|
|
|
|
|
+ dprintf(idx, "%s '%s' on %s.\n",
|
|
|
|
|
+ IRC_REMOVEDEXEMPT, e->mask, chan->dname);
|
|
|
|
|
+ putlog(LOG_CMDS, "*", "#%s# (%s) -exempt %s [on channel]",
|
|
|
|
|
+ dcc[idx].nick, dcc[idx].u.chat->con_chan, exempt);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ } else {
|
|
|
|
|
+ dprintf(idx, "Invalid channel.\n");
|
|
|
|
|
+ return;
|
|
|
}
|
|
}
|
|
|
dprintf(idx, "No such exemption.\n");
|
|
dprintf(idx, "No such exemption.\n");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
static void cmd_mns_invite (struct userrec *u, int idx, char *par)
|
|
static void cmd_mns_invite (struct userrec *u, int idx, char *par)
|
|
|
{
|
|
{
|
|
|
- int i = 0, j;
|
|
|
|
|
|
|
+ int console = 0, i = 0, j;
|
|
|
struct chanset_t *chan = NULL;
|
|
struct chanset_t *chan = NULL;
|
|
|
- char s[UHOSTLEN], *invite, *chname;
|
|
|
|
|
|
|
+ char s[UHOSTLEN], *invite, *chname, *mask;
|
|
|
masklist *inv;
|
|
masklist *inv;
|
|
|
|
|
|
|
|
if (!use_invites) {
|
|
if (!use_invites) {
|
|
@@ -608,80 +634,101 @@ static void cmd_mns_invite (struct userrec *u, int idx, char *par)
|
|
|
invite = newsplit(&par);
|
|
invite = newsplit(&par);
|
|
|
if (par[0] && strchr(CHANMETA, par[0]))
|
|
if (par[0] && strchr(CHANMETA, par[0]))
|
|
|
chname = newsplit(&par);
|
|
chname = newsplit(&par);
|
|
|
- else
|
|
|
|
|
|
|
+ else {
|
|
|
chname = dcc[idx].u.chat->con_chan;
|
|
chname = dcc[idx].u.chat->con_chan;
|
|
|
|
|
+ console = 1;
|
|
|
|
|
+ }
|
|
|
if (chname || !(u->flags & USER_MASTER)) {
|
|
if (chname || !(u->flags & USER_MASTER)) {
|
|
|
if (!chname)
|
|
if (!chname)
|
|
|
chname = dcc[idx].u.chat->con_chan;
|
|
chname = dcc[idx].u.chat->con_chan;
|
|
|
- get_user_flagrec(u,&user,chname);
|
|
|
|
|
- if (!((glob_op(user) && !chan_deop(user)) || chan_op(user))) {
|
|
|
|
|
|
|
+ get_user_flagrec(u, &user, chname);
|
|
|
|
|
+ if ((!chan_op(user) && (!glob_op(user) || chan_deop(user)))) {
|
|
|
dprintf(idx, "You don't have access to remove invites on %s.\n", chname);
|
|
dprintf(idx, "You don't have access to remove invites on %s.\n", chname);
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
strncpyz(s, invite, sizeof s);
|
|
strncpyz(s, invite, sizeof s);
|
|
|
- i = u_delinvite(NULL, s, (u->flags & USER_MASTER));
|
|
|
|
|
- if (i > 0) {
|
|
|
|
|
- putlog(LOG_CMDS, "*", "#%s# -invite %s", dcc[idx].nick, s);
|
|
|
|
|
- dprintf(idx, "%s: %s\n", IRC_REMOVEDINVITE, s);
|
|
|
|
|
- for (chan = chanset; chan != NULL; chan = chan->next)
|
|
|
|
|
- add_mode(chan, '-', 'I', s);
|
|
|
|
|
- return;
|
|
|
|
|
|
|
+ if (console) {
|
|
|
|
|
+ i = u_delinvite(NULL, s, (u->flags & USER_MASTER));
|
|
|
|
|
+ if (i > 0) {
|
|
|
|
|
+ if (lastdeletedmask)
|
|
|
|
|
+ mask = lastdeletedmask;
|
|
|
|
|
+ else
|
|
|
|
|
+ mask = s;
|
|
|
|
|
+ putlog(LOG_CMDS, "*", "#%s# -invite %s", dcc[idx].nick, mask);
|
|
|
|
|
+ dprintf(idx, "%s: %s\n", IRC_REMOVEDINVITE, mask);
|
|
|
|
|
+ for (chan = chanset; chan != NULL; chan = chan->next)
|
|
|
|
|
+ add_mode(chan, '-', 'I', mask);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
/* Channel-specific invite? */
|
|
/* Channel-specific invite? */
|
|
|
if (chname)
|
|
if (chname)
|
|
|
chan = findchan_by_dname(chname);
|
|
chan = findchan_by_dname(chname);
|
|
|
if (chan) {
|
|
if (chan) {
|
|
|
- if (atoi(invite) > 0) {
|
|
|
|
|
- egg_snprintf(s, sizeof s, "%d", -i);
|
|
|
|
|
- j = u_delinvite(chan, s, 1);
|
|
|
|
|
- if (j > 0) {
|
|
|
|
|
- putlog(LOG_CMDS, "*", "#%s# (%s) -invite %s", dcc[idx].nick,
|
|
|
|
|
- chan->dname, s);
|
|
|
|
|
- dprintf(idx, "Removed %s channel invite: %s\n", chan->dname, s);
|
|
|
|
|
- add_mode(chan, '-', 'I', s);
|
|
|
|
|
- return;
|
|
|
|
|
|
|
+ if ((i = atoi(invite)) > 0) {
|
|
|
|
|
+ /* substract the numer of global invites to get the number of the channel invite */
|
|
|
|
|
+ egg_snprintf(s, sizeof s, "%d", i);
|
|
|
|
|
+ j = u_delinvite(0, s, 0);
|
|
|
|
|
+ if (j < 0) {
|
|
|
|
|
+ egg_snprintf(s, sizeof s, "%d", -j);
|
|
|
|
|
+ j = u_delinvite(chan, s, 1);
|
|
|
|
|
+ if (j > 0) {
|
|
|
|
|
+ if (lastdeletedmask)
|
|
|
|
|
+ mask = lastdeletedmask;
|
|
|
|
|
+ else
|
|
|
|
|
+ mask = s;
|
|
|
|
|
+ putlog(LOG_CMDS, "*", "#%s# (%s) -invite %s", dcc[idx].nick,
|
|
|
|
|
+ chan->dname, mask);
|
|
|
|
|
+ dprintf(idx, "Removed %s channel invite: %s\n", chan->dname, mask);
|
|
|
|
|
+ add_mode(chan, '-', 'I', mask);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
i = 0;
|
|
i = 0;
|
|
|
for (inv = chan->channel.invite; inv && inv->mask && inv->mask[0];
|
|
for (inv = chan->channel.invite; inv && inv->mask && inv->mask[0];
|
|
|
- inv = inv->next) {
|
|
|
|
|
- if (!u_equals_mask(global_invites, inv->mask) &&
|
|
|
|
|
- !u_equals_mask(chan->invites, inv->mask)) {
|
|
|
|
|
- i++;
|
|
|
|
|
- if (i == -j) {
|
|
|
|
|
- add_mode(chan, '-', 'I', inv->mask);
|
|
|
|
|
- dprintf(idx, "%s '%s' on %s.\n", IRC_REMOVEDINVITE,
|
|
|
|
|
- inv->mask, chan->dname);
|
|
|
|
|
- putlog(LOG_CMDS, "*", "#%s# (%s) -invite %s [on channel]",
|
|
|
|
|
- dcc[idx].nick, dcc[idx].u.chat->con_chan, invite);
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ inv = inv->next) {
|
|
|
|
|
+ if (!u_equals_mask(global_invites, inv->mask) &&
|
|
|
|
|
+ !u_equals_mask(chan->invites, inv->mask)) {
|
|
|
|
|
+ i++;
|
|
|
|
|
+ if (i == -j) {
|
|
|
|
|
+ add_mode(chan, '-', 'I', inv->mask);
|
|
|
|
|
+ dprintf(idx, "%s '%s' on %s.\n", IRC_REMOVEDINVITE,
|
|
|
|
|
+ inv->mask, chan->dname);
|
|
|
|
|
+ putlog(LOG_CMDS, "*", "#%s# (%s) -invite %s [on channel]",
|
|
|
|
|
+ dcc[idx].nick, dcc[idx].u.chat->con_chan, invite);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} else {
|
|
|
j = u_delinvite(chan, invite, 1);
|
|
j = u_delinvite(chan, invite, 1);
|
|
|
if (j > 0) {
|
|
if (j > 0) {
|
|
|
- putlog(LOG_CMDS, "*", "#%s# (%s) -invite %s", dcc[idx].nick,
|
|
|
|
|
- dcc[idx].u.chat->con_chan, invite);
|
|
|
|
|
- dprintf(idx, "Removed %s channel invite: %s\n", chname, invite);
|
|
|
|
|
- add_mode(chan, '-', 'I', invite);
|
|
|
|
|
- return;
|
|
|
|
|
|
|
+ putlog(LOG_CMDS, "*", "#%s# (%s) -invite %s", dcc[idx].nick,
|
|
|
|
|
+ dcc[idx].u.chat->con_chan, invite);
|
|
|
|
|
+ dprintf(idx, "Removed %s channel invite: %s\n", chname, invite);
|
|
|
|
|
+ add_mode(chan, '-', 'I', invite);
|
|
|
|
|
+ return;
|
|
|
}
|
|
}
|
|
|
for (inv = chan->channel.invite; inv && inv->mask && inv->mask[0];
|
|
for (inv = chan->channel.invite; inv && inv->mask && inv->mask[0];
|
|
|
- inv = inv->next) {
|
|
|
|
|
- if (!rfc_casecmp(inv->mask, invite)) {
|
|
|
|
|
- add_mode(chan, '-', 'I', inv->mask);
|
|
|
|
|
- dprintf(idx, "%s '%s' on %s.\n",
|
|
|
|
|
- IRC_REMOVEDINVITE, inv->mask, chan->dname);
|
|
|
|
|
- putlog(LOG_CMDS, "*", "#%s# (%s) -invite %s [on channel]",
|
|
|
|
|
- dcc[idx].nick, dcc[idx].u.chat->con_chan, invite);
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ inv = inv->next) {
|
|
|
|
|
+ if (!rfc_casecmp(inv->mask, invite)) {
|
|
|
|
|
+ add_mode(chan, '-', 'I', inv->mask);
|
|
|
|
|
+ dprintf(idx, "%s '%s' on %s.\n",
|
|
|
|
|
+ IRC_REMOVEDINVITE, inv->mask, chan->dname);
|
|
|
|
|
+ putlog(LOG_CMDS, "*", "#%s# (%s) -invite %s [on channel]",
|
|
|
|
|
+ dcc[idx].nick, dcc[idx].u.chat->con_chan, invite);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ } else {
|
|
|
|
|
+ dprintf(idx, "Invalid channel.\n");
|
|
|
|
|
+ return;
|
|
|
}
|
|
}
|
|
|
dprintf(idx, "No such invite.\n");
|
|
dprintf(idx, "No such invite.\n");
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
#endif
|
|
#endif
|
|
|
static void cmd_bans(struct userrec *u, int idx, char *par)
|
|
static void cmd_bans(struct userrec *u, int idx, char *par)
|
|
|
{
|
|
{
|