1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
z--- channel.c.orig Sun Feb 1 23:11:23 1998
+++ channel.c Mon Feb 2 09:16:08 1998
@@ -907,7 +907,8 @@
{
if (badop != 2 && strlen(modebuf) > (size_t) 1)
sendto_channel_butserv(chptr, sptr, ":%s MODE %s %s %s",
- parv[0], chptr->chname, modebuf, parabuf);
+ IsAnOper(sptr) ? me.name : parv[0],
+ chptr->chname, modebuf, parabuf);
if (IsLocalChannel(chptr->chname))
return 0;
/* We send a creationtime of 0, to mark it as a hack --Run */
@@ -918,19 +919,23 @@
if (badop != 2)
{
sendto_lowprot_butone(cptr, 9, ":%s MODE %s %s %s %lu",
- parv[0], chptr->chname, modebuf, parabuf,
+ IsAnOper(sptr) ? me.name : parv[0],
+ chptr->chname, modebuf, parabuf,
(badop == 4) ? (time_t) 0 : chptr->creationtime);
sendto_highprot_butone(cptr, 10, ":%s MODE %s %s %s %lu",
- parv[0], chptr->chname, modebuf, nparabuf,
+ IsAnOper(sptr) ? me.name : parv[0],
+ chptr->chname, modebuf, nparabuf,
(badop == 4) ? (time_t) 0 : chptr->creationtime);
}
}
else
{
sendto_lowprot_butone(cptr, 9, ":%s MODE %s %s %s",
- parv[0], chptr->chname, modebuf, parabuf);
+ IsAnOper(sptr) ? me.name : parv[0],
+ chptr->chname, modebuf, parabuf);
sendto_highprot_butone(cptr, 10, ":%s MODE %s %s %s",
- parv[0], chptr->chname, modebuf, nparabuf);
+ IsAnOper(sptr) ? me.name : parv[0],
+ chptr->chname, modebuf, nparabuf);
}
}
return 0;
@@ -1079,7 +1084,7 @@
break;
}
if (whatt == MODE_ADD && IsServer(sptr) && who->from != sptr->from &&
- !find_conf_host(cptr->confs, sptr->name, CONF_UWORLD))
+ !IsAnOper(sptr) && !find_conf_host(cptr->confs, sptr->name, CONF_UWORLD))
break;
if (!(member = find_user_link(chptr->members, who)))
{
@@ -1320,20 +1325,21 @@
} /* end of while loop for MODE processing */
/* Now reject non chan ops */
- if (!IsServer(cptr) && (!tmp || !(tmp->flags & CHFL_CHANOP)))
+ if (!IsPrivileged(cptr) && (!tmp || !(tmp->flags & CHFL_CHANOP)))
{
*badop = 0;
return (opcnt || new != mode->mode || limitset || keychange) ? 0 : -1;
}
- if (doesop && newtime == 0 && IsServer(sptr))
+ if (doesop && newtime == 0 && IsPrivileged(sptr))
*badop = 2;
- if (*badop >= 2 &&
- (aconf = find_conf_host(cptr->confs, sptr->name, CONF_UWORLD)))
+ if (*badop >= 2 && (IsAnOper(sptr) ||
+ (aconf = find_conf_host(cptr->confs, sptr->name, CONF_UWORLD))))
*badop = 4;
bounce = (*badop == 1 || *badop == 2 || is_deopped(sptr, chptr)) ? 1 : 0;
+ if (IsAnOper(sptr)) bounce = 0;
whatt = 0;
for (ip = flags; *ip; ip += 2)
@@ -1782,7 +1788,7 @@
/* Bounce here */
if (!hacknotice && *bmodebuf && chptr->creationtime)
{
- if (Protocol(cptr) < 10)
+ if (IsAnOper(cptr) || Protocol(cptr) < 10)
sendto_one(cptr, ":%s MODE %s %s %s %lu",
me.name, chptr->chname, bmodebuf, bparambuf,
*badop == 2 ? (time_t) 0 : chptr->creationtime);
@@ -2441,7 +2447,7 @@
TS_LAG_TIME lag, or an admin is hacking */
badop = 2;
/* This causes a HACK notice on all upstream servers: */
- if (Protocol(cptr) < 10)
+ if (IsAnOper(cptr) || Protocol(cptr) < 10)
sendto_one(cptr, ":%s MODE %s -o %s 0",
me.name, chptr->chname, sptr->name);
else
@@ -2459,7 +2465,7 @@
channel, probably a net.ride */
badop = 1;
/* Send a deop upstream: */
- if (Protocol(cptr) < 10)
+ if (IsAnOper(cptr) || Protocol(cptr) < 10)
sendto_one(cptr, ":%s MODE %s -o %s %lu", me.name,
chptr->chname, sptr->name, chptr->creationtime);
else
@@ -3438,7 +3444,7 @@
}
lp2 = find_user_link(chptr->members, sptr);
- if (MyClient(sptr) || Protocol(cptr) < 10)
+ if (MyClient(sptr) || IsAnOper(cptr) || Protocol(cptr) < 10)
{
if (!(who = find_chasing(sptr, parv[2], NULL)))
return 0; /* No such user left! */
@@ -3467,7 +3473,7 @@
sendto_one(cptr, ":%s JOIN %s", who->name, parv[1]);
if (lp->flags & CHFL_CHANOP)
{
- if (Protocol(cptr) < 10)
+ if (IsAnOper(cptr) || Protocol(cptr) < 10)
sendto_one(cptr, ":%s MODE %s +o %s %lu",
me.name, parv[1], who->name, chptr->creationtime);
else
@@ -4274,7 +4280,8 @@
chptr = find_channel(parv[1], NullChn);
*params = '\0';
- if (Protocol(cptr) < 10) /* We don't get numeric nicks from P09 */
+ if (IsAnOper(cptr) || Protocol(cptr) < 10)
+ /* We don't get numeric nicks from P09 */
{ /* servers, so this can be sent "As Is" */
if (mtype == 1)
{
@@ -4284,9 +4291,9 @@
strcat(params, parv[i++]);
}
sprintf_irc(sendbuf,
- ":%s NOTICE * :*** Notice -- %sHACK(%d): %s MODE %s %s%s [%lu]",
- me.name, (badop == 3) ? "BOUNCE or " : "", badop,
- parv[0], parv[1], parv[2], params, chptr->creationtime);
+ ":%s NOTICE * :*** Notice -- %sOPCOM %s MODE %s %s%s",
+ me.name, (badop == 3) ? "bounce or " : "",
+ parv[0], parv[1], parv[2], params);
sendbufto_op_mask((badop == 3) ? SNO_HACK3 :
(badop == 4) ? SNO_HACK4 : SNO_HACK2);
|