This file logs changes made to Tircproxy.. all changes are mine (Juggler's) unless otherwise specified. Also, I've decided to use this file instead of a seperate TODO file, for stating my goals for future versions.. ---------------------------------------------------------------------------- version 0.4.5 (May 2000) This is a 1.0.0 release cantidate, assuming no bugs are reported. Completed the manual, simplified the README file. Added a man page, based on the one written for the OpenBSD port by Baker Hamilton . Implemented new shared memory scheme (see USE_UDB in tircproxy.h) for communicating with oidentd et al. The CDIR and IP_TO_UID_PREFIX code is depreciated, but still supported for backwards compatibility. Updated oidentd patch for most recent version of oidentd and UDB. Renamed -O option to -I. The old flag is still supported for backwards compatibility. Minor tweaks to Makefile. Finally (!) got around to creating a mailing list for the users of the program. See the homepage (http://bre.klaki.net/programs/tircproxy/) for details. Made quiz mode resistant to memory consuming DoS attacks. Added LOVE-LETTER-FOR-YOU.HTM to DCC banlist. version 0.4.4 (not released to general public) Minor update to nick-logging code. Minor tweaks to make code more [likely to be] secure. Minor tweaks to help with portability. Quizzes and MOTD now wait for the end of the MOTD from the remote server, making things a bit more legible. Minor change to generate fake (IP-based) user-IDs for oidentd whenever a valid one cannot be found (clone prevention). BSD transparancy compatibility fix. Bug found by Baker Hamilton, , who ported Tircproxy to OpenBSD. version 0.4.3 (January 1999) Improved the HTML manual. Moved the #include , as recommended by Antomasia. Fixed (hacked) a race condition when ident'ing users. Reintroduced the '-i' flag. It was necessary for transparent mode on Linux boxes. Silly me... Ports for DCC connections are now chosen at random, to make hijacking of DCC connections more difficult (see discussion about IRC DCC hijacking on BUGTRAQ in December 1998). The proxy no longer terminates connections when it fails to bind a port for DCC proxying (another oops). When in anonymous mode, outgoing NOTICEs containing the users' IP address are dropped. When not in anonymous mode, the IP address is replaced with the visible IP address of the proxy. (privacy issue) version 0.4.2 (December 1998) Added the -U flag. Added pgp signatures to the .rpms and tircproxy.c. Added support for ircd 2.10.x uncollidable channels. Logging to syslog is now optional (-L disables it). Started using autoconf, tested builds on: Linux 2.0.x, HP-UX 10.10 and 11.00, and Solaris 2.5. Tircproxy should now configure/compile out of the box on these platforms, with all available features active. Things like transparent proxying and TCP wrapper support and may be missing. The old "config.h" is now named "tircproxy.h". The file "config.h" is generated by autoconf. Editing tircproxy.h is now completely unnecessary, except for people who don't want to compile in stuff they aren't using, or people who want to change the built in DCC mangling messages and trojan list. Fixed problems where Tircproxy wouldn't bind to the '-o' address when connecting to the remote server, on non-Linux OSes. Made the -i and -o flags unnecessary (finally!) - the correct values are automatically detected and used. The -o flag can still be used to select which interface connects to IRC (on a multi-ip-address machine). Implemented output throttling, until required conditions are met. Possible contitions: - Valid password required (user def. or Unix password) - Answer to "trick question" required (clone stopper). Added anonymous mode, which tries to hide the user's identity. CTCP USERINFO, FINGER, CLIENTINFO and VERSION replies are rewritten, the IRCNAME is altered and if CDIR support is built in, than a unique "fake" userID is generated from the client's IP address. Updated the oidentd patch for use with anonymous mode. version 0.4.1 (October 1998) Major rewrite of the line-buffering and filtering code (it's *much* more legible now). Added support for DCC RESUME, TSEND, RESEND and TRESEND. Tested the stuff against BitchX. Renamed the /etc/hosts.* option "tircproxy_dcc_drop" to "tircproxy_dcc_files", as that makes much more sense. Fixed some minor bugs from 0.4.0. version 0.4.0 (October 1998) Note: This release contains many new features, if 0.3.6 worked for you, and you aren't concerned with the security issues addressed here, please consider sticking with it. Created command-line options for most of the compile-time options, so even if you compile them all in, you don't have to use them (but they ARE enabled by default if you do compile them in). Default behavior since 0.3.x has changed slightly: the "-m" flag has disappeared, and instead of enabling filename manging, you must specifically disable it at the command prompt with "-M". The program can now make use of the tcp wrapper library for access control - both to the proxy itself and for DCC requests. See tircproxy.h (was config.h) for more information. The DCC code now makes sure that one end of the established connection is the actual client (this closes a *big* security hole!). The string $N$ is replaced by the client's current nickname, when either a broadcast or a MOTD is sent to the user. Created a patch for oidentd 1.4 that allows Tircproxy to communicate with it, added the communication stuff to Tircproxy. This removes the only reason for Tircproxy to run as root! (major security issue) version 0.3.6 Fixed another problem with signal handling. Made the alarms more aggressive. A few minor cosmetic changes. Fixed a compile time problem for IPF (I #include-ed things in the wrong order.. oops!). version 0.3.5 Fixed a rather obscure bug which would cause the IRC connection to break if a DCC transmission completed during a read(). Added the PARANOID option to config.h, activated it by default. This makes the server exit if it cannot find a valid uid for the requested session (instead of continuing as root). Made the -o flag force connections to be made from the specified IP address, instead of letting the OS choose interfaces for me (based on a patch from Chris Gagne ). This has only been tested on Linux. Began building rpm packages for RedHat 5.x systems. version 0.3.4 Wrote a work-around for a problem with some versions of mIRC and DCC - recent versions of mIRC don't seem to fetch their IP address from the operating system, but instead use some value returned by the IRC server, which would be the address of the proxy server itself. I consider this a bug with mIRC. The kludge works by ignoring the IP IP addresses in outgoing DCC strings, using the value it knows to be correct for the client. This is now enabled by default in config.h. Moved some of the alarm()s around, somehow some sessions seemed to be hanging, both in 0.3.2 and 0.3.3 ... Included a nicer sample init script for RedHat and other SysV systems. version 0.3.3 Removed the code that tried to detect whether a connection is an IRC connection or something else (from 0.3.1) - it didn't work well. Now sends the user a message when it drops an offered trojan (see config.h for info). Added protection against winhelper.exe, dmsetup.exe, dmsetup2.exe and mschv32.exe (these are all trojans). version 0.3.2 #ifdef'ed out some debugging messages that I forgot to remove before releasing version 0.3.1. Made other messages less verbose, but more informative. Added the "Not an IRC proxy" option (this code can be useful for any connections I want correctly ident'ed & logged, not just IRC). Added the -t (throttle) option, instead of hard-coding it in. version 0.3.1 Introduced the file "config.h" for configuration - removed all such things from the Makefile. Incoperated patches from NJ Verenini , to solve the NetBSD 'zombie child process' problem. Improved logging to reveal the source port on the proxy<->server connection, for comparison & cooperation with my hacked up identd. Prevented proxy-to-proxy looping (potential DoS attack problem). Solved the "crash, burp, get rejected, burp again .." problem. Rewrote the DCC censorship code: + Now allows DCC-blocking (SEND or CHAT). + Checked for illegal ports (<1024) in DCC requests. DCC SEND mangling: + Made mangling a command-line option (-m). + Old/new file names may be of different lengths. + No more empty messages (should no longer crash mIRC! :) Detects from the first few lines of input whether this is really an IRC connection, if not, proxy it completely transparently (disable all the DCC stuff).