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