summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar stskeeps2002-06-24 16:18:15 +0000
committerGravatar stskeeps2002-06-24 16:18:15 +0000
commit86f7e2e0e832c44f1da14f0f68469a5918555524 (patch)
tree9d3182e6fab05e459561345ee95dd44fe9aa07fb
parentfixup commit for branch 'u31_chatfirst' (diff)
downloadunrealircd-u31_chatfirst.tar.gz
unrealircd-u31_chatfirst.tar.bz2
unrealircd-u31_chatfirst.zip
-rw-r--r--.RELEASE.NOTES9
-rw-r--r--Changes28
-rwxr-xr-xConfig43
-rw-r--r--Unreal.nfo1
-rw-r--r--doc/win32-compile-guide16
-rw-r--r--include/config.h2
-rw-r--r--include/numeric.h5
-rw-r--r--include/struct.h32
-rw-r--r--include/win32/settings.h26
-rw-r--r--networks/networks.ndx4
-rw-r--r--networks/unrealircd.conf2
-rw-r--r--src/Config.c377
-rw-r--r--src/channel.c30
-rw-r--r--src/chkconf.c4
-rw-r--r--src/s_conf.c41
-rw-r--r--src/s_debug.c4
-rw-r--r--src/s_serv.c2
-rw-r--r--src/s_unreal.c2
-rw-r--r--src/s_user.c91
-rw-r--r--src/webtv.c4
20 files changed, 274 insertions, 449 deletions
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 <stskeeps@unrealircd.com>
* codemastr <codemastr@unrealircd.com>
- * DrBin <drbin@unrealircd.com>
* Luke <luke@unrealircd.com>
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 <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;
-}
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;
@@ -1256,10 +1285,6 @@ int initconf(opt)
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;
@@ -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 <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);
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);