mirror of
https://github.com/unrealircd/unrealircd.git
synced 2026-07-09 06:03:13 +02:00
Invisibility go bye bye!
This commit is contained in:
@@ -395,3 +395,8 @@ it will display real hosts instead of masked ones
|
||||
in the replies.
|
||||
--Luke
|
||||
===================================
|
||||
|
||||
Oper invisibility is no longer enabled by default
|
||||
but is a provided option in ./Config
|
||||
--Luke
|
||||
===================================
|
||||
|
||||
@@ -81,6 +81,7 @@ CRYPT_OPER_PASSWORD=""
|
||||
CRYPT_LINK_PASSWORD=""
|
||||
CRYPT_ILINE_PASSWORD=""
|
||||
CRYPT_XLINE_PASSWORD=""
|
||||
ENABLE_INVISOPER=""
|
||||
LISTEN_SIZE="5"
|
||||
MAXSENDQLENGTH="3000000"
|
||||
BUFFERPOOL="(9 * MAXSENDQLENGTH)"
|
||||
@@ -1502,6 +1503,41 @@ fi
|
||||
esac
|
||||
done
|
||||
|
||||
FOO=""
|
||||
runonce=""
|
||||
while [ -z "$FOO" ] ; do
|
||||
if [ -n "$ENABLE_INVISOPER" ] ; then
|
||||
FOO="Yes"
|
||||
else
|
||||
FOO="No"
|
||||
fi
|
||||
echo ""
|
||||
echo "Do you want to enable total invisibility (+I) mode for opers?"
|
||||
echo $n "[$FOO] -> $c"
|
||||
if [ -z "$AUTO_CONFIG" -o -n "$runonce" ] ; then
|
||||
read cc
|
||||
else
|
||||
cc=""
|
||||
runonce=Yes
|
||||
fi
|
||||
if [ -z "$cc" ] ; then
|
||||
cc=$FOO
|
||||
fi
|
||||
case "$cc" in
|
||||
[Yy]*)
|
||||
ENABLE_INVISOPER="1"
|
||||
;;
|
||||
[Nn]*)
|
||||
ENABLE_INVISOPER=""
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
echo "You need to enter either Yes or No here..."
|
||||
echo ""
|
||||
FOO=""
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
FOO=""
|
||||
runonce=""
|
||||
@@ -1852,6 +1888,11 @@ if [ -n "$CRYPT_XLINE_PASSWORD" ] ; then
|
||||
else
|
||||
echo "#undef CRYPT_XLINE_PASSWORD" >> $OPTIONS_H
|
||||
fi
|
||||
if [ -n "$ENABLE_INVISOPER" ] ; then
|
||||
echo "#define ENABLE_INVISOPER 1" >> $OPTIONS_H
|
||||
else
|
||||
echo "#undef ENABLE_INVISOPER" >> $OPTIONS_H
|
||||
fi
|
||||
if [ -n "$HUB" ] ; then
|
||||
echo "#define HUB 1" >> $OPTIONS_H
|
||||
else
|
||||
@@ -1897,6 +1938,7 @@ CRYPT_OPER_PASSWORD="$CRYPT_OPER_PASSWORD"
|
||||
CRYPT_LINK_PASSWORD="$CRYPT_LINK_PASSWORD"
|
||||
CRYPT_ILINE_PASSWORD="$CRYPT_ILINE_PASSWORD"
|
||||
CRYPT_XLINE_PASSWORD="$CRYPT_XLINE_PASSWORD"
|
||||
ENABLE_INVISOPER="$ENABLE_INVISOPER"
|
||||
LISTEN_SIZE="$LISTEN_SIZE"
|
||||
MAXSENDQLENGTH="$MAXSENDQLENGTH"
|
||||
BUFFERPOOL="$BUFFERPOOL"
|
||||
|
||||
+4
-1
@@ -82,7 +82,10 @@
|
||||
|
||||
#define ERR_HOSTILENAME 455
|
||||
|
||||
#define ERR_NOHIDING 459
|
||||
#ifdef ENABLE_INVISOPER
|
||||
#define ERR_NOHIDING 459
|
||||
#endif
|
||||
|
||||
#define ERR_NOTFORHALFOPS 460
|
||||
#define ERR_NEEDMOREPARAMS 461
|
||||
#define ERR_ALREADYREGISTRED 462
|
||||
|
||||
+20
-4
@@ -247,14 +247,23 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
|
||||
#define UMODE_BOT 0x400000 /* User is a bot */
|
||||
#define UMODE_SECURE 0x800000 /* User is a secure connect */
|
||||
#define UMODE_FCLIENT 0x1000000 /* recieve client on far connects.. */
|
||||
#define UMODE_HIDING 0x2000000 /* Totally invisible .. */
|
||||
|
||||
#ifdef ENABLE_INVISOPER
|
||||
#define UMODE_HIDING 0x2000000 /* Totally invisible .. */
|
||||
#endif
|
||||
|
||||
#define UMODE_VICTIM 0x8000000 /* Intentional Victim */
|
||||
#define UMODE_DEAF 0x10000000
|
||||
#define UMODE_HIDEOPER 0x20000000 /* Hide oper mode */
|
||||
#define UMODE_SETHOST 0x40000000 /* used sethost */
|
||||
#define UMODE_STRIPBADWORDS 0x80000000 /* */
|
||||
|
||||
#define SEND_UMODES (UMODE_INVISIBLE|UMODE_OPER|UMODE_WALLOP|UMODE_FAILOP|UMODE_HELPOP|UMODE_REGNICK|UMODE_SADMIN|UMODE_NETADMIN|UMODE_COADMIN|UMODE_ADMIN|UMODE_SERVICES|UMODE_HIDE|UMODE_EYES|UMODE_WHOIS|UMODE_KIX|UMODE_BOT|UMODE_SECURE|UMODE_FCLIENT|UMODE_HIDING|UMODE_DEAF|UMODE_VICTIM|UMODE_HIDEOPER|UMODE_SETHOST|UMODE_STRIPBADWORDS|UMODE_JUNK)
|
||||
#ifdef ENABLE_INVISOPER
|
||||
#define SEND_UMODES (UMODE_INVISIBLE|UMODE_OPER|UMODE_WALLOP|UMODE_FAILOP|UMODE_HELPOP|UMODE_REGNICK|UMODE_SADMIN|UMODE_NETADMIN|UMODE_COADMIN|UMODE_ADMIN|UMODE_SERVICES|UMODE_HIDE|UMODE_EYES|UMODE_WHOIS|UMODE_KIX|UMODE_BOT|UMODE_SECURE|UMODE_FCLIENT|UMODE_HIDING|UMODE_DEAF|UMODE_VICTIM|UMODE_HIDEOPER|UMODE_SETHOST|UMODE_STRIPBADWORDS|UMODE_JUNK)
|
||||
#else
|
||||
#define SEND_UMODES (UMODE_INVISIBLE|UMODE_OPER|UMODE_WALLOP|UMODE_FAILOP|UMODE_HELPOP|UMODE_REGNICK|UMODE_SADMIN|UMODE_NETADMIN|UMODE_COADMIN|UMODE_ADMIN|UMODE_SERVICES|UMODE_HIDE|UMODE_EYES|UMODE_WHOIS|UMODE_KIX|UMODE_BOT|UMODE_SECURE|UMODE_FCLIENT|UMODE_DEAF|UMODE_VICTIM|UMODE_HIDEOPER|UMODE_SETHOST|UMODE_STRIPBADWORDS|UMODE_JUNK)
|
||||
#endif
|
||||
|
||||
#define ALL_UMODES (SEND_UMODES|UMODE_SERVNOTICE|UMODE_LOCOP|UMODE_KILLS|UMODE_CLIENT|UMODE_FLOOD|UMODE_SERVICES|UMODE_EYES)
|
||||
#define FLAGS_ID (FLAGS_DOID|FLAGS_GOTID)
|
||||
|
||||
@@ -283,7 +292,10 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
|
||||
#define IsKix(x) ((x)->umodes & UMODE_KIX)
|
||||
#define IsHelpOp(x) ((x)->umodes & UMODE_HELPOP)
|
||||
#define IsAdmin(x) ((x)->umodes & UMODE_ADMIN)
|
||||
#define IsHiding(x) ((x)->umodes & UMODE_HIDING)
|
||||
|
||||
#ifdef ENABLE_INVISOPER
|
||||
#define IsHiding(x) ((x)->umodes & UMODE_HIDING)
|
||||
#endif
|
||||
|
||||
#ifdef STRIPBADWORDS
|
||||
#define IsFilteringWords(x) ((x)->umodes & UMODE_STRIPBADWORDS)
|
||||
@@ -1043,7 +1055,11 @@ struct Channel {
|
||||
#define MODE_NOKNOCK 0x800000
|
||||
#define MODE_NOINVITE 0x1000000
|
||||
#define MODE_FLOODLIMIT 0x2000000
|
||||
#define MODE_NOHIDING 0x4000000
|
||||
|
||||
#ifdef ENABLE_INVISOPER
|
||||
#define MODE_NOHIDING 0x4000000
|
||||
#endif
|
||||
|
||||
#ifdef STRIPBADWORDS
|
||||
#define MODE_STRIPBADWORDS 0x8000000
|
||||
#endif
|
||||
|
||||
+25
-3
@@ -142,7 +142,9 @@ aCtab cFlagTab[] = {
|
||||
{MODE_NOKNOCK, 'K', 0, 0}, /* knock knock (no way!) */
|
||||
{MODE_NOINVITE, 'V', 0, 0}, /* no invites */
|
||||
{MODE_FLOODLIMIT, 'f', 0, 1}, /* flood limiter */
|
||||
#ifdef ENABLE_INVISOPER
|
||||
{MODE_NOHIDING, 'H', 0, 0}, /* no +I joiners */
|
||||
#endif
|
||||
#ifdef STRIPBADWORDS
|
||||
{MODE_STRIPBADWORDS, 'G', 0, 0}, /* no badwords */
|
||||
#endif
|
||||
@@ -1565,6 +1567,7 @@ int do_mode_char(chptr, modetype, modechar, param, what, cptr, pcount, pvar,
|
||||
if (!IsServer(cptr) && !IsULine(cptr))
|
||||
break;
|
||||
goto setthephuckingmode;
|
||||
#ifdef ENABLE_INVISOPER
|
||||
case MODE_NOHIDING:
|
||||
if (!IsSkoAdmin(cptr) && !IsServer(cptr)
|
||||
&& !IsULine(cptr))
|
||||
@@ -1575,6 +1578,7 @@ int do_mode_char(chptr, modetype, modechar, param, what, cptr, pcount, pvar,
|
||||
break;
|
||||
}
|
||||
goto setthephuckingmode;
|
||||
#endif
|
||||
case MODE_SECRET:
|
||||
case MODE_PRIVATE:
|
||||
case MODE_MODERATED:
|
||||
@@ -2268,8 +2272,10 @@ static int can_join(cptr, sptr, chptr, key, link, parv)
|
||||
return (ERR_ADMONLY);
|
||||
}
|
||||
|
||||
#ifdef ENABLE_INVISOPER
|
||||
if ((chptr->mode.mode & MODE_NOHIDING) && IsHiding(sptr))
|
||||
return (ERR_NOHIDING);
|
||||
#endif
|
||||
|
||||
if ((IsOper(sptr) && !((chptr->mode.mode & MODE_ADMONLY))) && !(ib==0))
|
||||
{
|
||||
@@ -2741,9 +2747,12 @@ int channel_link(cptr, sptr, parc, parv)
|
||||
/*
|
||||
** notify all other users on the new channel
|
||||
*/
|
||||
#ifdef ENABLE_INVISOPER
|
||||
if (!IsHiding(sptr))
|
||||
#endif
|
||||
sendto_channel_butserv(chptr, sptr,
|
||||
":%s JOIN :%s", parv[0], name);
|
||||
#ifdef ENABLE_INVISOPER
|
||||
else
|
||||
{
|
||||
if (MyClient(sptr))
|
||||
@@ -2756,6 +2765,7 @@ int channel_link(cptr, sptr, parc, parv)
|
||||
"*** Invisibility -- %s (%s@%s) JOIN %s", sptr->name,
|
||||
sptr->user->username, sptr->user->realhost, chptr->chname);
|
||||
}
|
||||
#endif
|
||||
sendto_serv_butone_token(cptr, parv[0], MSG_JOIN,
|
||||
TOK_JOIN, name);
|
||||
|
||||
@@ -2964,6 +2974,7 @@ int m_join(cptr, sptr, parc, parv)
|
||||
/*
|
||||
** notify all other users on the new channel
|
||||
*/
|
||||
#ifdef ENABLE_INVISOPER
|
||||
if (IsHiding(sptr))
|
||||
{
|
||||
if (MyClient(sptr))
|
||||
@@ -2986,6 +2997,9 @@ int m_join(cptr, sptr, parc, parv)
|
||||
}
|
||||
}
|
||||
else if (chptr->mode.mode & MODE_AUDITORIUM)
|
||||
#else
|
||||
if (chptr->mode.mode & MODE_AUDITORIUM)
|
||||
#endif
|
||||
{
|
||||
if (MyClient(sptr))
|
||||
sendto_one(sptr, ":%s!%s@%s JOIN :%s",
|
||||
@@ -3128,7 +3142,7 @@ int m_part(cptr, sptr, parc, parv)
|
||||
|
||||
if (1)
|
||||
{
|
||||
|
||||
#ifdef ENABLE_INVISOPER
|
||||
if (IsHiding(sptr))
|
||||
{
|
||||
if (MyClient(sptr))
|
||||
@@ -3171,6 +3185,9 @@ int m_part(cptr, sptr, parc, parv)
|
||||
chptr->chname, comment);
|
||||
}
|
||||
else if (chptr->mode.mode & MODE_AUDITORIUM)
|
||||
#else
|
||||
if (chptr->mode.mode & MODE_AUDITORIUM)
|
||||
#endif
|
||||
{
|
||||
if (MyClient(sptr))
|
||||
{
|
||||
@@ -3317,6 +3334,7 @@ int m_kick(cptr, sptr, parc, parv)
|
||||
goto attack;
|
||||
|
||||
/* Hiding patch by }{ */
|
||||
#ifdef ENABLE_INVISOPER
|
||||
if (IsHiding(who))
|
||||
{
|
||||
sendto_one(sptr,
|
||||
@@ -3328,7 +3346,7 @@ int m_kick(cptr, sptr, parc, parv)
|
||||
chptr->chname, comment);
|
||||
break;
|
||||
}
|
||||
|
||||
#endif
|
||||
/* If you're kicking yourself, it really shouldn't matter what modes you have set
|
||||
* unless the channel is +Q
|
||||
*/
|
||||
@@ -4319,8 +4337,10 @@ int m_names(cptr, sptr, parc, parv)
|
||||
acptr = cm->value.cptr;
|
||||
if (IsInvisible(acptr) && !member)
|
||||
continue;
|
||||
#ifdef ENABLE_INVISOPER
|
||||
if (IsHiding(acptr) && acptr != sptr && !(IsNetAdmin(sptr)))
|
||||
continue;
|
||||
#endif
|
||||
if (chptr->mode.mode & MODE_AUDITORIUM)
|
||||
if (!is_chan_op(sptr, chptr)
|
||||
&& !is_chanprot(sptr, chptr)
|
||||
@@ -4855,7 +4875,9 @@ int m_sjoin(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
modeflags = 0;
|
||||
}
|
||||
add_user_to_channel(chptr, acptr, modeflags);
|
||||
if (!IsHiding(acptr))
|
||||
#ifdef ENABLE_INVISOPER
|
||||
if (!IsHiding(acptr))
|
||||
#endif
|
||||
sendto_channel_butserv(chptr, acptr,
|
||||
":%s JOIN :%s", nick,
|
||||
chptr->chname);
|
||||
|
||||
@@ -886,9 +886,15 @@ int m_svsnoop(cptr, sptr, parc, parv)
|
||||
acptr->umodes &=
|
||||
~(UMODE_NETADMIN | UMODE_CLIENT |
|
||||
UMODE_FLOOD | UMODE_EYES | UMODE_WHOIS);
|
||||
#ifdef ENABLE_INVISOPER
|
||||
acptr->umodes &=
|
||||
~(UMODE_KIX | UMODE_FCLIENT | UMODE_HIDING |
|
||||
UMODE_DEAF | UMODE_HIDEOPER);
|
||||
#else
|
||||
acptr->umodes &=
|
||||
~(UMODE_KIX | UMODE_FCLIENT |
|
||||
UMODE_DEAF | UMODE_HIDEOPER);
|
||||
#endif
|
||||
acptr->oflag = 0;
|
||||
|
||||
}
|
||||
@@ -2855,9 +2861,15 @@ int m_svso(cptr, sptr, parc, parv)
|
||||
acptr->umodes &=
|
||||
~(UMODE_NETADMIN | UMODE_CLIENT |
|
||||
UMODE_FLOOD | UMODE_EYES | UMODE_WHOIS);
|
||||
#ifdef ENABLE_INVISOPER
|
||||
acptr->umodes &=
|
||||
~(UMODE_KIX | UMODE_FCLIENT | UMODE_HIDING |
|
||||
UMODE_DEAF | UMODE_HIDEOPER);
|
||||
#else
|
||||
acptr->umodes &=
|
||||
~(UMODE_KIX | UMODE_FCLIENT |
|
||||
UMODE_DEAF | UMODE_HIDEOPER);
|
||||
#endif
|
||||
acptr->oflag = 0;
|
||||
send_umode_out(acptr, acptr, fLag);
|
||||
}
|
||||
|
||||
+1
-1
@@ -84,7 +84,7 @@ char serveropts[] = {
|
||||
#ifdef USE_SYSLOG
|
||||
'Y',
|
||||
#endif
|
||||
#ifdef OPER_NO_HIDING
|
||||
#ifdef ENABLE_INVISOPER
|
||||
'H',
|
||||
#endif
|
||||
#ifdef NO_IDENT_CHECKING
|
||||
|
||||
@@ -1056,9 +1056,11 @@ int m_sendumode(cptr, sptr, parc, parv)
|
||||
sendto_umode(UMODE_CODER, "%s", parv[2]);
|
||||
break;
|
||||
*/
|
||||
#ifdef ENABLE_INVISOPER
|
||||
case 'I':
|
||||
sendto_umode(UMODE_HIDING, "%s", parv[2]);
|
||||
break;
|
||||
#endif
|
||||
case 'w':
|
||||
sendto_umode(UMODE_WALLOP, "%s", parv[2]);
|
||||
break;
|
||||
|
||||
+26
-5
@@ -88,7 +88,9 @@ static int user_modes[] = { UMODE_OPER, 'o',
|
||||
UMODE_KIX, 'q',
|
||||
UMODE_BOT, 'B',
|
||||
UMODE_FCLIENT, 'F',
|
||||
#ifdef ENABLE_INVISOPER
|
||||
UMODE_HIDING, 'I',
|
||||
#endif
|
||||
UMODE_SECURE, 'z',
|
||||
UMODE_DEAF, 'd',
|
||||
UMODE_VICTIM, 'v',
|
||||
@@ -2452,8 +2454,10 @@ static void do_who(sptr, acptr, repchan)
|
||||
/* checks for channel /who's and nonopers */
|
||||
if (channelwho && !IsOper(sptr) && sptr != acptr)
|
||||
{
|
||||
#ifdef ENABLE_INVISOPER
|
||||
if IsHiding(acptr)
|
||||
return;
|
||||
#endif
|
||||
if (IsAuditorium(repchan) && !is_chan_op(acptr,repchan)
|
||||
&& !is_chan_op(sptr,repchan))
|
||||
return;
|
||||
@@ -2462,10 +2466,10 @@ static void do_who(sptr, acptr, repchan)
|
||||
if (IsInvisible(acptr) && !IsMember(sptr,repchan))
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef ENABLE_INVISOPER
|
||||
if (channelwho && IsHiding(acptr) && !IsNetAdmin(sptr))
|
||||
return;
|
||||
|
||||
#endif
|
||||
if (acptr->user->away)
|
||||
status[i++] = 'G';
|
||||
else
|
||||
@@ -2484,11 +2488,19 @@ static void do_who(sptr, acptr, repchan)
|
||||
* simply because they are an oper. (adds ! to the who "flags")
|
||||
*/
|
||||
if (IsAnOper(sptr) && sptr != acptr)
|
||||
#ifdef ENABLE_INVISOPER
|
||||
if (channelwho && IsHiding(acptr) && IsNetAdmin(sptr) ||
|
||||
IsInvisible(acptr) && !IsMember(sptr,repchan) ||
|
||||
IsAuditorium(repchan) && !is_chan_op(acptr,repchan) ||
|
||||
!ShowChannel(sptr,repchan))
|
||||
status[i++] = '!';
|
||||
#else
|
||||
if (channelwho && IsNetAdmin(sptr) ||
|
||||
IsInvisible(acptr) && !IsMember(sptr,repchan) ||
|
||||
IsAuditorium(repchan) && !is_chan_op(acptr,repchan) ||
|
||||
!ShowChannel(sptr,repchan))
|
||||
status[i++] = '!';
|
||||
#endif
|
||||
|
||||
/* Channel operator */
|
||||
if (repchan && is_chan_op(acptr, repchan))
|
||||
@@ -2509,8 +2521,10 @@ static void do_who(sptr, acptr, repchan)
|
||||
":%s NOTICE %s :*** %s either did a /who or a specific /who on you",
|
||||
me.name, acptr->name, sptr->name);
|
||||
}
|
||||
#ifdef ENABLE_INVISOPER
|
||||
if (IsHiding(acptr) && sptr != acptr && !IsNetAdmin(sptr))
|
||||
repchan = NULL;
|
||||
#endif
|
||||
|
||||
sendto_one(sptr, rpl_str(RPL_WHOREPLY), me.name, sptr->name,
|
||||
(repchan) ? (repchan->chname) : "*", acptr->user->username,
|
||||
@@ -4329,11 +4343,13 @@ int m_umode(cptr, sptr, parc, parv)
|
||||
&& MyClient(sptr))
|
||||
break;
|
||||
goto def;
|
||||
#ifdef ENABLE_INVISOPER
|
||||
case 'I':
|
||||
if (NO_OPER_HIDING == 1 && what == MODE_ADD
|
||||
&& MyClient(sptr))
|
||||
break;
|
||||
goto def;
|
||||
#endif
|
||||
case 'B':
|
||||
if (what == MODE_ADD && MyClient(sptr))
|
||||
(void)m_botmotd(sptr, sptr, 1, parv);
|
||||
@@ -4422,9 +4438,11 @@ int m_umode(cptr, sptr, parc, parv)
|
||||
ClearNetAdmin(sptr);
|
||||
if (IsCoAdmin(sptr) && !OPIsCoAdmin(sptr))
|
||||
ClearCoAdmin(sptr);
|
||||
#ifdef ENABLE_INVISOPER
|
||||
if ((sptr->umodes & UMODE_HIDING)
|
||||
&& !(sptr->oflag & OFLAG_INVISIBLE))
|
||||
sptr->umodes &= ~UMODE_HIDING;
|
||||
#endif
|
||||
if (MyClient(sptr) && (sptr->umodes & UMODE_SECURE)
|
||||
&& !IsSecure(sptr))
|
||||
sptr->umodes &= ~UMODE_SECURE;
|
||||
@@ -4468,17 +4486,17 @@ int m_umode(cptr, sptr, parc, parv)
|
||||
/* Agents
|
||||
if ((sptr->umodes & (UMODE_AGENT)) && !(sptr->oflag & OFLAG_AGENT))
|
||||
sptr->umodes &= ~UMODE_AGENT; */
|
||||
#ifdef ENABLE_INVISOPER
|
||||
if ((sptr->umodes & UMODE_HIDING) && !IsAnOper(sptr))
|
||||
sptr->umodes &= ~UMODE_HIDING;
|
||||
|
||||
|
||||
if ((sptr->umodes & UMODE_HIDING)
|
||||
&& !(sptr->oflag & OFLAG_INVISIBLE))
|
||||
sptr->umodes &= ~UMODE_HIDING;
|
||||
#endif
|
||||
if (MyClient(sptr) && (sptr->umodes & UMODE_SECURE)
|
||||
&& !IsSecure(sptr))
|
||||
sptr->umodes &= ~UMODE_SECURE;
|
||||
|
||||
#ifdef ENABLE_INVISOPER
|
||||
if ((sptr->umodes & (UMODE_HIDING))
|
||||
&& !(setflags & UMODE_HIDING))
|
||||
{
|
||||
@@ -4490,9 +4508,11 @@ int m_umode(cptr, sptr, parc, parv)
|
||||
me.name, sptr->name);
|
||||
sendto_channels_inviso_part(sptr);
|
||||
}
|
||||
#endif
|
||||
if ((sptr->umodes & UMODE_JUNK) && !IsOper(sptr))
|
||||
sptr->umodes &= ~UMODE_JUNK;
|
||||
|
||||
#ifdef ENABLE_INVISOPER
|
||||
if (!(sptr->umodes & (UMODE_HIDING)))
|
||||
{
|
||||
if (setflags & UMODE_HIDING)
|
||||
@@ -4507,6 +4527,7 @@ int m_umode(cptr, sptr, parc, parv)
|
||||
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
/*
|
||||
* If I understand what this code is doing correctly...
|
||||
|
||||
@@ -299,8 +299,12 @@ int w_whois(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef ENABLE_INVISOPER
|
||||
if (buf[0] != '\0' && !IsULine(acptr) && (!IsHiding(acptr) ||
|
||||
IsNetAdmin(sptr) || sptr == acptr))
|
||||
#else
|
||||
if (buf[0] != '\0' && !IsULine(acptr))
|
||||
#endif
|
||||
sendto_one(sptr,
|
||||
":IRC PRIVMSG %s :%s is on %s",
|
||||
sptr->name, name, buf);
|
||||
|
||||
Reference in New Issue
Block a user