|
@@ -678,7 +678,7 @@ got_deop(struct chanset_t *chan, memberlist *m, memberlist *mv, char *isserver)
|
|
|
*/
|
|
*/
|
|
|
(reversing && (!chan_bitch(chan) || chk_op(victim, chan))) ||
|
|
(reversing && (!chan_bitch(chan) || chk_op(victim, chan))) ||
|
|
|
/* Reop bots to avoid them needing to ask */
|
|
/* Reop bots to avoid them needing to ask */
|
|
|
- ((role & ROLE_PROTECT) && mv->user && mv->user->bot && chk_op(victim, chan))
|
|
|
|
|
|
|
+ ((chan->role & ROLE_PROTECT) && mv->user && mv->user->bot && chk_op(victim, chan))
|
|
|
)
|
|
)
|
|
|
) {
|
|
) {
|
|
|
/* Then we'll bless the victim */
|
|
/* Then we'll bless the victim */
|
|
@@ -716,7 +716,7 @@ got_deop(struct chanset_t *chan, memberlist *m, memberlist *mv, char *isserver)
|
|
|
} else {
|
|
} else {
|
|
|
// Revenge kick clients that deop our bots
|
|
// Revenge kick clients that deop our bots
|
|
|
if (chan->revenge && m && m != mv && mv->user && mv->user->bot && !(m->user && m->user->bot)) {
|
|
if (chan->revenge && m && m != mv && mv->user && mv->user->bot && !(m->user && m->user->bot)) {
|
|
|
- if ((role & ROLE_REVENGE) && !chan_sentkick(m) && me_op(chan)) {
|
|
|
|
|
|
|
+ if ((chan->role & ROLE_REVENGE) && !chan_sentkick(m) && me_op(chan)) {
|
|
|
m->flags |= SENTKICK;
|
|
m->flags |= SENTKICK;
|
|
|
dprintf(DP_MODE_NEXT, "KICK %s %s :%s%s\r\n", chan->name, m->nick, kickprefix, response(RES_REVENGE));
|
|
dprintf(DP_MODE_NEXT, "KICK %s %s :%s%s\r\n", chan->name, m->nick, kickprefix, response(RES_REVENGE));
|
|
|
} else {
|
|
} else {
|
|
@@ -763,7 +763,7 @@ got_ban(struct chanset_t *chan, memberlist *m, char *mask, char *isserver)
|
|
|
|
|
|
|
|
// Revenge kick clients that ban our bots
|
|
// Revenge kick clients that ban our bots
|
|
|
if (chan->revenge && m && matched_bot && !(m->user && m->user->bot)) {
|
|
if (chan->revenge && m && matched_bot && !(m->user && m->user->bot)) {
|
|
|
- if ((role & ROLE_REVENGE) && !chan_sentkick(m)) {
|
|
|
|
|
|
|
+ if ((chan->role & ROLE_REVENGE) && !chan_sentkick(m)) {
|
|
|
m->flags |= SENTKICK;
|
|
m->flags |= SENTKICK;
|
|
|
dprintf(DP_MODE_NEXT, "KICK %s %s :%s%s\r\n", chan->name, m->nick, kickprefix, response(RES_REVENGE));
|
|
dprintf(DP_MODE_NEXT, "KICK %s %s :%s%s\r\n", chan->name, m->nick, kickprefix, response(RES_REVENGE));
|
|
|
} else {
|
|
} else {
|
|
@@ -1137,10 +1137,10 @@ gotmode(char *from, char *msg)
|
|
|
if (me_op(chan)) {
|
|
if (me_op(chan)) {
|
|
|
char tmp[1024] = "";
|
|
char tmp[1024] = "";
|
|
|
|
|
|
|
|
- if (!isserver[0] && role && (!u || (u && !u->bot))) {
|
|
|
|
|
|
|
+ if (!isserver[0] && chan->role && (!u || (u && !u->bot))) {
|
|
|
if (m && deops >= 3) {
|
|
if (m && deops >= 3) {
|
|
|
if (chan->mdop) {
|
|
if (chan->mdop) {
|
|
|
- if ((role & ROLE_PROTECT) && !chan_sentkick(m)) {
|
|
|
|
|
|
|
+ if ((chan->role & ROLE_PROTECT) && !chan_sentkick(m)) {
|
|
|
m->flags |= SENTKICK;
|
|
m->flags |= SENTKICK;
|
|
|
const size_t len = simple_snprintf(tmp, sizeof(tmp), "KICK %s %s :%s%s\r\n", chan->name, m->nick, kickprefix, response(RES_MASSDEOP));
|
|
const size_t len = simple_snprintf(tmp, sizeof(tmp), "KICK %s %s :%s%s\r\n", chan->name, m->nick, kickprefix, response(RES_MASSDEOP));
|
|
|
dprintf_real(DP_MODE_NEXT, tmp, len, sizeof(tmp));
|
|
dprintf_real(DP_MODE_NEXT, tmp, len, sizeof(tmp));
|
|
@@ -1160,7 +1160,7 @@ gotmode(char *from, char *msg)
|
|
|
if (ops >= 3) {
|
|
if (ops >= 3) {
|
|
|
if (chan->mop) {
|
|
if (chan->mop) {
|
|
|
if (m && !chan_sentkick(m)) {
|
|
if (m && !chan_sentkick(m)) {
|
|
|
- if ((role & ROLE_PROTECT)) {
|
|
|
|
|
|
|
+ if ((chan->role & ROLE_PROTECT)) {
|
|
|
m->flags |= SENTKICK;
|
|
m->flags |= SENTKICK;
|
|
|
const size_t len = simple_snprintf(tmp, sizeof(tmp), "KICK %s %s :%s%s\r\n", chan->name, m->nick, kickprefix, response(RES_MANUALOP));
|
|
const size_t len = simple_snprintf(tmp, sizeof(tmp), "KICK %s %s :%s%s\r\n", chan->name, m->nick, kickprefix, response(RES_MANUALOP));
|
|
|
dprintf_real(DP_MODE_NEXT, tmp, len, sizeof(tmp));
|
|
dprintf_real(DP_MODE_NEXT, tmp, len, sizeof(tmp));
|
|
@@ -1260,7 +1260,7 @@ gotmode(char *from, char *msg)
|
|
|
/* manop */
|
|
/* manop */
|
|
|
if (chan->manop && u && !u->bot) {
|
|
if (chan->manop && u && !u->bot) {
|
|
|
|
|
|
|
|
- if (m && (role & ROLE_PROTECT)) {
|
|
|
|
|
|
|
+ if (m && (chan->role & ROLE_PROTECT)) {
|
|
|
/* Kick opper */
|
|
/* Kick opper */
|
|
|
if (!chan_sentkick(m)) {
|
|
if (!chan_sentkick(m)) {
|
|
|
const size_t len = simple_snprintf(tmp, sizeof(tmp), "KICK %s %s :%s%s\r\n", chan->name, m->nick, kickprefix, response(RES_MANUALOP));
|
|
const size_t len = simple_snprintf(tmp, sizeof(tmp), "KICK %s %s :%s%s\r\n", chan->name, m->nick, kickprefix, response(RES_MANUALOP));
|
|
@@ -1271,7 +1271,7 @@ gotmode(char *from, char *msg)
|
|
|
deflag_user(u, DEFLAG_EVENT_MANUALOP, tmp, chan);
|
|
deflag_user(u, DEFLAG_EVENT_MANUALOP, tmp, chan);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if (role & ROLE_KICK) {
|
|
|
|
|
|
|
+ if (chan->role & ROLE_KICK) {
|
|
|
for (i = 0; i < modecnt; i++) {
|
|
for (i = 0; i < modecnt; i++) {
|
|
|
if (msign == '+' && mmode == 'o' && !match_my_nick(mparam)) {
|
|
if (msign == '+' && mmode == 'o' && !match_my_nick(mparam)) {
|
|
|
mv = ismember(chan, mparam);
|
|
mv = ismember(chan, mparam);
|