0.99 Development Series ------------------------- v0.99.10 (October 31, 2000) * Fixed ezbounce.pid file being created with random permissions. It will now be made with 0644. * Fixed a nasty bug that could cause random crashes. v0.99.9 (October 9, 2000) * Fixed DCC proxying using 100% processor time in some cases. * Fixed several possible crashes in DCC proxying. * STATUS command now displays some DCC proxying info. * Changed behavior of outgoing DCC proxying.. It will conenct to the real IP of the sender, not the IP that is stated in the CTCP DCC command (which was wrong in some cases, e.g. if client behind firewall obtained local IP through /whois) * Fixed compile errors under GCC 2.9x v0.99.8 (July 29, 2000) * Fixed certain logfile options causing a crash on detach. * Fixed sending of zero-byte files causing problems. * The enable-{private,seperate,channel}-logging options are now properly enforced. * Timestamp should be properly encoded in the logfile names sent back to the user now, in the format YYYYMMDD-... * Added dcc-listen-port-range option. It allows you to choose which port or ports ezbounce will listen on when doing DCC proxying. Usage: set dcc-listen-port-range where ports can any number or series of numbers seperated by commas, and where ranges of numbers can be indicated by a dash. Examples: 7000,7005,8225,9000-9100 2000-2300,4860 6918 5700-5710 * Wrote some simple, cheesy encryption and decryption routines for the passwords that are used in making log file filenames. * Redesigned and rewrote the internal socket polling and handling system. Is it faster? I don't know, but I think it's better now. However, ezbounce now requires the poll() system call be present on the machine. Unless you're using an ancient system, you will have this function (./configure script will confirm it). Also as a result, the following issues are fixed: * DCC sessions (both send and proxy) are unlimited now; you are especially not restricted to two log file sends at a time. * DCC sessions will now survive after the user disconnects from the proxy. * DCC sessions will now stay alive through during reattach and deattach. * DCC sessions will now properly timeout after 90 seconds. * Fixed bogus "Killed user for exceeding idle time limit" messages appearing after users reattaching. * Added auto-server option, which automatically connects users to an IRC server as soon as they succesfully connect to the ezbounce proxy. set auto-server [:port] [pass] server: which server to connect to port: (optional) which port to use pass: (optional) password to use on IRC server * LOG FIND will now display all results of a search, not just the first two. You can select any of them to send as usual with the LOG SEND command. doing "LOG SEND ALL" however will only send two a time to avoid flooding the user. * Logfile creation is now more robust; will honor locked log files and try to create more unique file names if needed. * Added a simple away option to detach: /quote ezb detach password [away message] where away message is what ezbounce will set you /AWAY as with the IRC server. It will unset you away when you reattach. * Added LOG LIST command; it will list the search results again for you. * Extended PASS command to include the name of a server to connect to. Syntax is: /quote PASS [server[:port]] [IRC server password] This will let you connect to IRC servers with just one command. Examples: /quote PASS secret irc.lagged.org /quote PASS secret5 irc.dal.net:7000 secretpass * Now makes link to ezbounce binary named 'ezb' * And some long overdue documentation updates.. v0.99.7 (June 10, 2000) * Fixed DCC Sends from ezbounce not providing filesize. Some clients didn't mind that it was omitted; some did. * DCC sending of logs now properly limited to 2 at a time max. * Fixed LOG FIND reporting multiple finds of a file? (Although it did send the proper log files) * Fixed odd STATUS command crash. * Disabled PONG messages in log for good. v0.99.6 (April 30, 2000) * Fixed logging not working if maxsize wasn't set (sigh) * Fixed Reattach truncating list of channels to join if it was > 128 chars (some people were affected) * Added support for catching numeric 005. They contain some possibly useful information for clients upon reattach. (like detecting if the IRC server supports the DalNet WATCH command. * Internal nickname tracking should work well now. * Implemented LOG HELP. In addition, Thanks to Ben W. for the following improvements: * Now handles and saves numerics 002-004 so they can be reproduced on reattach * PASS command can now be used before USER and NICK commands.. this allows the server password feature of most IRC clients to be used with ezbounce. * Admins can now reattach without a password. * Numerous reattach improvements, including: * Proper detection of User Mode * Fixed MODE #channel command being sent, causing some clients to screw up * Fix duplicate LUSERs being sent. v0.99.5 (April 9, 2000) * Ok, ezb command works now. My mistake. * Sending of old log files is now possible. The command to use is: /quote LOG FIND Where 'id' is the id that you had for that session which died, and 'password' is the password for that session. This is very preliminary right now. It does not quite work if your nickname is something different from the one ezbounce thinks it is. That's the why the change below was needed... * Now keeps track of nickname changes internally throughout your irc changes. Also lets you change your nickname while chillin' on the proxy before connecting to an IRC server. This was all necessary for the DCC Sends to work properly. (note: it doesn't really work that well right now) * Added checks to ensure permissions for the log files directory are secure. * Fixed a possible crash if the incoming text buffer was full. * Fixed a possible crash in the STATUS command. * Fixed IRC PASS command being sent to IRC Server at the wrong time during the connection process. Thanks to Rodney J. for catching this one. v0.99.4 (February 22, 2000) * Changed permissions on the included sample config files for security purposes. Note that you can't get this fix with the patch, you must get the tarball, or set the permissions manually. Your config files ought to have permissions 0600. * Added 'ezb' command as an alias for the ezbounce command. It occurred to me in a vision that much time could be saved by myself and users by typing 3 letters instead of 8 letters! * Fixed some serious bugs in the log sending. It is much more robust now. * Fixed -b command line option (listen for connections on specific interface) not working on some systems (?). Note to self and fellow coders: remember to zero out sockaddr_in structure before doing anything to it! v0.99.3 (December 29, 1999) * Logging while detached. See ezbounce.conf.quick for details and to enable it. Basically you turn it on with the 'log' command. The syntax is: /quote LOG SET where options is any combination of the following: a - log all (combines p and c) s - log to seperate files p - log private c - log channels n - log nothing! f - log full addresses always t - log with timestamps for all events Once you detach, logging will begin. It will continue until you reattach or the connection to the IRC server dies. When you reattach, you can retrieve the log files by typing: /quote EZBOUNCE LOG SEND all Ezbounce will then DCC send them to you. Everything is explained in the README in full detail. * New config options to support detached-logging.. # allow logging of private messages set enable-private-logging 1 # allow logging of channels set enable-public-logging 1 # let users store logs in seperate files (that is, one for chan, # one for # private) set enable-seperate-logging 1 # where to store logs? set log-dir logs/ # # Default log options # # Full list of options: # a - log all (combines p and c) # s - log to seperate files # p - log private # c - log channels # n - log nothing! # t - timestamp events # f - log full addresses always # set default-log-options ast * Redid some of the server log messages. Aimed for a standard format, something easier to understand at first glance. For example, instead of "xxx's connection attempt to yyy:1111 has failed (...)" it is now "Connection attempt FAILED: xxxx to yyy:1111 (...)" * Removed the "&" and "!" channel recongnition 'fixes' in 0.85.3 that were incorrect. The new detached-logging code does recognize these special channel types properly though. * Redid the reattach system, so the target inherits the clients settings, not the other way around as it has been. This mainly simplifies some matters in the code. Also this means your reattach id does not change when you reattach so you can detach and reattach again with the same id. * For mdidentd, added checks to ensure permissions in directory of socket are appropriate to allow connections to the socket. * Now doesn't log PONGs from server while detached or other debug messages, unless you choose to build it to do so. * Fixed compile problem on several systems caused by the fact that 'MAX' was already #defined on the system but we tried to create a function by that name. * Added a simple Message of the Day (MOTD) system. The configuration file variable is: set motd-file It will display the contents of that file to the user upon connection to ezbounce and whenever he types /MOTD. A sample motd file is included (the sample.MOTD file), but disabled by default. * Added -u command line option, to change userid after listening socket is bound. This is only useful if you're running it as root and want to bind it to port < 1024 and then want it to drop the root privs. Usage (uid must be numeric): ezbounce -u uid config.file -------- v0.85.3 (August 6, 1999) * Fixed default connection and listen vhosts (-c and -h command line options, respectively) being cleared on rehash * Fixed 'random' crashes during reattach (was caused by failure to handle privmsg and the like during the info-gathering process) * Fixed "trying to reattach to" message showing "(null)" for the target. * Improved socklen_t detection in configure script. Will hopefully correct compile failures on OpenBSD and possibly other systems. * Small mdidentd updates * Added IRCNet ! channel and local (&) channel recongnition where needed. v0.85.2 (May 15, 1999) * Fixed CTCPs being blocked if dcc proxying was enabled * Fixed outgoing CTCPs being corrupted if dcc proxying was enabled * Now handles 0 return from connect() (was only checking for -1 as that is what usually happens with nonblocking connects) * Fixed several DCC proxying problems (e.g. sends to slow modem users blowing up). v0.85.1 (May 7, 1999) * Fixed CTCP Ping-replies during detach not working * 'autopass' command was broken, fixed. * Fixed channel modes possibly not being synced on reattach * Fixed nickname not being synced on reattach (for some clients) * If proxy was started w/o detach-on-error option and it was enabled and rehashed later, clients would not have auto-passwords set. This would result in "unreattachable" clients.. So now if there's no password, the client will not be detached. Use the 'autopass' command.. * Several Solaris compile/link errors fixed. Many thanks to Rajesh T. for reporting these problems and trying out my fix suggestions! If ezbounce was not building for you on Solaris try it now. * configure script updated to check for special libraries that might have to be linked with on some systems. * Quick kludge for reattach "to-ruleset" usage count leak. ------------------------------------ ezbounce 0.85 (May 1, 1999) * Added DCC proxying. It's all transparent, meaning ezbounce does some clever trick so that clients don't need to do anything special to be able to send *and* receive dccs. So yes, it's both ways. To enable it you need to stick these lines in your config: set enable-outgoing-dcc-proxying (0 or 1) set enable-incoming-dcc-proxying (0 or 1) for all the details see the README file. It's off by default. Not very well tested on big endian machines. Some people have reported success; the reason I'm worried is that I had quite a time trying to get host byte-order to network byte-order (and vice versa) to work properly. Completely untested on dialup PPP connections (I'm a Cable Modem Bastard myself). Feedback from anyone would be greatly appreciated. * Fixed vhost-binding not working under FreeBSD. * Fixed a problem in the buffering code that could data corruption. * reduced time() calls to once per second and no more (in almost all cases). * Added detach-on-error feature. Basically it detaches the client if he loses connection to the proxy with an error. It automatically sets up an auto-detach password for the user upon connect. This password may also be changed be the user using the AUTOPASS command. If the user detaches because of an error, he can reattach normally using the 'reattach' command. To enable it you must stick this line in your config (Defaults to off): set enable-detach-on-error 1 --- Consider it experimental! * Added hack to prevent linking with libstdc++. To enable it, run configure as follows: ./configure --disable-link-stdcxx and build. Consider it experimental as well! * Corrected several possible compile errors on different compilers than mine. * Admins are now exempt from rulesets. Meaning they can connect anywhere. * Check for existance of sys/select.h before #include'ing it. Linux libc5 doesn't have it for example. * #include before any other header. This corrects some potential compilation problems on some systems (FreeBSD is one). * 'ezbounce' command could be used while connecting to an irc server. fixed. * Tons of code redone and cleaned up. * a nasty bug in buffering code fixed (was assuming write() would write all of requested bytes..) * If logfile cannot be opened or created on startup, keep going instead of quitting. * mdidentd version string was not updated for previous release. * Idiot proof setup directions after ./configure is done. * Eliminated "unused parameter int unused" warning for older gcc.. * Eliminated "argument changes signedness" warnings (hopefully) * Added a basic pid-writing thing. It's mainly for scripts to be run with crontab that periodically check if ezbounce is still running. Ezbounce writes its pid to a file (ezbounce.pid) and the script checks if its a valid one, if not respawns ezbounce. Such a script is included (see the ezbchk file). * Fixed user name being truncated to 3 chars on reattach. ezbounce 0.81 (February 8, 1999) * Topics should *really* be synched on reattach now. It was even listed as fixed in this file, but for some reason was not. Oops :) * Also get user mode on reattach now. * While detached, ezbounce will now respond to ctcp pings for the detached client. In order to prevent abuse by flooders, only 1 ping will be replied to every 5 seconds. * Fixed a config file loader error message that was getting truncated. * No longer allows 0-length USER and NICK messages when clients are registering * A few hacks to save memory storing nicknames and passwords and such * Added a switch to mdidentd which will prevent users from setting their fake idents to the username of a user on the machine. What's new in ezbounce 0.80? (December 31, 1998) * You can now reload the configuration file while the server is running. This is done either by the admin-only REHASH command or by sending the server a SIGHUP signal. Any possible error messages from the process will be dumped to the log file. See README for finer details. * User password is now optional. * I made a special ident daemon-helper thingy that will let proxy users set their own ident replies regardless of the uid the proxy is running under. For more information look in mdidentd/README. * Reorganized several files, moved proxy code to 'src', mdidentd code to 'midentd' and files shared by both to 'libs'. * Reorganized and cleaned up rule-set related code. * Some clean up of config file loading code. * Greatly simplified command parsing code. Code is smaller and is probably faster. * In the cleanup process I have also fixed an embarassing bug that would cause a crash if an invalid command was used with the 'ezbounce' command. * Some systems don't appear to define INADDR_NONE (like sunos 5.4??). Added a fix so ezbounce will compile there. * ircd-hybrid is drain-bamaged and does not always respond to TIME requests. This effectively makes the Detaching/Reattaching system useless for some people. ezbounce now sends a different command besides TIME to get info about the connection during reattach. * If a client would die while reattaching a ghost connection might be left behind (the detached connection he was trying to reattach to). Although i was sure such conditions were handled properly, it looks like the code was borken. Fixed. * Again during reattach.. sometimes the name of the channel joined would be sent with a space in front of it. This caused a small problem with the BitchX windowing facilities so we now send it w/o the extra space. * Reduced the number of times the time() system call was used. In older versions ugly things could happen like time() being called 55 times *a second* when there were 50 clients. Now time() is called at most twice a second regardless of the number of clients. * Admin can use any vhost he wants now, that is, he is not limited by the hosts listed in the "vhosts" config file block. * Admin can use any feature he wants, even if it has been disabled in the configuration file. * 'status' command now aware of zombie connections and super-new connections. * 'admin' command block syntax for configuration files has changed slightly. Basically you don't need 'set' before 'name' and 'password'. If you don't know what I'm talking about don't worry about it. What's new in ezbounce 0.71? (???) * Makefile was using a GNU-specific command that would prevent ezbounce from compiling on some systems. The relevant section has been commented out. * Fixed a problem with the status command that could cause a crash. * If a detached connection died, the number of clients wouldn't be decremented. This could actually cause a lot of problems. Fixed. * setsockopt problem on Solaris fixed. * Channel topics were not being synced on reattach. * Corrected compile problem on FreeBSD 2.2.7 What's new in ezbounce 0.70? (August 9, 1998) * added GNU autoconf configure script. ezbounce will compile on older gccs. * Handle memory allocation failures a little better. * server uptime info from STATUS command is now in human-comprehendable form. * STATUS also displays cpu time used now. * client connection time from STATUS is correct now. * reconnecting after disconnecting from irc server should really work this time. Note: may cause problems with some clients. * added INTERFACE command, lets client bind connection to any interface available on the machine. * also added VHOST command which is just an alias to INTERFACE. * added a vhosts block command, lets you configure which vhosts clients may use with the vhost/interface command: vhosts { ip1.machine.com blahblah.blahb.alh 69.69.69.69 etc } note: 'all' is a special keyword and will allow clients to use all available vhosts. Currently only one vhosts block is allowed. If you choose not to supply one, a dummy one will be created with 'all' as the only address. * also added a VHOSTS command which lists all the available virtual hosts that a client may use. * improved server admin configuration. To define an administrator you now do: admin { from *.address.* set name servadmin set pass blah60 } This allows only people from *.address.* to become admins, and the username and pass they must use are servadmin and blah60. Only one admin block per customer. The old set admin-name/pass won't work anymore. * added a prevent-self-connects config option. It prevents clients from making the proxy connect to itself. * Added EZBOUNCE command. It is to be used when you have connected to an irc server and wish to issue a command directly to the proxy rather than have it relayed to the irc server. (note: not all commands can be issued thru this interface) For example, when connected: /quote DIE death message will kill the irc server you're on, and /quote ezbounce DIE death message will kill ezbounce. Assuming you have proper authorization, of course. * Added a DETACH command, which lets your connection to an irc server remain active while disconnecting you from the proxy. While you are detached, ezbounce will respond to server pings to keep you alive. It is used as so: /quote DETACH To reattach to the connection, you must connect to the proxy and issue the following command: /quote REATTACH Where connection_id is a number ezbounce will give you when you detach. The detaching/reattaching facilities don't work very well with all clients right now. There is a section in the README file which you can read that describes the problems. * Cleaned up interface-binding related code. Also fixed possible file descriptor leaks. * Fixed a bug in buffering code which could lead to crashes. * Less offensive password incorrect message :) * No longer displays "Welcome to ezbounce" message when you connect, it now waits until you have succesfully given a password. * New configuration options: set max-failed-passwords Lets you set a limit on how tolerant ezbounce will be on people giving incorrect passwords. Setting it to 0 disables the feature. Defaults to 3. Client will be booted off once limit is reached. set max-failed-admins Similar to above one, but controls attempts at becoming server administrator. Defaults to 0 (off). set drop-on-disconnect <1|0> Controls whether or not client should be dropped if he loses connection to his irc server. Defaults to 0. set enable-detach-command <1|0> Enables or disables the DETACH command. Defaults to 1. set no-reverse-lookups <1|0> This option controls whether ezbounce will do reverse dns dns lookups in the ruleset related code or not. Defaults to 0. Look at sample.conf for more info. set enable-vhost-command <1|0> Enables or disables the use of the INTERFACE and VHOST command. Defaults to 1. * rewrote gettok(). no longer makes copy of string, should speed up several other functions. * ezbounce now tries to save some memory by fine-tuning input buffer sizes once every minute. * Added a WRITE command. This command is for administrators only and allows them to send messages to another user or broadcast it to everyone. The syntax is (/quote) write . You obtain the id from the status command, and you can use 'all' to broadcast to all. * --help command line option recongnized. * added a DISCONNECT command. It is intended to be used with the EZBOUNCE command. It forces a disconnection from the irc server in case it stops responding or something. * fixed possible bug that could cause a crash if a bad command was sent while connecting to an irc server. * several other internal changes --- What's new in ezbounce 0.61? (July 15, 1998) * client is no longer dropped if disconnected from irc server. * small memory leak in config file parsing code fixed. * bigger memory leak found in buffering code and destroyed. * small makefile enhancement