diff --git a/.RELEASE.NOTES b/.RELEASE.NOTES index 4c1249941..0432e0a8c 100644 --- a/.RELEASE.NOTES +++ b/.RELEASE.NOTES @@ -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. diff --git a/Changes b/Changes index 12fc911a8..92c5a432f 100644 --- a/Changes +++ b/Changes @@ -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 +=================================== diff --git a/Config b/Config index 46b856983..881a35556 100755 --- a/Config +++ b/Config @@ -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__ diff --git a/Unreal.nfo b/Unreal.nfo index efee5c473..f60144dd2 100644 --- a/Unreal.nfo +++ b/Unreal.nfo @@ -4,7 +4,6 @@ Was brought to you by: * Stskeeps * codemastr - * DrBin * Luke Precenses on the Internet: diff --git a/doc/win32-compile-guide b/doc/win32-compile-guide new file mode 100644 index 000000000..bf026650a --- /dev/null +++ b/doc/win32-compile-guide @@ -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) diff --git a/include/config.h b/include/config.h index 6e8408e91..ef465a7cc 100644 --- a/include/config.h +++ b/include/config.h @@ -133,7 +133,7 @@ Ident checking #define this to disable ident checking */ -#undef NO_IDENT_CHECKING +#define NO_IDENT_CHECKING /* * No spoof code diff --git a/include/numeric.h b/include/numeric.h index 150b2f713..5a8d9f77c 100644 --- a/include/numeric.h +++ b/include/numeric.h @@ -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 diff --git a/include/struct.h b/include/struct.h index 5cad78a03..115cb0037 100644 --- a/include/struct.h +++ b/include/struct.h @@ -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 diff --git a/include/win32/settings.h b/include/win32/settings.h index e49c0206f..6788629a7 100644 --- a/include/win32/settings.h +++ b/include/win32/settings.h @@ -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 DOMAINNAME "irc.net" \ No newline at end of file +#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 diff --git a/networks/networks.ndx b/networks/networks.ndx deleted file mode 100644 index e920cf0f0..000000000 --- a/networks/networks.ndx +++ /dev/null @@ -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 diff --git a/networks/unrealircd.conf b/networks/unrealircd.conf index 12bc825c7..e7e9cbdda 100644 --- a/networks/unrealircd.conf +++ b/networks/unrealircd.conf @@ -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? diff --git a/src/Config.c b/src/Config.c deleted file mode 100644 index 290e84002..000000000 --- a/src/Config.c +++ /dev/null @@ -1,377 +0,0 @@ -/* - * $Id$ - */ -#include -#ifdef _WIN32 -#include -#endif -#include -#ifdef _WIN32 -#include -#endif -#include - -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; -} diff --git a/src/channel.c b/src/channel.c index e9032188e..e6f585a39 100644 --- a/src/channel.c +++ b/src/channel.c @@ -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); - if (!IsHiding(acptr)) +#ifdef ENABLE_INVISOPER + if (!IsHiding(acptr)) +#endif sendto_channel_butserv(chptr, acptr, ":%s JOIN :%s", nick, chptr->chname); diff --git a/src/chkconf.c b/src/chkconf.c index 1e46e945a..a9db040a1 100644 --- a/src/chkconf.c +++ b/src/chkconf.c @@ -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; diff --git a/src/s_conf.c b/src/s_conf.c index 8f1e78683..4d4711dc0 100644 --- a/src/s_conf.c +++ b/src/s_conf.c @@ -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); } diff --git a/src/s_debug.c b/src/s_debug.c index 4a339d9ae..84c8f2076 100644 --- a/src/s_debug.c +++ b/src/s_debug.c @@ -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', diff --git a/src/s_serv.c b/src/s_serv.c index dcc07fd43..75fd98539 100644 --- a/src/s_serv.c +++ b/src/s_serv.c @@ -1677,8 +1677,6 @@ void m_info_send(sptr) me.name, RPL_INFO, sptr->name); sendto_one(sptr, ":%s %d %s :| * codemastr ", me.name, RPL_INFO, sptr->name); - sendto_one(sptr, ":%s %d %s :| * DrBin ", - me.name, RPL_INFO, sptr->name); sendto_one(sptr, ":%s %d %s :| * Luke ", me.name, RPL_INFO, sptr->name); sendto_one(sptr, ":%s %d %s :|", me.name, RPL_INFO, sptr->name); diff --git a/src/s_unreal.c b/src/s_unreal.c index 4ef3c27fe..c7c4a3c99 100644 --- a/src/s_unreal.c +++ b/src/s_unreal.c @@ -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; diff --git a/src/s_user.c b/src/s_user.c index e4387991a..85069dbf4 100644 --- a/src/s_user.c +++ b/src/s_user.c @@ -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... diff --git a/src/webtv.c b/src/webtv.c index 8a218a912..7436c3aaf 100644 --- a/src/webtv.c +++ b/src/webtv.c @@ -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);