mirror of
https://github.com/unrealircd/unrealircd.git
synced 2026-06-30 18:06:38 +02:00
3.2!
This commit is contained in:
+1
-1
@@ -7,7 +7,7 @@
|
||||
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
|
||||
|
||||
Configuration Program
|
||||
for Unreal3.2-RC2
|
||||
for Unreal3.2
|
||||
|
||||
This program will help you to compile your IRC server, and ask you
|
||||
questions regarding the compile-time settings of it during the process.
|
||||
|
||||
+32
-59
@@ -1,77 +1,50 @@
|
||||
|
||||
Unreal3.2-RC2 Release Notes
|
||||
============================
|
||||
Unreal3.2 Release Notes
|
||||
========================
|
||||
|
||||
==[ GENERAL INFORMATION ]==
|
||||
* This is the second (and hopefully last) Release Candidate.
|
||||
After this we intend to release 3.2 final.
|
||||
* If you are upgrading, make sure you run ./Config and make clean before doing make
|
||||
* If you are upgrading, make sure you run make clean and ./Config before doing make
|
||||
* The official UnrealIRCd documentation is doc/unreal32docs.html
|
||||
online version at: http://www.vulnscan.org/UnrealIrcd/unreal32docs.html
|
||||
FAQ: http://www.vulnscan.org/UnrealIrcd/faq/
|
||||
Read them before asking for help.
|
||||
* Report bugs at http://bugs.unrealircd.org/
|
||||
* This is a recommended release because various crashbugs have been fixed.
|
||||
|
||||
== [NEW FEATURES (see unreal32docs.html for more information) ]==
|
||||
* Lots of spamfilter improvements.
|
||||
* The new syntax is:
|
||||
/spamfilter [what] [type] [action] [tkltime] [reason] [regex]
|
||||
[tkltime] specifies the duration of any *lines placed by this rule.
|
||||
[reason] specifies the *line, kill and/or block reason.. no spaces
|
||||
allowed, but '_' will be translated to a space.
|
||||
In both cases you can simply use '-' to skip and use the default.
|
||||
Ex: /spamfilter add p block - - Come watch me on my webcam
|
||||
/spamfilter add p gline 3h Please_go_to_www.viruscan.xx/[linewrap]
|
||||
nicepage/virus=blah Come watch me on my webcam
|
||||
* The spamfilter { } blocks also have a new 'reason' and 'ban-time' field.
|
||||
* The user will now receive a notice if the msg/notice/dcc is blocked.
|
||||
* There are 2 new spamfilter action types:
|
||||
'dccblock' will mark the user so (s)he's unable to send any files by DCC.
|
||||
'viruschan' will part the user from all channels and join
|
||||
set::spamfilter::virus-help-channel (default: #help).
|
||||
After this all commands for the user are disabled except: PONG, ADMIN
|
||||
and NOTICE/PRIVMSG's to the virus-help-channel.
|
||||
Also any ops (+oaq) in the virus help channel will receive a notice
|
||||
explaining which filter the user matched (so they can help the user out).
|
||||
* Added set::spamfilter::except which allows you to specify targets where
|
||||
spamfilter should not take action. Useful for spam-report/help chans.
|
||||
Ex: set { spamfilter { except "#spamreport,#help"; }; };
|
||||
* there's now a 'spamfilter.conf' file with some effective spamfilter rules.
|
||||
* Added '/tempshun' command (/tempshun nick reason, /tempshun -nick).
|
||||
== [ NEW ]==
|
||||
- Added german docs (doc/unreal32docs.de.html)
|
||||
- In a spamfilter reason field '_' gets converted to a space (' '),
|
||||
now also added '__' which gets converted to underscore itself ('_').
|
||||
|
||||
==[ MAJOR BUGS FIXED ]==
|
||||
* The ircd was unable to boot on some OSs because unreal removed tmp/
|
||||
* crash: if an invalid regex was entered (eg: in spamfilter) the ircd could crash
|
||||
* crash: The TRE regex library could be crashed in case of some (advanced) regexes.
|
||||
* crash: several remote includes problems (also non-crash)
|
||||
* crash/security: an user-triggerable crash bug
|
||||
* Fixed problem with 'tkl update' which could lead to server fights in some cases.
|
||||
- '/spamfiltere remove' was often removing the wrong entry (RC2 bug)
|
||||
- The TRE regex library was sometimes matching too much if [range].+
|
||||
was used multiple times.
|
||||
- Fixed a remote include issue and added timeouts in case a connection/transfer fails
|
||||
|
||||
==[ MINOR BUGS FIXED ]==
|
||||
* allow::options::noident now actually works
|
||||
* Fixed compile problem on Solaris
|
||||
* Some OperOverride + ExtModes fixes (eg: globop w/can_override couldn't set +T)
|
||||
* +qaohv'ing a network service was disallowed
|
||||
* chanmode +f was often reset on synch when it was already the same at both sides
|
||||
* Spamfilter single-target are now supported, eg:
|
||||
spamfilter { regex "blah"; action kill; target private; };
|
||||
previously the ircd didn't warn about this (but it didn't work).
|
||||
- Sometimes hosts were not resolved on Windows due to a resolver bug
|
||||
- spamfilter and sqline: memory leak on /rehash (a few kb)
|
||||
- spamfilter: protect against insane long reason/regex fields in configfile
|
||||
- set::modes-on-join now accepts extended channelmodes
|
||||
- Opteron: various crashbugs fixed, should work ok now.
|
||||
- Win32 GUI "rehash all" option did not reload motd/rules.
|
||||
- Same for ./unreal rehash on *NIX
|
||||
- Usermode 'r' (registered) was unset if you changed the case of your
|
||||
nick (eg: 'blah'->'Blah'), this affected at least ircservices.
|
||||
- vhost::swhois wasn't shown if you did a remote /whois.
|
||||
- Made './curlinstall' work with new c-ares-1.0.0.
|
||||
- Fixed compile problem on some machines related to TRE / libintl.
|
||||
- /who +m was incorrectly hiding +H users even for opers.
|
||||
- Fixed /rehash bug if an .so or remote include didn't load properly
|
||||
|
||||
==[ CHANGED ]==
|
||||
* Updated /credits. Now includes everyone who has sent in donations,
|
||||
thanks to everyone!
|
||||
* Various help.conf/docs updates as usual
|
||||
* New hooks for module coders and other module system improvements.
|
||||
* Modulized A LOT of commands (34): this allows better "hot patching"
|
||||
and leaving out commands (eg: loading all m_*.so mods except m_addline.so).
|
||||
* Moved SQLINE system (and ban nick) to TKL and introduced "holds",
|
||||
this might later be used by services for nick enforcement.
|
||||
* Restricted class::pingfreq to 30-600.. anything higher and you might get
|
||||
mysterious (mass) disconnect issues... Anything lower is dumb too.
|
||||
* Added checking for insane listen port ranges (eg 6667-7000).
|
||||
* Improved DCC blocking (like dcc to channels)
|
||||
* Made some numerics more clear by including the channelname (+V/+O/+A)
|
||||
- spamfilter.conf: fixed fyle sig, added sigs for: soex, Nkie, LOI, Gaggle,
|
||||
changed a lot of sigs from block to gline.
|
||||
- Windows: now using new Inno Setup which made the installer 300k smaller
|
||||
- Docs, help.conf and other text updates.
|
||||
|
||||
==[ COMMING UP ]==
|
||||
- You can expect module support on windows in a nearby release.
|
||||
|
||||
==[ ADDITIONAL INFO ]==
|
||||
* See Changelog
|
||||
|
||||
@@ -3012,3 +3012,103 @@ seen. gmtime warning still there
|
||||
- Fixed a bug regarding the new HOOKTYPE_PRE_LOCAL_JOIN reported by bla
|
||||
- Fixed a compile problem on Solaris due to tar not supporting the z option
|
||||
*** RC2fix release ***
|
||||
- spamfilter.conf: fixed fyle sig (was bad!), some minor updates to the rest,
|
||||
added mirc 6.12 exploit sig. Reported by PHANTOm.
|
||||
- Added a check to try and prevent people from adding all-encompassing
|
||||
regexp's in /spamfilter. Thanks to Ville Laurikari for coming up with the
|
||||
method!
|
||||
- Removed the old/unused src/win32/version.c (#0001630) reported by fez
|
||||
- Updated docs to mention except tkl {} type qline/gqline
|
||||
- spamfilter.conf: added soex trojan. Sig provided by Jay.
|
||||
- Fixed a spamfilter memory leak
|
||||
- Added '__' -> '_' decoding for spamfilter reason field.
|
||||
- Made it so set::modes-on-join correctly works with extcmodes. Note: to
|
||||
correctly work with modes created by modules, the module _must_ call CmodeAdd
|
||||
from Mod_Test (#0001624) reported by thunderbirdjl
|
||||
- Made some changes to the curlinstall script to make it work with c-ares-1.0.0
|
||||
also updated INSTALL.REMOTEINC
|
||||
- Fixed a typo in the /credits
|
||||
- Made it so curlinstall doesn't use cp -f since it is nonportable
|
||||
- Hide server IP in /stats z
|
||||
- First Opteron crash bugfix. Thanks to Liverbugg for helping us trace this issue.
|
||||
- More Opteron fixes... sizeof() fun, %B fun (always use a 'long'!), etc..
|
||||
- Added __attribute__ stuff for ircsprintf() to catch more warnings.
|
||||
- Fixed win32 compile problem. Reported by Troco (#0001644).
|
||||
- Added a missing ',' to the version.c.SH script reported by docco (#0001643)
|
||||
- Added conf check for too large spamfilter regex + reason field. Reported by
|
||||
Z3l3zT (#0001648).
|
||||
- Added spamfilters for the Nkie worm
|
||||
- Fixed a little sqline recode memory leak
|
||||
- Fixed /spamfilter removal problem... often the wrong entry was removed [!] or
|
||||
nothing was removed at all. Reported by MiNdErAsR, RealCFC and others (#0001669).
|
||||
- Fixed /spamfilter reason field bug.. things were double escaped sometimes,
|
||||
especially in post-RC2-cvs this was noticable. Reported by Fury (#0001670).
|
||||
- help.conf: updated snomasks section.
|
||||
- Added a patch by baafie to fix a problem where environment variables could not
|
||||
be specified in the Config script (#0001657)
|
||||
- Imported TRE 0.6.6 on Win32 and Linux
|
||||
- Made use of TRE's pkg-config support to solve a problem with libintl reported by
|
||||
raistlinmajere (#0001592)
|
||||
- Fixed a problem with /stats S and extended channel modes (#0001675) reported by
|
||||
AngryWolf
|
||||
- Fixed a resolver problem that could cause hosts to not be resolved on some Windows
|
||||
systems
|
||||
- Fixed a problem where the win32 GUI's "rehash all" option did not reload motd/rules
|
||||
(#0001678) reported by w00t
|
||||
- Made some changes to the win32 setup script to make it work with the latest version
|
||||
of Inno Setup (4.2.0)
|
||||
- Made the setup script use the new compression method 'lzma' which makes the setup.exe
|
||||
~300Kb smaller. Now also requires Inno Setup 4.1.6 (tested with 4.2.0).
|
||||
- Usermode 'r' (registered) was unset even in case of "case"-nickchanges (like:
|
||||
'Syzop' -> 'syzop'). This affected f.e. ircservices. Reported by LoVeR (#0001679).
|
||||
- spamfilter.conf: changed a lot of rules from 'block' to 'gline', left some
|
||||
on 'block' however if there was some (very low) chance on false positives (even though
|
||||
just like 0.01%).
|
||||
- Fixed an SVSMODE #chan -qaohv bug that would cause the user to be able to readd the mode
|
||||
(#0001690) reported by auspice
|
||||
- spamfilter.conf: added signature for LOI trojan.
|
||||
- Added german translation of unreal32docs (doc/unreal32docs.de.html), translated
|
||||
by Stylus740 which will also maintain it.
|
||||
- Patched TRE 0.6.6 to fix known crashbug (#0001684), testing is welcomed.
|
||||
- Applied the above patch to the win32 TRE dll/lib files.
|
||||
- Fixed a problem with vhost::swhois not being displayed remotely (#0001702) reported by
|
||||
medice.
|
||||
- Windows: Updated makefile/unrealinst.iss/zip.h to use zlib 1.2.1.
|
||||
- Updated credits
|
||||
- German doc updates (spelling+synch).
|
||||
- Updated /credits a bit more
|
||||
- Updated the /stats ? output to say Q is sqline and q is ban nick (#0001689) reported
|
||||
by Alzirr
|
||||
- Made a note in example.conf about not using link::options::autoconnect for services
|
||||
(#0001674) suggested by fez
|
||||
- Fixed a typo in /credits
|
||||
- Fixed something if sptr->user->virthost was NULL (which is/should never be the case),
|
||||
just to be sure... (#0001724).
|
||||
- Updated server<->server code for MODE so operoverride bug #0001704 and other
|
||||
feature requests can be fixed/added in the future (3.2.1).
|
||||
- Fixed /who +m bug for opers, reported by Bugz (#0001715).
|
||||
- Fixed halfop mode code to not check remote halfop modes (desynch danger).
|
||||
- Force a TRE recompile if ./Config is re-run, due to timestamp fun if you were
|
||||
upgrading to CVS every time TRE was not recompiled even if you did make clean.
|
||||
- Made ./unreal rehash (= kill -1 <pid>) also reread motd/rules/etc just as a
|
||||
normal /rehash does, reported by superh (#0001699).
|
||||
- Various doc/text updates
|
||||
- Added some release notes already.
|
||||
- Fixed /rehash bug if an .so (or remote include?) failed to load properly,
|
||||
reported by fez (#0001736).
|
||||
- doc/unreal32docs.html and help.conf updates (#0001734 + other stuff).
|
||||
- spamfilter.conf: added signatures for Gaggle worm.
|
||||
- Changed version to pre1
|
||||
- Fixed SJOIN bug: it sometimes was setting too many modes at once.
|
||||
- Minor sajoin/sapart ERR_NEEDMOREPARAMS tweak.
|
||||
** internal pre1 release **
|
||||
- Docs/help.conf tweak on /connect syntax (#0001755).
|
||||
- German doc updates (from April 18) + gzline docs tweak.
|
||||
- Fixed some remote includes issues and added a connect/transfer timeout, server should
|
||||
now no longer be frozen if the site is unreachable. Reported by Ron2K (#0001751).
|
||||
- Changed version to 3.2 already
|
||||
** internal pre2 release **
|
||||
- Added temporary fix for include "http://www.blah.com/"; crashbug...although I doubt
|
||||
many people would use it. Reported by Angrywolf (#0001757).
|
||||
- Some doc/release notes updates on win module support.
|
||||
*** 3.2 release ***
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
# in the cache file is valid and therefore doesn't check it, so if you messed with
|
||||
# default values thats your problem :P
|
||||
|
||||
# some bits edited by baafie on March 17 2004, every change marked.
|
||||
|
||||
|
||||
RUN_CONFIGURE () {
|
||||
ARG=""
|
||||
@@ -195,7 +197,7 @@ read cc
|
||||
if [ -z "$cc" ] ; then
|
||||
DPATH=$TEST
|
||||
else
|
||||
DPATH=$cc
|
||||
DPATH=`eval echo $cc` # modified
|
||||
fi
|
||||
|
||||
TEST="$SPATH"
|
||||
@@ -206,7 +208,7 @@ echo $n "[$TEST] -> $c"
|
||||
if [ -z "$cc" ] ; then
|
||||
SPATH=$TEST
|
||||
else
|
||||
SPATH=$cc
|
||||
SPATH=`eval echo $cc` # modified
|
||||
fi
|
||||
|
||||
TEST=""
|
||||
@@ -247,7 +249,7 @@ echo $n "[$TEST] -> $c"
|
||||
if [ -z "$cc" ] ; then
|
||||
DOMAINNAME=$TEST
|
||||
else
|
||||
DOMAINNAME=$cc
|
||||
DOMAINNAME=`eval echo $cc` # modified
|
||||
fi
|
||||
|
||||
TEST=""
|
||||
@@ -314,7 +316,7 @@ echo $n "[$TEST] -> $c"
|
||||
if [ -z "$cc" ] ; then
|
||||
SSLDIR=""
|
||||
else
|
||||
SSLDIR=$cc
|
||||
SSLDIR=`eval echo $cc` # modified
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -386,7 +388,7 @@ echo $n "[$TEST] -> $c"
|
||||
if [ -z "$cc" ] ; then
|
||||
ZIPLINKSDIR=""
|
||||
else
|
||||
ZIPLINKSDIR=$cc
|
||||
ZIPLINKSDIR=`eval echo $cc` # modified
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -432,7 +434,7 @@ if [ "$REMOTEINC" = "1" ] ; then
|
||||
cc=$TEST
|
||||
else
|
||||
TEST=$cc
|
||||
CURLDIR=$cc
|
||||
CURLDIR=`eval echo $cc` # modified
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
+5
-7
@@ -1,10 +1,8 @@
|
||||
**** Remote Includes ****
|
||||
|
||||
Setting up UnrealIRCd to work with remote includes is not very difficult. The first step is to
|
||||
download c-ares (also known as arescurl). At the time of this writing, only a pre-release
|
||||
version of c-ares is available and can be downloaded at <http://curl.haxx.se/beta/> in the
|
||||
future stable versions will be available at <http://curl.haxx.se/download.html> download
|
||||
the latest version of c-ares and extract the .tar.gz somewhere.
|
||||
download c-ares. C-ares can be downloaded from <http://daniel.haxx.se/projects/c-ares/>
|
||||
download the latest version of c-ares and extract the .tar.gz somewhere.
|
||||
|
||||
Now, download the latest version of curl, available at <http://curl.haxx.se/download.html>
|
||||
again, extract the tar.gz somewhere.
|
||||
@@ -14,10 +12,10 @@ as follows:
|
||||
|
||||
./curlinstall ares_path curl_path
|
||||
|
||||
Paths should be complete pathnames. If you extracted ares to /home/username/arescurl-1.0-pre1
|
||||
and curl to /home/username/curl-7.10.8 then you would run:
|
||||
Paths should be complete pathnames. If you extracted c-ares to /home/username/c-ares-1.0.0
|
||||
and curl to /home/username/curl-7.11.0 then you would run:
|
||||
|
||||
./curlinstall /home/username/arescurl-1.0-pre1 /home/username/curl-7.10.8
|
||||
./curlinstall /home/username/c-ares-1.0.0 /home/username/curl-7.11.0
|
||||
|
||||
Lastly, run ./Config. When asked whether to enable remote includes say "yes" and when asked
|
||||
for the path curl was installed to include the path that is printed out after ./curlinstall
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@ FROMDOS=/home/cmunk/bin/4dos
|
||||
#
|
||||
|
||||
#XCFLAGS=-O -g -export-dynamic
|
||||
IRCDLIBS=@IRCDLIBS@ -L../extras/regexp/lib -ltre
|
||||
IRCDLIBS=@IRCDLIBS@ @TRELIBS@
|
||||
CRYPTOLIB=@CRYPTOLIB@
|
||||
OPENSSLINCLUDES=
|
||||
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
Some notes to remember:
|
||||
-----------------------
|
||||
* Don't EVER try to link it to incompatible IRCds (this does not
|
||||
include services). It is *INCOMPATIBLE*. Please HEED this warning!!!
|
||||
|
||||
* If you need any help you can email me at stskeeps@tspre.org
|
||||
|
||||
* Please read the Changes file about release notes
|
||||
|
||||
* Bugs? Read Unreal.nfo
|
||||
|
||||
* Unreal IRCd is not meant to be a simple IRCd, rather an advanced
|
||||
IRCd, please read the documentation before asking questions
|
||||
|
||||
[ $Id$ ]
|
||||
+35
-32
@@ -1,5 +1,5 @@
|
||||
===============================================
|
||||
= UnrealIRCd v3.2 (RC2) =
|
||||
= UnrealIRCd v3.2 =
|
||||
===============================================
|
||||
Was brought to you by:
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
* codemastr <codemastr@unrealircd.com>
|
||||
* Syzop <syzop@unrealircd.org>
|
||||
* Luke <luke@unrealircd.com>
|
||||
* McSkaf <mcskaf@unrealircd.org>
|
||||
|
||||
Contributors
|
||||
============
|
||||
* McSkaf <mcskaf@unrealircd.org>
|
||||
* Zogg <zogg@unrealircd.org>
|
||||
* NiQuiL <niquil@unrealircd.org>
|
||||
* assyrian <assyrian@unrealircd.org>
|
||||
@@ -28,40 +28,43 @@
|
||||
Precenses on the Internet:
|
||||
* http://www.unrealircd.com
|
||||
|
||||
CVS:
|
||||
To get anonymous access: (read only)
|
||||
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot login"
|
||||
CVS
|
||||
====
|
||||
To get anonymous access: (read only)
|
||||
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot login"
|
||||
|
||||
press enter when asked for password
|
||||
press enter when asked for password
|
||||
Then, choose the appropiate branch you want:
|
||||
|
||||
and to get latest stable:
|
||||
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot checkout -r stable -d Unreal-stable unreal"
|
||||
latest 3.2 release ("stable"):
|
||||
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot checkout -r stable -d Unreal-stable unreal"
|
||||
|
||||
latest beta:
|
||||
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot checkout -r beta -d Unreal-beta unreal"
|
||||
latest 3.2 fixes / development ("unreal3_2_fixes"):
|
||||
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot checkout -r unreal3_2_fixes -d Unreal-stable unreal"
|
||||
|
||||
latest devel:
|
||||
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot checkout -r devel -d Unreal-devel unreal"
|
||||
To get support
|
||||
================
|
||||
Before asking others for help you MUST:
|
||||
* read the docs (doc/unreal32docs.html or online: www.unrealircd.com/unreal32docs.html)
|
||||
* check the FAQ (www.vulnscan.org/UnrealIrcd/faq/)
|
||||
|
||||
* To get support
|
||||
================
|
||||
* IRC: /server irc.ircsystems.net 6667 - /join #unreal-support
|
||||
[Note: Please be patient after asking questions, we may do other stuff
|
||||
or we're away. Don't repeat questions, we heard you first time,
|
||||
READ THE TOPIC before you ask anything. We do this on a free
|
||||
base so we are volunteeringly helping you, but we are humans
|
||||
like you, and we got to have peace at times as well.]
|
||||
* Mailing list: supporters@lists.unrealircd.org (for support)
|
||||
* READ THE DOCS BEFORE ASKING QUESTIONS! doc/unreal32docs.html
|
||||
or on the web http://www.unrealircd.com/unreal32docs.html
|
||||
* READ http://support.unrealircd.org
|
||||
|
||||
* Want to discuss, chat, etc?
|
||||
=============================
|
||||
* IRC: /server irc.ircsystems.net 6667 - /join #UnrealIRCd
|
||||
|
||||
* UnrealIRCd Bugtracker (Where to report bugs or make suggestions)
|
||||
==============================================
|
||||
http://bugs.unrealircd.org
|
||||
Means of support:
|
||||
* IRC: /server irc.ircsystems.net 6667 - /join #unreal-support
|
||||
[Note: Follow the bots instructions in order to get voice.
|
||||
Please be patient after asking questions, we may do other stuff
|
||||
or we're away. Don't repeat questions, we heard you first time,
|
||||
READ THE TOPIC before you ask anything. We do this on a free
|
||||
base so we are volunteeringly helping you, but we are humans
|
||||
like you, and we got to have peace at times as well.]
|
||||
* Forum: http://forums.unrealircd.com/
|
||||
* Mailing list: unreal-users@lists.sourceforge.net
|
||||
(http://lists.sourceforge.net/lists/listinfo/unreal-users also
|
||||
has links to the archive).
|
||||
|
||||
UnrealIRCd Bugtracker (Where to report bugs or make suggestions)
|
||||
==================================================================
|
||||
http://bugs.unrealircd.org
|
||||
|
||||
Want to discuss, chat, etc?
|
||||
=============================
|
||||
* IRC: /server irc.ircsystems.net 6667 - /join #UnrealIRCd
|
||||
|
||||
+13
-2
@@ -28,6 +28,8 @@ AC_PATH_PROG(INSTALL,install)
|
||||
AC_CHECK_PROG(MAKER, gmake, gmake, make)
|
||||
AC_PATH_PROG(GMAKE,gmake)
|
||||
AC_PATH_PROG(GUNZIP, gunzip)
|
||||
AC_PATH_PROG(PKGCONFIG, pkg-config)
|
||||
|
||||
dnl Checks for libraries.
|
||||
AC_CHECK_LIB(descrypt, crypt, [AC_DEFINE(HAVE_CRYPT) IRCDLIBS="$IRCDLIBS-ldescrypt " MKPASSWDLIBS="-ldescrypt"],
|
||||
AC_CHECK_LIB(crypt, crypt,[ AC_DEFINE(HAVE_CRYPT) IRCDLIBS="$IRCDLIBS-lcrypt " MKPASSWDLIBS="-lcrypt"]))
|
||||
@@ -362,9 +364,13 @@ IRCDLIBS="$IRCDLIBS -lresolv "
|
||||
;;
|
||||
esac
|
||||
|
||||
dnl REMEMBER TO CHANGE WITH A NEW RELEASE!
|
||||
tre_version="0.6.6"
|
||||
AC_MSG_RESULT(extracting TRE regex library)
|
||||
cur_dir=`pwd`
|
||||
cd extras
|
||||
dnl remove old tre directory to force a recompile...
|
||||
rm -rf tre-$tre_version
|
||||
if test "x$ac_cv_path_GUNZIP" = "x" ; then
|
||||
tar xfz tre.tar.gz
|
||||
else
|
||||
@@ -373,9 +379,8 @@ else
|
||||
cp tre.tar.gz.bak tre.tar.gz
|
||||
tar xf tre.tar
|
||||
fi
|
||||
dnl REMEMBER TO CHANGE WITH A NEW RELEASE!
|
||||
AC_MSG_RESULT(configuring TRE regex library)
|
||||
cd tre-0.6.5
|
||||
cd tre-$tre_version
|
||||
./configure --disable-agrep --disable-shared --disable-system-abi --disable-wchar --disable-multibyte --prefix=$cur_dir/extras/regexp
|
||||
AC_MSG_RESULT(compiling TRE regex library)
|
||||
$ac_cv_prog_MAKER
|
||||
@@ -383,6 +388,12 @@ AC_MSG_RESULT(installing TRE regex library)
|
||||
$ac_cv_prog_MAKER install
|
||||
TREINCDIR="$cur_dir/extras/regexp/include"
|
||||
AC_SUBST(TREINCDIR)
|
||||
if test "x$ac_cv_path_PKGCONFIG" = "x" ; then
|
||||
TRELIBS="-L../extras/regexp/lib -ltre"
|
||||
else
|
||||
TRELIBS=`$ac_cv_path_PKGCONFIG --libs tre.pc`
|
||||
fi
|
||||
AC_SUBST(TRELIBS)
|
||||
cd $cur_dir
|
||||
AC_OUTPUT(Makefile src/modules/Makefile unreal ircdcron/ircdchk)
|
||||
chmod 0700 unreal
|
||||
|
||||
@@ -2340,6 +2340,46 @@ else
|
||||
echo "${ECHO_T}no" >&6
|
||||
fi
|
||||
|
||||
# Extract the first word of "pkg-config", so it can be a program name with args.
|
||||
set dummy pkg-config; ac_word=$2
|
||||
echo "$as_me:$LINENO: checking for $ac_word" >&5
|
||||
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
|
||||
if test "${ac_cv_path_PKGCONFIG+set}" = set; then
|
||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
else
|
||||
case $PKGCONFIG in
|
||||
[\\/]* | ?:[\\/]*)
|
||||
ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path.
|
||||
;;
|
||||
*)
|
||||
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $PATH
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
test -z "$as_dir" && as_dir=.
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
|
||||
ac_cv_path_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
|
||||
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
|
||||
break 2
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
PKGCONFIG=$ac_cv_path_PKGCONFIG
|
||||
|
||||
if test -n "$PKGCONFIG"; then
|
||||
echo "$as_me:$LINENO: result: $PKGCONFIG" >&5
|
||||
echo "${ECHO_T}$PKGCONFIG" >&6
|
||||
else
|
||||
echo "$as_me:$LINENO: result: no" >&5
|
||||
echo "${ECHO_T}no" >&6
|
||||
fi
|
||||
|
||||
|
||||
echo "$as_me:$LINENO: checking for crypt in -ldescrypt" >&5
|
||||
echo $ECHO_N "checking for crypt in -ldescrypt... $ECHO_C" >&6
|
||||
if test "${ac_cv_lib_descrypt_crypt+set}" = set; then
|
||||
@@ -9986,10 +10026,12 @@ IRCDLIBS="$IRCDLIBS -lresolv "
|
||||
;;
|
||||
esac
|
||||
|
||||
tre_version="0.6.6"
|
||||
echo "$as_me:$LINENO: result: extracting TRE regex library" >&5
|
||||
echo "${ECHO_T}extracting TRE regex library" >&6
|
||||
cur_dir=`pwd`
|
||||
cd extras
|
||||
rm -rf tre-$tre_version
|
||||
if test "x$ac_cv_path_GUNZIP" = "x" ; then
|
||||
tar xfz tre.tar.gz
|
||||
else
|
||||
@@ -10000,7 +10042,7 @@ else
|
||||
fi
|
||||
echo "$as_me:$LINENO: result: configuring TRE regex library" >&5
|
||||
echo "${ECHO_T}configuring TRE regex library" >&6
|
||||
cd tre-0.6.5
|
||||
cd tre-$tre_version
|
||||
./configure --disable-agrep --disable-shared --disable-system-abi --disable-wchar --disable-multibyte --prefix=$cur_dir/extras/regexp
|
||||
echo "$as_me:$LINENO: result: compiling TRE regex library" >&5
|
||||
echo "${ECHO_T}compiling TRE regex library" >&6
|
||||
@@ -10010,6 +10052,12 @@ echo "${ECHO_T}installing TRE regex library" >&6
|
||||
$ac_cv_prog_MAKER install
|
||||
TREINCDIR="$cur_dir/extras/regexp/include"
|
||||
|
||||
if test "x$ac_cv_path_PKGCONFIG" = "x" ; then
|
||||
TRELIBS="-L../extras/regexp/lib -ltre"
|
||||
else
|
||||
TRELIBS=`$ac_cv_path_PKGCONFIG --libs tre.pc`
|
||||
fi
|
||||
|
||||
cd $cur_dir
|
||||
ac_config_files="$ac_config_files Makefile src/modules/Makefile unreal ircdcron/ircdchk"
|
||||
cat >confcache <<\_ACEOF
|
||||
@@ -10583,6 +10631,7 @@ s,@INSTALL@,$INSTALL,;t t
|
||||
s,@MAKER@,$MAKER,;t t
|
||||
s,@GMAKE@,$GMAKE,;t t
|
||||
s,@GUNZIP@,$GUNZIP,;t t
|
||||
s,@PKGCONFIG@,$PKGCONFIG,;t t
|
||||
s,@IRCDLIBS@,$IRCDLIBS,;t t
|
||||
s,@MKPASSWDLIBS@,$MKPASSWDLIBS,;t t
|
||||
s,@CPP@,$CPP,;t t
|
||||
@@ -10595,6 +10644,7 @@ s,@IRCDDIR@,$IRCDDIR,;t t
|
||||
s,@BINDIR@,$BINDIR,;t t
|
||||
s,@FD_SETSIZE@,$FD_SETSIZE,;t t
|
||||
s,@TREINCDIR@,$TREINCDIR,;t t
|
||||
s,@TRELIBS@,$TRELIBS,;t t
|
||||
CEOF
|
||||
|
||||
_ACEOF
|
||||
|
||||
@@ -37,6 +37,12 @@ while [ -z "$SSLFLAG" ] ; do
|
||||
;;
|
||||
esac
|
||||
done
|
||||
if [ -f $HOME/ares/lib/libcares.a ] ; then
|
||||
if [ -f $HOME/ares/lib/libares.a ] ; then
|
||||
rm -f $HOME/ares/lib/libares.a
|
||||
fi
|
||||
cp $HOME/ares/lib/libcares.a $HOME/ares/lib/libares.a
|
||||
fi
|
||||
|
||||
echo "Installing libcurl"
|
||||
cd $2
|
||||
@@ -45,6 +51,9 @@ CPPFLAGS="-I$HOME/ares/include" ./configure --prefix=$HOME/curl --disable-shared
|
||||
cp -R $HOME/ares/lib ares
|
||||
make && make install
|
||||
|
||||
if [ -f $HOME/curl/lib/libares.a ] ; then
|
||||
rm -f $HOME/curl/lib/libares.a
|
||||
fi
|
||||
cp $HOME/ares/lib/libares.a $HOME/curl/lib
|
||||
|
||||
cd $save_PWD
|
||||
|
||||
@@ -327,6 +327,9 @@ link hub.mynet.com
|
||||
password-receive "LiNk";
|
||||
class servers;
|
||||
options {
|
||||
/* Note: You should not use autoconnect when linking
|
||||
* services
|
||||
*/
|
||||
autoconnect;
|
||||
ssl;
|
||||
zip;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+39
-31
@@ -16,14 +16,18 @@
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<!-- $Id$ -->
|
||||
|
||||
<body>
|
||||
English | <a href="unreal32docs.de.html">German</a><br><br>
|
||||
<div align="center"><b><font size="7">UnrealIRCd</font></b><br>
|
||||
<font size="4"><a href="http://www.unrealircd.com">http://www.unrealircd.com</a></font><br>
|
||||
<font size="4">Version: 3.2</font><br>
|
||||
<b>Current Version:</b> 3.2 RC2<br>
|
||||
<b>Last doc update:</b> 2004-03-07</div>
|
||||
<b>Head Coders:</b> Stskeeps / codemastr / Syzop / Luke / McSkaf<br>
|
||||
<b>Contributors:</b> Zogg / NiQuiL / assyrian / chasm / DrBin / llthangel / Griever / nighthawk<br>
|
||||
<b>Current Version:</b> 3.2<br>
|
||||
<b>Last doc update:</b> 2004-04-24</div>
|
||||
<br>
|
||||
<b>Head Coders:</b> Stskeeps / codemastr / Syzop / Luke<br>
|
||||
<b>Contributors:</b> McSkaf / Zogg / NiQuiL / assyrian / chasm / DrBin / llthangel / Griever / nighthawk<br>
|
||||
<b>Documentation:</b> CKnight^ / Syzop<br>
|
||||
<p>Due to the increasing complexity of UnrealIRCd3.2 We have switched to an easier
|
||||
to navigate, more inclusive documentation set. To view this documentation you
|
||||
@@ -113,7 +117,7 @@
|
||||
---8.9. <a href="#secsummary">Summary</a><br>
|
||||
9. <a href="http://www.vulnscan.org/UnrealIrcd/faq/" target="_blank">Frequently Asked Questions (FAQ)</a><br>
|
||||
</p>
|
||||
<p><b><font size="+2">1.0 –Introduction & Notes <a name="IntroductionNotes"></a></font></b><br>
|
||||
<p><b><font size="+2">1.0 – Introduction & Notes <a name="IntroductionNotes"></a></font></b><br>
|
||||
</p><div class="desc">
|
||||
<p>This document was written for exclusive use with UnrealIRCd. Use of this
|
||||
document with another software package, or distribution of this document with
|
||||
@@ -184,8 +188,8 @@ Windows:<br>
|
||||
<p><b>Installation Instructions</b><br>
|
||||
Linux:<br>
|
||||
<ol>
|
||||
<li>gunzip -d Unreal3.2-RC2.tar.gz
|
||||
<li>tar xvf Unreal3.2-RC2.tar
|
||||
<li>gunzip -d Unreal3.2.tar.gz
|
||||
<li>tar xvf Unreal3.2.tar
|
||||
<li>cd Unreal3.2
|
||||
<li>./Config
|
||||
<li>Answer these questions to the best of your knowledge. Generally if your not
|
||||
@@ -219,12 +223,14 @@ Windows:<br>
|
||||
have to keep them secret. _The cloak keys must be the same on all servers on the network_.</p>
|
||||
</div>
|
||||
<p><font size="+2"><b>3.2 - Modules</b></font><a name="feature_modules"></a></p><div class="desc">
|
||||
<p>UnrealIRCd supports modules (except under windows) which is nice because:<br>
|
||||
<p>UnrealIRCd supports modules which is nice because:<br>
|
||||
- You can load/reload/unload them while the ircd is running (by /rehash). This allows some bugs to be fixed or new features to be added without requiring a restart.<br>
|
||||
- Other people can create (3rd party) modules with new commands, usermodes and even channelmodes.<br>
|
||||
UnrealIRCd only comes with a few modules, take a look at www.unrealircd.com -> modules
|
||||
or use google to find 3rd party modules.</p>
|
||||
<p>Note that you need to load at least the commands module!</p></div>
|
||||
or use google to find 3rd party modules.<br>
|
||||
NOTE: currently modules are not supported on windows, you can however expect this is in a nearby release</p>
|
||||
<p>You need to load at least the commands module or else the ircd won't load!</p>
|
||||
</div>
|
||||
|
||||
<p><font size="+2"><b>3.3 - Snomasks</b></font><a name="feature_snomasks"></a></p><div class="desc">
|
||||
<p>Snomasks are server notice masks, it's a special type of usermode that controls which
|
||||
@@ -273,7 +279,7 @@ Windows:<br>
|
||||
<p>This is controlled by the oper flags in the oper block, see the oper block for more information.</p></div>
|
||||
|
||||
<p><font size="+2"><b>3.7 - Oper commands</b></font><a name="feature_opercmds"></a></p><div class="desc">
|
||||
<p>UnrealIRCd has a lot of powerful oper commands which are explained in section 6,
|
||||
<p>UnrealIRCd has a lot of powerful oper commands which are explained in <a href="#useropercommands">User & Oper Commands</a>,
|
||||
you probably want to read those after installing :).</p></div>
|
||||
|
||||
<p><font size="+2"><b>3.8 - SSL</b></font><a name="feature_ssl"></a></p><div class="desc">
|
||||
@@ -286,7 +292,7 @@ Windows:<br>
|
||||
<p>Clients that support SSL: <A HREF="http://www.xchat.org/" TARGET="_blank">XChat</a>,
|
||||
<A HREF="http://www.irssi.org/" TARGET="_blank">irssi</a>,
|
||||
<A HREF="http://www.irssi.org/" TARGET="_blank">mIRC</a> (6.14 and up,
|
||||
also requires some <a href="http://www.mirc.co.uk/ssl.html" target="_blank>additional steps</a>)</p>
|
||||
also requires some <a href="http://www.mirc.co.uk/ssl.html" target="_blank">additional steps</a>)</p>
|
||||
<p>For clients which do not support SSL you can use a tunnel like
|
||||
<A HREF="http://www.stunnel.org/" TARGET="_blank">stunnel</A>, here's a stunnel.conf example (for stunnel 4.x):<br>
|
||||
<pre>
|
||||
@@ -466,7 +472,7 @@ Modules can also add other extended ban types.<br>
|
||||
<tr valign="top"><td><b>[tkltime]</b></td><td> The duration of the *line added by the filter, use '-' to use the default or to skip
|
||||
(eg: if action = 'block')</td></tr>
|
||||
<tr valign="top"><td><b>[reason]</b></td><td> Block or *line reason.. you CANNOT use spaces in this, but underscores ('_') will be translated
|
||||
into spaces at runtime. Again, use '-' to use the default.</td></tr>
|
||||
into spaces at runtime. And double underscore ('__') gets an underscore ('_'). Again, use '-' to use the default reason.</td></tr>
|
||||
<tr valign="top"><td><b>[regex]</b></td><td> this is the actual regex or 'bad word' where we should block on and perform the action at</td></tr>
|
||||
</table>
|
||||
<br>
|
||||
@@ -1420,8 +1426,8 @@ except tkl {
|
||||
still want specific users to be able to connect. The except::mask directive
|
||||
specifies the user@host mask of the client who will be allowed to connect. The
|
||||
except::type specifies which type of ban this should override. Valid types are
|
||||
gline, gzline, and shun, which make an exception from Glines, Global Zlines, and
|
||||
shuns.</p>
|
||||
gline, gzline, qline, gqline, and shun, which make an exception from Glines,
|
||||
Global Zlines, Qlines, Global Qlines, and shuns.</p>
|
||||
<p>Example:<br>
|
||||
<pre>
|
||||
except tkl {
|
||||
@@ -2713,35 +2719,37 @@ to get more information on a command.</p>
|
||||
<td>IRCop</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="39">kline +-<hostmask> <time to ban> <reason></td>
|
||||
<td>Bans the hostmask from the server it is issued on. It is not a global
|
||||
ban. Time to ban is in seconds, or you can use 1d for 1 days. If the hostmask is prefixed with a -, the kline is removed</td>
|
||||
<td height="39">kline [+|-]<user@host | nick> [<time to ban> <reason>]</td>
|
||||
<td>Bans the hostmask from the server it is issued on. A kline is not a global ban.<br>
|
||||
<b>time to ban</b> is either: a) a value in seconds, b) a time value, like '1d' is 1 day or c) '0' for permanent.
|
||||
Time and reason are optional, if unspecified set::default-bantime (default: 0/permanent) and 'no reason' are used.<br>
|
||||
To remove a kline use /kline -user@host</td>
|
||||
<td>IRCop</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="39">zline +-<ip> <time to ban> <reason></td>
|
||||
<td>Bans an IP Address from the local server it is issued on. Time to ban is in seconds, or you can use 1d for 1 days. If the ip is prefixed with a - then the zline is removed.<br></td>
|
||||
<td height="39">zline [+|-]<*@ip> [<time to ban> <reason>]</td>
|
||||
<td>Bans an IP Address from the local server it is issued on (not global). See kline for more syntax info.
|
||||
Use /zline -*@ip to remove.<br></td>
|
||||
<td>IRCop</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="39">gline +-<user@host> <time to ban> :<reason><br></td>
|
||||
<td>Adds a global ban to anyone that matches. Time to ban is in seconds, or
|
||||
you can use 1d for 1 days. To remove a gline, put a –user@host<br></td>
|
||||
<td height="39">gline [+|-]<user@host | nick> [<time to ban> <reason>]<br></td>
|
||||
<td>Adds a global ban to anyone that matches. See kline for more syntax info.
|
||||
Use /gline -user@host to remove.<br></td>
|
||||
<td>IRCop</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="39">shun +-<user@host> <time to shun> :<reason><br></td>
|
||||
<td height="39">shun [+|-]<user@host | nick> [<time to shun> <reason>]<br></td>
|
||||
<td>Prevents a user from executing ANY commands and prevents them from speaking.
|
||||
Shuns are global (like glines). Time to shun is in seconds, or you can use 1d for 1 days.
|
||||
To remove a shun, put a –user@host. Setting time to 0 makes it permanent.
|
||||
Shuns are global (like glines). See kline for more syntax info.
|
||||
Use /shun -user@host to remove a shun.
|
||||
<br></td>
|
||||
<td>IRCop</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="39">gzline +-<ip> <time to ban> :<reason><br></td>
|
||||
<td>Adds a global zline. Time to ban is in seconds, or you can use 1d for 1
|
||||
days. To remove a gzline, put a –user@host. Setting time to 0 makes
|
||||
it permanent.<br></td>
|
||||
<td height="39">gzline [+|-]<ip> <time to ban> :<reason><br></td>
|
||||
<td>Adds a global zline. See kline for more syntax info.
|
||||
Use /gzline -*@ip to remove a gzline.<br></td>
|
||||
<td>IRCop</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -2808,7 +2816,7 @@ to get more information on a command.</p>
|
||||
<td height="39">connect <server> <port> <server></td>
|
||||
<td>If only one server is given, it will attempt to connect the server you
|
||||
are ON to the given server. If 2 servers are given, it will attempt to connect
|
||||
the 2 servers together. Put the hub server as the first, and the leaf server
|
||||
the 2 servers together. Put the leaf server as the first, and the hub server
|
||||
as the second.<br></td>
|
||||
<td>IRCop</td>
|
||||
</tr>
|
||||
|
||||
Binary file not shown.
@@ -51,7 +51,7 @@ help Opercmds {
|
||||
" OPER WALLOPS GLOBOPS CHATOPS LOCOPS DNS";
|
||||
" ADCHAT NACHAT KILL KLINE ZLINE SPAMFILTER";
|
||||
" GLINE SHUN GZLINE HTM TSCTL TEMPSHUN";
|
||||
" AKILL RAKILL REHASH RESTART DIE";
|
||||
" REHASH RESTART DIE";
|
||||
" LAG SETHOST SETIDENT CHGHOST CHGIDENT";
|
||||
" CHGNAME SQUIT CONNECT DCCDENY UNDCCDENY";
|
||||
" SAJOIN SAPART SAMODE RPING TRACE";
|
||||
@@ -112,24 +112,27 @@ help Umodes {
|
||||
};
|
||||
|
||||
help Snomasks {
|
||||
" This section lists all of the snomasks available.";
|
||||
" A snomask is used with usermode +s. They are an additional parameter.";
|
||||
" For example, to set snomask +f you'd do:";
|
||||
" /MODE mynick +s +f";
|
||||
" You can remove individual snomasks or set -s to remove them all";
|
||||
" -";
|
||||
" Snomask stands for 'Service NOtice MASK', it (mainly) controls which";
|
||||
" server notices you will receive.";
|
||||
" Usage: /MODE nick +s <snomask>";
|
||||
" Ex: /MODE blah +s +cF-j";
|
||||
" The parameter specifies which snomasks you want (or don't want)."
|
||||
" You can also remove all snomasks by simply doing /MODE nick -s.";
|
||||
"-";
|
||||
" Below is a list of possible snomasks:";
|
||||
" ==-------------------------oOo-----------------------==";
|
||||
" c = See's all Connects/Disconnects on local server";
|
||||
" e = Can listen to Server Messages sent to +e users (Eyes)";
|
||||
" f = Listen to Flood Alerts from server";
|
||||
" F = Lets you receive Far and Local connect notices (except from U-lines)";
|
||||
" G = Lets you see TKL (G:line,Shun) noties";
|
||||
" j = See's Misc. Messages generated by the server";
|
||||
" k = See's all the /KILL's which were executed";
|
||||
" n = Nick change notices";
|
||||
" N = Far nick change notices";
|
||||
" q = Lets you see notices when a user is rejected because of a Q:line";
|
||||
" v = Lets you receive notice of /VHOST usages";
|
||||
" c = View connects/disconnects on local server";
|
||||
" e = View 'Eyes' server messages (OperOverride, /CHG* and /SET* usage, ..)";
|
||||
" f = View flood alerts";
|
||||
" F = View connects/disconnects on remote servers (except U-lines)";
|
||||
" G = View TKL notices (Gline, GZline, Shun, etc)";
|
||||
" j = View Junk notices (not recommended for normal use)";
|
||||
" k = View KILL notices";
|
||||
" n = View nick changes on local server";
|
||||
" N = View nick changes on remote servers";
|
||||
" q = View rejected nick changes due to Q:lines";
|
||||
" S = View spamfilter matches";
|
||||
" v = View usage of /VHOST command";
|
||||
" ==-------------------------oOo------------------------==";
|
||||
};
|
||||
|
||||
@@ -447,12 +450,6 @@ help Kick {
|
||||
" Removes a user from a channel. Can only be used by Operators";
|
||||
" or Half-Ops. If no reason is specified, your nickname becomes the reason.";
|
||||
" -";
|
||||
/*
|
||||
** This doesn't seem to be working **
|
||||
" Syntax: KICK <channel>[,<channel2>..] <user>[,<user2>..] <reason>";
|
||||
" Example: KICK #Lobby foobar Lamer..";
|
||||
" KICK #Lobby,#OperHelp Lamer23,Luser12 Lamers!";
|
||||
*/
|
||||
" Syntax: KICK <channel> <user> [reason]";
|
||||
" Example: KICK #Lobby foobar Lamer..";
|
||||
};
|
||||
@@ -497,35 +494,53 @@ help List {
|
||||
};
|
||||
|
||||
help Privmsg {
|
||||
" /PRIVMSG @#channel <text> will send the text to Channel-ops on the";
|
||||
" given channel only.";
|
||||
" /PRIVMSG @+#channel <text> will send the text to both ops and voiced";
|
||||
" users on the channel.";
|
||||
" While some clients may support these as-is,";
|
||||
" on others (such as ircII), it's necessary to use";
|
||||
" /QUOTE PRIVMSG @#channel <text> instead.";
|
||||
" You can also use % to signify HalfOps on the channel.";
|
||||
" Send a message to a user, channel or server.";
|
||||
" /PRIVMSG <nick> <text>";
|
||||
" Send a private message.";
|
||||
" Ex: /PRIVMSG Blah hi, how are you?";
|
||||
" /PRIVMSG <#channel> <text>";
|
||||
" Send a message to a channel.";
|
||||
" Ex: /PRIVMSG #room Hi all";
|
||||
" /PRIVMSG <prefix><#channel> <text>";
|
||||
" Send a message to users with <prefix> in <#channel> only";
|
||||
" Ex: /PRIVMSG @#room This goes to all ops";
|
||||
" /PRIVMSG +%@#room This goes to all +v, +h and +o's.";
|
||||
" /PRIVMSG $<mask> <text>";
|
||||
" Send a message to all users on servers matching <mask> [Oper only]";
|
||||
" This is shown in the status window by most clients.";
|
||||
" Ex: /PRIVMSG $*.mynet.net We will be upgrading our net in the next hour";
|
||||
" Note that in most cases services (/OS GLOBAL) is a better alternative.";
|
||||
" -";
|
||||
" Syntax: PRIVMSG <nick>,<nick2>,<nick3>,<nick4> :<text>";
|
||||
" Example: PRIVMSG hAtbLaDe :Hello";
|
||||
" PRIVMSG hAtbLaDe,Somefella,Lamer :Hello everyone!";
|
||||
" PRIVMSG @#hottub There is a meeting on Saturday.";
|
||||
" Multiple targets are also supported, like /PRIVMSG <nick1>,<nick2>,<nick3>.";
|
||||
" -";
|
||||
" NOTE: In case of some old clients (eg: ircII) you cannot use /msg";
|
||||
" or /privmsg to use any of the 'advanced features', you'll then have to use:";
|
||||
" '/QUOTE PRIVMSG @#channel blah' or something similar.";
|
||||
};
|
||||
|
||||
help Notice {
|
||||
" /NOTICE @#channel <text> will send the text to Channel-ops on the";
|
||||
" given channel only.";
|
||||
" /NOTICE @+#channel <text> will send the text to both ops and voiced";
|
||||
" users on the channel.";
|
||||
" While some clients may support these as-is,";
|
||||
" on others (such as ircII), it's necessary to use";
|
||||
" /QUOTE NOTICE @#channel <text> instead.";
|
||||
" You can also use % to signify HalfOps on the channel.";
|
||||
" Send a notice to a user, channel or server.";
|
||||
" /NOTICE <nick> <text>";
|
||||
" Send a notice to a user.";
|
||||
" Ex: /NOTICE Blah hi, how are you?";
|
||||
" /NOTICE <#channel> <text>";
|
||||
" Send a notice to a channel.";
|
||||
" Ex: /NOTICE #room Hi all, this is annoying";
|
||||
" /NOTICE <prefix><#channel> <text>";
|
||||
" Send a notice to users with <prefix> in <#channel> only";
|
||||
" Ex: /NOTICE @#room This goes to all ops";
|
||||
" /NOTICE +%@#room This goes to all +v, +h and +o's.";
|
||||
" /NOTICE $<mask> <text>";
|
||||
" Send a notice to all users on servers matching <mask> [Oper only]";
|
||||
" This is shown in the status window by most clients.";
|
||||
" Ex: /NOTICE $*.mynet.net We will be upgrading our net in the next hour";
|
||||
" Note that in most cases services (/OS GLOBAL) is a better alternative.";
|
||||
" -";
|
||||
" Syntax: NOTICE <nick>,<nick2>,<nick3>,<nick4> :<text>";
|
||||
" Example: NOTICE hAtbLaDe :Hello";
|
||||
" NOTICE hAtbLaDe,Somefella,Lamer :Hello everyone!";
|
||||
" NOTICE @#hottub Do not forget the meeting on Friday.";
|
||||
" Multiple targets are also supported, like /NOTICE <nick1>,<nick2>,<nick3>.";
|
||||
" -";
|
||||
" NOTE: In case of some old clients (eg: ircII) you cannot use /notice";
|
||||
" to use any of the 'advanced features', you'll then have to use:";
|
||||
" '/QUOTE NOTICE @#channel blah' or something similar.";
|
||||
};
|
||||
|
||||
help Knock {
|
||||
@@ -664,10 +679,11 @@ help Kline {
|
||||
" You may also specify the time in the format 1d10h15m30s.";
|
||||
" IRC Operator only command.";
|
||||
" -";
|
||||
" Syntax: KLINE <hostmask> [time] <reason> (adds a Kline)";
|
||||
" Syntax: KLINE <hostmask or nick> [time] <reason> (adds a Kline)";
|
||||
" KLINE -<hostmask> (removes a Kline)";
|
||||
" Example: KLINE *@*.aol.com Abuse (Adds a permanent K:line)";
|
||||
" KLINE *@*.someisp.com 2d Abuse (Adds a K:line for 2 days)";
|
||||
" KLINE Idiot 1d Please go away";
|
||||
" KLINE -*@*.aol.com";
|
||||
};
|
||||
|
||||
@@ -678,8 +694,8 @@ help Zline {
|
||||
" You may also specify the time in the format 1d10h15m30s.";
|
||||
" IRC Operator only command.";
|
||||
" -";
|
||||
" Syntax: ZLINE <ipmask> [time] <reason> (adds a Zline)";
|
||||
" ZLINE -<ipmask> (removes a Zline)";
|
||||
" Syntax: ZLINE <*@ipmask> [time] <reason> (adds a Zline)";
|
||||
" ZLINE -<*@ipmask> (removes a Zline)";
|
||||
" Example: ZLINE *@127.0.0.1 Abuse (Adds a permanent Z:line)";
|
||||
" ZLINE *@127.0.0.1 2d Abuse (Adds a Z:line for 2 days)";
|
||||
" ZLINE -*@127.0.0.1";
|
||||
@@ -693,11 +709,12 @@ help Gline {
|
||||
" You may also specify the time in the format 1d10h15m30s.";
|
||||
" IRC Operator only command.";
|
||||
" -";
|
||||
" Syntax: GLINE <user@host mask> [time] :<reason>";
|
||||
" Syntax: GLINE <user@host mask or nick> [time] <reason>";
|
||||
" (Adds a G:line for user@host)";
|
||||
" GLINE -<user@host mask> (Removes a G:line for user@host)";
|
||||
" Example: GLINE *@*.idiot.net 900 :Spammers (Adds a 15 min G:line)";
|
||||
" GLINE *@*.idiot.net 1d5h :Spammers (Adds a 29 hour G:line)";
|
||||
" Example: GLINE *@*.idiot.net 900 Spammers (Adds a 15 min G:line)";
|
||||
" GLINE *@*.idiot.net 1d5h Spammers (Adds a 29 hour G:line)";
|
||||
" GLINE Idiot 1d Abuse";
|
||||
" GLINE -*@*.idiot.net";
|
||||
" NOTE: requires the can_gkline oper flag";
|
||||
};
|
||||
@@ -727,26 +744,26 @@ help Gzline {
|
||||
" You may also specify the time in the format 1d10h15m30s.";
|
||||
" IRC Operator only command.";
|
||||
" -";
|
||||
" Syntax: GZLINE <user@host mask> <seconds to be banned> :<reason>";
|
||||
" (Adds a Global Z:line for user@host)";
|
||||
" GZLINE -<user@host mask> (Removes a Global Z:line for user@host)";
|
||||
" Example: GZLINE *@*.idiot.net 900 :Spammers (Adds a 15 min Global Z:line)";
|
||||
" GZLINE *@*.idiot.net 1d5h :Spammers (Adds a 29 hour Global Z:line)";
|
||||
" Syntax: GZLINE <*@ipmask> <seconds to be banned> :<reason>";
|
||||
" (Adds a Global Z:line for *@ipmask)";
|
||||
" GZLINE -<*@ipmask> (Removes a Global Z:line for *@ipmask)";
|
||||
" Example: GZLINE *@4.16.200.* 900 Spammers (Adds a 15 min Global Z:line)";
|
||||
" GZLINE *@4.16.200.* 1d5h Spammers (Adds a 29 hour Global Z:line)";
|
||||
" NOTE: requires the can_gzline oper flag";
|
||||
};
|
||||
|
||||
help Akill {
|
||||
" Adds an Autokill for the specific host mask. This prevents";
|
||||
" any user from that hostmask from connecting to the network.";
|
||||
" Services Admin Command";
|
||||
" THIS IS A DEPRICATED COMMAND AND ONLY ACCEPTED FROM SERVERS";
|
||||
" -";
|
||||
" Syntax: AKILL <user@host> :<Reason>";
|
||||
" Example: AKILL foo@aol.com :Spammers!";
|
||||
};
|
||||
|
||||
help Rakill {
|
||||
" Removes an AKILL set by a Services Admin.";
|
||||
" Services Admin Command";
|
||||
" Removes an AKILL that was previously set.";
|
||||
" THIS IS A DEPRICATED COMMAND AND ONLY ACCEPTED FROM SERVERS";
|
||||
" -";
|
||||
" Syntax: RAKILL <user@host>";
|
||||
};
|
||||
@@ -852,10 +869,10 @@ help Connect {
|
||||
" Remote connections are also possible.";
|
||||
" IRC Operator only command.";
|
||||
" -";
|
||||
" Syntax: CONNECT <server>";
|
||||
" CONNECT <hub> <port> <leaf>";
|
||||
" Syntax: CONNECT <server> [port]";
|
||||
" CONNECT <leaf> <port> <hub>";
|
||||
" Example: CONNECT leaf.*";
|
||||
" CONNECT hub.* 6667 leaf.*";
|
||||
" CONNECT leaf.* 6667 hub.*";
|
||||
};
|
||||
|
||||
help Dccdeny {
|
||||
|
||||
+3
-1
@@ -37,7 +37,6 @@
|
||||
#include <io.h>
|
||||
#endif
|
||||
//#include "dynconf.h"
|
||||
#include "ircsprintf.h"
|
||||
#include "config.h"
|
||||
#ifdef PARAMH
|
||||
#include <sys/param.h>
|
||||
@@ -47,6 +46,9 @@
|
||||
#include "sys.h"
|
||||
#endif
|
||||
|
||||
#include "ircsprintf.h"
|
||||
|
||||
|
||||
#ifdef DEVELOP_CVS
|
||||
#define ID_Copyright(x) static char id_copyright[] = x
|
||||
#define ID_Notes(x) static char id_notes[] = x
|
||||
|
||||
+5
-1
@@ -52,8 +52,12 @@ enum UHAllowed { UHALLOW_ALWAYS, UHALLOW_NOCHANS, UHALLOW_REJOIN, UHALLOW_NEVER
|
||||
|
||||
struct ChMode {
|
||||
long mode;
|
||||
#ifdef EXTCMODE
|
||||
long extmodes;
|
||||
char *extparams[EXTCMODETABLESZ];
|
||||
#endif
|
||||
#ifdef NEWCHFLOODPROT
|
||||
ChanFloodProt floodprot;
|
||||
ChanFloodProt floodprot;
|
||||
#else
|
||||
unsigned short msgs;
|
||||
unsigned short per;
|
||||
|
||||
+3
-2
@@ -272,7 +272,7 @@ extern void send_channel_modes_sjoin3(aClient *cptr, aChannel *chptr);
|
||||
extern void sendto_locfailops(char *pattern, ...) __attribute__((format(printf,1,2)));
|
||||
extern void sendto_connectnotice(char *nick, anUser *user, aClient *sptr, int disconnect, char *comment);
|
||||
extern void sendto_serv_butone_nickcmd(aClient *one, aClient *sptr, char *nick, int hopcount,
|
||||
int lastnick, char *username, char *realhost, char *server, long servicestamp, char *info, char *umodes,
|
||||
long lastnick, char *username, char *realhost, char *server, long servicestamp, char *info, char *umodes,
|
||||
char *virthost);
|
||||
extern void sendto_message_one(aClient *to, aClient *from, char *sender,
|
||||
char *cmd, char *nick, char *msg);
|
||||
@@ -646,7 +646,7 @@ extern void extban_init(void);
|
||||
extern char *trim_str(char *str, int len);
|
||||
extern char *ban_realhost, *ban_virthost, *ban_ip;
|
||||
extern void join_channel(aChannel *chptr, aClient *cptr, aClient *sptr, int flags);
|
||||
extern char *unreal_checkregex(char *s, int fastsupport);
|
||||
extern char *unreal_checkregex(char *s, int fastsupport, int check_broadness);
|
||||
extern int banact_stringtoval(char *s);
|
||||
extern char *banact_valtostring(int val);
|
||||
extern int banact_chartoval(char c);
|
||||
@@ -684,3 +684,4 @@ extern fdlist default_fdlist, busycli_fdlist, serv_fdlist, oper_fdlist;
|
||||
extern void DCCdeny_add(char *filename, char *reason, int type);
|
||||
extern void DCCdeny_del(ConfigItem_deny_dcc *deny);
|
||||
extern void dcc_wipe_services(void);
|
||||
extern void reread_motdsandrules();
|
||||
|
||||
@@ -16,8 +16,13 @@
|
||||
|
||||
/* You do want it to work in debug mode yes ? --DrBin */
|
||||
|
||||
/* ugly hack GRR */
|
||||
#if !defined(__GNUC__) && !defined(__common_include__)
|
||||
#define __attribute__(x) /* nothing */
|
||||
#endif
|
||||
|
||||
extern char *ircvsprintf(char *str, const char *format, va_list);
|
||||
extern char *ircsprintf(char *str, const char *format, ...);
|
||||
extern char *ircsprintf(char *str, const char *format, ...) __attribute__((format(printf,2,3)));
|
||||
|
||||
extern const char atoi_tab[4000];
|
||||
|
||||
|
||||
+1
-1
@@ -762,7 +762,7 @@ struct Server {
|
||||
struct _spamfilter {
|
||||
unsigned short action; /* see BAN_ACT* */
|
||||
regex_t expr;
|
||||
char *tkl_reason;
|
||||
char *tkl_reason; /* spamfilter reason field [escaped by unreal_encodespace()!] */
|
||||
TS tkl_duration;
|
||||
};
|
||||
|
||||
|
||||
+2
-2
@@ -29,8 +29,8 @@
|
||||
#define UnrealProtocol 2303
|
||||
#define PATCH1 "3"
|
||||
#define PATCH2 ".2"
|
||||
#define PATCH3 "-RC2"
|
||||
#define PATCH4 "fix"
|
||||
#define PATCH3 ""
|
||||
#define PATCH4 ""
|
||||
#define PATCH5 ""
|
||||
#define PATCH6 ""
|
||||
#define PATCH7 ""
|
||||
|
||||
@@ -24,6 +24,9 @@
|
||||
*/
|
||||
#ifndef INCLUDED_s_zip_h
|
||||
#define INCLUDED_s_zip_h
|
||||
#ifdef _WIN32
|
||||
#define ZLIB_WINAPI
|
||||
#endif
|
||||
#include <zlib.h> /* z_stream */
|
||||
#endif
|
||||
|
||||
|
||||
+1
-1
@@ -80,7 +80,7 @@ LIBCURL_LIB=/LIBPATH:"$(LIBCURL_LIB_DIR)"
|
||||
!IFDEF USE_ZIPLINKS
|
||||
ZIPCFLAGS=/D ZIP_LINKS /D ZLIB_DLL
|
||||
ZIPOBJ=SRC/ZIP.OBJ
|
||||
ZIPLIB=zlib.lib
|
||||
ZIPLIB=zlibwapi.lib
|
||||
!IFDEF ZLIB_INC_DIR
|
||||
ZLIB_INC=/I "$(ZLIB_INC_DIR)"
|
||||
!ENDIF
|
||||
|
||||
+91
-15
@@ -7,25 +7,38 @@
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/* Guidelines on the 'action' field:
|
||||
* As a general rule we use 'action block' for any newly added
|
||||
* spamfilters at first, later on (after knowing about false
|
||||
* positives) we might change some to viruschan/kill/gline/etc..
|
||||
*/
|
||||
|
||||
spamfilter {
|
||||
regex ".* .* .* .* .* .* .* .* .* .* .* .* .* .*";
|
||||
regex "(.+ ){20}";
|
||||
target dcc;
|
||||
reason "mIRC exploit attempt";
|
||||
reason "mIRC 6.0-6.11 exploit attempt";
|
||||
action kill;
|
||||
};
|
||||
|
||||
spamfilter {
|
||||
regex "Come watch me on my webcam and chat w/me";
|
||||
regex ".{225}";
|
||||
target dcc;
|
||||
reason "mIRC 6.12 exploit attempt";
|
||||
action block;
|
||||
};
|
||||
|
||||
spamfilter {
|
||||
regex "Come watch me on my webcam and chat /w me :-\) http://.+:\d+/me\.mpg";
|
||||
target private;
|
||||
reason "Infected by fyle trojan: see http://www.sophos.com/virusinfo/analyses/trojfylexa.html";
|
||||
action block;
|
||||
action gline;
|
||||
};
|
||||
|
||||
spamfilter {
|
||||
regex "Speed up your mIRC DCC Transfer by up to 75%.*www\.freewebs\.com/mircupdate/mircspeedup\.exe";
|
||||
target private;
|
||||
reason "Infected by mirseed trojan: see http://www.sophos.com/virusinfo/analyses/trojmirseeda.html";
|
||||
action block;
|
||||
action gline;
|
||||
};
|
||||
|
||||
spamfilter {
|
||||
@@ -39,62 +52,125 @@ spamfilter {
|
||||
regex "^FREE PORN: http://free:porn@([0-9]{1,3}\.){3}[0-9]{1,3}:8180$";
|
||||
target private;
|
||||
reason "Infected by aplore worm: see http://www.f-secure.com/v-descs/aplore.shtml";
|
||||
action block;
|
||||
action gline;
|
||||
};
|
||||
|
||||
spamfilter {
|
||||
regex "^!login Wasszup!$";
|
||||
target channel;
|
||||
reason "Attempting to login to a GTBot";
|
||||
action block;
|
||||
action gline;
|
||||
};
|
||||
|
||||
spamfilter {
|
||||
regex "^!login grrrr yeah baby!$";
|
||||
target channel;
|
||||
reason "Attempting to login to a GTBot";
|
||||
action block;
|
||||
action gline;
|
||||
};
|
||||
|
||||
spamfilter {
|
||||
regex "^!packet ([0-9]{1,3}\.){3}[0-9]{1,3} [0-9]{1,15}";
|
||||
target channel;
|
||||
reason "Attempting to use a GTBot";
|
||||
action block;
|
||||
action gline;
|
||||
};
|
||||
|
||||
spamfilter {
|
||||
regex "^!icqpagebomb ([0-9]{1,15} ){2}.+";
|
||||
target channel;
|
||||
reason "Attempting to use a GTBot";
|
||||
action block;
|
||||
action gline;
|
||||
};
|
||||
|
||||
spamfilter {
|
||||
regex "^!pfast [0-9]{1,15} ([0-9]{1,3}\.){3}[0-9]{1,3} [0-9]{1,5}$";
|
||||
target channel;
|
||||
reason "Attempting to use a GTBot";
|
||||
action block;
|
||||
action gline;
|
||||
};
|
||||
|
||||
spamfilter {
|
||||
regex "^!portscan ([0-9]{1,3}\.){3}[0-9]{1,3} [0-9]{1,5} [0-9]{1,5}$";
|
||||
target channel;
|
||||
reason "Attempting to use a GTBot";
|
||||
action block;
|
||||
action gline;
|
||||
};
|
||||
|
||||
spamfilter {
|
||||
regex "^.u(dp)? ([0-9]{1,3}\.){3}[0-9]{1,3} [0-9]{1,15} [0-9]{1,15} [0-9]{1,15}( [0-9])*$";
|
||||
target channel;
|
||||
reason "Attempting to use an SDBot";
|
||||
action block;
|
||||
action gline;
|
||||
};
|
||||
|
||||
|
||||
spamfilter {
|
||||
regex "^.syn ((([0-9]{1,3}\.){3}[0-9]{1,3})|([a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+\.[a-zA-Z0-9_.-]+)) [0-9]{1,5} [0-9]{1,15} [0-9]{1,15}";
|
||||
target { channel; private; };
|
||||
reason "Attempting to use a SpyBot";
|
||||
action block;
|
||||
action gline;
|
||||
};
|
||||
|
||||
spamfilter {
|
||||
regex "^porn! porno! http://.+\/sexo\.exe";
|
||||
target private;
|
||||
action gline;
|
||||
reason "Infected by soex trojan: see http://www.trendmicro.com/vinfo/virusencyclo/default5.asp?VName=TROJ%5FSOEX.A";
|
||||
};
|
||||
|
||||
spamfilter {
|
||||
regex "(^wait a minute plz\. i am updating my site|.*my erotic video).*http://.+/erotic(a)?/myvideo\.exe$";
|
||||
target private;
|
||||
action gline;
|
||||
reason "Infected by some trojan (erotica?)";
|
||||
};
|
||||
|
||||
spamfilter {
|
||||
regex "^STOP SPAM, USE THIS COMMAND: //write nospam \$decode\(.+\) \| \.load -rs nospam \| //mode \$me \+R$";
|
||||
target private;
|
||||
action gline;
|
||||
reason "Infected by nkie worm: see http://www.trojaninfo.com/nkie/nkie.htm";
|
||||
};
|
||||
|
||||
spamfilter {
|
||||
regex "^FOR MATRIX 2 DOWNLOAD, USE THIS COMMAND: //write Matrix2 \$decode\(.+=,m\) \| \.load -rs Matrix2 \| //mode \$me \+R$";
|
||||
target private;
|
||||
action gline;
|
||||
reason "Infected by nkie worm: see http://www.trojaninfo.com/nkie/nkie.htm";
|
||||
};
|
||||
|
||||
spamfilter {
|
||||
regex "^hey .* to get OPs use this hack in the chan but SHH! //\$decode\(.*,m\) \| \$decode\(.*,m\)$";
|
||||
target private;
|
||||
action gline;
|
||||
reason "Infected by nkie worm: see http://www.trojaninfo.com/nkie/nkie.htm";
|
||||
};
|
||||
|
||||
spamfilter {
|
||||
regex ".*(http://jokes\.clubdepeche\.com|http://horny\.69sexy\.net|http://private\.a123sdsdssddddgfg\.com).*";
|
||||
target private;
|
||||
action block;
|
||||
reason "Infected by LOI trojan"; /* Name is still unsure */
|
||||
};
|
||||
|
||||
/* This is a 'general sig' which might have a tad more false positives, hence just 'block' is used */
|
||||
spamfilter {
|
||||
regex "C:\\WINNT\\system32\\[][0-9a-z_-{|}`]+\.zip";
|
||||
target dcc;
|
||||
action block;
|
||||
reason "Infected by Gaggle worm?";
|
||||
};
|
||||
|
||||
spamfilter {
|
||||
regex "C:\\WINNT\\system32\\(notes|videos|xxx|ManualSeduccion|postal|hechizos|images|sex|avril)\.zip";
|
||||
target dcc;
|
||||
action dccblock;
|
||||
reason "Infected by Gaggle worm";
|
||||
};
|
||||
|
||||
spamfilter {
|
||||
regex "http://.+\.lycos\..+/[iy]server[0-9]/[a-z]{4,11}\.(gif|jpg|avi|txt)";
|
||||
target { private; quit; };
|
||||
action block;
|
||||
reason "Infected by Gaggle worm";
|
||||
};
|
||||
|
||||
@@ -232,6 +232,15 @@ static inline char *int_to_base64(long val)
|
||||
|
||||
base64buf[i] = '\0';
|
||||
|
||||
/* Temporary debugging code.. remove before 2038 ;p */
|
||||
if (val > 2147483646)
|
||||
{
|
||||
snprintf(trouble_info, sizeof(trouble_info),
|
||||
"[BUG] int_to_base64() called for insane value %ld. Please report!", val);
|
||||
ircd_log(LOG_ERROR, "%s", trouble_info);
|
||||
val = 2147483647L; /* prevent buffer overflow */
|
||||
}
|
||||
|
||||
do
|
||||
{
|
||||
base64buf[--i] = int6_to_base64_map[val & 63];
|
||||
|
||||
+33
-8
@@ -1825,7 +1825,8 @@ int do_mode_char(aChannel *chptr, long modetype, char modechar, char *param,
|
||||
{
|
||||
/* Ugly halfop hack --sts
|
||||
- this allows halfops to do +b +e +v and so on */
|
||||
if (Halfop_mode(modetype) == FALSE)
|
||||
/* (Syzop/20040413: Allow remote halfop modes */
|
||||
if ((Halfop_mode(modetype) == FALSE) && MyClient(cptr))
|
||||
{
|
||||
int eaten = 0;
|
||||
while (tab->mode != 0x0)
|
||||
@@ -2012,7 +2013,7 @@ int do_mode_char(aChannel *chptr, long modetype, char modechar, char *param,
|
||||
if (!is_halfop(cptr, chptr)) /* htrig will take care of halfop override notices */
|
||||
opermode = 1;
|
||||
}
|
||||
else
|
||||
else if (MyClient(cptr))
|
||||
{
|
||||
sendto_one(cptr, err_str(ERR_ONLYSERVERSCANCHANGE),
|
||||
me.name, cptr->name, chptr->chname);
|
||||
@@ -2028,7 +2029,7 @@ int do_mode_char(aChannel *chptr, long modetype, char modechar, char *param,
|
||||
if (!is_halfop(cptr, chptr)) /* htrig will take care of halfop override notices */
|
||||
opermode = 1;
|
||||
}
|
||||
else
|
||||
else if (MyClient(cptr))
|
||||
{
|
||||
sendto_one(cptr,
|
||||
":%s %s %s :*** Channel admins (+a) can only be set by the channel owner",
|
||||
@@ -2111,8 +2112,10 @@ int do_mode_char(aChannel *chptr, long modetype, char modechar, char *param,
|
||||
":%s %s %s :*** You cannot %s %s in %s, (s)he is the channel owner (+q).",
|
||||
me.name, IsWebTV(cptr) ? "PRIVMSG" : "NOTICE", cptr->name, xxx,
|
||||
member->cptr->name, chptr->chname);
|
||||
}
|
||||
break;
|
||||
break;
|
||||
} else
|
||||
if (IsOper(cptr))
|
||||
opermode = 1;
|
||||
}
|
||||
if (is_chanprot(member->cptr, chptr)
|
||||
&& member->cptr != cptr
|
||||
@@ -2125,8 +2128,10 @@ int do_mode_char(aChannel *chptr, long modetype, char modechar, char *param,
|
||||
":%s %s %s :*** You cannot %s %s in %s, (s)he is a channel admin (+a).",
|
||||
me.name, IsWebTV(cptr) ? "PRIVMSG" : "NOTICE", cptr->name, xxx,
|
||||
member->cptr->name, chptr->chname);
|
||||
}
|
||||
break;
|
||||
break;
|
||||
} else
|
||||
if (IsOper(cptr))
|
||||
opermode = 1;
|
||||
}
|
||||
breaktherules:
|
||||
tmp = member->flags;
|
||||
@@ -3678,8 +3683,28 @@ void join_channel(aChannel *chptr, aClient *cptr, aClient *sptr, int flags)
|
||||
sptr->name, chptr->chname, chptr->topic_nick,
|
||||
chptr->topic_time);
|
||||
}
|
||||
if (chptr->users == 1 && MODES_ON_JOIN)
|
||||
if (chptr->users == 1 && (MODES_ON_JOIN
|
||||
#ifdef EXTCMODE
|
||||
|| iConf.modes_on_join.extmodes)
|
||||
#endif
|
||||
)
|
||||
{
|
||||
#ifdef EXTCMODE
|
||||
int i;
|
||||
chptr->mode.extmode = iConf.modes_on_join.extmodes;
|
||||
/* Param fun */
|
||||
for (i = 0; i <= Channelmode_highest; i++)
|
||||
{
|
||||
if (!Channelmode_Table[i].flag || !Channelmode_Table[i].paracount)
|
||||
continue;
|
||||
if (chptr->mode.extmode & Channelmode_Table[i].mode)
|
||||
{
|
||||
CmodeParam *p;
|
||||
p = Channelmode_Table[i].put_param(NULL, iConf.modes_on_join.extparams[i]);
|
||||
AddListItem(p, chptr->mode.extmodeparam);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
chptr->mode.mode = MODES_ON_JOIN;
|
||||
#ifdef NEWCHFLOODPROT
|
||||
if (iConf.modes_on_join.floodprot.per)
|
||||
|
||||
+16
-15
@@ -1001,21 +1001,22 @@ int InitwIRCD(int argc, char *argv[])
|
||||
portnum = portarg;
|
||||
break;
|
||||
case 's':
|
||||
(void)printf("sizeof(aClient) == %u\n",
|
||||
sizeof(aClient));
|
||||
(void)printf("sizeof(aChannel) == %u\n",
|
||||
sizeof(aChannel));
|
||||
(void)printf("sizeof(aServer) == %u\n",
|
||||
sizeof(aServer));
|
||||
(void)printf("sizeof(Link) == %u\n", sizeof(Link));
|
||||
(void)printf("sizeof(anUser) == %u\n",
|
||||
sizeof(anUser));
|
||||
(void)printf("sizeof(aTKline) == %u\n",
|
||||
sizeof(aTKline));
|
||||
(void)printf("sizeof(struct ircstatsx) == %u\n",
|
||||
sizeof(struct ircstatsx));
|
||||
(void)printf("aClient remote == %u\n",
|
||||
CLIENT_REMOTE_SIZE);
|
||||
(void)printf("sizeof(aClient) == %ld\n",
|
||||
(long)sizeof(aClient));
|
||||
(void)printf("sizeof(aChannel) == %ld\n",
|
||||
(long)sizeof(aChannel));
|
||||
(void)printf("sizeof(aServer) == %ld\n",
|
||||
(long)sizeof(aServer));
|
||||
(void)printf("sizeof(Link) == %ld\n",
|
||||
(long)sizeof(Link));
|
||||
(void)printf("sizeof(anUser) == %ld\n",
|
||||
(long)sizeof(anUser));
|
||||
(void)printf("sizeof(aTKline) == %ld\n",
|
||||
(long)sizeof(aTKline));
|
||||
(void)printf("sizeof(struct ircstatsx) == %ld\n",
|
||||
(long)sizeof(struct ircstatsx));
|
||||
(void)printf("aClient remote == %ld\n",
|
||||
(long)CLIENT_REMOTE_SIZE);
|
||||
exit(0);
|
||||
break;
|
||||
#ifndef _WIN32
|
||||
|
||||
@@ -97,7 +97,7 @@ DLLFUNC CMD_FUNC(m_sajoin)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (parc != 3)
|
||||
if (parc < 3)
|
||||
{
|
||||
sendto_one(sptr, err_str(ERR_NEEDMOREPARAMS), me.name, parv[0], "SAJOIN");
|
||||
return 0;
|
||||
|
||||
@@ -97,7 +97,7 @@ DLLFUNC CMD_FUNC(m_sapart)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (parc != 3)
|
||||
if (parc < 3)
|
||||
{
|
||||
sendto_one(sptr, err_str(ERR_NEEDMOREPARAMS), me.name, parv[0], "SAPART");
|
||||
return 0;
|
||||
|
||||
@@ -807,7 +807,7 @@ int m_server_synch(aClient *cptr, long numeric, ConfigItem_link *aconf)
|
||||
acptr->lastnick,
|
||||
acptr->user->username,
|
||||
acptr->user->realhost,
|
||||
acptr->srvptr->serv->numeric,
|
||||
(long)(acptr->srvptr->serv->numeric),
|
||||
(unsigned long)acptr->user->servicestamp,
|
||||
(!buf || *buf == '\0' ? "+" : buf),
|
||||
((IsHidden(acptr) && (acptr->umodes & UMODE_SETHOST)) ? acptr->user->virthost : "*"),
|
||||
|
||||
+8
-22
@@ -153,39 +153,25 @@ static int compare_floodprot_modes(ChanFloodProt *a, ChanFloodProt *b)
|
||||
*/
|
||||
|
||||
/* Some ugly macros, but useful */
|
||||
#define Addit(mode,param) if (strlen(parabuf) + strlen(param) + 11 < MODEBUFLEN) { \
|
||||
#define Addit(mode,param) if ((strlen(parabuf) + strlen(param) + 11 < MODEBUFLEN) && (b <= MAXMODEPARAMS)) { \
|
||||
if (*parabuf) \
|
||||
strcat(parabuf, " ");\
|
||||
strcat(parabuf, param);\
|
||||
modebuf[b++] = mode;\
|
||||
modebuf[b] = 0;\
|
||||
}\
|
||||
else if (*parabuf) {\
|
||||
else {\
|
||||
sendto_serv_butone_sjoin(cptr, ":%s MODE %s %s %s %lu", sptr->name, chptr->chname,\
|
||||
modebuf, parabuf, chptr->creationtime); \
|
||||
sendto_channel_butserv(chptr, sptr, ":%s MODE %s %s %s", sptr->name, chptr->chname,\
|
||||
modebuf, parabuf);\
|
||||
sendto_channel_butserv(chptr, sptr, ":%s MODE %s %s %s", sptr->name, chptr->chname,\
|
||||
modebuf, parabuf);\
|
||||
strcpy(parabuf,param);\
|
||||
modebuf[0] = '+';\
|
||||
modebuf[1] = mode;\
|
||||
modebuf[2] = 0;\
|
||||
sendto_serv_butone_sjoin(cptr, ":%s MODE %s %s %s %lu", sptr->name, chptr->chname,\
|
||||
modebuf, parabuf, chptr->creationtime); \
|
||||
sendto_channel_butserv(chptr, sptr, ":%s MODE %s %s %s", sptr->name, chptr->chname,\
|
||||
modebuf, parabuf); \
|
||||
modebuf[1] = 0;\
|
||||
parabuf[0] = 0;\
|
||||
b = 1;\
|
||||
}\
|
||||
else if (b == MAXMODEPARAMS) {\
|
||||
sendto_serv_butone_sjoin(cptr, ":%s MODE %s %s %s %lu", sptr->name, chptr->chname,\
|
||||
modebuf, parabuf, chptr->creationtime); \
|
||||
sendto_channel_butserv(chptr, sptr, ":%s MODE %s %s %s", sptr->name, chptr->chname,\
|
||||
modebuf, parabuf);\
|
||||
parabuf[0] = 0;\
|
||||
modebuf[1] = 0;\
|
||||
b = 1;\
|
||||
modebuf[2] = '\0';\
|
||||
b = 2;\
|
||||
}
|
||||
#define Addsingle(x) modebuf[b] = x; b++
|
||||
#define Addsingle(x) modebuf[b] = x; b++; modebuf[b] = '\0'
|
||||
#define CheckStatus(x,y) if (modeflags & (y)) { Addit((x), nick); }
|
||||
#define AddBan(x) strlcat(banbuf, x, sizeof banbuf); strlcat(banbuf, " ", sizeof banbuf);
|
||||
#define AddEx(x) strlcat(exbuf, x, sizeof exbuf); strlcat(exbuf, " ", sizeof banbuf);
|
||||
|
||||
+31
-28
@@ -292,9 +292,9 @@ inline void stats_help(aClient *sptr)
|
||||
sendto_one(sptr, rpl_str(RPL_STATSHELP), me.name, sptr->name,
|
||||
"P - port - Send information about ports");
|
||||
sendto_one(sptr, rpl_str(RPL_STATSHELP), me.name, sptr->name,
|
||||
"q - sqline - Send the SQLINE list");
|
||||
"q - bannick - Send the ban nick block list");
|
||||
sendto_one(sptr, rpl_str(RPL_STATSHELP), me.name, sptr->name,
|
||||
"Q - bannick - Send the ban nick block list");
|
||||
"Q - sqline - Send the global qline list");
|
||||
sendto_one(sptr, rpl_str(RPL_STATSHELP), me.name, sptr->name,
|
||||
"r - chanrestrict - Send the channel deny/allow block list");
|
||||
#ifdef DEBUGMODE
|
||||
@@ -901,15 +901,15 @@ int stats_mem(aClient *sptr, char *para)
|
||||
|
||||
sendto_one(sptr, ":%s %d %s :Client Local %d(%ld) Remote %d(%ld)",
|
||||
me.name, RPL_STATSDEBUG, sptr->name, lc, lcm, rc, rcm);
|
||||
sendto_one(sptr, ":%s %d %s :Users %d(%d) Invites %d(%d)",
|
||||
me.name, RPL_STATSDEBUG, sptr->name, us, us * sizeof(anUser), usi,
|
||||
usi * sizeof(Link));
|
||||
sendto_one(sptr, ":%s %d %s :User channels %d(%d) Aways %d(%ld)",
|
||||
me.name, RPL_STATSDEBUG, sptr->name, usc, usc * sizeof(Link), aw, awm);
|
||||
sendto_one(sptr, ":%s %d %s :WATCH headers %d(%ld) entries %d(%d)",
|
||||
me.name, RPL_STATSDEBUG, sptr->name, wlh, wlhm, wle, wle * sizeof(Link));
|
||||
sendto_one(sptr, ":%s %d %s :Attached confs %d(%d)",
|
||||
me.name, RPL_STATSDEBUG, sptr->name, lcc, lcc * sizeof(Link));
|
||||
sendto_one(sptr, ":%s %d %s :Users %d(%ld) Invites %d(%ld)",
|
||||
me.name, RPL_STATSDEBUG, sptr->name, us, (long)(us * sizeof(anUser)),
|
||||
usi, (long)(usi * sizeof(Link)));
|
||||
sendto_one(sptr, ":%s %d %s :User channels %d(%ld) Aways %d(%ld)",
|
||||
me.name, RPL_STATSDEBUG, sptr->name, usc, (long)(usc * sizeof(Link)), aw, awm);
|
||||
sendto_one(sptr, ":%s %d %s :WATCH headers %d(%ld) entries %d(%ld)",
|
||||
me.name, RPL_STATSDEBUG, sptr->name, wlh, wlhm, wle, (long)(wle * sizeof(Link)));
|
||||
sendto_one(sptr, ":%s %d %s :Attached confs %d(%ld)",
|
||||
me.name, RPL_STATSDEBUG, sptr->name, lcc, (long)(lcc * sizeof(Link)));
|
||||
|
||||
totcl = lcm + rcm + us * sizeof(anUser) + usc * sizeof(Link) + awm;
|
||||
totcl += lcc * sizeof(Link) + usi * sizeof(Link) + wlhm;
|
||||
@@ -923,14 +923,15 @@ int stats_mem(aClient *sptr, char *para)
|
||||
|
||||
sendto_one(sptr, ":%s %d %s :Channels %d(%ld) Bans %d(%ld)",
|
||||
me.name, RPL_STATSDEBUG, sptr->name, ch, chm, chb, chbm);
|
||||
sendto_one(sptr, ":%s %d %s :Channel members %d(%d) invite %d(%d)",
|
||||
me.name, RPL_STATSDEBUG, sptr->name, chu, chu * sizeof(Link),
|
||||
chi, chi * sizeof(Link));
|
||||
sendto_one(sptr, ":%s %d %s :Channel members %d(%ld) invite %d(%ld)",
|
||||
me.name, RPL_STATSDEBUG, sptr->name, chu, (long)(chu * sizeof(Link)),
|
||||
chi, (long)(chi * sizeof(Link)));
|
||||
|
||||
totch = chm + chbm + chu * sizeof(Link) + chi * sizeof(Link);
|
||||
|
||||
sendto_one(sptr, ":%s %d %s :Whowas users %d(%d) away %d(%ld)",
|
||||
me.name, RPL_STATSDEBUG, sptr->name, wwu, wwu * sizeof(anUser),
|
||||
sendto_one(sptr, ":%s %d %s :Whowas users %d(%ld) away %d(%ld)",
|
||||
me.name, RPL_STATSDEBUG, sptr->name,
|
||||
wwu, (long)(wwu * sizeof(anUser)),
|
||||
wwa, wwam);
|
||||
sendto_one(sptr, ":%s %d %s :Whowas array %d(%ld)",
|
||||
me.name, RPL_STATSDEBUG, sptr->name, NICKNAMEHISTORYLENGTH, wwm);
|
||||
@@ -938,10 +939,11 @@ int stats_mem(aClient *sptr, char *para)
|
||||
totww = wwu * sizeof(anUser) + wwam + wwm;
|
||||
|
||||
sendto_one(sptr,
|
||||
":%s %d %s :Hash: client %d(%d) chan %d(%d) watch %d(%d)", me.name,
|
||||
RPL_STATSDEBUG, sptr->name, U_MAX, sizeof(aHashEntry) * U_MAX, CH_MAX,
|
||||
sizeof(aHashEntry) * CH_MAX, WATCHHASHSIZE,
|
||||
sizeof(aWatch *) * WATCHHASHSIZE);
|
||||
":%s %d %s :Hash: client %d(%ld) chan %d(%ld) watch %d(%ld)", me.name,
|
||||
RPL_STATSDEBUG, sptr->name, U_MAX,
|
||||
(long)(sizeof(aHashEntry) * U_MAX), CH_MAX,
|
||||
(long)(sizeof(aHashEntry) * CH_MAX), WATCHHASHSIZE,
|
||||
(long)(sizeof(aWatch *) * WATCHHASHSIZE));
|
||||
db = dbufblocks * sizeof(dbufbuf);
|
||||
sendto_one(sptr, ":%s %d %s :Dbuf blocks %d(%ld)",
|
||||
me.name, RPL_STATSDEBUG, sptr->name, dbufblocks, db);
|
||||
@@ -950,9 +952,10 @@ int stats_mem(aClient *sptr, char *para)
|
||||
while ((link = link->next))
|
||||
fl++;
|
||||
fl++;
|
||||
sendto_one(sptr, ":%s %d %s :Link blocks free %d(%d) total %d(%d)",
|
||||
me.name, RPL_STATSDEBUG, sptr->name, fl, fl * sizeof(Link),
|
||||
flinks, flinks * sizeof(Link));
|
||||
sendto_one(sptr, ":%s %d %s :Link blocks free %d(%ld) total %d(%ld)",
|
||||
me.name, RPL_STATSDEBUG, sptr->name,
|
||||
fl, (long)(fl * sizeof(Link)),
|
||||
flinks, (long)(flinks * sizeof(Link)));
|
||||
|
||||
rm = cres_mem(sptr,sptr->name);
|
||||
|
||||
@@ -976,7 +979,7 @@ int stats_mem(aClient *sptr, char *para)
|
||||
|
||||
#endif
|
||||
#else
|
||||
sendto_one(sptr, ":%s %d %s :TOTAL: %d",
|
||||
sendto_one(sptr, ":%s %d %s :TOTAL: %lu",
|
||||
me.name, RPL_STATSDEBUG, sptr->name, tot);
|
||||
#endif
|
||||
return 0;
|
||||
@@ -1415,7 +1418,8 @@ int stats_zip(aClient *sptr, char *para)
|
||||
{
|
||||
sendto_one(sptr,
|
||||
":%s %i %s :Zipstats for link to %s (compresslevel %d): decompressed (in): %01lu=>%01lu (%3.1f%%), compressed (out): %01lu=>%01lu (%3.1f%%)",
|
||||
me.name, RPL_TEXT, sptr->name, get_client_name(acptr, TRUE),
|
||||
me.name, RPL_TEXT, sptr->name,
|
||||
IsAnOper(sptr) ? get_client_name(acptr, TRUE) : acptr->name,
|
||||
acptr->serv->conf->compression_level ?
|
||||
acptr->serv->conf->compression_level : ZIP_DEFAULT_LEVEL,
|
||||
acptr->zip->in->total_in, acptr->zip->in->total_out,
|
||||
@@ -1502,9 +1506,8 @@ int stats_linkinfoint(aClient *sptr, char *para, int all)
|
||||
continue;
|
||||
|
||||
#ifdef DEBUGMODE
|
||||
ircsprintf(pbuf, "%d :%d", acptr->cputime,
|
||||
(acptr->user && MyConnect(acptr)) ?
|
||||
TStime() - acptr->last : 0);
|
||||
ircsprintf(pbuf, "%ld :%ld", (long)acptr->cputime,
|
||||
(long)(acptr->user && MyConnect(acptr)) ? TStime() - acptr->last : 0);
|
||||
#endif
|
||||
if (IsOper(sptr))
|
||||
{
|
||||
|
||||
@@ -123,8 +123,13 @@ int channel_svsmode(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
Member *cm;
|
||||
for (cm = chptr->members; cm; cm = cm->next) {
|
||||
if (cm->flags & CHFL_CHANOWNER) {
|
||||
Membership *mb;
|
||||
mb = find_membership_link(cm->cptr->user->channel,
|
||||
chptr);
|
||||
add_send_mode_param(chptr, sptr, '-', 'q', cm->cptr->name);
|
||||
cm->flags &= ~CHFL_CHANOWNER;
|
||||
if (mb)
|
||||
mb->flags = cm->flags;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -133,8 +138,13 @@ int channel_svsmode(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
Member *cm;
|
||||
for (cm = chptr->members; cm; cm = cm->next) {
|
||||
if (cm->flags & CHFL_CHANPROT) {
|
||||
Membership *mb;
|
||||
mb = find_membership_link(cm->cptr->user->channel,
|
||||
chptr);
|
||||
add_send_mode_param(chptr, sptr, '-', 'a', cm->cptr->name);
|
||||
cm->flags &= ~CHFL_CHANPROT;
|
||||
if (mb)
|
||||
mb->flags = cm->flags;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -143,8 +153,13 @@ int channel_svsmode(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
Member *cm;
|
||||
for (cm = chptr->members; cm; cm = cm->next) {
|
||||
if (cm->flags & CHFL_CHANOP) {
|
||||
Membership *mb;
|
||||
mb = find_membership_link(cm->cptr->user->channel,
|
||||
chptr);
|
||||
add_send_mode_param(chptr, sptr, '-', 'o', cm->cptr->name);
|
||||
cm->flags &= ~CHFL_CHANOP;
|
||||
if (mb)
|
||||
mb->flags = cm->flags;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -153,8 +168,13 @@ int channel_svsmode(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
Member *cm;
|
||||
for (cm = chptr->members; cm; cm = cm->next) {
|
||||
if (cm->flags & CHFL_HALFOP) {
|
||||
Membership *mb;
|
||||
mb = find_membership_link(cm->cptr->user->channel,
|
||||
chptr);
|
||||
add_send_mode_param(chptr, sptr, '-', 'h', cm->cptr->name);
|
||||
cm->flags &= ~CHFL_HALFOP;
|
||||
if (mb)
|
||||
mb->flags = cm->flags;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -163,8 +183,13 @@ int channel_svsmode(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
Member *cm;
|
||||
for (cm = chptr->members; cm; cm = cm->next) {
|
||||
if (cm->flags & CHFL_VOICE) {
|
||||
Membership *mb;
|
||||
mb = find_membership_link(cm->cptr->user->channel,
|
||||
chptr);
|
||||
add_send_mode_param(chptr, sptr, '-', 'v', cm->cptr->name);
|
||||
cm->flags &= ~CHFL_VOICE;
|
||||
if (mb)
|
||||
mb->flags = cm->flags;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+7
-3
@@ -505,6 +505,7 @@ char *tkllayer[11] = {
|
||||
struct tm *t;
|
||||
int targets = 0, action = 0;
|
||||
char targetbuf[64], actionbuf[2];
|
||||
char reason[512];
|
||||
|
||||
if (IsServer(sptr))
|
||||
return 0;
|
||||
@@ -563,7 +564,7 @@ char targetbuf[64], actionbuf[2];
|
||||
actionbuf[1] = '\0';
|
||||
|
||||
/* now check the regex... */
|
||||
p = unreal_checkregex(parv[6],0);
|
||||
p = unreal_checkregex(parv[6],0,1);
|
||||
if (p)
|
||||
{
|
||||
sendto_one(sptr, ":%s NOTICE %s :Error in regex '%s': %s",
|
||||
@@ -583,10 +584,13 @@ char targetbuf[64], actionbuf[2];
|
||||
}
|
||||
else
|
||||
tkllayer[8] = parv[4];
|
||||
|
||||
if (parv[5][0] == '-')
|
||||
tkllayer[9] = SPAMFILTER_BAN_REASON;
|
||||
strlcpy(reason, unreal_encodespace(SPAMFILTER_BAN_REASON), sizeof(reason));
|
||||
else
|
||||
tkllayer[9] = parv[5];
|
||||
strlcpy(reason, parv[5], sizeof(reason));
|
||||
|
||||
tkllayer[9] = reason;
|
||||
tkllayer[10] = parv[6];
|
||||
|
||||
if (whattodo == 0)
|
||||
|
||||
@@ -188,7 +188,7 @@ int m_vhost(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
MyFree(sptr->user->swhois);
|
||||
sptr->user->swhois = MyMalloc(strlen(vhost->swhois) +1);
|
||||
strcpy(sptr->user->swhois, vhost->swhois);
|
||||
sendto_serv_butone_token(cptr, sptr->name,
|
||||
sendto_serv_butone_token(cptr, me.name,
|
||||
MSG_SWHOIS, TOK_SWHOIS, "%s :%s", sptr->name, vhost->swhois);
|
||||
}
|
||||
sendto_one(sptr,
|
||||
|
||||
+2
-2
@@ -439,13 +439,13 @@ char has_common_chan = 0;
|
||||
/* if they only want people with a certain umode */
|
||||
if (wfl.umodes_want)
|
||||
{
|
||||
if (!(acptr->umodes & wfl.umodes_want) || (acptr->umodes & UMODE_HIDEOPER))
|
||||
if (!(acptr->umodes & wfl.umodes_want) || (!IsAnOper(sptr) && (acptr->umodes & UMODE_HIDEOPER)))
|
||||
return WHO_CANTSEE;
|
||||
}
|
||||
|
||||
if (wfl.umodes_dontwant)
|
||||
{
|
||||
if ((acptr->umodes & wfl.umodes_dontwant) && !(acptr->umodes & UMODE_HIDEOPER))
|
||||
if ((acptr->umodes & wfl.umodes_dontwant) && (!(acptr->umodes & UMODE_HIDEOPER) || IsAnOper(sptr)))
|
||||
return WHO_CANTSEE;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -409,7 +409,7 @@ void get_res_from_reg_nt()
|
||||
{
|
||||
do {
|
||||
n = 0;
|
||||
while (*cp && *cp != ' ' && *cp != '\t')
|
||||
while (*cp && *cp != ' ' && *cp != '\t' && *cp != ',')
|
||||
++cp;
|
||||
if (*cp)
|
||||
{
|
||||
|
||||
+130
-29
@@ -396,7 +396,7 @@ int config_verbose = 0;
|
||||
|
||||
void add_include(char *);
|
||||
#ifdef USE_LIBCURL
|
||||
void add_remote_include(char *, char *, int);
|
||||
void add_remote_include(char *, char *, int, char *);
|
||||
int remote_include(ConfigEntry *ce);
|
||||
#endif
|
||||
void unload_notloaded_includes(void);
|
||||
@@ -614,9 +614,16 @@ long config_checkval(char *orig, unsigned short flags) {
|
||||
void set_channelmodes(char *modes, struct ChMode *store, int warn)
|
||||
{
|
||||
aCtab *tab;
|
||||
char *param = strchr(modes, ' ');
|
||||
if (param)
|
||||
param++;
|
||||
char *params = strchr(modes, ' ');
|
||||
char *parambuf = NULL;
|
||||
char *param = NULL;
|
||||
if (params)
|
||||
{
|
||||
params++;
|
||||
parambuf = MyMalloc(strlen(params)+1);
|
||||
strcpy(parambuf, params);
|
||||
param = strtok(parambuf, " ");
|
||||
}
|
||||
|
||||
for (; *modes && *modes != ' '; modes++)
|
||||
{
|
||||
@@ -636,13 +643,18 @@ void set_channelmodes(char *modes, struct ChMode *store, int warn)
|
||||
case 'f':
|
||||
{
|
||||
#ifdef NEWCHFLOODPROT
|
||||
char *myparam = param;
|
||||
|
||||
/* TODO */
|
||||
ChanFloodProt newf;
|
||||
|
||||
memset(&newf, 0, sizeof(newf));
|
||||
if (!param)
|
||||
if (!myparam)
|
||||
break;
|
||||
if (param[0] != '[')
|
||||
/* Go to next parameter */
|
||||
param = strtok(NULL, " ");
|
||||
|
||||
if (myparam[0] != '[')
|
||||
{
|
||||
if (warn)
|
||||
config_status("set::modes-on-join: please use the new +f format: '10:5' becomes '[10t]:5' "
|
||||
@@ -655,7 +667,7 @@ void set_channelmodes(char *modes, struct ChMode *store, int warn)
|
||||
unsigned char r;
|
||||
|
||||
/* '['<number><1 letter>[optional: '#'+1 letter],[next..]']'':'<number> */
|
||||
strlcpy(xbuf, param, sizeof(xbuf));
|
||||
strlcpy(xbuf, myparam, sizeof(xbuf));
|
||||
p2 = strchr(xbuf+1, ']');
|
||||
if (!p2)
|
||||
break;
|
||||
@@ -776,15 +788,19 @@ void set_channelmodes(char *modes, struct ChMode *store, int warn)
|
||||
break;
|
||||
}
|
||||
#else
|
||||
char *myparam = param;
|
||||
char kmode = 0;
|
||||
char *xp;
|
||||
int msgs=0, per=0;
|
||||
int hascolon = 0;
|
||||
if (!param)
|
||||
if (!myparam)
|
||||
break;
|
||||
if (*param == '*')
|
||||
/* Go to next parameter */
|
||||
param = strtok(NULL, " ");
|
||||
|
||||
if (*myparam == '*')
|
||||
kmode = 1;
|
||||
for (xp = param; *xp; xp++)
|
||||
for (xp = myparam; *xp; xp++)
|
||||
{
|
||||
if (*xp == ':')
|
||||
{
|
||||
@@ -793,14 +809,14 @@ void set_channelmodes(char *modes, struct ChMode *store, int warn)
|
||||
}
|
||||
if (((*xp < '0') || (*xp > '9')) && *xp != '*')
|
||||
break;
|
||||
if (*xp == '*' && *param != '*')
|
||||
if (*xp == '*' && *myparam != '*')
|
||||
break;
|
||||
}
|
||||
if (hascolon != 1)
|
||||
break;
|
||||
xp = strchr(param, ':');
|
||||
xp = strchr(myparam, ':');
|
||||
*xp = 0;
|
||||
msgs = atoi((*param == '*') ? (param+1) : param);
|
||||
msgs = atoi((*myparam == '*') ? (myparam+1) : myparam);
|
||||
xp++;
|
||||
per = atoi(xp);
|
||||
xp--;
|
||||
@@ -818,15 +834,47 @@ void set_channelmodes(char *modes, struct ChMode *store, int warn)
|
||||
for (tab = &cFlagTab[0]; tab->mode; tab++)
|
||||
{
|
||||
if (tab->flag == *modes)
|
||||
{
|
||||
store->mode |= tab->mode;
|
||||
break;
|
||||
}
|
||||
}
|
||||
#ifdef EXTCMODE
|
||||
/* Try extcmodes */
|
||||
if (!tab->mode)
|
||||
{
|
||||
int i;
|
||||
for (i=0; i <= Channelmode_highest; i++)
|
||||
{
|
||||
if (!(Channelmode_Table[i].flag))
|
||||
continue;
|
||||
if (*modes == Channelmode_Table[i].flag)
|
||||
{
|
||||
if (Channelmode_Table[i].paracount)
|
||||
{
|
||||
if (!param)
|
||||
break;
|
||||
store->extparams[i] = strdup(Channelmode_Table[i].conv_param(param));
|
||||
/* Get next parameter */
|
||||
param = strtok(NULL, " ");
|
||||
}
|
||||
store->extmodes |= Channelmode_Table[i].mode;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
if (parambuf)
|
||||
free(parambuf);
|
||||
}
|
||||
|
||||
void chmode_str(struct ChMode modes, char *mbuf, char *pbuf)
|
||||
{
|
||||
aCtab *tab;
|
||||
int i;
|
||||
*pbuf = 0;
|
||||
*mbuf++ = '+';
|
||||
for (tab = &cFlagTab[0]; tab->mode; tab++)
|
||||
{
|
||||
@@ -836,17 +884,38 @@ void chmode_str(struct ChMode modes, char *mbuf, char *pbuf)
|
||||
*mbuf++ = tab->flag;
|
||||
}
|
||||
}
|
||||
#ifdef EXTCMODE
|
||||
for (i=0; i <= Channelmode_highest; i++)
|
||||
{
|
||||
if (!(Channelmode_Table[i].flag))
|
||||
continue;
|
||||
|
||||
if (modes.extmodes & Channelmode_Table[i].mode)
|
||||
{
|
||||
*mbuf++ = Channelmode_Table[i].flag;
|
||||
if (Channelmode_Table[i].paracount)
|
||||
{
|
||||
strcat(pbuf, modes.extparams[i]);
|
||||
strcat(pbuf, " ");
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#ifdef NEWCHFLOODPROT
|
||||
if (modes.floodprot.per)
|
||||
{
|
||||
*mbuf++ = 'f';
|
||||
sprintf(pbuf, "%s", channel_modef_string(&modes.floodprot));
|
||||
strcat(pbuf, channel_modef_string(&modes.floodprot));
|
||||
}
|
||||
#else
|
||||
if (modes.per)
|
||||
{
|
||||
*mbuf++ = 'f';
|
||||
sprintf(pbuf, "%s%d:%d", modes.kmode ? "*" : "", modes.msgs, modes.per);
|
||||
if (modes.kmode)
|
||||
strcat(pbuf, "*");
|
||||
strcat(pbuf, my_itoa(modes.msgs));
|
||||
strcat(pbuf, ":");
|
||||
strcat(pbuf, my_itoa(modes.per));
|
||||
}
|
||||
#endif
|
||||
*mbuf++=0;
|
||||
@@ -1500,6 +1569,10 @@ int init_conf(char *rootconf, int rehash)
|
||||
else
|
||||
{
|
||||
config_error("IRCd configuration failed to load");
|
||||
#ifndef STATIC_LINKING
|
||||
Unload_all_testing_modules();
|
||||
#endif
|
||||
unload_notloaded_includes();
|
||||
config_free(conf);
|
||||
conf = NULL;
|
||||
free_iConf(&tempiConf);
|
||||
@@ -1593,6 +1666,7 @@ void config_rehash()
|
||||
ListStruct *next, *next2;
|
||||
aTKline *tk, *tk_next;
|
||||
SpamExcept *spamex_ptr;
|
||||
int i;
|
||||
|
||||
USE_BAN_VERSION = 0;
|
||||
/* clean out stuff that we don't use */
|
||||
@@ -1906,6 +1980,13 @@ void config_rehash()
|
||||
ircfree(of_ptr->topic);
|
||||
MyFree(of_ptr);
|
||||
}
|
||||
#ifdef EXTCMODE
|
||||
for (i = 0; i < EXTCMODETABLESZ; i++)
|
||||
{
|
||||
if (iConf.modes_on_join.extparams[i])
|
||||
free(iConf.modes_on_join.extparams[i]);
|
||||
}
|
||||
#endif
|
||||
conf_offchans = NULL;
|
||||
}
|
||||
|
||||
@@ -4681,7 +4762,7 @@ int _test_badword(ConfigFile *conf, ConfigEntry *ce) {
|
||||
}
|
||||
else
|
||||
{
|
||||
char *errbuf = unreal_checkregex(word->ce_vardata,1);
|
||||
char *errbuf = unreal_checkregex(word->ce_vardata,1,0);
|
||||
if (errbuf)
|
||||
{
|
||||
config_error("%s:%i: badword::%s contains an invalid regex: %s",
|
||||
@@ -4785,7 +4866,7 @@ int _conf_spamfilter(ConfigFile *conf, ConfigEntry *ce)
|
||||
nl->spamf->action = action;
|
||||
|
||||
if ((cep = config_find_entry(ce->ce_entries, "reason")))
|
||||
nl->spamf->tkl_reason = strdup(cep->ce_vardata);
|
||||
nl->spamf->tkl_reason = strdup(unreal_encodespace(cep->ce_vardata));
|
||||
else
|
||||
nl->spamf->tkl_reason = strdup("<internally added by ircd>");
|
||||
|
||||
@@ -4803,6 +4884,7 @@ int _test_spamfilter(ConfigFile *conf, ConfigEntry *ce)
|
||||
ConfigEntry *cep;
|
||||
int errors = 0;
|
||||
int got = 0;
|
||||
char *regex = NULL, *reason = NULL;
|
||||
|
||||
for (cep = ce->ce_entries; cep; cep = cep->ce_next)
|
||||
{
|
||||
@@ -4820,6 +4902,8 @@ int _test_spamfilter(ConfigFile *conf, ConfigEntry *ce)
|
||||
cep->ce_fileptr->cf_filename, cep->ce_varlinenum, cep->ce_varname);
|
||||
errors++; continue;
|
||||
}
|
||||
if (!strcmp(cep->ce_varname, "reason"))
|
||||
reason = cep->ce_vardata;
|
||||
if (!strcmp(cep->ce_varname, "regex") || !strcmp(cep->ce_varname, "action") ||
|
||||
!strcmp(cep->ce_varname, "reason") || !strcmp(cep->ce_varname, "ban-time"))
|
||||
continue;
|
||||
@@ -4836,7 +4920,8 @@ int _test_spamfilter(ConfigFile *conf, ConfigEntry *ce)
|
||||
errors++;
|
||||
} else if (cep->ce_vardata) {
|
||||
/* Check if it's a valid one */
|
||||
char *errbuf = unreal_checkregex(cep->ce_vardata,0);
|
||||
char *errbuf = unreal_checkregex(cep->ce_vardata,0,0);
|
||||
regex = cep->ce_vardata;
|
||||
if (errbuf)
|
||||
{
|
||||
config_error("%s:%i: spamfilter::regex contains an invalid regex: %s",
|
||||
@@ -4895,6 +4980,14 @@ int _test_spamfilter(ConfigFile *conf, ConfigEntry *ce)
|
||||
}
|
||||
}
|
||||
|
||||
if (regex && reason && (strlen(regex) + strlen(reason) > 505))
|
||||
{
|
||||
config_error("%s:%i: spamfilter block problem: regex + reason field are together over 505 bytes, "
|
||||
"please choose a shorter regex or reason",
|
||||
ce->ce_fileptr->cf_filename, ce->ce_varlinenum);
|
||||
errors++;
|
||||
}
|
||||
|
||||
return errors;
|
||||
}
|
||||
|
||||
@@ -5310,6 +5403,7 @@ int _conf_ban(ConfigFile *conf, ConfigEntry *ce)
|
||||
nl->reason = strdup(cep->ce_vardata);
|
||||
strcpy(nl->usermask, "*");
|
||||
AddListItem(nl, tklines[tkl_hash('q')]);
|
||||
free(ca);
|
||||
return 0;
|
||||
}
|
||||
else if (!strcmp(ce->ce_vardata, "ip"))
|
||||
@@ -7292,12 +7386,12 @@ static void conf_download_complete(char *url, char *file, char *errorbuf, int ca
|
||||
if (!stricmp(url, inc->url))
|
||||
{
|
||||
inc->flag.type &= ~INCLUDE_DLQUEUED;
|
||||
if (!file && !cached)
|
||||
inc->errorbuf = strdup(errorbuf);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!inc->errorbuf)
|
||||
if (!file && !cached)
|
||||
add_remote_include(file, url, 0, errorbuf);
|
||||
else
|
||||
{
|
||||
if (cached)
|
||||
{
|
||||
@@ -7305,11 +7399,11 @@ static void conf_download_complete(char *url, char *file, char *errorbuf, int ca
|
||||
char *file = unreal_getfilename(urlfile);
|
||||
char *tmp = unreal_mktemp("tmp", file);
|
||||
unreal_copyfile(inc->file, tmp);
|
||||
add_remote_include(tmp, url, 0);
|
||||
add_remote_include(tmp, url, 0, NULL);
|
||||
free(urlfile);
|
||||
}
|
||||
else
|
||||
add_remote_include(file, url, 0);
|
||||
add_remote_include(file, url, 0, NULL);
|
||||
}
|
||||
for (inc = conf_include; inc; inc = (ConfigItem_include *)inc->next)
|
||||
{
|
||||
@@ -7372,6 +7466,8 @@ int rehash_internal(aClient *cptr, aClient *sptr, int sig)
|
||||
}
|
||||
if (init_conf(configfile, 1) == 0)
|
||||
run_configuration();
|
||||
if (sig == 1)
|
||||
reread_motdsandrules();
|
||||
unload_all_unused_snomasks();
|
||||
unload_all_unused_umodes();
|
||||
loop.ircd_rehashing = 0;
|
||||
@@ -7451,10 +7547,10 @@ char *find_loaded_remote_include(char *url)
|
||||
|
||||
int remote_include(ConfigEntry *ce)
|
||||
{
|
||||
char *errorbuf;
|
||||
char *errorbuf = NULL;
|
||||
char *file = find_remote_include(ce->ce_vardata, &errorbuf);
|
||||
int ret;
|
||||
if (!loop.ircd_rehashing || (loop.ircd_rehashing && !file))
|
||||
if (!loop.ircd_rehashing || (loop.ircd_rehashing && !file && !errorbuf))
|
||||
{
|
||||
char *error;
|
||||
if (config_verbose > 0)
|
||||
@@ -7470,7 +7566,7 @@ int remote_include(ConfigEntry *ce)
|
||||
else
|
||||
{
|
||||
if ((ret = load_conf(file)) >= 0)
|
||||
add_remote_include(file, ce->ce_vardata, INCLUDE_USED);
|
||||
add_remote_include(file, ce->ce_vardata, INCLUDE_USED, NULL);
|
||||
free(file);
|
||||
return ret;
|
||||
}
|
||||
@@ -7487,7 +7583,7 @@ int remote_include(ConfigEntry *ce)
|
||||
if (config_verbose > 0)
|
||||
config_status("Loading %s from download", ce->ce_vardata);
|
||||
if ((ret = load_conf(file)) >= 0)
|
||||
add_remote_include(file, ce->ce_vardata, INCLUDE_USED);
|
||||
add_remote_include(file, ce->ce_vardata, INCLUDE_USED, NULL);
|
||||
return ret;
|
||||
}
|
||||
return 0;
|
||||
@@ -7504,6 +7600,8 @@ void add_include(char *file)
|
||||
{
|
||||
if (!(inc->flag.type & INCLUDE_NOTLOADED))
|
||||
continue;
|
||||
if (inc->flag.type & INCLUDE_REMOTE)
|
||||
continue;
|
||||
if (!stricmp(file, inc->file))
|
||||
return;
|
||||
}
|
||||
@@ -7514,7 +7612,7 @@ void add_include(char *file)
|
||||
}
|
||||
|
||||
#ifdef USE_LIBCURL
|
||||
void add_remote_include(char *file, char *url, int flags)
|
||||
void add_remote_include(char *file, char *url, int flags, char *errorbuf)
|
||||
{
|
||||
ConfigItem_include *inc;
|
||||
|
||||
@@ -7529,9 +7627,12 @@ void add_remote_include(char *file, char *url, int flags)
|
||||
}
|
||||
|
||||
inc = MyMallocEx(sizeof(ConfigItem_include));
|
||||
inc->file = strdup(file);
|
||||
if (file)
|
||||
inc->file = strdup(file);
|
||||
inc->url = strdup(url);
|
||||
inc->flag.type = (INCLUDE_NOTLOADED|INCLUDE_REMOTE|flags);
|
||||
if (errorbuf)
|
||||
inc->errorbuf = strdup(errorbuf);
|
||||
AddListItem(inc, conf_include);
|
||||
}
|
||||
#endif
|
||||
|
||||
+24
-11
@@ -112,6 +112,10 @@ void tkl_init(void)
|
||||
* setby = whom set it
|
||||
* expire_at = when to expire - 0 if not to expire
|
||||
* set_at = was set at
|
||||
* spamf_tkl_duration = duration of *line placed by spamfilter [1]
|
||||
* spamf_tkl_reason = escaped reason field for *lines placed by spamfilter [1]
|
||||
*
|
||||
* [1]: only relevant for spamfilters, else ignored (eg 0, NULL).
|
||||
*/
|
||||
|
||||
int tkl_add_line(int type, char *usermask, char *hostmask, char *reason, char *setby,
|
||||
@@ -146,7 +150,7 @@ int tkl_add_line(int type, char *usermask, char *hostmask, char *reason, char *
|
||||
nl->spamf->tkl_reason = strdup(unreal_encodespace(SPAMFILTER_BAN_REASON));
|
||||
} else {
|
||||
nl->spamf->tkl_duration = spamf_tkl_duration;
|
||||
nl->spamf->tkl_reason = strdup(unreal_encodespace(spamf_tkl_reason));
|
||||
nl->spamf->tkl_reason = strdup(spamf_tkl_reason); /* already encoded */
|
||||
}
|
||||
}
|
||||
index = tkl_hash(tkl_typetochar(type));
|
||||
@@ -169,6 +173,7 @@ aTKline *tkl_del_line(aTKline *tkl)
|
||||
MyFree(p->setby);
|
||||
if (p->spamf)
|
||||
{
|
||||
regfree(&p->spamf->expr);
|
||||
if (p->spamf->tkl_reason)
|
||||
MyFree(p->spamf->tkl_reason);
|
||||
MyFree(p->spamf);
|
||||
@@ -833,9 +838,12 @@ void tkl_synch(aClient *sptr)
|
||||
* parv[ 6]: expire_at expire_at (0) expire_at (0) expire_at
|
||||
* parv[ 7]: set_at set_at set_at set_at
|
||||
* parv[ 8]: reason regex tkl duration reason
|
||||
* parv[ 9]: tkl reason
|
||||
* parv[ 9]: tkl reason [A]
|
||||
* parv[10]: regex
|
||||
*
|
||||
* [A] tkl reason field must be escaped by caller [eg: use unreal_encodespace()
|
||||
* if m_tkl is called internally].
|
||||
*
|
||||
*/
|
||||
int m_tkl(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
{
|
||||
@@ -844,9 +852,9 @@ int m_tkl(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
int found = 0;
|
||||
char gmt[256], gmt2[256];
|
||||
char txt[256];
|
||||
TS expiry_1, setat_1, spamf_tklduration;
|
||||
TS expiry_1, setat_1, spamf_tklduration = 0;
|
||||
int index;
|
||||
char *reason;
|
||||
char *reason = NULL;
|
||||
|
||||
if (!IsServer(sptr) && !IsOper(sptr) && !IsMe(sptr))
|
||||
return 0;
|
||||
@@ -1170,13 +1178,18 @@ int m_tkl(aClient *cptr, aClient *sptr, int parc, char *parv[])
|
||||
if (tk->type == type)
|
||||
{
|
||||
int match = 0;
|
||||
if ((type & TKL_NICK) && !strcmp(tk->hostmask, parv[4]))
|
||||
match = 1;
|
||||
else if ((type & TKL_SPAMF) && !strcmp(tk->hostmask, parv[4])
|
||||
&& !strcmp(tk->usermask, parv[3]) &&
|
||||
!strcmp(tk->reason, parv[8]))
|
||||
match = 1;
|
||||
else if (!strcmp(tk->hostmask, parv[4]) && !strcmp(tk->usermask, parv[3]))
|
||||
if (type & TKL_NICK)
|
||||
{
|
||||
if (!strcmp(tk->hostmask, parv[4]))
|
||||
match = 1;
|
||||
} else
|
||||
if (type & TKL_SPAMF)
|
||||
{
|
||||
if (!strcmp(tk->hostmask, parv[4]) && !strcmp(tk->usermask, parv[3]) &&
|
||||
!strcmp(tk->reason, reason))
|
||||
match = 1;
|
||||
} else /* all other types... */
|
||||
if (!strcmp(tk->hostmask, parv[4]) && !strcmp(tk->usermask, parv[3]))
|
||||
match = 1;
|
||||
|
||||
if (match)
|
||||
|
||||
+25
-3
@@ -775,8 +775,10 @@ char *p;
|
||||
/** Checks if the specified regex (or fast badwords) is valid.
|
||||
* returns NULL in case of success [!],
|
||||
* pointer to buffer with error message otherwise
|
||||
* if check_broadness is 1, the function will attempt to determine
|
||||
* if the given regex string is too broad (i.e. matches everything)
|
||||
*/
|
||||
char *unreal_checkregex(char *s, int fastsupport)
|
||||
char *unreal_checkregex(char *s, int fastsupport, int check_broadness)
|
||||
{
|
||||
int errorcode, errorbufsize, regex=0;
|
||||
char *errtmp, *tmp;
|
||||
@@ -810,6 +812,12 @@ Ilovegotos:
|
||||
regfree(&expr);
|
||||
return errorbuf;
|
||||
}
|
||||
if (check_broadness && !regexec(&expr, "", 0, NULL, 0))
|
||||
{
|
||||
strncpyzt(errorbuf, "Regular expression is too broad", sizeof(errorbuf));
|
||||
regfree(&expr);
|
||||
return errorbuf;
|
||||
}
|
||||
regfree(&expr);
|
||||
}
|
||||
return NULL;
|
||||
@@ -1011,7 +1019,14 @@ char *unreal_decodespace(char *s)
|
||||
static char buf[512], *i, *o;
|
||||
for (i = s, o = buf; (*i) && (o < buf+510); i++)
|
||||
if (*i == '_')
|
||||
*o++ = ' ';
|
||||
{
|
||||
if (i[1] != '_')
|
||||
*o++ = ' ';
|
||||
else {
|
||||
*o++ = '_';
|
||||
i++;
|
||||
}
|
||||
}
|
||||
else
|
||||
*o++ = *i;
|
||||
*o = '\0';
|
||||
@@ -1021,11 +1036,18 @@ static char buf[512], *i, *o;
|
||||
char *unreal_encodespace(char *s)
|
||||
{
|
||||
static char buf[512], *i, *o;
|
||||
for (i = s, o = buf; (*i) && (o < buf+510); i++)
|
||||
for (i = s, o = buf; (*i) && (o < buf+509); i++)
|
||||
{
|
||||
if (*i == ' ')
|
||||
*o++ = '_';
|
||||
else if (*i == '_')
|
||||
{
|
||||
*o++ = '_';
|
||||
*o++ = '_';
|
||||
}
|
||||
else
|
||||
*o++ = *i;
|
||||
}
|
||||
*o = '\0';
|
||||
return buf;
|
||||
}
|
||||
|
||||
+3
-3
@@ -225,11 +225,11 @@ void m_info_send(aClient *sptr)
|
||||
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 :| * McSkaf <mcskaf@unrealircd.com>",
|
||||
me.name, RPL_INFO, sptr->name);
|
||||
sendto_one(sptr, ":%s %d %s :|", me.name, RPL_INFO, sptr->name);
|
||||
sendto_one(sptr, ":%s %d %s :| Contributors:", me.name, RPL_INFO, sptr->name);
|
||||
sendto_one(sptr, ":%s %d %s :|", me.name, RPL_INFO, sptr->name);
|
||||
sendto_one(sptr, ":%s %d %s :| * McSkaf <mcskaf@unrealircd.com>",
|
||||
me.name, RPL_INFO, sptr->name);
|
||||
sendto_one(sptr, ":%s %d %s :| * Zogg <zogg@unrealircd.org>",
|
||||
me.name, RPL_INFO, sptr->name);
|
||||
sendto_one(sptr, ":%s %d %s :| * NiQuiL <niquil@unrealircd.org>",
|
||||
@@ -816,7 +816,7 @@ ConfigItem_tld *tlds;
|
||||
}
|
||||
}
|
||||
|
||||
static void reread_motdsandrules()
|
||||
void reread_motdsandrules()
|
||||
{
|
||||
motd = (aMotd *) read_file_ex(MPATH, &motd, &motd_tm);
|
||||
rules = (aMotd *) read_file(RPATH, &rules);
|
||||
|
||||
+12
-11
@@ -1185,7 +1185,7 @@ CMD_FUNC(m_nick)
|
||||
Membership *mp;
|
||||
time_t lastnick = (time_t) 0;
|
||||
int differ = 1, update_watch = 1;
|
||||
unsigned char newusr = 0;
|
||||
unsigned char newusr = 0, removemoder = 1;
|
||||
/*
|
||||
* If the user didn't specify a nickname, complain
|
||||
*/
|
||||
@@ -1431,17 +1431,17 @@ CMD_FUNC(m_nick)
|
||||
*/
|
||||
if (acptr == sptr) {
|
||||
if (strcmp(acptr->name, nick) != 0)
|
||||
/*
|
||||
** Allows change of case in his/her nick
|
||||
*/
|
||||
{
|
||||
/* Allows change of case in his/her nick */
|
||||
removemoder = 0; /* don't set the user -r */
|
||||
goto nickkilldone; /* -- go and process change */
|
||||
else
|
||||
} else
|
||||
/*
|
||||
** This is just ':old NICK old' type thing.
|
||||
** Just forget the whole thing here. There is
|
||||
** no point forwarding it to anywhere,
|
||||
** especially since servers prior to this
|
||||
** version would treat it as nick collision.
|
||||
** This is just ':old NICK old' type thing.
|
||||
** Just forget the whole thing here. There is
|
||||
** no point forwarding it to anywhere,
|
||||
** especially since servers prior to this
|
||||
** version would treat it as nick collision.
|
||||
*/
|
||||
return 0; /* NICK Message ignored */
|
||||
}
|
||||
@@ -1737,7 +1737,8 @@ CMD_FUNC(m_nick)
|
||||
sendto_common_channels(sptr, ":%s NICK :%s", parv[0], nick);
|
||||
sendto_serv_butone_token(cptr, parv[0], MSG_NICK, TOK_NICK,
|
||||
"%s %ld", nick, sptr->lastnick);
|
||||
sptr->umodes &= ~UMODE_REGNICK;
|
||||
if (removemoder)
|
||||
sptr->umodes &= ~UMODE_REGNICK;
|
||||
}
|
||||
else if (!sptr->name[0])
|
||||
{
|
||||
|
||||
+4
-4
@@ -1815,7 +1815,7 @@ void sendto_connectnotice(char *nick, anUser *user, aClient *sptr, int disconnec
|
||||
*/
|
||||
void sendto_serv_butone_nickcmd(aClient *one, aClient *sptr,
|
||||
char *nick, int hopcount,
|
||||
int lastnick, char *username, char *realhost, char *server,
|
||||
long lastnick, char *username, char *realhost, char *server,
|
||||
long servicestamp, char *info, char *umodes, char *virthost)
|
||||
{
|
||||
int i;
|
||||
@@ -1847,9 +1847,9 @@ void sendto_serv_butone_nickcmd(aClient *one, aClient *sptr,
|
||||
,
|
||||
(IsToken(cptr) ? TOK_NICK : MSG_NICK), nick,
|
||||
hopcount, lastnick, username, realhost,
|
||||
sptr->srvptr->serv->numeric,
|
||||
(long)(sptr->srvptr->serv->numeric),
|
||||
servicestamp, umodes,
|
||||
(SupportVHP(cptr) ? (IsHidden(sptr) ? sptr->user->virthost : realhost) : virthost),
|
||||
(SupportVHP(cptr) ? (IsHidden(sptr) ? sptr->user->virthost : realhost) : (virthost ? virthost : "*")),
|
||||
info);
|
||||
else
|
||||
sendto_one(cptr,
|
||||
@@ -1858,7 +1858,7 @@ void sendto_serv_butone_nickcmd(aClient *one, aClient *sptr,
|
||||
hopcount, lastnick, username, realhost,
|
||||
SupportNS(cptr) && sptr->srvptr->serv->numeric ? base64enc(sptr->srvptr->serv->numeric) : server,
|
||||
servicestamp, umodes,
|
||||
(SupportVHP(cptr) ? (IsHidden(sptr) ? sptr->user->virthost : realhost) : virthost),
|
||||
(SupportVHP(cptr) ? (IsHidden(sptr) ? sptr->user->virthost : realhost) : (virthost ? virthost : "*")),
|
||||
info);
|
||||
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ int url_is_valid(char *string)
|
||||
/*
|
||||
* Returns the filename portion of the URL. The returned string
|
||||
* is malloc()'ed and must be freed by the caller. If the specified
|
||||
* URL does not contain a filename, NULL is returned.
|
||||
* URL does not contain a filename, a '-' is allocated and returned.
|
||||
*/
|
||||
char *url_getfilename(char *url)
|
||||
{
|
||||
@@ -80,7 +80,7 @@ char *url_getfilename(char *url)
|
||||
{
|
||||
c++;
|
||||
if (!*c || *c == '?')
|
||||
return NULL;
|
||||
return strdup("-");
|
||||
start = c;
|
||||
while (*c && *c != '?')
|
||||
c++;
|
||||
@@ -92,10 +92,10 @@ char *url_getfilename(char *url)
|
||||
strlcpy(file, start, c-start+1);
|
||||
return file;
|
||||
}
|
||||
return NULL;
|
||||
return strdup("-");
|
||||
|
||||
}
|
||||
return NULL;
|
||||
return strdup("-");
|
||||
}
|
||||
|
||||
#ifdef USE_SSL
|
||||
@@ -144,6 +144,7 @@ char *download_file(char *url, char **error)
|
||||
char *tmp = unreal_mktemp("tmp", filename ? filename : "download.conf");
|
||||
FILE *fd;
|
||||
|
||||
|
||||
if (!curl)
|
||||
{
|
||||
if (file)
|
||||
@@ -167,6 +168,9 @@ char *download_file(char *url, char **error)
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, do_download);
|
||||
curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1);
|
||||
curl_easy_setopt(curl, CURLOPT_FILETIME, 1);
|
||||
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
|
||||
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 45);
|
||||
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 15);
|
||||
|
||||
#ifdef USE_SSL
|
||||
set_curl_ssl_options(curl);
|
||||
@@ -265,6 +269,9 @@ void download_file_async(char *url, time_t cachetime, vFP callback)
|
||||
curl_easy_setopt(curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE);
|
||||
curl_easy_setopt(curl, CURLOPT_TIMEVALUE, cachetime);
|
||||
}
|
||||
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
|
||||
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 45);
|
||||
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 15);
|
||||
|
||||
curl_multi_add_handle(multihandle, curl);
|
||||
}
|
||||
@@ -301,6 +308,7 @@ void url_do_transfers_async(void)
|
||||
switch(rc) {
|
||||
case -1:
|
||||
case 0:
|
||||
cont = 0;
|
||||
break;
|
||||
default:
|
||||
while(CURLM_CALL_MULTI_PERFORM ==
|
||||
|
||||
+10
-4
@@ -78,9 +78,9 @@ char *unrealcredits[] =
|
||||
"=-=-=-=-=-=-=-=-=-=-=-=-=-=[Donations]=-=-=-=-=-=-=-=-=-=-=-=-=-=",
|
||||
"BlueFlame^, [Real] - ChatFIRST.com, Jameno123 - ByteHosting ",
|
||||
"Internet Services, Interlink Access Corp, Jan Knutar, ThePlayer,",
|
||||
"Headband, noriko, powerstorm.net, RedMaxima, IronHelix,",
|
||||
"Headband, noriko, powerstorm.net, RedMaxima, IronHelix, xnet.org,",
|
||||
"Pierce - irc.AAcNet.org, Franky75 - Betas-Online.com, irc.vco.se,",
|
||||
"Bedlock - irc.coldfront.net, Kusau - chat.tochat.org, Japsclan,",
|
||||
"Beldock - irc.coldfront.net, Kusau - chat.tochat.org, Japsclan,",
|
||||
"WolfLord - UplinkCorp, Isaiah - irc.frogstar.us, Kedrin Milborn,",
|
||||
"Dionisios Koutsikos, Tank - irc.scifi-fans.net, irc.P2Pchat.net",
|
||||
"Leo Zhadanovsky - irc.leozh.net, Lyote - ZodiaCIrC/DecayOnline,",
|
||||
@@ -94,14 +94,20 @@ char *unrealcredits[] =
|
||||
"Matridom - www.WinDrivers.com, anaconda - irc.lightmoon.org,",
|
||||
"mnslinky - http://www.secure-computing.net, Justin Furnas,",
|
||||
"Andy Hansis - irc.technerd.net, Crimson - www.n00bstories.com",
|
||||
"Devin Reams, Cleggo - irc.ugcentral.net, xnet.org",
|
||||
"Devin Reams, Cleggo - irc.ugcentral.net, Tillo - irc.OSirc.net,",
|
||||
"Matthew Burdine - irc.owns.us, Philip Veale - flame.tiefighter.org,",
|
||||
"Windfyre IRC Network - irc.windfyre.net",
|
||||
"=-=-=-=-=-=-=-=-=-=-=-=-=-=-[Hosting]=-=-=-=-=-=-=-=-=-=-=-=-=-=-=",
|
||||
"Phil Veale - email@phillipveale.com - http://www.tiefighter.org",
|
||||
"- Donating webhosting for the project amongst other things",
|
||||
"Alcatraz Media - http://www.alcatrazmedia.com",
|
||||
"- Donating more webhosting for the project",
|
||||
"cknight^",
|
||||
"- Donating a FreeBSD box to the Unreal project to host some stuff",
|
||||
"KIREnet.com - http://www.kirenet.com",
|
||||
"- Donating hosting for the above box on their line :)",
|
||||
"Digital Intensity Webhosting - http://www.digital-intensity.net"
|
||||
"- Donating hosting for the Unreal forums",
|
||||
" ",
|
||||
"Thanks go to all current mirror & DNS hosters. We really value",
|
||||
"your donations.",
|
||||
@@ -116,7 +122,7 @@ char *unrealcredits[] =
|
||||
"list of all the coders' credits. ",
|
||||
"=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-",
|
||||
"This IRCd is dedicated to those who have kept us rocking and",
|
||||
"in good mood all through the years we've struggled with this"
|
||||
"in good mood all through the years we've struggled with this",
|
||||
"project. Unreal3.0 and up is dedicated to Morrigan.",
|
||||
0
|
||||
};
|
||||
|
||||
@@ -924,8 +924,7 @@ static HMENU hRehash, hAbout, hConfig, hTray, hLogs;
|
||||
MessageBox(NULL, "Rehashing all files", "Rehashing", MB_OK);
|
||||
sendto_realops("Rehashing all files via the console");
|
||||
rehash(&me,&me,0);
|
||||
opermotd = (aMotd *) read_file(OPATH, &opermotd);
|
||||
botmotd = (aMotd *) read_file(BPATH, &botmotd);
|
||||
reread_motdsandrules();
|
||||
break;
|
||||
case IDM_RHCONF:
|
||||
MessageBox(NULL, "Rehashing the Config file", "Rehashing", MB_OK);
|
||||
|
||||
Binary file not shown.
Binary file not shown.
+32
-23
@@ -1,5 +1,5 @@
|
||||
; UnrealIRCd Win32 Installation Script for My Inno Setup Extensions
|
||||
; Requires ISX 3.0.4 to work
|
||||
; Requires Inno Setup 4.1.6 and ISX 3.0.4 to work
|
||||
|
||||
; #define USE_SSL
|
||||
; Uncomment the above line to package an SSL build
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
[Setup]
|
||||
AppName=UnrealIRCd
|
||||
AppVerName=UnrealIRCd3.2-RC2
|
||||
AppVerName=UnrealIRCd3.2
|
||||
AppPublisher=UnrealIRCd Team
|
||||
AppPublisherURL=http://www.unrealircd.com
|
||||
AppSupportURL=http://www.unrealircd.com
|
||||
@@ -25,7 +25,7 @@ LicenseFile=.\gpl.rtf
|
||||
#else
|
||||
LicenseFile=.\gplplusssl.rtf
|
||||
#endif
|
||||
Compression=bzip/9
|
||||
Compression=lzma
|
||||
MinVersion=4.0.1111,4.0.1381
|
||||
OutputDir=../../
|
||||
|
||||
@@ -72,7 +72,7 @@ Source: ".\encpem.bat"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "..\ssl.cnf"; DestDir: "{app}"; Flags: ignoreversion
|
||||
#endif
|
||||
#ifdef USE_ZIP
|
||||
Source: "c:\dev\zlib\dll32\zlib.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "c:\dev\zlib\dll32\zlibwapi.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
#endif
|
||||
#ifdef USE_CURL
|
||||
Source: "c:\dev\curl\lib\libcurl.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
@@ -91,28 +91,35 @@ external 'isxdl_Download@files:isxdl.dll stdcall';
|
||||
function isxdl_SetOption(Option, Value: PChar): Integer;
|
||||
external 'isxdl_SetOption@files:isxdl.dll stdcall';
|
||||
const url = 'http://www.unrealircd.com/downloads/DbgHelp.Dll';
|
||||
var didDl: Boolean;
|
||||
|
||||
function NextButtonClick(CurPage: Integer): Boolean;
|
||||
var
|
||||
dbghelp,tmp,output: String;
|
||||
m: String;
|
||||
hWnd,answer: Integer;
|
||||
begin
|
||||
dbghelp := ExpandConstant('{sys}\DbgHelp.Dll');
|
||||
output := ExpandConstant('{app}\DbgHelp.Dll');
|
||||
GetVersionNumbersString(dbghelp,m);
|
||||
if ((CurPage = wpReady) AND NOT FileExists(output)) then begin
|
||||
if (NOT FileExists(dbghelp)) then
|
||||
m := StringOfChar('0',1);
|
||||
if (StrToInt(m[1]) < 5) then begin
|
||||
answer := MsgBox('DbgHelp.dll version 5.0 or higher is required to install Unreal, do you wish to install it now?', mbConfirmation, MB_YESNO);
|
||||
if answer = IDYES then begin
|
||||
tmp := ExpandConstant('{tmp}\dbghelp.dll');
|
||||
isxdl_SetOption('title', 'Downloading DbgHelp.dll');
|
||||
hWnd := StrToInt(ExpandConstant('{wizardhwnd}'));
|
||||
if isxdl_Download(hWnd, url, tmp) = 0 then
|
||||
MsgBox('Download and installation of DbgHelp.Dll failed, the file must be manually installed. The file can be downloaded at http://www.unrealircd.com/downloads/DbgHelp.Dll', mbInformation, MB_OK);
|
||||
end else
|
||||
MsgBox('In order for Unreal to properly function you must manually install this dll. The dll can be downloaded from http://www.unrealircd.com/downloads/DbgHelp.Dll', mbInformation, MB_OK);
|
||||
|
||||
if ((CurPage = wpReady)) then begin
|
||||
dbghelp := ExpandConstant('{sys}\DbgHelp.Dll');
|
||||
output := ExpandConstant('{app}\DbgHelp.Dll');
|
||||
GetVersionNumbersString(dbghelp,m);
|
||||
if (NOT FileExists(output)) then begin
|
||||
if (NOT FileExists(dbghelp)) then
|
||||
m := StringOfChar('0',1);
|
||||
if (StrToInt(m[1]) < 5) then begin
|
||||
answer := MsgBox('DbgHelp.dll version 5.0 or higher is required to install Unreal, do you wish to install it now?', mbConfirmation, MB_YESNO);
|
||||
if answer = IDYES then begin
|
||||
tmp := ExpandConstant('{tmp}\dbghelp.dll');
|
||||
isxdl_SetOption('title', 'Downloading DbgHelp.dll');
|
||||
hWnd := StrToInt(ExpandConstant('{wizardhwnd}'));
|
||||
if isxdl_Download(hWnd, url, tmp) = 0 then begin
|
||||
MsgBox('Download and installation of DbgHelp.Dll failed, the file must be manually installed. The file can be downloaded at http://www.unrealircd.com/downloads/DbgHelp.Dll', mbInformation, MB_OK);
|
||||
end else
|
||||
didDl := true;
|
||||
end else
|
||||
MsgBox('In order for Unreal to properly function you must manually install this dll. The dll can be downloaded from http://www.unrealircd.com/downloads/DbgHelp.Dll', mbInformation, MB_OK);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
Result := true;
|
||||
@@ -122,9 +129,11 @@ procedure DeInitializeSetup();
|
||||
var
|
||||
input,output: String;
|
||||
begin
|
||||
input := ExpandConstant('{tmp}\dbghelp.dll');
|
||||
output := ExpandConstant('{app}\dbghelp.dll');
|
||||
FileCopy(input, output, true);
|
||||
if (didDl) then begin
|
||||
input := ExpandConstant('{tmp}\dbghelp.dll');
|
||||
output := ExpandConstant('{app}\dbghelp.dll');
|
||||
FileCopy(input, output, true);
|
||||
end;
|
||||
end;
|
||||
|
||||
[Icons]
|
||||
|
||||
@@ -1,231 +0,0 @@
|
||||
/*
|
||||
* IRC - Internet Relay Chat, ircd/version.c
|
||||
* Copyright (C) 1990 Chelsea Ashley Dyerman
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 1, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* : version.c.SH,v 1.8 2000/02/27 11:53:16 stskeeps Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file is generated by version.c.SH. Any changes made will go away.
|
||||
*/
|
||||
|
||||
#include "struct.h"
|
||||
#include "version.h"
|
||||
#include "license.h"
|
||||
|
||||
char *generation = "1";
|
||||
#ifdef _WIN32
|
||||
char *creation = __TIMESTAMP__;
|
||||
#else
|
||||
char *creation = "Sun Feb 27 2000 at 11:55:29 GMT";
|
||||
#endif
|
||||
#define IRCDTOTALVERSION BASE_VERSION PATCH1 PATCH2 PATCH3 PATCH4 PATCH5 PATCH6 PATCH7 PATCH8 PATCH9
|
||||
char *version = IRCDTOTALVERSION;
|
||||
|
||||
/* moved to s_serv.c */
|
||||
char *infotext[] =
|
||||
{ 0 };
|
||||
|
||||
char *unrealcredits[] =
|
||||
{
|
||||
"-=-=-=-=-=-=-=-=-=-= [ " IRCDTOTALVERSION " Credits ] -=-=-=-=-",
|
||||
"\0030,1The\0031,0 \0032people \0033on \0034,14\2\37this\2\37 \0035,0list \0036are \0037people \2\0038who\2 \0039have \00310helped \00311up \00312through",
|
||||
"\00313the \00314development \00315of \0031UnrealIRCd. The Unreal Team would like to thank",
|
||||
"those people by listing them here:",
|
||||
"-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=",
|
||||
" \2\37The UnrealIRCd Team would like to thank:\2\37",
|
||||
"\26Nutcais\26 (Phil Hawkins)",
|
||||
"- the original shell for Unreal development, useful comments,",
|
||||
" being a real IRCbrother for me (Stskeeps) :), learning me a lot",
|
||||
" about IRC stuff, getting me more and more into IRCd business",
|
||||
" thanks for the *.tspre.org domain as well :)",
|
||||
"",
|
||||
"\37Local Irelands (http://www.local.ie)\37",
|
||||
"- Thanks for sponsoring UnrealIRCd, test facilities,",
|
||||
" supporting UnrealIRCd, many new ideas, thanks for making",
|
||||
" Unreal what it is today:)",
|
||||
"Mick and Sp^",
|
||||
"- Amiga port of Unreal (UnrealIRCd/Amiga), continually strange",
|
||||
" comments on #UnrealIRCd, being great supporters of Unreal",
|
||||
" and following Unreal development all the way",
|
||||
"DrBin (Dave) drbin@tspre.org",
|
||||
"- Recoded & made the new UnrealIRCd/32 code, support,"
|
||||
" finding bugs, and tonnes of other stuff:)",
|
||||
"{X} (Laurie) x@tspre.org",
|
||||
"- Making the main code/design of UnrealIRCd/32 gui",
|
||||
" bugfounds, etc",
|
||||
"SourceForge.net",
|
||||
"- Good hosting, CVS hosting, FTP etc etc:) - thanks for",
|
||||
" supporting opensource projects",
|
||||
"",
|
||||
" \37Donations to Unreal:\37",
|
||||
"BlueFlame^",
|
||||
" - the first UnrealIRCd donation :)",
|
||||
" (yes your name can be here too;)",
|
||||
"",
|
||||
" \37These people have helped alpha/betatesting\37",
|
||||
"zshack, Headbang, Mick, Sp^, WonderWal, bomb, BullFrog, JacobD,",
|
||||
"SirDeath, l33, EiniD, uo, RevPsych and the subgenius.net network,",
|
||||
"^RavenX^, Mich[a]el, {X}, Fish, Shmad, Killer, BrainSCAN, RevNull,",
|
||||
"GoNiS (irc.coreplex.org), Mikey, DrBin, and others",
|
||||
"",
|
||||
"",
|
||||
" \2\37Stskeeps would like to thank:\2\37",
|
||||
"Morrigan Julie Frederiksen",
|
||||
" - Being a friend, thinking I was cute, uhm laying on a recycle",
|
||||
" thing.. 'Its the wrong recycle box Julie!', 'you got too cold",
|
||||
" hands *freezing*', etc ;)",
|
||||
"DJBoxy *unknown* *unknown*",
|
||||
" - For getting me up from #wIRCd bringing me to Mp3fansNet and",
|
||||
" after we linked to Global-IRC.net - and made people choose me",
|
||||
" as netadmin/ircd coder - Thanx!",
|
||||
"TC Tabita Clausen (reallife)",
|
||||
" - Making me smile of my life, talking with me, being a friend",
|
||||
" always got a pen sharpener when needed=/, accepting some",
|
||||
" wierdnesses from my side, going to the cinema with me",
|
||||
" and many other stuff. You'll always be in my heart,",
|
||||
" sorry for all the things I did or maybe didn't",
|
||||
" love you :(",
|
||||
"KUFO John MacKenzie",
|
||||
" - Support, helping me always with getting through my life",
|
||||
" shells, etc etc ;)",
|
||||
"Sporty_McFly Cedric",
|
||||
" - Comments, helping me when I got problems with my life and so on",
|
||||
" *toh* to him - Thanks!",
|
||||
"Del_Monte K. Hawkes k.hawkes@zombies.force9.net",
|
||||
" - Is just trying to put the lamer side of things across :cP",
|
||||
" No. I saw 2 moos. - Well having to input in seconds",
|
||||
" is fine if you're real quick at maths - but if not - it's a PAIN",
|
||||
" - Comments, bugfixes, moral support etc.;)",
|
||||
"Skywalker Chris Morley skywalker@irc.ru.ac.za",
|
||||
" - Helping me start up ROXnet at first (which brought me",
|
||||
" into IRCd business.. + Numerous kicks /Kills akills and alike;)",
|
||||
"zero9000 Kevin Alford",
|
||||
" - UnrealIRCd logo, graphics, null desu ;), ideas etc.",
|
||||
" \2\37codemastr would like to thank:\2\37",
|
||||
"",
|
||||
" \2\37Also thanks to:\2\37",
|
||||
"Enforcer, Andy Church, Mick, Sp^, ShadowMastr, Almaris",
|
||||
"}{, Erik/Dr|zzt, Hedge, Kyle, MissKel, jfc, Fish, kore, Syndicate, Bagge,",
|
||||
"#Coder-Com@Undernet, ^NeVeR^, flygirl^, DannyM, JuliuZ, wah-wah^, Lisa,",
|
||||
"Melisa, NonMortal, Andryan, TomaHawk, Lushes, Skywalker, Merlin, Sporty_McFly,",
|
||||
"zero9000, #wIRCd@DALnet, comstud, dog3, Dianora, Isomer, and others who arent listed here:)",
|
||||
"",
|
||||
"------------------------------------------------------",
|
||||
"Unreal 3.0 and up is dedicated to Morrigan - Julie Frederiksen",
|
||||
"- a girl who have helped me through anything in my life, hugging",
|
||||
"me at the right times, a definate dedication. Thanks for the kisses",
|
||||
"long phonetalks, waste of my mobilephone ;), crying together",
|
||||
"and making life go on for us both. I will never forget you",
|
||||
"never leave you, love ya forever",
|
||||
"------------------------------------------------------",
|
||||
"This IRCd is dedicated to the love that has always been",
|
||||
"and will always be there - Thanks to the girls & friends that kept me up",
|
||||
"when I was down",
|
||||
0
|
||||
};
|
||||
char *unrealcreditsold[] =
|
||||
{
|
||||
"------------------------------------------------------",
|
||||
"Unreal 3.0 and up is dedicated to Morrigan - Julie Frederiksen",
|
||||
"- a girl who have helped me through anything in my life, hugging",
|
||||
"me at the right times, a definate dedication. Thanks for the kisses",
|
||||
"long phonetalks, waste of my mobilephone ;), crying together",
|
||||
"and making life go on for us both. I will never forget you",
|
||||
"never leave you, love ya forever",
|
||||
"------------------------------------------------------",
|
||||
"This IRCd is dedicated to the love that has always been",
|
||||
"and will always be there - Thanks to the girls & friends that kept me up",
|
||||
"when I was down",
|
||||
0
|
||||
};
|
||||
|
||||
char *dalinfotext[] =
|
||||
{
|
||||
"IRC --",
|
||||
"Based on the original code written by Jarkko Oikarinen",
|
||||
"Copyright 1988, 1989, 1990, 1991 University of Oulu, Computing Center",
|
||||
"",
|
||||
"This program is free software; you can redistribute it and/or",
|
||||
"modify it under the terms of the GNU General Public License as",
|
||||
"published by the Free Software Foundation; either version 1, or",
|
||||
"(at your option) any later version.",
|
||||
"- Any name/comment should never be changed except by the one who made it -",
|
||||
"",
|
||||
"UnrealIRCd contains code developed by:",
|
||||
"Potvin Chris Wolkowski potvin@acestar.org",
|
||||
"RogerY Roger Y. rogery@austnet.org",
|
||||
"GZ gz@starchat.net",
|
||||
"binary",
|
||||
"",
|
||||
"",
|
||||
"The following people have helped in making the DALnet ircd",
|
||||
"that is based on irc2.8.21.mu3.2 :",
|
||||
"",
|
||||
"Russell Russell Miller russell@dal.net",
|
||||
"Donwulff Jukka Santala donwulff@dal.net",
|
||||
"Aetobatus Michael Sawyer aetobatus@dal.net",
|
||||
"Dalvenjah Sven Nielsen dalvenjah@dal.net",
|
||||
"Skandranon Michael Graff explorer@flame.org",
|
||||
"Barubary - barubary@dal.net",
|
||||
"white_dragon Chip Norkus wd@dal.net",
|
||||
"DuffJ Dafydd James duffj@dal.net",
|
||||
"taz David Kopstain taz@dal.net",
|
||||
"NikB Nik Bougalis nikb@dal.net",
|
||||
"Rakarra - rakarra@dal.net",
|
||||
"DarkRot Lucas Madar darkrot@dal.net",
|
||||
"Studded - studded@dal.net",
|
||||
"JoelKatz David Schwartz joelkatz@dal.net",
|
||||
"",
|
||||
"This product includes software developed by Colin Plumb.",
|
||||
"",
|
||||
"The following persons have made many changes and enhancements to the",
|
||||
"code and still know how IRC really works if you have questions about it:",
|
||||
"",
|
||||
"Run Carlo Kid carlo@runaway.xs4all.nl",
|
||||
"Avalon Darren Reed avalon@coombs.anu.edu.au",
|
||||
"msa Markku Savela Markku.Savela@vtt.fi",
|
||||
"Wumpus Greg Lindahl gl8f@virginia.edu",
|
||||
"WiZ Jarkko Oikarinen jto@tolsun.oulu.fi",
|
||||
"Argv Armin Gruner Armin.Gruner@Informatik.TU-Muenchen.de",
|
||||
"",
|
||||
"Thanks to the following people for help with preparing 2.8",
|
||||
"",
|
||||
"phone Matthew Green phone@coombs.anu.edu.au",
|
||||
"Sodapop Chuck Kane ckane@ece.uiuc.edu",
|
||||
"Skygod Matt Lyle matt@oc.com",
|
||||
"Vesa Vesa Ruokonen ruokonen@lut.fi",
|
||||
"Nap Nicolas PIOCH pioch@poly.polytechnique.fr",
|
||||
"",
|
||||
"Those who helped in prior versions and continue to be helpful:",
|
||||
"",
|
||||
"Stellan Klebom Dan Goodwin Mike Bolotski",
|
||||
"Ian Frechette Markku Jarvinen Kimmo Suominen",
|
||||
"Jeff Trim Vijay Subramaniam Karl Kleinpaste",
|
||||
"Bill Wisner Tom Davis Hugo Calendar",
|
||||
"Tom Hopkins Stephen van den Berg",
|
||||
"Bo Adler Michael Sandrof Jon Solomon",
|
||||
"Jan Peterson Helen Rose Paul Graham",
|
||||
"",
|
||||
"Thanks also goes to those persons not mentioned here who have added",
|
||||
"their advice, opinions, and code to IRC.",
|
||||
"Thanks also to those who provide the kind sys admins who let me and",
|
||||
"others continue to develop IRC.",
|
||||
"",
|
||||
|
||||
0
|
||||
};
|
||||
Reference in New Issue
Block a user