/* * UnrealIRCd Changes File - (C) Carsten Munk 1999-2002 & * The UnrealIRCd Team * * $Id: Changes,v 1.1.1.1.2.17 2004/07/03 19:04:02 syzop Exp $ * * 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. * */ [Unreal 3.2.1] - Replaced tre.dll/tre.lib, previous versions caused a crash (eg: if you included spamfilter.conf). - Fixed a problem when compiling with GUEST enabled. Reported by dvzion (#0001758) - Fixed a documentation typo reported by Konc - Fixed a little problem in ./unreal to move ircd.pid.bak to ircd.pid of starting failed. Fixed by fez (#0001739) - Made it so chg* command usage is not logged from U:lines. Reported by diskman1 (#0001718) - Changed int_to_base64() warning so it has less false positives (#0001797). - Fixed a bug where if set::ssl::options was empty, a crash could occur. Reported by spider312 (#0001799) - Include openssl/md5.h and openssl/ripemd.h if compiled w/SSL, this seems how it should be done and also makes unreal w/SSL able to compile on OpenBSD (3.5). - Added module support for Windows! To module coders: -Building your module on Windows is almost exactly the same as on *nix nmake -f makefile.win32 custommodule MODULEFILE=thefile -Also, as I'm sure most module developers will begin distributing .dll files for their modules, it is important to note that just like the modules on *nix, the dlls will need to be recompiled each time a new version of Unreal is released. This is simply due to the potential for binary incompatibility which at this point can not be avoided. -Most modules already do this, but it is now a requirement for Windows support. At the very minimum, the Mod_Test function must have the DLLFUNC specifier in order to work Unreal will automatically add DLLFUNC to the other functions, but it does not hurt if you use it for all of them. NOTE: It is expected that there will probably be a few bugs to work out with this, so please consider testing it! And module coders, please report any problems you experience! - Modulized cloaking: - Currently there are 2 cloaking modules: 'cloak' and 'oldcloak'. - You MUST load at least 1 of them (like: loadmodule "src/modules/cloak.so";). - 'oldcloak' is just the <=3.2 cloaking algorithm. - 'cloak' is the new, recommended, and much more secure cloaking algorithm that uses md5 internally and requires 3 keys of 5-100 characters (10-20 is fine) consisting of mixed lowcase (a-z), upcase (A-Z) and digits (0-9) [eg: "AopAS6WQH2Os6hfosh4SFJHs"]. - Note that 'oldcloak' is only ment for use during the upgrade process (it will give a warning if you use it), you should switch to the much more secure 'cloak' module as soon as all your servers are upgraded. - Module coders can code 3rd party cloak modules that use other algorithms or cloak in a different way (have a look at src/modules/cloak.c). - spamfilter: Added Bloodhound.Exploit.6 sig - Compile fixes for win32 modules with ssl/zip/curl - Changed 'Services operator' in /whois (back) to 'Services administrator', this was requested by many people and seems to be the best after all (#0001634). - Local opers can now also join +O (operonly) channels (#0001694). - Changed the way MSG/NOTICE #chan works: - It now goes to and higher, so '/notice +#chan hi!' goes to +vhoaq - You need at least voice in order to be able to msg/notice +#chan, %#chan or @#chan - You need at least ops in order to be able to msg/notice &#chan or ~#chan - Any multi-prefix targets will be converted automatically (eg: ~&@#chan to @#chan). - internal: use of the CHANOPPFX macro is now deprecated. All of this was done to make it a bit more 'safe' and userfriendly (#0001812). - Fixed a remote include bug that would cause unnecessary blocking - Fixed a /credits typo - Imported TRE 0.6.7 for win32 - Imported TRE 0.6.7 for *nix and made use of tre_version to report the version of TRE in use at startup - Fixed a Win32 module bug - Added set::spamfilter::virus-help-channel-deny. This allows you to block any normal joins to the virus-help-channel. This way you could prevent users into accidental (or tricked) joining of the virus-help-channel and becomming infected. This feature is disabled by default. Requested by bleepy (#0001811). - German doc updates (week 20). - Added optional parameter to SVSJOIN to deal with channel keys. Reported by DukePyrolator (#0001822). - Added zlib+SSL version check on boot to make sure the runtime version is the same as the 'compiled for' (header) version. If they mismatch, UnrealIRCd could crash, so a big warning is posted if it happends. - Improved the above: made it work on windows and also added a check for curl. - spamfilter.conf: Added yet another sig for a site that causes Backdoor.Delf.lq infection (reported by nexus), also changed LOI trojan and Bloodhound.Exploit.6 action to gline. - Fixed a win32 module bug that broke strcasecmp/stricmp - German doc updates (week 21) - Fixed a permanent modules bug: custom allow/except/ban/deny types were lost after /rehash. Reported by AngryWolf (#0001837). - Fixed a problem with NICK collisions not using NICKv2 (#0001773) reported by thilo - Added NICKIP (#0000605 & #0001376) - Compile warning cleanups - Added release notes (no, we won't release 3.2.1 anytime soon.. just updating ;p). - Added various extra messages to make it a bit more easier for people who are upgrading (win32 commands.dll, cloaking mod). - Made win32 ssl<->non-ssl modules binary compatible. - Added ssl/non-ssl check in Mod_Version on *NIX. - Added set::options::flat-map: This makes all servers look like they are linked directly to the server you are on (/map, /links), thus you cannot see which server is linked to which ("hopcount"). This can make it a bit harder for kiddies to find any 'weak spots' (which server to attack/[D]DoS). Obviously opers will always see the real map. - unreal32docs.html: added flat-map and set::restrict-usermodes "s"; security tips. - Fixed a compile error regarding AF_MAX (#0001839) reported by Rocko - Imported TRE 0.6.8 for *nix - Added NICKIP to doc/technical/protoctl.txt - Imported TRE 0.6.8 for windows - Redid the win32 version to use a dynamically linked libc. This solves memory issues arising from the fact that dlls do not share the same heap as the exe. As a side effect, however, there is now a dependency on msvcr70d.dll. This DLL does not come with any versions of Windows except 2003. It also comes with any .NET application and the .NET framework. Unreal will automatically download th DLL if it is needed. Reported by Bugz (#0001833) - Fixed some other win32 crashes due to modulizing: WHOWAS, STATS [some], SVSMOTD. All caused by missing "MODVAR"s. Reported by Troco (#0001841). - Fixed SSL problem caused by a fix of 2 days ago. Reported by Fury (#0001842). - And one more. - Made socket errors correctly reported under Win32. Thanks to Microsoft for deciding that having a way to get a socket error string was unnecessary. - Fixed a NICKIP bug regarding passing along IPs (#0001846) reported by Troco - And another one, should be fixed now. - Added snomask +S to the documentation (#0001835) reported by medice. - Made a bunch of TKL parameters case insensitive (#0001766) reported by medice. - Made Unreal create the tmp/ dir at startup, rather than configure (#0001824) suggested by LinDevel - Added /dns c to clear the DNS cache (#0001852) suggested by samson. - Seems I forgot to del_Command() SPAMFILTER and TEMPSHUN. - Made the win32 socket error reporting also handle regular system errors (#0001851) reported by Troco - Added a doc/translations.txt which describes the (current) translation process and requirements a bit. - Fixed a synch bug, reported by Troco (#0001857). - Split up the /who oper and user help messages - Added /who +i (search by IP) and /who +I (show IP), oper only. - Made it so /who +m doesn't default to /who if a user uses modes they aren't allowed to use (#0001858) reported by Bugz - Added a couple donators to /credits - Module coders: if CmdoverrideAdd() is called for an override that is already in place, it now sets MODERR_EXISTS as errorcode and returns NULL (previously it added duplicates). In the past module coders had many issues with PERM mods... you had to use weird tricks, but now you can (and should!) just override on INIT and on HOOKTYPE_REHASH_COMPLETE. - Moved register_user declaration to h.h, updated call in m_pingpong.c (due new 'ip' field). - Usermode +v ('receive dcc send rejection notices') is oper-only now for privacy reasons. - Added dcc allow { }, which allows one to make exceptions over deny dcc { }. - Added deny dcc::soft and allow dcc::soft item, if set to 'yes' it allows someone to explicitly override it per-person via /DCCALLOW (see next). - Added DCCALLOW system, taken directly from bahamut. With this system you can block certain (or all) DCC SENDs and then allow the user to 'override' this limit for every user he/she trusts via '/DCCALLOW +User'. This is an attempt to stop (or at least limit) the spreading of viruses/etc. See '/DCCALLOW HELP' for more info. - Added example dccallow.conf which filters everything except some known 'safe types' (jpg, jpeg, png, gif, etc). Note that the purpose of this file is NOT to get a complete list, rather to limit it to a few 'known safe' entries. - Added set::maxdccallow: max number of entries of the DCCALLOW list (default: 10). - Various (non-critical) fixes for dccallow reported by Rocko (incorrect nick in deny msg, added set::maxdccallow in docs, added bmp/vob/log/ to dccallow.conf). - Made extbans desynchs a bit more friendly: if a bantype is unknown for the server it will just accept it if it's from a remote server, and also ops/etc will be allowed to REMOVE any unknown extbans (but not add new unknown ones). - Added extended ban type ~n (nickchange ban), if a user matches this (s)he can not change nicks (eg: +b ~n:*!*@*.aol.com) unless (s)he has voice or higher. This can be useful as an overall measure for some +m chans (+b ~n:!*@*) or against specific 'good' people that are just nickflooding due to a wrongly configured script. - Added set::restrict-extendedbans by which you can disallow normal users to use any extendedbans ("*") or disallow only certain ones (eg: "qc"). - Made the negative TS message a bit more annoying if time is off more than 10 seconds. - Minor doc tweakers, reported by AngryWolf (#0001871). - Win32: Readded /J compiler flag (was accidentally lost in December). This could cause some weird issues. Reported by Troco (#0001877). - Fixed compile problem with debugmode + ipv6 - Added CIDR support (#0001296) suggested by many people. - Imported the latest CIDR functions from Hybrid 7.0.1 (and fixed numerous bugs) - Implemented CIDR support for ban ip, ban user, allow, except ban/tkl/throttle, and TKL - Note: This needs testing - To be able to use /ADDLINE you now need the (new) 'can_addline' operflag (oper::flags), reason for this is that it's such a powerful/dangerous command. - Fixed find_qline crashes regarding except tkl 'type qline', reported by Gilou (#0001882). - Fixed some CIDR bugs causing things not to match. - Fixed a CIDR bug when compiled without IPv6 support - Fixed an SVSNICK bug that could lead to duplicate users in very rare circumstances (#0001874) reported by Jiuka. - internal: Added GetIP() which we will now use instead of all the Inet_ia2p() stuff because it's slightly faster (already replaced all of them in src/s_kline.c). GetIP(acptr) will return the ip for local users and remote users that support NICKIP, it returns NULL for remote users that are on non-NICKIP servers (or have non-NICKIP servers along their path). - internal: tkl_add_line now returns aTKline * - Added some more hooks: - HOOKTYPE_TKL_ADD [aClient *cptr, aClient *sptr, aTKline *tk] - HOOKTYPE_TKL_DEL [aClient *cptr, aClient *sptr, aTKline *tk] NOTE: 'NULL, NULL, tk' is used for *lines that are removed due to expiring - HOOKTYPE_LOCAL_KILL [aClient *sptr, aClient *target, char *comment] - Added support for the ELIST 005 token with MNUCT options - Made Mod_Version required (this should be no problem since it's done automatically). - Added HOOKTYPE_LOG [int type, char *timebuf, char *logbuf] - Updated the release notes. - Fixed a CIDR bug reported by poisoner (#0001892) - Documented numerics in use by other IRCds - Converted several notices to numerics (#0001599) suggested by olene - Added a donator to /credits - Fixed '/stats P' negative usercount bug (#0001691). - Made IPv6 bans work the way they should again, reported by al5001 (#0001876). - Added new logtype 'spamfilter' to log spamfilter matches - Updated example.conf: added all new flags we added in the example block, removed old confusing comment on SEGV logging, config.h: ripped out lPATH since that define isn't anywhere used and is only confusing. - Made the new numerics use nicknames (#0001896) suggested by Dukat. - Fixed a problem where the tmp directory was created in the current directory rather than the correct path (#0001898) reported by AngryWolf - Updated HOOKTYPE_TKL_ADD/HOOKTYPE_TKL_DEL to cptr, sptr, tk, parc, parv, else it was impossible to tell *who* removed a *line. Again, parc/parv are 0/NULL for expires. - Fixed "quickly-rehashing + autoconnect linkblocks = crash"-bug. This involved fixing multiple reference count bugs, one related to sptr->serv->conf, and another one related to sptr->serv->class. Both caused problems when someone did a /rehash when a server was in the process of connecting (so it might also happen when connfreq was hit and you did a /rehash). Original bug was reported by sh0 (#0001872). - spamfilter.conf: Added sig for a mIRC decode worm, submitted by nexus. - Some release notes updates. - Changed version to 3.2.1-pre1 and updated protocol # to 2304. - Updated wircd.def ** internal 3.2.1-pre1 release ** - Various (>15) small fixes for unreal32docs.html, reported by AngryWolf (#0001906). - Added spanish docs, translated by Trocotronic. - Fixed serious crashbug due to quick-rehashing bugfix! Basically if you did a /REHASH and the clientcount for a class reached 0 (due to quits) it would crash. ** internal 3.2.1-pre2 release ** - Added hungarian docs, translated by AngryWolf. - Fixed a problem with the win32 installer as a result of MSVCR70D.DLL, reported by aquanight - Updated /Credits and added a donator. - Made release notes a bit more scary + some minor english-only doc updates - Changed version to 3.2.1 - Moved the 3.2 changes to Changes.old ** 3.2.1 release **