1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-06-12 17:34:46 +02:00
This commit is contained in:
stskeeps
2002-06-24 16:18:15 +00:00
parent 0b5838ffaa
commit 86f7e2e0e8
20 changed files with 274 additions and 449 deletions
+7 -2
View File
@@ -16,9 +16,14 @@ Unreal3.1.4-Meadows Release Notes
* Please Note: There have been a couple of configuration file changes! This is
IMPORTANT. Your IRCd WILL NOT START if you don't change the cloak key values found
in the .network file. Additionally, it would be prudent to note that there is a
in unrealircd.conf. Additionally, it would be prudent to note that there is a
new directive in unrealircd.conf, exempt_all, which permits exempt lines in
ircd.conf to match glines in addition to klines. It defaults to 1.
ircd.conf to match glines in addition to klines. It defaults to 1. Finally, both
version numbers in the .network file and unrealircd.conf have been changed. In
unrealircd.conf, because of the 4 new directives. In the .network file because
we removed techadmin, and the host directive for it. We will NOT bring techadmin
back. If you don't like it, readd it yourself, and be sure to note that we won't
provide support for modified versions of Unreal.
* The rest of the changes can be found (obviously) in the Changes file.
+27 -1
View File
@@ -339,7 +339,7 @@ done, but whatever.)
--Luke
===================================
Moved cloak key definitions to unrealircd.conf
Moved cloak key definitions to .network file
--Luke
===================================
@@ -395,3 +395,29 @@ 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
===================================
Changed information flag shown in /version. R now
appears if invisibility is compiled in (even if
disabled in unrealircd.conf)
--Luke
===================================
rmed Config.c (broken, severely) and networks.ndx
--Luke
===================================
Added win32-compile-guide in doc/ for people wanting
to compile their own version for windows.
--Luke
===================================
Once again we global when anyone that's not a local
oper opers. I like this, if you don't email me and
maybe I'll add a conf option for it.
--Luke
===================================
+42 -1
View File
@@ -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"
@@ -1941,7 +1983,6 @@ cat << __EOF__
| - The UnrealIRCd Team - |
| * Stskeeps stskeeps@unrealircd.com |
| * codemastr codemastr@unrealircd.com |
| * DrBin drbin@unrealircd.com |
| * Luke luke@unrealircd.com |
|_____________________________________________________________________|
__EOF__
-1
View File
@@ -4,7 +4,6 @@
Was brought to you by:
* Stskeeps <stskeeps@unrealircd.com>
* codemastr <codemastr@unrealircd.com>
* DrBin <drbin@unrealircd.com>
* Luke <luke@unrealircd.com>
Precenses on the Internet:
+16
View File
@@ -0,0 +1,16 @@
Compiling UnrealIRCd 3.1.x for Windows
--------------------------------------
This document assumes you have a working build environment for
Visual Studio .NET or Visual Studio 6.0. Other versions may work
as well, but have not been tested.
1. Copy include/win32/settings.h and setup.h to include/
2. Copy extras/regex/regex.h to include/
3. Copy extras/regex/regex.c to src/
4. Edit include/settings.h to your liking (pretty much change DOMAINNAME)
5. Unzip src/win32/unrealircd.bmp.gz
6. Execute "nmake makefile.win32"
Congratulations, you should have a functioning win32 binary.
--Luke (luke@unrealircd.com)
+1 -1
View File
@@ -133,7 +133,7 @@
Ident checking
#define this to disable ident checking
*/
#undef NO_IDENT_CHECKING
#define NO_IDENT_CHECKING
/*
* No spoof code
+4 -1
View File
@@ -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
+25 -7
View File
@@ -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)
@@ -451,7 +463,9 @@ typedef unsigned int u_int32_t; /* XXX Hope this works! */
#define OFLAG_AFOUNDER 0x10000000
#define OFLAG_COFOUND 0x20000000
#define OFLAG_WMASTER 0x40000000
#define OFLAG_INVISIBLE 0x80000000
#ifdef ENABLE_INVISOPER
#define OFLAG_INVISIBLE 0x80000000
#endif
#define OFLAG_LOCAL (OFLAG_REHASH|OFLAG_HELPOP|OFLAG_GLOBOP|OFLAG_WALLOP|OFLAG_LOCOP|OFLAG_LROUTE|OFLAG_LKILL|OFLAG_KLINE|OFLAG_UNKLINE|OFLAG_LNOTICE|OFLAG_UMODEC|OFLAG_UMODEF)
#define OFLAG_GLOBAL (OFLAG_LOCAL|OFLAG_GROUTE|OFLAG_GKILL|OFLAG_GNOTICE)
#define OFLAG_ISGLOBAL (OFLAG_GROUTE|OFLAG_GKILL|OFLAG_GNOTICE)
@@ -628,7 +642,7 @@ struct ConfItem {
#define CONF_RESTRICT 0x0200
#endif
#define CONF_CLASS 0x0400
#define CONF_SERVICE 0x0800
#define CONF_CHANGEUSERNAME 0x0800
#define CONF_LEAF 0x1000
#define CONF_LISTEN_PORT 0x2000
#define CONF_HUB 0x4000
@@ -648,7 +662,7 @@ struct ConfItem {
#define CONF_VERSION 0x40000000
#define CONF_OPS (CONF_OPERATOR | CONF_LOCOP)
#define CONF_SERVER_MASK (CONF_CONNECT_SERVER | CONF_NOCONNECT_SERVER)
#define CONF_CLIENT_MASK (CONF_CLIENT | CONF_SERVICE | CONF_OPS | \
#define CONF_CLIENT_MASK (CONF_CLIENT| CONF_OPS | \
CONF_SERVER_MASK)
#define CONF_CRULE (CONF_CRULEALL | CONF_CRULEAUTO)
#define CONF_QUARANTINE (CONF_QUARANTINED_SERVER|CONF_QUARANTINED_NICK)
@@ -1043,7 +1057,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
+23 -1
View File
@@ -1,3 +1,25 @@
#define SPATH "."
/*
* VERSION: Unreal3.1.4 Meadows
* DATE: Sat Jun 15 13:43:51 EST 2002
* OS: Win-32
*
*/
#define DPATH "."
#define SPATH "."
#define DOMAINNAME "irc.net"
#define LISTEN_SIZE 5
#define MAXSENDQLENGTH 3000000
#define BUFFERPOOL (9 * MAXSENDQLENGTH)
#define MAXCONNECTIONS 1024
#define NICKNAMEHISTORYLENGTH 2000
#undef CRYPT_OPER_PASSWORD
#undef USE_SSL
#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
#define GLIBC2_x
-4
View File
@@ -1,4 +0,0 @@
# Networks index file - do not touch please
# 1 network listed
# Please report outdated entries to unreal-networks@lists.sourceforge.net
networks/template.netowrk .........: Template network file
+1 -1
View File
@@ -97,7 +97,7 @@ Set WEBTV_SUPPORT .......: 0
#
# Should usermode +I (Total Invisibility) be disabled?
# 1 = Yes 0 = No
Set NO_OPER_HIDING ......: 0
Set NO_OPER_HIDING ......: 1
#
# Should we make the user join a channel(s) on connect?
-377
View File
@@ -1,377 +0,0 @@
/*
* $Id$
*/
#include <stdio.h>
#ifdef _WIN32
#include <io.h>
#endif
#include <fcntl.h>
#ifdef _WIN32
#include <sys\stat.h>
#endif
#include <time.h>
int _FD_SETSIZE = 1024;
char _NS_ADDRESS[256], _KLINE_ADDRESS[256];
char Makefile[] =
"CC=cl\n"
"FD_SETSIZE=/D FD_SETSIZE=$FD_SETSIZE\n"
"CFLAGS=/MT /O2 /I ./INCLUDE /Fosrc/ /nologo $(FD_SETSIZE) $(NS_ADDRESS) /D NOSPOOF=1 /c\n"
"INCLUDES=./include/struct.h ./include/config.h ./include/sys.h \\\n"
" ./include/common.h ./include/settings.h ./include/h.h ./include/numeric.h \\\n"
" ./include/msg.h ./include/setup.h\n"
"LINK=link.exe\n"
"LFLAGS=kernel32.lib user32.lib gdi32.lib shell32.lib wsock32.lib \\\n"
" oldnames.lib libcmt.lib /nodefaultlib /nologo /out:SRC/WIRCD.EXE\n"
"OBJ_FILES=SRC/CHANNEL.OBJ SRC/USERLOAD.OBJ SRC/SEND.OBJ SRC/BSD.OBJ \\\n"
" SRC/CIO_MAIN.OBJ SRC/S_CONF.OBJ SRC/DBUF.OBJ SRC/RES.OBJ \\\n"
" SRC/HASH.OBJ SRC/CIO_INIT.OBJ SRC/PARSE.OBJ SRC/IRCD.OBJ \\\n"
" SRC/S_NUMERIC.OBJ SRC/WHOWAS.OBJ SRC/RES_COMP.OBJ SRC/S_AUTH.OBJ \\\n"
" SRC/HELP.OBJ SRC/S_MISC.OBJ SRC/MATCH.OBJ SRC/CRULE.OBJ \\\n"
" SRC/S_DEBUG.OBJ SRC/RES_INIT.OBJ SRC/SUPPORT.OBJ SRC/LIST.OBJ \\\n"
" SRC/S_ERR.OBJ SRC/PACKET.OBJ SRC/CLASS.OBJ SRC/S_BSD.OBJ \\\n"
" SRC/MD5.OBJ SRC/S_SERV.OBJ SRC/S_USER.OBJ SRC/WIN32.OBJ \\\n"
" SRC/DYNCONF.OBJ\\\n"
" SRC/VERSION.OBJ SRC/WIN32.RES SRC/CLOAK.OBJ SRC/S_UNREAL.OBJ\n"
"RC=rc.exe\n"
"\n"
"ALL: SRC/WIRCD.EXE SRC/CHKCONF.EXE\n"
" @echo Complete.\n"
"\n"
"CLEAN:\n"
" -@erase src\\*.exe 2>NUL\n"
" -@erase src\\*.obj 2>NUL\n"
" -@erase src\\win32.res 2>NUL\n"
" -@erase src\\version.c 2>NUL\n"
"\n"
"include/setup.h:\n"
" @echo Hmm...doesn't look like you've run Config...\n"
" @echo Doing so now.\n"
" @config.exe\n"
"\n"
"src/version.c: dummy\n"
" @config.exe -v\n"
"\n"
"src/version.obj: src/version.c\n"
" $(CC) $(CFLAGS) src/version.c\n"
"\n"
"SRC/WIRCD.EXE: $(OBJ_FILES) src/version.obj\n"
" $(LINK) $(LFLAGS) $(OBJ_FILES)\n"
"\n"
"SRC/CHKCONF.EXE: ./include/struct.h ./include/config.h ./include/sys.h \\\n"
" ./include/common.h ./src/crule.c ./src/match.c ./src/chkconf.c\n"
" $(CC) /nologo /I ./include /D CR_CHKCONF /Fosrc/chkcrule.obj /c src/crule.c\n"
" $(CC) /nologo /I ./include /D CR_CHKCONF /Fosrc/chkmatch.obj /c src/match.c\n"
" $(CC) /nologo /I ./include /D CR_CHKCONF /Fosrc/chkconf.obj /c src/chkconf.c\n"
" $(LINK) /nologo /out:src/chkconf.exe src/chkconf.obj src/chkmatch.obj \\\n"
" src/chkcrule.obj\n"
"\n"
"src/parse.obj: src/parse.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/parse.c\n"
"\n"
"src/bsd.obj: src/bsd.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/bsd.c\n"
"\n"
"src/dbuf.obj: src/dbuf.c $(INCLUDES) ./include/dbuf.h\n"
" $(CC) $(CFLAGS) src/dbuf.c\n"
"\n"
"src/packet.obj: src/packet.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/packet.c\n"
"\n"
"src/send.obj: src/send.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/send.c\n"
"\n"
"src/match.obj: src/match.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/match.c\n"
"\n"
"src/support.obj: src/support.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/support.c\n"
"\n"
"src/channel.obj: src/channel.c $(INCLUDES) ./include/channel.h\n"
" $(CC) $(CFLAGS) src/channel.c\n"
"\n"
"src/class.obj: src/class.c $(INCLUDES) ./include/class.h\n"
" $(CC) $(CFLAGS) src/class.c\n"
"\n"
"src/ircd.obj: src/ircd.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/ircd.c\n"
"\n"
"src/list.obj: src/list.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/list.c\n"
"\n"
"src/res.obj: src/res.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/res.c\n"
"\n"
"src/s_bsd.obj: src/s_bsd.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/s_bsd.c\n"
"\n"
"src/s_auth.obj: src/s_auth.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/s_auth.c\n"
"\n"
"src/s_conf.obj: src/s_conf.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/s_conf.c\n"
"\n"
"src/s_debug.obj: src/s_debug.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/s_debug.c\n"
"\n"
"src/s_err.obj: src/s_err.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/s_err.c\n"
"\n"
"src/s_misc.obj: src/s_misc.c $(INCLUDES) ./include/dbuf.h\n"
" $(CC) $(CFLAGS) src/s_misc.c\n"
"\n"
"src/s_user.obj: src/s_user.c $(INCLUDES) ./include/dbuf.h \\\n"
" ./include/channel.h ./include/whowas.h\n"
" $(CC) $(CFLAGS) src/s_user.c\n"
"\n"
"src/dynconf.obj: src/dynconf.c $(INCLUDES) ./include/dbuf.h \\\n"
" ./include/channel.h ./include/whowas.h ./include/dynconf.h\n"
" $(CC) $(CFLAGS) src/dynconf.c\n"
"\n"
"src/s_unreal.obj: src/s_unreal.c $(INCLUDES) ./include/dbuf.h \\\n"
" ./include/channel.h ./include/whowas.h\n"
" $(CC) $(CFLAGS) src/s_unreal.c\n"
"\n"
"src/cloak.obj: src/cloak.c $(INCLUDES) ./include/dbuf.h \\\n"
" ./include/channel.h ./include/whowas.h\n"
" $(CC) $(CFLAGS) src/s_unreal.c\n"
"\n"
"src/s_serv.obj: src/s_serv.c $(INCLUDES) ./include/dbuf.h ./include/whowas.h\n"
" $(CC) $(CFLAGS) src/s_serv.c\n"
"\n"
"src/s_numeric.obj: src/s_numeric.c $(INCLUDES) ./include/dbuf.h\n"
" $(CC) $(CFLAGS) src/s_numeric.c\n"
"\n"
"src/whowas.obj: src/whowas.c $(INCLUDES) ./include/dbuf.h ./include/whowas.h\n"
" $(CC) $(CFLAGS) src/whowas.c\n"
"\n"
"src/hash.obj: src/hash.c $(INCLUDES) ./include/hash.h\n"
" $(CC) $(CFLAGS) src/hash.c\n"
"\n"
"src/crule.obj: src/crule.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/crule.c\n"
"\n"
"src/win32.obj: src/win32.c $(INCLUDES) ./include/resource.h\n"
" $(CC) $(CFLAGS) src/win32.c\n"
"\n"
"src/cio_main.obj: src/cio_main.c $(INCLUDES) ./include/cio.h ./include/ciofunc.h\n"
" $(CC) $(CFLAGS) src/cio_main.c\n"
"\n"
"src/cio_init.obj: src/cio_init.c $(INCLUDES) ./include/cio.h ./include/ciofunc.h\n"
" $(CC) $(CFLAGS) src/cio_init.c\n"
"\n"
"src/res_comp.obj: src/res_comp.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/res_comp.c\n"
"\n"
"src/res_init.obj: src/res_init.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/res_init.c\n"
"\n"
"src/help.obj: src/help.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/help.c\n"
"\n"
"src/md5.obj: src/md5.c $(INCLUDES)\n"
" $(CC) $(CFLAGS) src/md5.c\n"
"\n"
"src/win32.res: src/win32.rc\n"
" $(RC) /l 0x409 /fosrc/win32.res /i ./include /i ./src \\\n"
" /d NDEBUG src/win32.rc\n" "\n" "dummy:\n" "\n";
char SetupH[] =
"/* This is only a wrapper.. --Stskeeps */\n"
"#include \"win32/setup.h\"\n";
int main(int argc, char *argv[])
{
if (argc > 1)
{
if (!strcmp(argv[1], "-v"))
return do_version();
if (!strcmp(argv[1], "-n"))
return do_config(1);
}
printf
("To do win32 compiling copy include/win32/setup.h to include/\n");
printf("Copy include/win32/settings.h to include/ and modify it\n");
printf("and copy makefile.win32 to Makefile\n");
}
int do_config(int autoconf)
{
int fd;
char str[128];
if ((fd =
open("include\\setup.h", O_CREAT | O_TRUNC | O_WRONLY | O_TEXT,
S_IREAD | S_IWRITE)) == -1)
printf("Error opening include\\setup.h\n\r");
else
{
write(fd, SetupH, strlen(SetupH));
close(fd);
}
while (1)
{
/*
* FD_SETSIZE
*/
printf("\n");
printf
("How many file descriptors (or sockets) can the irc server use?");
printf("\n");
printf("[%d] -> ", _FD_SETSIZE);
gets(str);
if (*str != '\n' && *str != '\r')
sscanf(str, "%d", &_FD_SETSIZE);
if (_FD_SETSIZE >= 100)
{
printf("\n");
printf("FD_SETSIZE will be overridden using -D "
"FD_SETSIZE=%d when compiling ircd.", _FD_SETSIZE);
printf("\n");
break;
}
printf("\n");
printf
("You need to enter a number here, greater or equal to 100.\n");
}
while (1)
{
}
/*
* Now write the makefile out.
*/
write_makefile();
return 0;
}
int write_makefile(void)
{
int fd, makfd, len;
char *buffer, *s;
buffer = (char *)malloc(strlen(Makefile) + 4096);
memcpy(buffer, Makefile, strlen(Makefile) + 1);
s = (char *)strstr(buffer, "$FD_SETSIZE");
if (s)
{
itoa(_FD_SETSIZE, s, 10);
memmove(s + strlen(s), s + 11, strlen(s + 11) + 1);
}
if ((makfd = open("Makefile", O_CREAT | O_TRUNC | O_WRONLY | O_TEXT,
S_IREAD | S_IWRITE)) == -1)
{
printf("Error creating Makefile\n\r");
return 1;
}
write(makfd, buffer, strlen(buffer));
close(makfd);
free(buffer);
return 0;
}
int do_version(void)
{
int fd, verfd, generation = 0, len, doingvernow = 0;
char buffer[16384], *s;
if ((verfd = open("src\\version.c", O_RDONLY | O_TEXT)) != -1)
{
while (!eof(verfd))
{
len = read(verfd, buffer, sizeof(buffer) - 1);
if (len == -1)
break;
buffer[len] = 0;
s = (char *)strstr(buffer, "char *generation = \"");
if (s)
{
s += 20;
generation = atoi(s);
break;
}
}
close(verfd);
}
if ((fd = open("src\\version.c.SH", O_RDONLY | O_TEXT)) == -1)
{
printf("Error opening src\\version.c.SH\n\r");
return 1;
}
if ((verfd =
open("src\\version.c", O_CREAT | O_TRUNC | O_WRONLY | O_TEXT,
S_IREAD | S_IWRITE)) == -1)
{
printf("Error opening src\\version.c\n\r");
return 1;
}
generation++;
printf("Extracting IRC/ircd/version.c...\n\r");
while (!eof(fd))
{
len = read(fd, buffer, sizeof(buffer) - 1);
if (len == -1)
break;
buffer[len] = 0;
if (!doingvernow)
{
s = (char *)strstr(buffer, "/*");
if (!s)
continue;
memmove(buffer, s, strlen(s) + 1);
doingvernow = 1;
}
s = (char *)strstr(buffer, "$generation");
if (s)
{
itoa(generation, s, 10);
memmove(s + strlen(s), s + 11, strlen(s + 11) + 1);
}
s = (char *)strstr(buffer, "$creation");
if (s)
{
time_t t = time(0);
char *ct = ctime(&t);
memmove(s + strlen(ct) - 1, s + 9, strlen(s + 9) + 1);
memmove(s, ct, strlen(ct) - 1);
}
s = (char *)strstr(buffer, "$package");
if (s)
{
memmove(s, "IRC", 3);
memmove(s + 3, s + 8, strlen(s + 8) + 1);
}
s = (char *)strstr(buffer, "!SUB!THIS!");
if (s)
*s = 0;
write(verfd, buffer, strlen(buffer));
}
close(fd);
close(verfd);
return 0;
}
+25 -3
View File
@@ -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))
@@ -2752,10 +2761,11 @@ int channel_link(cptr, sptr, parc, parv)
(IsHidden(sptr) ? sptr->
user->virthost : sptr->user->realhost),
name);
sendto_umode(UMODE_NETADMIN,
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);
@@ -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);
#ifdef ENABLE_INVISOPER
if (!IsHiding(acptr))
#endif
sendto_channel_butserv(chptr, acptr,
":%s JOIN :%s", nick,
chptr->chname);
-4
View File
@@ -315,10 +315,6 @@ static aConfItem *initconf(opt)
case 'q': /* network. USE WITH CAUTION! */
aconf->status = CONF_QUARANTINED_SERVER;
break;
case 'S': /* Service. Same semantics as */
case 's': /* CONF_OPERATOR */
aconf->status = CONF_SERVICE;
break;
case 'T':
aconf->status = CONF_TLINE;
break;
+36 -5
View File
@@ -357,6 +357,18 @@ int attach_conf(cptr, aconf)
return 0;
}
aConfItem *find_jline(char *password)
{
aConfItem *aconf;
for (aconf = conf; aconf; aconf = aconf->next)
if (aconf->status & CONF_CHANGEUSERNAME)
if (!strcmp(aconf->passwd, password))
{
return (aconf);
}
return (NULL);
}
aConfItem *find_tline(char *host)
{
@@ -886,9 +898,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;
}
@@ -1038,9 +1056,15 @@ extern char *getfield();
#define STAR1 OFLAG_SADMIN|OFLAG_ADMIN|OFLAG_NETADMIN|OFLAG_COADMIN
#define STAR2 OFLAG_ZLINE|OFLAG_HIDE|OFLAG_WHOIS
#define STAR3 OFLAG_INVISIBLE
#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',
@@ -1069,7 +1093,9 @@ static int oper_access[] = {
OFLAG_WHOIS, 'W',
OFLAG_HIDE, 'H',
/* OFLAG_AGENT, 'S',*/
#ifdef ENABLE_INVISOPER
OFLAG_INVISIBLE, '^',
#endif
0, 0
};
@@ -1211,6 +1237,9 @@ int initconf(opt)
case 'i': /* to connect me */
aconf->status = CONF_CLIENT;
break;
case 'j':
aconf->status = CONF_CHANGEUSERNAME;
break;
case 'K': /* Kill user line on ircd.conf */
case 'k':
aconf->status = CONF_KILL;
@@ -1255,10 +1284,6 @@ int initconf(opt)
/* network. USE WITH CAUTION! */
aconf->status = CONF_QUARANTINED_SERVER;
break;
case 'S': /* Service. Same semantics as */
case 's': /* CONF_OPERATOR */
aconf->status = CONF_SERVICE;
break;
case 'T':
aconf->status = CONF_TLINE;
@@ -2855,9 +2880,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);
}
+2 -2
View File
@@ -84,8 +84,8 @@ char serveropts[] = {
#ifdef USE_SYSLOG
'Y',
#endif
#ifdef OPER_NO_HIDING
'H',
#ifdef ENABLE_INVISOPER
'R',
#endif
#ifdef NO_IDENT_CHECKING
'K',
-2
View File
@@ -1677,8 +1677,6 @@ void m_info_send(sptr)
me.name, RPL_INFO, sptr->name);
sendto_one(sptr, ":%s %d %s :| * codemastr <codemastr@unrealircd.com>",
me.name, RPL_INFO, sptr->name);
sendto_one(sptr, ":%s %d %s :| * DrBin <drbin@unrealircd.com>",
me.name, RPL_INFO, sptr->name);
sendto_one(sptr, ":%s %d %s :| * Luke <luke@unrealircd.com>",
me.name, RPL_INFO, sptr->name);
sendto_one(sptr, ":%s %d %s :|", me.name, RPL_INFO, sptr->name);
+2
View File
@@ -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;
+57 -34
View File
@@ -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',
@@ -642,7 +644,7 @@ static int register_user(cptr, sptr, nick, username, umode, virthost)
aClient *sptr;
char *nick, *username, *virthost, *umode;
{
aConfItem *aconf;
aConfItem *aconf, *ac2;
char *parv[3], *tmpstr, *encr;
#ifdef HOSTILENAME
char stripuser[USERLEN + 1], *u1 = stripuser, *u2, olduser[USERLEN + 1],
@@ -763,24 +765,18 @@ static int register_user(cptr, sptr, nick, username, umode, virthost)
*
* Moved the noident stuff here. -OnyxDragon
*/
if (!(sptr->flags & FLAGS_DOID))
strncpyzt(user->username, username, USERLEN + 1);
else if (sptr->flags & FLAGS_GOTID)
strncpyzt(user->username, sptr->username, USERLEN + 1);
if (sptr->passwd && ((ac2 = (aConfItem *)find_jline(sptr->passwd))))
{
strncpyzt(user->username, ac2->host, USERLEN + 1);
}
else
{
/* because username may point to user->username */
char temp[USERLEN + 1];
strncpyzt(temp, username, USERLEN + 1);
#ifdef NO_IDENT_CHECKING
strncpy(user->username, temp, USERLEN);
user->username[USERLEN] = '\0';
#else
*user->username = '~';
(void)strncpy(&user->username[1], temp, USERLEN);
user->username[USERLEN] = '\0';
#endif
#ifdef HOSTILENAME
noident = 1;
#endif
@@ -2452,8 +2448,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 +2460,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 +2482,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) ||
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 +2515,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,
@@ -2525,7 +2533,7 @@ static void do_who(sptr, acptr, repchan)
** m_who
** parv[0] = sender prefix
** parv[1] = nickname mask list
** parv[2] = additional selection flag, only 'o' for now.
** parv[2] = additional selection flag, 'o' and 'h' for now.
*/
int m_who(cptr, sptr, parc, parv)
aClient *cptr, *sptr;
@@ -3894,12 +3902,6 @@ int m_oper(cptr, sptr, parc, parv)
iNAH_host(sptr, locop_host);
sptr->umodes &= ~UMODE_OPER;
}
/* else
if ((aconf->port & OFLAG_AGENT))
{
sendto_ops("%s (%s@%s) is now an IRCd Agent (S)", parv[0],
sptr->user->username, IsHidden(sptr) ? sptr->user->virthost : sptr->user->realhost);
}*/
else if (aconf->port & OFLAG_NETADMIN)
{
sendto_ops
@@ -3921,22 +3923,22 @@ int m_oper(cptr, sptr, parc, parv)
}
else if (aconf->port & OFLAG_COADMIN)
{
sendto_ops("%s (%s@%s) is now a co administrator (C)",
sendto_ops("%s (%s@%s) is now a co administrator (C) on %s",
parv[0], sptr->user->username,
IsHidden(sptr) ? sptr->user->virthost : sptr->user->
realhost);
realhost,me.name);
if (MyClient(sptr))
{
/* sendto_serv_butone(&me, ":%s GLOBOPS :%s (%s@%s) is now a co administrator (C)", me.name, parv[0],
sptr->user->username, IsHidden(sptr) ? sptr->user->virthost : sptr->user->realhost);
*/
sendto_serv_butone(&me, ":%s GLOBOPS :%s (%s@%s) is now a co administrator (C) on %s",
me.name, parv[0], sptr->user->username,
IsHidden(sptr) ? sptr->user->virthost : sptr->user->realhost, me.name);
}
if (iNAH == 1 && (sptr->oflag & OFLAG_HIDE))
iNAH_host(sptr, coadmin_host);
}
else if (aconf->port & OFLAG_SADMIN)
{
sendto_ops("%s (%s@%s) is now a services admin (a)",
sendto_ops("%s (%s@%s) is now a services administrator (a)",
parv[0], sptr->user->username,
IsHidden(sptr) ? sptr->user->virthost : sptr->user->
realhost);
@@ -3953,19 +3955,33 @@ int m_oper(cptr, sptr, parc, parv)
}
else if (aconf->port & OFLAG_ADMIN)
{
sendto_ops("%s (%s@%s) is now a server admin (A)",
sendto_ops("%s (%s@%s) is now a server administrator (A) on %s",
parv[0], sptr->user->username,
IsHidden(sptr) ? sptr->user->virthost : sptr->user->
realhost);
realhost,me.name);
if (MyClient(sptr))
{
sendto_serv_butone(&me,
":%s GLOBOPS :%s (%s@%s) is now a server administrator (A) on %s",
me.name, parv[0], sptr->user->username,
IsHidden(sptr) ? sptr->user->virthost : sptr->user->realhost,me.name);
}
if (iNAH == 1 && (sptr->oflag & OFLAG_HIDE))
iNAH_host(sptr, admin_host);
}
else
{
sendto_ops("%s (%s@%s) is now an operator (O)", parv[0],
sendto_ops("%s (%s@%s) is now an operator (O) on %s", parv[0],
sptr->user->username,
IsHidden(sptr) ? sptr->user->virthost : sptr->user->
realhost);
realhost,me.name);
if (MyClient(sptr))
{
sendto_serv_butone(&me,
":%s GLOBOPS :%s (%s@%s) is now an operator (O) on %s",
me.name, parv[0], sptr->user->username,
IsHidden(sptr) ? sptr->user->virthost : sptr->user->realhost,me.name);
}
if (iNAH == 1 && (sptr->oflag & OFLAG_HIDE))
iNAH_host(sptr, oper_host);
}
@@ -4329,11 +4345,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 +4440,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 +4488,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 +4510,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 +4529,7 @@ int m_umode(cptr, sptr, parc, parv)
}
}
#endif
}
/*
* If I understand what this code is doing correctly...
+4
View File
@@ -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);