1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-06-24 09:56:37 +02:00

2 Commits

Author SHA1 Message Date
stskeeps 86f7e2e0e8 stuff 2002-06-24 16:18:15 +00:00
cvs2hg 0b5838ffaa fixup commit for branch 'u31_chatfirst' 2002-06-16 20:05:23 +00:00
21 changed files with 274 additions and 575 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:
-126
View File
@@ -1,126 +0,0 @@
[ $Id$ ]
---------------------------
Version Elite2.0 ==========
===========================
- Since +x was rewritten, the ban bug is 100% fixed. :)
- Rewrote +x hidden host function completely.
- Fixed FUNNY bug with hiddenhost and /who (Reported by Prod|gy)
- Added/Removed irc networks
- Fixed bug in /watch (Reported/Fixed by Despise)
- Added nick-change flood protection.
- Added an awesome manual... ./manual to run
- Removed /who notice for opers.
- Added protection of /akill *@* :)
- Removed java stuff completely. (Java clients are like normal IRC clients...right?)
- Added new +a mode. This mode can only be set by +q channel owners. When you are +a in a
channel, you cannot be deopped or kicked. (Syntax: /mode #chan +a <nick>)
- Added new +q channel mode. ChanServ must set the channel founder +q so they are also
known as channel owners via the ircd. Channel owners are protected and may set
other users +a which they will also be protected (but not chan owners).
(Syntax: /mode #chan +q <nick>)
- Re-coded /MAP
- Changed GLINE notices from sendto_ops to send to all opers with +e flag on.
- Added (addnet) script, you can run this to add your net settings to the next release.
- Changed <server> to <ircnetwork> in whois "Blah is an oper on <server>"
- Added new +L channel mode. If a #chat has a limit (+l) of 10 users, and +L set to channel
#chat2, when a user trys to join #chat, they won't get "#chat is full", they will be
auto-joined to #chat2 - (Linked channels in other words).
(Syntax: /mode #chan +L <linked chan>)
- Changes user@shadow-33.com to user@user-33.one.com (noone will know one.com is the realhost)
- Changed +x for IP's from (x.x.x.***) to (x.x.x.network-#)
- In oline flags * will introduce +e on oper up. (before: required +e in oline flag)
- Removed +t usermode (UMODE_ALL) - wasn't used.
- Made 'create your own network setting' feature more stable.
- Added new channel mode (+x) to disable colored text in channel.
- Added +C (Co Administrator)
- Added +T (Technical Administrator)
- Changed /map to numerics...
- Made startup message when booting more stable.
Version Elite1.3 (02/23/99)
============================
- Cleaned up version.c.SH
- Added new net settings (netdomain & helpchan)
- Added new net config creator in ./Config
- Made ./Config more easier...
- Created new usermode +j (Java user)
- New hostname (java.shadownet.org) for java users.
- Removed RUN_SERVICES code from entire ircd.
Version Elite1.2.4 (02/14/99)
============================
- Fixed the nick crash bug! (damn m_kill small error)
- New network(s) added.
- Changed one thing in m_gline (nothing big)
Version Elite1.2.3 (02/10/99)
============================
- Removed SOCKS checking. (possibly cause of crashing)
- Added new networks
Version Elite1.2.2 (02/02/99)
============================
- Fixed the crashing bug. (Changing nicks with linked servers)
- Modified AceStar net settings.
- Q-line notices are back (except for ULined clients).
- Fixed /kill bug with services.
Version Elite1.2.1 (01/29/99)
============================
- Fixed multiple notices from +N / -N
- Added some text to s_err.c
- Possibly fixed the odd crashing... ?
Version Elite1.2 (01/24/99)
============================
- Netadmin can be used via +N in the oline slot now.
- When +N is executed, net-wide oper msg's are sent about it.
- Completely removed the freeze function (it's a toy unlike a command)
- Changed abit of the GLINE adding notice.
- Added logging to a file for glines (gline.log)
- Implemented SOCKS checking (thx Rhom).
- Changed channel lists only when 2 ppl in chan to 1.
- Changed sendto_ops function in many places in s_user.c/s_serv.c to
sendto_locfailops.
- Changed GNOTICE in s_user.c/s_serv.c to GLOBOPS
- Fixed hiddenhost bug with /kill (+w could see real host of oper)
- Fixed hiddenhost bug with /oper (+s could see real host of oper)
[Special thanks goes out to Rhom for reporting/help patch bugs]
Version Elite1.1.1 (12/12/98)
=============================
- Fixed /whois bug (had problems with mIRC clients *sigh*)
- Fixed /topic bug (didn't allow topic changes at all.)
Version Elite1.1 (12/6/98)
============================
- Fixed ./Config script (Net select)
- Fixed /remgline bug.
- If ULined clients, channels are not shown which they are in.
- Fixed +e / +t / +b (non-opers could get +et before)
- Fixed OperMode notice.
- Fixed Gline sending extra Global on expire.
- Fixed /whowas wrong hostname bug (by Thiago)
- Fixed chkconf ZLINE error (by matt)
- Added PhazeNet configuration
- Added option for auto +x in ./Config
- Freeze was disabled in this version (It will be back in 1.2)
Version Elite1.0 (09/20/98)
============================
- Changed Shadow3.9 to Elite1.0 (Starting a new IRCD)
- Changed some numeric's around in src/s_err.c
- Auto +x on Oper up.
- Fixed small error in ./ircd script.
- Made ./Config more Linux-redhat friendly.
- Added RelicNet to the ircd.
- include/config.h is much more compatible with all IRC nets.
- Added /gline (works 100%) [/gline <user@host> <seconds> <reason>].
- Fixed up /map.
- Added UMODE's +e & +t
* e: EYES [Can see ppl who /whois, and other notices.]
* t: ALL [See's all net notices ie: See's all Client connectings...]
- Fixed the hiddenhost bug with IP's...
- Fixed major bug with hiddenhost which caused coredump.
- Made a new script (makeconf) -- generates the ircd.conf file.
+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
+24 -2
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 DOMAINNAME "irc.net"
#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;
}
+26 -4
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);
if (!IsHiding(acptr))
#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);