
v0.99.12 (March 2, 2001)

  * Added anti-idle feature while detached. Sends random 
     message to server every so often. 
  
  * Removed enable-detach-on-error and always-detach variables.
     Instead there is a "enable-auto-detach" variable that, when
     enabled, will always detach the user, unless he explicitly
     uses /quote ezb quit.
    
     Password is again assigned randomly when the user connects.
     It can be changed via the 'autopass' command.
    
  * Added recognition for UnReal-ircd's * and ^ user modes in 
     channels during reattach.
  
  * Admins can no longer reattach w/o password.
  
  * Included a basic man page
    
v0.99.11 (January 13, 2001)
  
  * Ezbounce no longer requires poll(). An alternative select()-based
     implementation has been added to the socket code.
     
  * Added --enable-use-select option to ./configure script to force use 
      of select() instead of poll()
      
  * Fixed (??) a 100% CPU usage problem involving poll()
  
  * Now sends an IRC "ERROR" string for disconnects
  
  * Minor mdidentd fixes
  

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 <ports>
	
    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 <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 <password> [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 <id> <password>
	
     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 <options>

    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 <filename>
	
     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 <sys/types.h> 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 <password>

     To reattach to the connection, you must connect to the proxy and 
       issue the following command:

	/quote REATTACH <connection_id> <password>
	
     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 <num>
    	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 <num>
	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 <id> <message>.
    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
