1
2Version 2.0.0 (????, 2008)
3
4 ezbounce 2.0 is a near-complete rewrite.  It offers improved reliability and
5 performance, much better support for modern IRC networks, and several new features.
6
7 Summary of major changes:
8
9  * Greatly improved IRC protocol handling:
10
11	- All channels, nicknames, and user hostnames visible are now cached.
12	- Channel mode and topic data are now cached.
13	- IRC Servers with different CASEMAPPING settings are now correctly handled.
14	- Servers supporting UHNAMES are now handled.
15	- Improved processing of Numeric 005 messages.
16	- Several parsing bugs fixed.
17
18  * IPv6 is now supported.  It is detected and used automatically -- you don't
19    need to configure anything special.
20
21  * DNS lookups are now non-blocking.  This is currently implemented via a separate
22    thread calling resolution functions, so the pthreads library is now required.
23
24  * SSL support greatly improved. The existing code was poorly written, and caused
25    blocking waits and dropped connections, among other things.  It is now fully
26    non-blocking.
27
28  * Greatly improved reattaching.  The caching of additional IRC data makes reattaches
29    extremely fast and should completely eliminate any "excess flood" problems.
30
31  * Added support for encrypted passwords in the configuration file.  See "EncryptedPassword.txt"
32    in the documentation directory ("docs/") for setup instructions.
33
34  * The user preferences system has been completely overhauled.  Preferences can now be set for
35    individual IRC networks, servers and channels.  For instance, you can choose to enable
36    automatic rejoins for just one channel, but keep it turned off for others.
37
38    For details, please see "UserPreferences.txt" in the docs/ directory.
39
40  * Several new user preferences have been added.  For instance:
41
42	- ctcp-version-reply    - CTCP version reply; sent while detached
43	- detach-nick           - become this nick when detaching
44	- detach-away           - sets this /away message when detaching
45
46    These are set from your client via the '/ezb set' command.  For a complete listing of
47    available commands, type "/ezb prefs"
48
49  * The syntax of the user preferences file has changed, but there is basic support for importing
50    version 1.0 format preferences files.
51
52  * Chat logging has been improved:
53
54	- Can now log channels in their own log file.
55	- Logging can now be done full time, instead of detached-only.
56	- Logfiles can now be automatically compressed with gzip.
57	- Logfiles are now organized according to IRC network and type.
58	- Setup is easier, and no longer uses cryptic character codes to control
59	  logging options.
60
61    More details and setup instructions are described in "ChatLogging.txt" in the
62    docs/ directory.
63
64  * Added a Virtual File System.  This is an improvement of the "File Library" found in the
65    unfinished 1.50 series.  This implements a Unix-like virtual file system where chat logs,
66    DCC gets, and other files can be stored.  Please see "VirtualFileSystem.txt" in the docs/
67    directory.
68
69  * Added a 'FILE' command to access the Virtual File System (VFS).
70
71  * Added basic flood protection (currently only used while detached).
72
73  * Added support for automatic IRC server reconnection.  Type "/ezb help reconnection"
74    for setup details.
75
76  * Extended the `KILL' command so that all users may use it.  Users may only kill their own
77    connections (admins may, of course, kill any connection).  Also added a '-d' flag to KILL,
78    which forces a connection to detach.
79
80  * Added features for DCC Filtering and DCC Storage.  DCC storage allows you to DCC Send files
81    to the proxy and have them stored in the VFS.  You can then share them with others on IRC.
82    It also permits storage of files received from other IRC users, for later retrieval at your
83    convenience.
84
85    For details, please see "DCCFeatures.txt" in the docs/ directory.
86
87  * Rewrote the configuration file parser.  It now reports line numbers where syntax errors
88    were detected.  Also, string literals are now supported (and encouraged).
89
90  * Removed support for the "default" user.  This was a special reserved, unprivileged
91    user in the 1.0 series.  It was left over from times where user accounts were not supported.
92    Maintaining special support for it had became difficult and pointless.
93
94  * Removed support for detaching with a password.  This too was a relic leftover from the
95    old days and now deemed unnecessary.
96
97  * Added a "make install" target to the Makefile.
98
99  * Added a per-user Event Log.  This logs various user-specific events such as logins, logouts,
100    IRC connections, detaches, reattaches, and more.  Event logs are stored in the VFS, usually as
101    /home/user/logs/event.log
102
103  * Dropped support for old GCC versions (older than version 3.2).
104
105  * The following configuration options have been removed:
106
107	PREVENT-SELF-CONNECTS
108	ENABLE-PRIVATE-LOGGING
109	ENABLE-PUBLIC-LOGGING
110	ENABLE-SEPARATE-LOGGING
111	DEFAULT-LOG-OPTIONS
112	ALLOWED-LOG-OPTIONS
113	NO-REVERSE-LOOKUPS
114	MAX-DNS-WAIT-TIME
115	AUTO-FAKE-IDENTS
116	ENABLE-AUTO-DETACH
117	AUTO-SERVER
118	DEFAULT-VHOST
119	DROP-ON-DISCONNECT
120	MAX-LOGFILE-SIZE
121	KILL-ON-FULL-QUEUE
122	ENABLE-DCC-FILTER
123
124    They will continue to be parsed, but a warning will be emitted, and no operation will be
125    performed.  Options were removed for one or more of following reason(s):
126
127	- They became unnecessary (e.g. max-dns-wait-time)
128	- They were replaced with simpler, more clearly-named options (e.g. for logging)
129	- They added more complexity and clutter instead of usefulness being configurable.
130	- They configured a user's *preference* rather than a particular access permission
131	  (and were better configurable from the client via the `/ezb set' command)
132
133
134version 1.04c (May 9, 2006)
135
136  * Fixed compile error on gcc 3.4.x
137
138  * Updated contact addresses and project URL.
139
140
141version 1.04b (January 9, 2004)
142
143  * Fixed reattach problems with the first letter of channel names
144       being cut off in some cases.
145
146  * Fixed format string vulnerability in SESSIONS command.
147
148
149version 1.04a (April 26, 2003)
150
151  * Fixed channels not being removed from list after parting. This
152        was causing phantom channels to be joined on reattach. (Only
153        on some networks)
154
155   * Fixed Numeric 005 data being stored incompletely. This was causing
156        oddities on reattach.
157
158
159version 1.04 (December 2, 2002)
160
161  * Fixed "LOG LIST" crashing (Oops)
162
163
164version 1.03 (November 28, 2002)
165
166  * Fixed a problem with logfile sending causing a crash
167
168  * Fixed a potential security hole with strncat()
169
170  * Fixed a bug in server ping replies. This should fix the problems
171	with ping timeouts on IRCDs that use token ping replies.
172
173
174version 1.02 (June 3, 2002)
175
176  * Fixed pid file permissions being set incorrectly
177
178  * Fixed a remotely-exploitable crash
179
180
181version 1.0 (May 5, 2002)
182
183  * Fixed private message logging not working if it was
184     the only option requested.
185
186  * Fixed compile problem w/ time.h on some gnu libc 2.2.x systems
187
188  * Rewrote and improved the command parser.
189
190  * The 'ezb' command now works full time (so you can use it before you
191     connect to an IRC server), and reports bad command errors.
192
193  * Completely rewrote the config file parser.. The configuration
194    format has changed quite a bit.. See below
195
196  * Added a new user account system
197
198    Basically everything is done with users now. You define a user like this:
199
200    user bob {
201        allow {
202            from *.blahblah
203            to irc.*
204        }
205
206        deny {
207            ....
208        }
209
210        set enable-outgoing-dcc-proxying 1
211        set password blahblah
212        set other-options
213    }
214
215    To log in as Bob, a user would connect as usual, and then send
216       /quote LOGIN bob blahblah
217
218    This means you can define multiple users, each with different options
219    and different allow/deny lists. It also allows us to neat things, like
220    doing away w/ detach passwords, and user customizable options that
221    get saved to disk (see below)
222
223    So... you must define at least one user to use ezbounce now.
224
225    There is also a special 'default' user. It is much like a guest account;
226    it behaves like ezbounce versions of old. For example, users still need
227    to set passwords to detach, and can't use a few new features (see below).
228
229    To summarize the other major syntax changes....:
230
231    The following options can only be set globally (i.e. outside of
232      user xxx { } ) blocks
233
234    LOGFILE
235    PIDFILE
236    MOTDFILE
237    USERFILE
238    LOG-DIR
239    NO-REVERSE-LOOKUPS
240    DCC-LISTEN-PORT-RANGE
241    PREVENT-SELF-CONNECTS
242    MAX-DNS-WAIT-TIME
243    KILL-ON-FULL-QUEUE
244    SILENT-REJECTION
245    MAX-REGISTRATION-TIME
246    MAX-FAILED-PASSWORDS
247
248    The following options can only be set INSIDE user blocks
249
250    PASSWORD
251    IS-ADMIN
252    MAX-IDLE-TIME
253    DROP-ON-DISCONNECT
254    ENABLE-DETACH-COMMAND
255    ENABLE-AUTO-DETACH
256    ENABLE-VHOST-COMMAND
257    ENABLE-FAKE-IDENTS
258    AUTO-FAKE-IDENTS
259    AUTO-SERVER
260    ENABLE-OUTGOING-DCC-PROXYING
261    ENABLE-INCOMING-DCC-PROXYING
262    ENABLE-PRIVATE-LOGGING
263    ENABLE-PUBLIC-LOGGING
264    ENABLE-SEPERATE-LOGGING
265    DEFAULT-LOG-OPTIONS
266    MAX-LOGFILE-SIZE
267
268  * You can no longer have global 'allow' blocks. They must be
269    inside user definitions. Global 'deny' blocks are still
270    allowed, (to make sh*tl*sts and such)
271
272  * Note: the vhosts { } block is allowed both globally and in
273    a user block. Global vhosts are avialable to all, and user ones
274    are available only to those specific users.
275
276  * Removed the 'ADMIN' command and the admin { } block
277
278      -- you now define an admin like this:
279
280     user xxx {
281        ...
282        set is-admin 1
283        ...
284     }
285
286     User is given admin priviledges upon his login. Nifty!
287     On a side note, the 'max-failed-admins' option has also been removed
288
289  * Added 'LOGIN' command for the new user system. You should now use
290    this in place of 'PASS' to log into ezb. Syntax is:
291
292        /quote LOGIN <username> <password> [auto-server]
293
294            `-- username:    ditto
295             -- password:    ditto
296             -- auto-server: server to automatically
297                             connect to (optional)
298
299       example: /quote login bob myPass
300
301  * Improved 'PASS' command. We will keep it for compatibility
302    reasons. The syntax is now like this:
303
304        /quote PASS <username>:<password> [auto-server]
305
306    This lets you log in, like the 'login' command.
307    Example: /quote PASS bob:myPass
308
309    The old syntax will still work. However, it can only
310    log you in as the default user.
311
312    i.e.
313
314        /quote pass password
315
316    Will do the same thing as
317
318        /quote login default password
319
320    If you want to login as another user, you MUST use the Login command,
321    OR the new Pass command syntax.
322
323  * Improved detach/attach system. Passwords are no longer
324    required. In fact, you don't have to remember anything
325    anymore, not even the so called 'magic number'
326
327    So now I can do
328
329        /quote ezb detach
330
331    And when I reconnect, ezbounce will conveniently list all my
332    detached sessions, with the id needed to reattach.
333
334    NOTE: 'Default' users MUST still provide a password
335
336  * Added 'ATTACH' command, simply an alias for `REATTACH'
337
338  * Added `SESSIONS' command. Lists all of your current detached
339    sessions. Sample output:
340
341      -ezbounce(srv)- Current detached sessions for user murat:
342      -ezbounce(srv)- ID  IRC NICK             TO                   TIME
343      -ezbounce(srv)- 1   druglord_            irc.lagged.org       00:00
344
345    To reattach, I would just have to do /quote ezb reattach 1
346    Nifty, eh?
347
348    TIP: if you only have one detached session, you don't even need
349         to provide an id.
350
351  * Added 'TRAFFIC' command. Displays amount of data transferred
352    between ezbounce and clients and servers
353
354  * Added 'WHOIS' command (for admins only). Syntax:
355
356        /quote WHOIS <username> (or) <id>
357
358     Displays all connections for a particular user.
359
360  * Added 'ECHO' command, sends given text back to client
361
362  * Added a spiffy new login screen. ALSO -- if you have some
363    mad ANSI artwork skills and want to make a 31337 login banner
364    for ezbounce, let me know!!
365
366  * mdidentd finally gets the permissions of the /var/run/mdidentd socket
367     right.
368
369  * Tested mdidentd -- contrary to popular belief, it still works.
370    Updated the documentation.
371
372  * Syntax of LOG FIND has changed a bit...
373    - New syntax is: LOG FIND [password]
374    - IDs are no longer needed
375    - Passwords are optional, (because detach passwords
376        are optional)
377    - Users can only get log files that belong to them
378    - 'Default' users must specify a password.
379
380  * Added per-user preferences. This lets you customize a few
381    settings, AND save them to disk, so ezbounce will remember
382    them across sessions.
383
384  * Added 'SET' command to facilitate this system.
385
386    Usage: /quote ezb SET <preference> <value>
387
388    The following preferences are available:
389
390        auto-detach         [0/1] - detach automatically?
391
392        proxy-dcc-in        [0/1] - proxy incoming dccs?
393        proxy-dcc-out       [0/1] - proxy outgoing dccs?
394
395        fake-ident          [string] - fake ident
396        vhost               [string] - vhost to use
397        auto-detach-pass    [string] - password to use for
398                                       auto-detach
399        auto-server         [string] - server to automatically
400                                       connect you to
401
402     Examples:
403        /quote ezb set auto-detach 1
404        /quote ezb set fake-ident mrBilly
405        /quote ezb set proxy-dcc-in 0
406
407      Note, the relevent feature must be enabled in the config file.
408       For example, if you set auto-detach to 1, you also need to have
409       "set enable-auto-detach 1" in the config.. So this is useful
410       if you want to disable features you don't want..
411
412      This also works for the default user, but they won't be able to
413      save their preferences.
414
415   * Added 'SAVE' command. Saves the dynamic user preferences to disk.
416
417   * New configuration option:
418
419        set user-file <filename>
420
421      This is where dynamic user preferences will be saved on disk
422
423   * Added 'RELOAD' command. Reloads user preferences from disk.
424
425   * Added 'ALLOWED' command. Displays what services are available to
426      the user. (For example, if the detach command is enabled and
427      things like that)
428
429   * Added 'TRACE' command. Displays a simple network connection
430      diagram.
431
432      Usage: /quote TRACE <id>
433
434   * Removed 'AUTOPASS' command. Use /quote set auto-detach-pass.
435     Also, you will no longer be assigned an automatic detach
436     password when you connect -- set one! (And it will get saved)
437
438   * Improved on-line help system a lot. Every command is now
439      documented, with syntax listing and an adequate description.
440
441      Usage: /quote HELP <command>
442
443   * Fixed Numeric 005 not being sent back to client properly on
444     reattach -- or being sent even if the IRC server never provided
445     one in the first place
446
447   * ezbounce now actively keeps track of the channels you are on,
448     which means a few new spiffy features, like a faster and simpler
449     reattach.. In the past we would look up that info when a reattach
450     was requested, causing a wait of at least several seconds.
451     The "reattaching" state as shown in the status command by
452     letter 'e' is also gone now.
453
454   * In chat logs, channel is now put before name of speaker. I.e.
455      instead of
456         <bob:#blah> this sucks
457
458         it is now:
459
460         [#blah] <bob> this sucks.
461
462   * Fixed QUITs and nickname changes not being logged -- oops!!
463
464   * Added 'listen-vhost' configuration option. You can use this
465     to configure what interface ezbounce will listen for connections
466     on. (It does the same thing as the -b command line option)..
467     It's global, so you must use it outside of a user { } block.
468     Example:
469
470        set listen-vhost 192.168.1.1
471
472   * Added 'default-vhost' user configuration option. This is like
473     the -c command line option; it lets you choose which interface
474     users will connect to IRC servers on. It's a user option, so it
475     must be inside a user { } block.
476     Example:
477
478        user xxx {
479            set password blah
480            ...
481            set default-vhost my.cool.vhost.com
482            ...
483        }
484
485   * Removed the `-c' command line option. Use the default-vhost
486      config options instead.
487
488   * We now respond to *all* IRC server pings, not just when
489     detached. (This is to make auto-detach more reliable)
490
491   * Fixed a serious file descriptor leak in mdidentd.
492
493   * Added ABOUT and VERSION commands
494
495   * Fixed bugs in the dcc code that might lead to 100% CPU usage and
496     crashes.
497
498   * Now rejoins channel when kicked (while detached)
499
500   * Improved socket handling a lot. The look-up system is much faster,
501     and the data processing to/from client/server is a lot more reliable.
502     In particular, ezbounce now buffers all data before sending it, which
503     will eliminate the problems with data loss under high traffic.
504
505   * Added "max-sockets" configuration option.
506
507        set max-sockets [number]
508
509     This implies that there is now a finite limit on the number of sockets
510     that ezbounce will use. This is true. This may seem restrictive, but
511     results in much simpler and faster code in the socket event processing.
512
513     Default is 128, which is enough for most people. Minimum value
514     permitted is 10. You decide how many you need; keep in mind that each
515     client will need 2 sockets (one for him, and one for connection to server).
516
517   * Added --enable-debug option to the configure script -- useful if you
518     want to do development
519
520   * Removed the configuration options
521
522    	max-client-inputQ
523    	min-client-inputQ
524	    max-server-inputQ
525    	min-server-inputQ
526
527     They have been replaced with
528
529    	min-buffer-size
530	    max-buffer-size
531
532     They are optional, as before, defaulting to 128 and 32768
533 	respectively.
534
535   * Added 'LOG VIEW' command. Lets you view detached log files directly in
536     your IRC client w/o getting them via DCC SEND. This is accomplished
537     by a DCC Chat connection. Syntax is the same as 'LOG SEND' ...
538
539   * SSL Support has been added  (contributed by 'HoE')
540      To set up:
541
542            ./configure --with-ssl
543
544      And set the following in the configuration file:
545
546            set certfile <.pem file>
547            ssl-listen <ports>                  (optional)
548
549      To activate an SSL connection, use the CONN command with
550        -ssl argument. Example:
551
552            /quote ezb conn -ssl irc.magicserver.com
553
554   * Now uses safer vsnprintf() and snprintf()
555
556   * Fixed compile problems with GCC 3.x
557
558   * Many more code cleanups and technical improvements that I won't
559      mention. In short, this release, 0wns. :)
560
561
562v0.99.12 (March 2, 2001)
563
564  * Added anti-idle feature while detached. Sends random
565     message to server every so often.
566
567  * Removed enable-detach-on-error and always-detach variables.
568     Instead there is a "enable-auto-detach" variable that, when
569     enabled, will always detach the user, unless he explicitly
570     uses /quote ezb quit.
571
572     Password is again assigned randomly when the user connects.
573     It can be changed via the 'autopass' command.
574
575  * Added recognition for UnReal-ircd's * and ^ user modes in
576     channels during reattach.
577
578  * Admins can no longer reattach w/o password.
579
580  * Included a basic man page
581
582
583v0.99.11 (January 13, 2001)
584
585  * Ezbounce no longer requires poll(). An alternative select()-based
586     implementation has been added to the socket code.
587
588  * Added --enable-use-select option to ./configure script to force use
589      of select() instead of poll()
590
591  * Fixed (??) a 100% CPU usage problem involving poll()
592
593  * Now sends an IRC "ERROR" string for disconnects
594
595  * Minor mdidentd fixes
596
597
598v0.99.10 (October 31, 2000)
599
600  * Fixed ezbounce.pid file being created with random permissions.
601    It will now be made with 0644.
602
603  * Fixed a nasty bug that could cause random crashes.
604
605
606v0.99.9	(October 9, 2000)
607
608  * Fixed DCC proxying using 100% processor time in some cases.
609
610  * Fixed several possible crashes in DCC proxying.
611
612  * STATUS command now displays some DCC proxying info.
613
614  * Changed behavior of outgoing DCC proxying.. It will conenct
615    to the real IP of the sender, not the IP that is stated in
616    the CTCP DCC command (which was wrong in some cases, e.g.
617    if client behind firewall obtained local IP through /whois)
618
619  * Fixed compile errors under GCC 2.9x
620
621
622v0.99.8 (July 29, 2000)
623
624  * Fixed certain logfile options causing a crash on detach.
625
626  * Fixed sending of zero-byte files causing problems.
627
628  * The enable-{private,seperate,channel}-logging options are
629    now properly enforced.
630
631  * Timestamp should be properly encoded in the logfile names
632    sent back to the user now, in the format YYYYMMDD-...
633
634  * Added dcc-listen-port-range option. It allows you to choose
635    which port or ports ezbounce will listen on when doing DCC
636    proxying. Usage:
637
638	set dcc-listen-port-range <ports>
639
640    where ports can any number or series of numbers seperated by
641    commas, and where ranges of numbers can be indicated by a dash.
642    Examples:
643       7000,7005,8225,9000-9100
644       2000-2300,4860
645       6918
646       5700-5710
647
648  * Wrote some simple, cheesy encryption and decryption routines
649    for the passwords that are used in making log file filenames.
650
651  * Redesigned and rewrote the internal socket polling and handling
652    system. Is it faster? I don't know, but I think it's better
653    now. However, ezbounce now requires the poll() system call be
654    present on the machine. Unless you're using an ancient system,
655    you will have this function (./configure script will confirm it).
656    Also as a result, the following issues are fixed:
657
658	* DCC sessions (both send and proxy) are unlimited now; you
659	  are especially not restricted to two log file sends at a time.
660
661        * DCC sessions will now survive after the user disconnects from the
662	  proxy.
663
664        * DCC sessions will now stay alive through during reattach and
665	  deattach.
666
667	* DCC sessions will now properly timeout after 90 seconds.
668
669  * Fixed bogus "Killed user for exceeding idle time limit" messages
670    appearing after users reattaching.
671
672  * Added auto-server option, which automatically connects users to an IRC
673     server as soon as they succesfully connect to the ezbounce proxy.
674
675	set auto-server <server>[:port] [pass]
676
677	    server: which server to connect to
678	    port:   (optional) which port to use
679	    pass:   (optional) password to use on IRC server
680
681
682  * LOG FIND will now display all results of a search, not just the first two.
683    You can select any of them to send as usual with the LOG SEND command.
684    doing "LOG SEND ALL" however will only send two a time to avoid flooding the
685    user.
686
687  * Logfile creation is now more robust; will honor locked log files and try to
688    create more unique file names if needed.
689
690  * Added a simple away option to detach:
691
692    /quote ezb detach password [away message]
693
694    where away message is what ezbounce will set you /AWAY as
695    with the IRC server. It will unset you away when you reattach.
696
697  * Added LOG LIST command; it will list the search results again
698    for you.
699
700  * Extended PASS command to include the name of a server to connect
701    to. Syntax is:
702
703	/quote PASS <password> [server[:port]] [IRC server password]
704
705    This will let you connect to IRC servers with just one command.
706    Examples:
707
708	/quote PASS secret irc.lagged.org
709	/quote PASS secret5 irc.dal.net:7000 secretpass
710
711  * Now makes link to ezbounce binary named 'ezb'
712
713  * And some long overdue documentation updates..
714
715
716v0.99.7 (June 10, 2000)
717
718  * Fixed DCC Sends from ezbounce not providing filesize.
719    Some clients didn't mind that it was omitted; some did.
720
721  * DCC sending of logs now properly limited to 2 at a
722    time max.
723
724  * Fixed LOG FIND reporting multiple finds of a file?
725     (Although it did send the proper log files)
726
727  * Fixed odd STATUS command crash.
728
729  * Disabled PONG messages in log for good.
730
731
732v0.99.6 (April 30, 2000)
733
734  * Fixed logging not working if maxsize wasn't set (sigh)
735
736  * Fixed Reattach truncating list of channels to join if it
737    was > 128 chars (some people were affected)
738
739  * Added support for catching numeric 005. They contain some
740    possibly useful information for clients upon reattach. (like
741    detecting if the IRC server supports the DalNet WATCH
742    command.
743
744  * Internal nickname tracking should work well now.
745
746  * Implemented LOG HELP.
747
748 In addition, Thanks to Ben W. for the following improvements:
749
750  * Now handles and saves numerics 002-004 so they can be reproduced
751    on reattach
752
753  * PASS command can now be used before USER and NICK commands.. this
754    allows the server password feature of most IRC clients to be
755    used with ezbounce.
756
757  * Admins can now reattach without a password.
758
759  * Numerous reattach improvements, including:
760
761	* Proper detection of User Mode
762	* Fixed MODE #channel command being sent, causing some
763	  clients to screw up
764	* Fix duplicate LUSERs being sent.
765
766
767
768v0.99.5 (April 9, 2000)
769
770  * Ok, ezb command works now. My mistake.
771
772  * Sending of old log files is now possible. The command to use is:
773
774	/quote LOG FIND <id> <password>
775
776     Where 'id' is the id that you had for that session which died,
777     and 'password' is the password for that session.
778
779     This is very preliminary right now. It does not quite work if
780     your nickname is something different from the one ezbounce thinks
781     it is. That's the why the change below was needed...
782
783  * Now keeps track of nickname changes internally throughout your
784      irc changes. Also lets you change your nickname while chillin'
785      on the proxy before connecting to an IRC server. This was all
786      necessary for the DCC Sends to work properly. (note: it doesn't
787      really work that well right now)
788
789  * Added checks to ensure permissions for the log files directory are
790      secure.
791
792  * Fixed a possible crash if the incoming text buffer was full.
793
794  * Fixed a possible crash in the STATUS command.
795
796  * Fixed IRC PASS command being sent to IRC Server at the wrong
797    time during the connection process. Thanks to Rodney J. for catching
798    this one.
799
800
801v0.99.4 (February 22, 2000)
802
803 * Changed permissions on the included sample config files for security
804      purposes. Note that you can't get this fix with the patch, you must
805      get the tarball, or set the permissions manually. Your config files
806      ought to have permissions 0600.
807
808  * Added 'ezb' command as an alias for the ezbounce command. It occurred
809      to me in a vision that much time could be saved by myself and users
810      by typing 3 letters instead of 8 letters!
811
812  * Fixed some serious bugs in the log sending. It is much more robust
813       now.
814
815  * Fixed -b command line option (listen for connections on specific
816       interface) not working on some systems (?). Note to self and
817       fellow coders: remember to zero out sockaddr_in structure
818       before doing anything to it!
819
820
821v0.99.3 (December 29, 1999)
822
823  * Logging while detached. See ezbounce.conf.quick for details and to
824    enable it.
825    Basically you turn it on with the 'log' command. The syntax is:
826    /quote LOG SET <options>
827
828    where options is any combination of the following:
829
830	a - log all (combines p and c)
831	s - log to seperate files
832	p - log private
833	c - log channels
834	n - log nothing!
835	f - log full addresses always
836	t - log with timestamps for all events
837
838    Once you detach, logging will begin. It will continue until you
839    reattach or the connection to the IRC server dies.
840
841    When you reattach, you can retrieve the log files by typing:
842
843    /quote EZBOUNCE LOG SEND all
844
845    Ezbounce will then DCC send them to you.
846
847    Everything is explained in the README in full detail.
848
849  * New config options to support detached-logging..
850
851	# allow logging of private messages
852        set enable-private-logging 1
853
854	# allow logging of channels
855	set enable-public-logging 1
856
857	# let users store logs in seperate files (that is, one for chan,
858	# one for
859	# private)
860	set enable-seperate-logging 1
861
862	# where to store logs?
863	set log-dir logs/
864
865	#
866	# Default log options
867	#
868	# Full list of options:
869	# a - log all (combines p and c)
870	# s - log to seperate files
871	# p - log private
872	# c - log channels
873	# n - log nothing!
874	# t - timestamp events
875	# f - log full addresses always
876	#
877	set default-log-options ast
878
879
880  * Redid some of the server log messages. Aimed for a standard format,
881      something easier to understand at first glance. For example, instead
882      of "xxx's connection attempt to yyy:1111 has failed (...)" it is now
883      "Connection attempt FAILED: xxxx to yyy:1111 (...)"
884
885   * Removed the "&" and "!" channel recongnition 'fixes' in 0.85.3
886     that were incorrect. The new detached-logging code does recognize
887     these special channel types properly though.
888
889   * Redid the reattach system, so the target inherits the clients
890     settings, not the other way around as it has been. This mainly
891     simplifies some matters in the code.
892
893     Also this means your reattach id does not change when you reattach
894     so you can detach and reattach again with the same id.
895
896   * For mdidentd, added checks to ensure permissions in directory
897     of socket are appropriate to allow connections to the socket.
898
899   * Now doesn't log PONGs from server while detached or other debug
900     messages, unless you choose to build it to do so.
901
902   * Fixed compile problem on several systems caused by the fact that
903     'MAX' was already #defined on the system but we tried to create
904     a function by that name.
905
906   * Added a simple Message of the Day (MOTD) system. The configuration
907     file variable is:
908
909	set motd-file <filename>
910
911     It will display the contents of that file to the user upon
912     connection to ezbounce and whenever he types /MOTD.
913
914     A sample motd file is included (the sample.MOTD file), but
915     disabled by default.
916
917
918   * Added -u command line option, to change userid after listening
919     socket is bound. This is only useful if you're running it as
920     root and want to bind it to port < 1024 and then want it to
921     drop the root privs. Usage (uid must be numeric):
922
923	ezbounce -u uid config.file
924
925------
926
927v0.85.3 (August 6, 1999)
928
929  * Fixed default connection and listen vhosts (-c and -h command line
930     options, respectively) being cleared on rehash
931
932  * Fixed 'random' crashes during reattach (was caused by failure to
933     handle privmsg and the like during the info-gathering process)
934
935  * Fixed "trying to reattach to" message showing "(null)" for the target.
936
937  * Improved socklen_t detection in configure script. Will hopefully correct
938    compile failures on OpenBSD and possibly other systems.
939
940  * Small mdidentd updates
941
942  * Added IRCNet  !  channel and local (&) channel recongnition where needed.
943
944
945v0.85.2 (May 15, 1999)
946
947  * Fixed CTCPs being blocked if dcc proxying was enabled
948
949  * Fixed outgoing CTCPs being corrupted if dcc proxying was enabled
950
951  * Now handles 0 return from connect() (was only checking for -1 as that
952    is what usually happens with nonblocking connects)
953
954  * Fixed several DCC proxying problems (e.g. sends to slow modem users
955	blowing up).
956
957
958v0.85.1 (May 7, 1999)
959
960  * Fixed CTCP Ping-replies during detach not working
961
962  * 'autopass' command was broken, fixed.
963
964  * Fixed channel modes possibly not being synced on reattach
965
966  * Fixed nickname not being synced on reattach (for some clients)
967
968  * If proxy was started w/o detach-on-error option and it was enabled
969    and rehashed later, clients would not have auto-passwords set. This
970    would result in "unreattachable" clients.. So now if there's
971    no password, the client will not be detached. Use the
972    'autopass' command..
973
974  * Several Solaris compile/link errors fixed. Many thanks to Rajesh T.
975    for reporting these problems and trying out my fix suggestions! If
976    ezbounce was not building for you on Solaris try it now.
977
978  * configure script updated to check for special libraries that might
979    have to be linked with on some systems.
980
981  * Quick kludge for reattach "to-ruleset" usage count leak.
982
983
984------------------------------------
985
986ezbounce 0.85 (May 1, 1999)
987
988  * Added DCC proxying. It's all transparent, meaning ezbounce does some
989    clever trick so that clients don't need to do anything special to be
990    able to send *and* receive dccs. So yes, it's both ways.
991
992    To enable it you need to stick these lines in your config:
993    set enable-outgoing-dcc-proxying (0 or 1)
994    set enable-incoming-dcc-proxying (0 or 1)
995
996    for all the details see the README file. It's off by default.
997
998    Not very well tested on big endian machines. Some people have reported
999    success; the reason I'm worried is that I had quite a time trying to get
1000    host byte-order to network byte-order (and vice versa) to work properly.
1001
1002    Completely untested on dialup PPP connections (I'm a Cable Modem Bastard
1003    myself).
1004
1005    Feedback from anyone would be greatly appreciated.
1006
1007  * Fixed vhost-binding not working under FreeBSD.
1008
1009  * Fixed a problem in the buffering code that could data corruption.
1010
1011  * reduced time() calls to once per second and no more (in almost all cases).
1012
1013  * Added detach-on-error feature. Basically it detaches the client if he loses
1014    connection to the proxy with an error. It automatically sets up an
1015    auto-detach password for the user upon connect. This password may also
1016    be changed be the user using the AUTOPASS command.
1017
1018    If the user detaches because of an error, he can reattach normally using
1019    the 'reattach' command.
1020
1021    To enable it you must stick this line in your config (Defaults to off):
1022    set enable-detach-on-error 1
1023
1024    --- Consider it experimental!
1025
1026  * Added hack to prevent linking with libstdc++. To enable it, run configure
1027    as follows:
1028
1029     ./configure --disable-link-stdcxx
1030
1031    and build. Consider it experimental as well!
1032
1033  * Corrected several possible compile errors on different compilers
1034    than mine.
1035
1036  * Admins are now exempt from rulesets. Meaning they can connect anywhere.
1037
1038  * Check for existance of sys/select.h before #include'ing it. Linux libc5
1039    doesn't have it for example.
1040
1041  * #include <sys/types.h> before any other header. This corrects some potential
1042    compilation problems on some systems (FreeBSD is one).
1043
1044  * 'ezbounce' command could be used while connecting to an irc server. fixed.
1045
1046  * Tons of code redone and cleaned up.
1047
1048  * a nasty bug in buffering code fixed (was assuming write() would write all
1049    of requested bytes..)
1050
1051  * If logfile cannot be opened or created on startup, keep going instead of
1052    quitting.
1053
1054  * mdidentd version string was not updated for previous release.
1055
1056  * Idiot proof setup directions after ./configure is done.
1057
1058  * Eliminated "unused parameter int unused" warning for older gcc..
1059
1060  * Eliminated "argument changes signedness" warnings (hopefully)
1061
1062  * Added a basic pid-writing thing. It's mainly for scripts to be
1063    run with crontab that periodically check if ezbounce is still
1064    running. Ezbounce writes its pid to a file (ezbounce.pid) and the
1065    script checks if its a valid one, if not respawns ezbounce. Such
1066    a script is included (see the ezbchk file).
1067
1068  * Fixed user name being truncated to 3 chars on reattach.
1069
1070
1071ezbounce 0.81 (February 8, 1999)
1072
1073  * Topics should *really* be synched on reattach now. It was even listed
1074    as fixed in this file, but for some reason was not. Oops :)
1075
1076  * Also get user mode on reattach now.
1077
1078  * While detached, ezbounce will now respond to ctcp pings for the detached
1079    client. In order to prevent abuse by flooders, only 1 ping will be replied
1080    to every 5 seconds.
1081
1082  * Fixed a config file loader error message that was getting truncated.
1083
1084  * No longer allows 0-length USER and NICK messages when clients are
1085    registering
1086
1087  * A few hacks to save memory storing nicknames and passwords and such
1088
1089  * Added a switch to mdidentd which will prevent users from setting their
1090    fake idents to the username of a user on the machine.
1091
1092
1093What's new in ezbounce 0.80? (December 31, 1998)
1094
1095  * You can now reload the configuration file while the server is running.
1096    This is done either by the admin-only REHASH command or by sending the
1097    server a SIGHUP signal. Any possible error messages from the process
1098    will be dumped to the log file. See README for finer details.
1099
1100  * User password is now optional.
1101
1102  * I made a special ident daemon-helper thingy that will let proxy users
1103     set their own ident replies regardless of the uid the proxy is running
1104     under. For more information look in mdidentd/README.
1105
1106  * Reorganized several files, moved proxy code to 'src', mdidentd code to
1107    'midentd' and files shared by both to 'libs'.
1108
1109  * Reorganized and cleaned up rule-set related code.
1110
1111  * Some clean up of config file loading code.
1112
1113  * Greatly simplified command parsing code. Code is smaller and is
1114    probably faster.
1115
1116  * In the cleanup process I have also fixed an embarassing bug that
1117    would cause a crash if an invalid command was used with the 'ezbounce'
1118    command.
1119
1120  * Some systems don't appear to define INADDR_NONE (like sunos 5.4??).
1121    Added a fix so ezbounce will compile there.
1122
1123  * ircd-hybrid is drain-bamaged and does not always respond to TIME requests.
1124    This effectively makes the Detaching/Reattaching system useless for some
1125    people. ezbounce now sends a different command besides TIME to get
1126    info about the connection during reattach.
1127
1128  * If a client would die while reattaching a ghost connection might be
1129    left behind (the detached connection he was trying to reattach
1130    to). Although i was sure such conditions were handled properly,
1131    it looks like the code was borken. Fixed.
1132
1133  * Again during reattach.. sometimes the name of the channel joined would
1134    be sent with a space in front of it. This caused a small problem with the
1135    BitchX windowing facilities so we now send it w/o the extra space.
1136
1137  * Reduced the number of times the time() system call was used. In older
1138    versions ugly things could happen like time() being called 55 times
1139    *a second* when there were 50 clients. Now time() is called at most twice
1140    a second regardless of the number of clients.
1141
1142  * Admin can use any vhost he wants now, that is, he is not limited by the
1143    hosts listed in the "vhosts" config file block.
1144
1145  * Admin can use any feature he wants, even if it has been disabled in the
1146     configuration file.
1147
1148  * 'status' command now aware of zombie connections and super-new connections.
1149
1150  * 'admin' command block syntax for configuration files has changed slightly.
1151     Basically you don't need 'set' before 'name' and 'password'. If you don't
1152     know what I'm talking about don't worry about it.
1153
1154
1155What's new in ezbounce 0.71? (???)
1156
1157  * Makefile was using a GNU-specific command that would prevent ezbounce
1158    from compiling on some systems. The relevant section has been commented
1159    out.
1160
1161  * Fixed a problem with the status command that could cause a crash.
1162
1163  * If a detached connection died, the number of clients wouldn't be decremented.
1164    This could actually cause a lot of problems. Fixed.
1165
1166  * setsockopt problem on Solaris fixed.
1167
1168  * Channel topics were not being synced on reattach.
1169
1170  * Corrected compile problem on FreeBSD 2.2.7
1171
1172
1173What's new in ezbounce 0.70? (August 9, 1998)
1174
1175  * added GNU autoconf configure script. ezbounce will compile on older
1176    gccs.
1177
1178  * Handle memory allocation failures a little better.
1179
1180  * server uptime info from STATUS command is now in human-comprehendable
1181     form.
1182
1183  * STATUS also displays cpu time used now.
1184
1185  * client connection time from STATUS is correct now.
1186
1187  * reconnecting after disconnecting from irc server should
1188     really work this time. Note: may cause problems
1189     with some clients.
1190
1191  * added INTERFACE command, lets client bind connection
1192     to any interface available on the machine.
1193
1194  * also added VHOST command which is just an alias to INTERFACE.
1195
1196  * added a vhosts block command, lets you configure which vhosts
1197      clients may use with the vhost/interface command:
1198	vhosts {
1199		ip1.machine.com
1200		blahblah.blahb.alh
1201		69.69.69.69
1202		etc
1203	}
1204    note: 'all' is a special keyword and will allow clients to use all available
1205     vhosts.
1206     Currently only one vhosts block is allowed. If you choose not to
1207     supply one, a dummy one will be created with 'all' as the only address.
1208
1209  * also added a VHOSTS command which lists all the available virtual hosts
1210        that a client may use.
1211
1212  * improved server admin configuration. To define an administrator you now do:
1213	admin {
1214		from *.address.*
1215		set name servadmin
1216		set pass blah60
1217	}
1218     This allows only people from *.address.* to become admins, and the
1219     username and pass they must use are servadmin and blah60. Only one admin
1220     block per customer. The old set admin-name/pass won't work anymore.
1221
1222  * added a prevent-self-connects config option. It prevents clients from
1223    making the proxy connect to itself.
1224
1225  * Added EZBOUNCE command. It is to be used when you have connected
1226     to an irc server and wish to issue a command directly to the proxy
1227     rather than have it relayed to the irc server.
1228     (note: not all commands can be issued thru this interface)
1229     For example, when connected:
1230
1231 	/quote DIE death message
1232	will kill the irc server you're on, and
1233	/quote ezbounce DIE death message
1234	will kill ezbounce. Assuming you have proper authorization, of course.
1235
1236  * Added a DETACH command, which lets your connection to an irc server
1237      remain active while disconnecting you from the proxy. While you are
1238      detached, ezbounce will respond to server pings to keep you alive.
1239      It is used as so:
1240
1241 	/quote DETACH <password>
1242
1243     To reattach to the connection, you must connect to the proxy and
1244       issue the following command:
1245
1246	/quote REATTACH <connection_id> <password>
1247
1248     Where connection_id is a number ezbounce will give you when you
1249     detach.
1250
1251     The detaching/reattaching facilities don't work very well with all
1252     clients right now.
1253     There is a section in the README file which you can read that
1254     describes the problems.
1255
1256  * Cleaned up interface-binding related code. Also fixed possible
1257      file descriptor leaks.
1258
1259  * Fixed a bug in buffering code which could lead to crashes.
1260
1261  * Less offensive password incorrect message :)
1262
1263  * No longer displays "Welcome to ezbounce" message when you connect,
1264     it now waits until you have succesfully given a password.
1265
1266  * New configuration options:
1267     set max-failed-passwords <num>
1268    	Lets you set a limit on how tolerant ezbounce will be on
1269	people giving incorrect passwords. Setting it to 0 disables the
1270	feature. Defaults to 3. Client will be booted off once limit is
1271	reached.
1272
1273     set max-failed-admins <num>
1274	Similar to above one, but controls attempts at becoming server
1275	administrator. Defaults to 0 (off).
1276
1277     set drop-on-disconnect <1|0>
1278	Controls whether or not client should be dropped if he loses connection
1279	to his irc server. Defaults to 0.
1280
1281     set enable-detach-command <1|0>
1282         Enables or disables the DETACH command. Defaults to 1.
1283
1284     set no-reverse-lookups <1|0>
1285	 This option controls whether ezbounce will do reverse dns
1286	 dns lookups in the ruleset related code or not. Defaults to 0.
1287	 Look at sample.conf for more info.
1288
1289     set enable-vhost-command <1|0>
1290	 Enables or disables the use of the INTERFACE and VHOST command.
1291	 Defaults to 1.
1292
1293  * rewrote gettok(). no longer makes copy of string, should speed up several
1294     other functions.
1295
1296  * ezbounce now tries to save some memory by fine-tuning input buffer sizes
1297    once every minute.
1298
1299  * Added a WRITE command. This command is for administrators only
1300    and allows them to send messages to another user or broadcast it to
1301    everyone. The syntax is (/quote) write <id> <message>.
1302    You obtain the id from the status command, and you can use 'all' to
1303    broadcast to all.
1304
1305  * --help command line option recongnized.
1306
1307  * added a DISCONNECT command. It is intended to be used with the EZBOUNCE
1308    command. It forces a disconnection from the irc server in case it
1309    stops responding or something.
1310
1311  * fixed possible bug that could cause a crash if a bad command was sent
1312    while connecting to an irc server.
1313
1314  * several other internal changes
1315---
1316
1317What's new in ezbounce 0.61? (July 15, 1998)
1318
1319  * client is no longer dropped if disconnected from irc server.
1320  * small memory leak in config file parsing code fixed.
1321  * bigger memory leak found in buffering code and destroyed.
1322  * small makefile enhancement
1323
1324