Unbroke +A channels and bans. :-/
--Luke
===================================
+
+Removed +I. Don't you dare even think about whining.
+--Luke
+===================================
+
+Added chmode +R, requires umode +r to speak.
+--Luke
+===================================
CRYPT_LINK_PASSWORD=""
CRYPT_ILINE_PASSWORD=""
CRYPT_XLINE_PASSWORD=""
-ENABLE_INVISOPER=""
LISTEN_SIZE="5"
MAXSENDQLENGTH="3000000"
BUFFERPOOL="(9 * MAXSENDQLENGTH)"
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=""
while [ -z "$FOO" ] ; do
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
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"
#define ERR_HOSTILENAME 455
-#ifdef ENABLE_INVISOPER
- #define ERR_NOHIDING 459
-#endif
-
#define ERR_NOTFORHALFOPS 460
#define ERR_NEEDMOREPARAMS 461
#define ERR_ALREADYREGISTRED 462
void sendto_realops PROTO((char *pattern, ...));
void sendto_serv_butone_token PROTO((aClient *one, char *prefix, char *command, char *token, char *pattern, ...));
void sendto_serv_butone_token_opt PROTO((aClient *one, int opt, char *prefix, char *command, char *token, char *pattern, ...));
-void sendto_channel_ntadmins PROTO((aClient *from, aChannel *chptr, char *pattern, ...));
/* support.c */
char *my_itoa PROTO((int i));
#define UMODE_SECURE 0x800000 /* User is a secure connect */
#define UMODE_FCLIENT 0x1000000 /* recieve client on far connects.. */
-#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 /* */
-#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 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)
#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)
#define IsHelpOp(x) ((x)->umodes & UMODE_HELPOP)
#define IsAdmin(x) ((x)->umodes & UMODE_ADMIN)
-#ifdef ENABLE_INVISOPER
- #define IsHiding(x) ((x)->umodes & UMODE_HIDING)
-#endif
-
#ifdef STRIPBADWORDS
#define IsFilteringWords(x) ((x)->umodes & UMODE_STRIPBADWORDS)
#endif
#endif
#define OFLAG_COFOUND 0x20000000
#define OFLAG_WMASTER 0x40000000
-#ifdef ENABLE_INVISOPER
- #define OFLAG_INVISIBLE 0x80000000
-#endif
#define OFLAG_LOCAL (OFLAG_REHASH|OFLAG_HELPOP|OFLAG_LOCOP|OFLAG_LROUTE|OFLAG_LKILL|OFLAG_KLINE|OFLAG_UNKLINE|OFLAG_LNOTICE|OFLAG_UMODEC|OFLAG_ZLINE|OFLAG_HIDE)
#define OFLAG_GLOBAL (OFLAG_LOCAL|OFLAG_GLOBOP|OFLAG_WALLOP|OFLAG_UMODEF|OFLAG_GROUTE|OFLAG_GKILL|OFLAG_GNOTICE|OFLAG_HIDE)
#define OFLAG_ISGLOBAL (OFLAG_GROUTE|OFLAG_GKILL|OFLAG_GNOTICE)
#define MODE_NOKNOCK 0x800000
#define MODE_NOINVITE 0x1000000
#define MODE_FLOODLIMIT 0x2000000
-
-#ifdef ENABLE_INVISOPER
- #define MODE_NOHIDING 0x4000000
-#endif
-
+#define MODE_MODREG 0x4000000
#ifdef STRIPBADWORDS
#define MODE_STRIPBADWORDS 0x8000000
#endif
#undef CRYPT_LINK_PASSWORD
#undef CRYPT_ILINE_PASSWORD
#undef CRYPT_XLINE_PASSWORD
-#undef ENABLE_INVISOPER
#define HUB 1
#define HAVE_REGEX 1
#define NOSPOOF 1
{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
+ {MODE_MODREG, 'M', 0, 0}, /* need umode +r to talk */
#ifdef STRIPBADWORDS
{MODE_STRIPBADWORDS, 'G', 0, 0}, /* no badwords */
#endif
#define CANNOT_SEND_NOCOLOR 3
#define CANNOT_SEND_BAN 4
#define CANNOT_SEND_NOCTCP 5
+#define CANNOT_SEND_MODREG 6
int can_send(cptr, chptr, msgtext)
aClient *cptr;
lp = find_user_link(chptr->members, cptr);
+ if ((chptr->mode.mode & MODE_MODREG) && !IsRegNick(cptr) &&
+ (!lp || !(lp->flags & (CHFL_CHANOP|CHFL_VOICE|CHFL_CHANOWNER|
+ CHFL_HALFOP|CHFL_CHANPROT))))
+ return (CANNOT_SEND_MODREG);
if (chptr->mode.mode & MODE_MODERATED &&
(!lp
break;
}
goto setthephuckingmode;
-#ifdef ENABLE_INVISOPER
- case MODE_NOHIDING:
- if (!IsSkoAdmin(cptr) && !IsServer(cptr) && !IsULine(cptr))
- {
- sendto_one(cptr,
- ":%s NOTICE %s :*** No Hiding mode (+H) can only be set by Administrators.",
- me.name, cptr->name);
- break;
- }
- goto setthephuckingmode;
-#endif
case MODE_SECRET:
case MODE_PRIVATE:
case MODE_MODERATED:
case MODE_TOPICLIMIT:
case MODE_NOPRIVMSGS:
case MODE_RGSTRONLY:
+ case MODE_MODREG:
case MODE_NOCOLOR:
case MODE_NOKICKS:
case MODE_STRIP:
if ((chptr->mode.mode & MODE_ADMONLY) && !IsSkoAdmin(sptr))
return (ERR_ADMONLY);
-#ifdef ENABLE_INVISOPER
- if ((chptr->mode.mode & MODE_NOHIDING) && IsHiding(sptr))
- return (ERR_NOHIDING);
-#endif
-
banned = is_banned(cptr, sptr, chptr);
/* Admin, Coadmin, Netadmin, and SAdmin can still walk +b in +O */
/*
** notify all other users on the new channel
*/
-#ifdef ENABLE_INVISOPER
- if (!IsHiding(sptr))
-#endif
- sendto_channel_butserv(chptr, sptr,
+ sendto_channel_butserv(chptr, sptr,
":%s JOIN :%s", parv[0], name);
-#ifdef ENABLE_INVISOPER
- else
- {
- if (MyClient(sptr))
- sendto_one(sptr, ":%s!%s@%s JOIN :%s",
- sptr->name, sptr->user->username,
- (IsHidden(sptr) ? sptr->
- user->virthost : sptr->user->realhost),
- name);
- sendto_umode(UMODE_ADMIN,
- "*** 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);
/*
** notify all other users on the new channel
*/
-#ifdef ENABLE_INVISOPER
- if (IsHiding(sptr))
- {
- if (MyClient(sptr))
- {
- sendto_one(sptr, ":%s!%s@%s JOIN :%s",
- sptr->name, sptr->user->username,
- (IsHidden(sptr) ? sptr->
- user->virthost : sptr->user->realhost),
- chptr->chname);
- sendto_umode(UMODE_ADMIN,
- "*** Invisibility -- %s (%s@%s) JOIN %s",
- sptr->name, sptr->user->username,
- sptr->user->realhost, chptr->chname);
- sendto_serv_butone_token(&me, me.name, MSG_SMO,
- TOK_SMO, "A :Invisibility -- %s (%s@%s) JOIN %s",
- sptr->name, sptr->user->username,
- sptr->user->realhost, chptr->chname);
- sendto_channel_ntadmins(sptr, chptr, ":%s JOIN :%s",
- sptr->name, chptr->chname);
- }
- }
- 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",
if (1)
{
-#ifdef ENABLE_INVISOPER
- if (IsHiding(sptr))
- {
- if (MyClient(sptr))
- {
- sendto_umode(UMODE_ADMIN,
- "*** Invisibility -- %s (%s@%s) PART %s",
- sptr->name, sptr->user->username,
- sptr->user->realhost, chptr->chname);
- sendto_serv_butone_token(&me,
- me.name, MSG_SMO, TOK_SMO,
- "A :Invisibility -- %s (%s@%s) PART %s",
- sptr->name, sptr->user->username,
- sptr->user->realhost, chptr->chname);
- if (parc < 3)
- sendto_channel_ntadmins(sptr, chptr, ":%s PART %s",
- sptr->name, chptr->chname);
- else
- sendto_channel_ntadmins(sptr, chptr, ":%s PART %s :%s",
- sptr->name, chptr->chname, comment);
- }
- if (MyClient(sptr))
- /* awful hack .. */
- if (parc < 3)
- sendto_one(sptr,
- ":%s!%s@%s PART %s",
- sptr->name,
- sptr->user->username,
- (IsHidden(sptr) ?
- sptr->user->virthost :
- sptr->user->realhost),
- chptr->chname);
- else
- sendto_one(sptr,
- ":%s!%s@%s PART %s :%s",
- sptr->name,
- sptr->user->username,
- (IsHidden(sptr) ?
- sptr->user->virthost :
- sptr->user->realhost),
- chptr->chname, comment);
- }
- else if (chptr->mode.mode & MODE_AUDITORIUM)
-#else
if (chptr->mode.mode & MODE_AUDITORIUM)
-#endif
{
if (MyClient(sptr))
{
if (IsServer(sptr))
goto attack;
- /* Hiding patch by }{ */
-#ifdef ENABLE_INVISOPER
- if (IsHiding(who))
- {
- sendto_one(sptr,
- err_str(ERR_NOSUCHNICK),
- me.name, parv[0], user, name);
- sendto_one(who,
- ":%s NOTICE %s :*** Invisibility: %s tried to kick you from %s (%s)",
- me.name, who->name, parv[0],
- 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
*/
return 0;
}
-#ifdef ENABLE_INVISOPER
- if (over == 1 && !IsHiding(sptr))
-#else
if (over == 1 && MyConnect(acptr))
-#endif
sendto_channelops_butone(NULL, &me, chptr,
":%s NOTICE @%s :OperOverride -- %s invited him/herself into the channel.",
me.name, chptr->chname, sptr->name);
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)
modeflags = 0;
}
add_user_to_channel(chptr, acptr, modeflags);
-#ifdef ENABLE_INVISOPER
- if (!IsHiding(acptr))
-#endif
- sendto_channel_butserv(chptr, acptr,
+ sendto_channel_butserv(chptr, acptr,
":%s JOIN :%s", nick,
chptr->chname);
sendto_serv_butone_sjoin(cptr, ":%s JOIN %s",
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;
}
#define STAR1 OFLAG_SADMIN|OFLAG_ADMIN|OFLAG_NETADMIN|OFLAG_COADMIN
#define STAR2 OFLAG_ZLINE|OFLAG_HIDE|OFLAG_WHOIS
-#ifdef ENABLE_INVISOPER
- #define STAR3 OFLAG_INVISIBLE
-#endif
static int oper_access[] = {
-#ifdef ENABLE_INVISOPER
- ~(STAR1 | STAR2 | STAR3), '*',
-#else
~(STAR1 | STAR2 ), '*',
-#endif
OFLAG_LOCAL, 'o',
OFLAG_GLOBAL, 'O',
OFLAG_REHASH, 'r',
/* OFLAG_AGENT, 'S',*/
#ifndef NO_OPEROVERRIDE
OFLAG_CANOVER, 'v',
-#endif
-#ifdef ENABLE_INVISOPER
- OFLAG_INVISIBLE, '^',
#endif
0, 0
};
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);
}
#ifdef USE_SYSLOG
'Y',
#endif
-#ifdef ENABLE_INVISOPER
- 'R',
-#endif
#ifndef NO_OPEROVERRIDE
'O',
#endif
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;
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',
static char *err_cantsend[] = {
"You need voice (+v)",
"No external channel messages",
- "Colour is not permitted in this channel",
+ "Color is not permitted in this channel",
"You are banned",
"CTCPs are not permitted in this channel",
+ "You must have a registered nick (+r) to talk on this channel",
NULL
};
/* 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;
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
* 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 (
IsInvisible(acptr) && !IsMember(sptr,repchan) ||
IsAuditorium(repchan) && !is_chan_op(acptr,repchan) ||
!ShowChannel(sptr,repchan))
status[i++] = '!';
-#endif
else if (sptr != acptr)
-#ifdef ENABLE_INVISOPER
- if (channelwho && IsHiding(acptr) ||
- IsInvisible(acptr) && !IsMember(sptr,repchan) ||
- IsAuditorium(repchan) && !is_chan_op(acptr,repchan) ||
- !ShowChannel(sptr,repchan))
- return;
-#else
if (
IsInvisible(acptr) && !IsMember(sptr,repchan) ||
IsAuditorium(repchan) && !is_chan_op(acptr,repchan) ||
!ShowChannel(sptr,repchan))
return;
-#endif
/* Channel owner */
if (repchan && is_chanowner(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,
mlen = strlen(me.name) + strlen(parv[0]) + 6 +
strlen(name);
-#ifdef ENABLE_INVISOPER
- if (!IsServices(acptr) && !IsHiding(acptr) ||
- ((IsServices(acptr) || IsHiding(acptr)) && IsNetAdmin(sptr))
- )
-#else
if (!IsServices(acptr) || IsServices(acptr) && IsNetAdmin(sptr))
-#endif
{
for (len = 0, *buf = '\0', lp = user->channel; lp;
lp = lp->next)
&& 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);
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;
/* 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))
- {
- sendto_umode(UMODE_ADMIN,
- "[+I] Activated total invisibility mode on %s",
- sptr->name);
- sendto_serv_butone(cptr,
- ":%s SMO A :[+I] Activated total invisibility mode on %s",
- 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)
- {
- sendto_umode(UMODE_ADMIN,
- "[+I] De-activated total invisibility mode on %s",
- sptr->name);
- sendto_serv_butone(cptr,
- ":%s SMO A :[+I] De-activated total invisibility mode on %s",
- me.name, sptr->name);
- sendto_channels_inviso_join(sptr);
-
- }
- }
-#endif
}
/*
* If I understand what this code is doing correctly...
sendto_prefix_one(to, from, ":%s %s %s :%s",
sender, cmd, nick, msg);
}
-
-/* The following functions are for +/-I -- codemastr */
-
-void sendto_channels_inviso_join(aClient *user)
-{
- Link *channels;
- Link *users;
- aClient *cptr;
-
- memset((char *)sentalong, '\0', sizeof(sentalong));
- if (user->fd >= 0)
- sentalong[user->fd] = 1;
- if (user->user)
- for (channels = user->user->channel; channels; channels = channels->next)
- for (users = channels->value.chptr->members; users; users = users->next)
- {
- cptr = users->value.cptr;
- if (!MyConnect(cptr) || IsNetAdmin(cptr) || sentalong[cptr->fd] || cptr == user)
- continue;
- sentalong[cptr->fd]++;
- sendto_one(cptr, ":%s!%s@%s JOIN :%s", user->name, user->user->username,
- (IsHidden(user) ? user->user->virthost : user->user->realhost), channels->value.chptr->chname);
- }
- return;
-}
-
-void sendto_channels_inviso_part(aClient *user)
-{
- Link *channels;
- Link *users;
- aClient *cptr;
-
- memset((char *)sentalong, '\0', sizeof(sentalong));
- if (user->fd >= 0)
- sentalong[user->fd] = 1;
- if (user->user)
- for (channels = user->user->channel; channels; channels = channels->next)
- for (users = channels->value.chptr->members; users; users = users->next)
- {
- cptr = users->value.cptr;
- if (!MyConnect(cptr) || IsNetAdmin(cptr) || sentalong[cptr->fd] || cptr == user)
- continue;
- sentalong[cptr->fd]++;
- sendto_one(cptr, ":%s!%s@%s PART :%s", user->name, user->user->username, (IsHidden(user) ? user->user->virthost : user->user->realhost), channels->value.chptr->chname);
- }
- return;
-}
-
-void sendto_channel_ntadmins(aClient *from, aChannel *chptr, char *pattern, ...)
-{
- va_list vl;
- Link *lp;
- aClient *acptr;
- int i;
-
- va_start(vl, pattern);
- ++sentalong_marker;
- for (lp = chptr->members; lp; lp = lp->next)
- {
- acptr = lp->value.cptr;
- if (acptr->from == from || !IsNetAdmin(acptr) || (IsDeaf(acptr) && !(sendanyways == 1)))
- continue;
- if (MyConnect(acptr)) /* (It is always a client) */
- vsendto_prefix_one(acptr, from, pattern, vl);
- else if (sentalong[(i = acptr->from->fd)] != sentalong_marker)
- {
- sentalong[i] = sentalong_marker;
- vsendto_prefix_one(acptr, from, pattern, vl);
- }
- }
- va_end(vl);
- return;
-}
}
}
-#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);