3.2 (August 26, 2006)
- DNS resolver now gets the server list before each lookup, because the user may
switch ISPs while DCgate is running.
- Added a 'dns_server' option to the ini file, because occasionally it's useful
to resolve from a specific server.
- Removed prevent_clones. It's annoying and doesn't solve a real problem.
3.1 (March 6, 2006)
- The 'rank' command can be followed by a specific username.
- Display of virtual nicks looks a bit more consistent.
- Shows a status message when the topic is locked or unlocked.
- Login step 6 now mentions if any messages were missed.
- Added a handler for the '+me' command used by BCDC++
3.0 (February 12, 2006)
- Due to protocol changes, v3 runs on a different channel than v2.
- Lots of improvements to make things mesh better with IRC.
- Created a "-data" channel to keep searches and info packets separate from the main chat channel.
- IRC users are now visible on the DC userlist (with a prefix of ~)
- It's possible to send private messages between IRC and DC users.
- Added DNS-configurable "virtual nicks" to make NickServ, etc. appear in the userlist.
- Added the ability to receive NOTICEs from other IRC users. This should be helpful when implementing certain kinds of bots.
- Server pinging is now done using the PING command, instead of sending a self-NOTICE.
- Commands can now begin with ! or /, since some DC clients can be picky about /.
- Added the !rank command, to show your relative share size rank.
- Added the ability to specify a minimum share size for the channel.
- IRC nicks for DC users have a configurable prefix, currently set to just "|"
- All the commands are now non-public, for now.
- Uses the new icon that darkhorse made.
2.5 (December 5, 2005)
- Fixed a bug that caused a connection abort after receiving a specific malformed packet.
- Strips mIRC color codes from TOPIC and KICK messages.
- Keeps track of the op/voice status for IRC users, and displays the appropriate prefixes in the /nicks output.
2.4 (November 1, 2005)
- After a user quits, their info is now retained for about 30 minutes. This should help prevent the userlist from going blank after a netsplit.
- Rebroadcasts an info packet to the main channel every few hours, so that even if somebody does lose your info, they'll get it back someday.
- Disabled Nagle's algorithm on the socket which connects to the local DC client. This should theoretically lead to *slightly* less lag.
- Fixed a crash in the close() method of IrcHandler.
- If the "You don't seem to be connecting ..." case is encountered, it will now display your IRC origin, to aide in debugging.
- Using /topic with no arguments now dispays (set by <nick>) at the end.
- Pings the server every minute or so to make sure the connection is still solid.
- Computes the average ping time, and uses that to send Info messages slightly earlier. For slow connections, this helps prevent late Infos.
- Added /dense command to display bytes shared per user in each hall.
- Displays server-wide NOTICE messages in the form "<*NOTICE/Nick> text"
- If IrcHandler raises an exception, some debug info will be printed to the DC Client before exiting.
- The kick message now gets displayed for IRC users also.
- Strips out mIRC color codes and other annoying things aren't supported by DC.
2.3 (September 26, 2005)
- I found a flaw in the previous implementation of Info-sending that could cause rolling disconnections under certain circumstances, because many IRC servers limit the number of targets that a client can send to over a short period of time. To get around this, DCgate now sends all on-join info messages to an "init" channel, instead of individually messaging each new user.
- Implemented a non-decreasing timer object, so that big changes in the system time can't lead to unexpected behavior.
- Replies to ctcp PING and TIME, in addition to VERSION.
- The standard CTCP replies are now rate-limited, using a neat little algorithm I found while reading through the UnrealIRCd source code.
- IRC error codes are now divided into 'fatal' and 'non-fatal'. A few specific errors merit a disconnection, but the rest just get displayed to the client.
2.2 (September 22, 2005)
- Bugfix Release
- Rewrote ip/hostname detection to use dnspython instead of the socket calls. This fixed some bugs, simplified the code, and made detection more robust.
- Origin-matching regular expression now allows for a ~ before the username.
2.1 (September 15, 2005)
- InfoDelay is now simpler and more efficient. Replaced a list with a heap, and replaced a polling loop with smarter management of the select() call.
- Added a watchdog timer when logging on, to close the connection if the login fails to complete after ~60 seconds without throwing any other errors.
- Placed a limit on multipart messages to prevent flooding and confusion.
- Code divided between a few source files for better organization.
- Turned some ugly if-chains into O(1) dictionary lookups.
- Switched over to Python's string formatting operator for most of the text output.
- Automatic IP replacement is now all-or-never (configurable in the ini file).
- Merged what little remained of IrcAsync into the main program.
- Stricter compliance with the DC protocol: Nicklist and user info won't be sent until after the client requests them.
- Improved handling of "impossible" IRC/DC messages.
- Lots more comments in the code.
- Changed search limit from 1-per-5s to 3-per-10s
2.0 (August 6, 2005)
- Added a line to catch this really weird connection error I just noticed. It might have only been a problem on Linux.
2.0rc3 (June 2, 2005)
- When setting the topic, deobfuscate the $ and | characters.
- Added the /nicks command to list the invisible IRC people
2.0rc2 (May 15, 2005)
- Fixed bug that prevented passive mode from working
- Added CS and ECN to the halls list
- Some minor tweaks to restore compatibility with (older) Python 2.3
- Re-enabled the "MODE +x" masking of hostnames (but not IP addresses)
- Better hall-key resolution when the server can't get your hostname
2.0rc1 (May 6, 2005)
- Fixed some crazy behavior in response to a KICK message
- brought back the /version command
2.0-test1 (May 5, 2005)
- MyINFO messages on login are delayed randomly to reduce chances of IRC flooding
- restructured most of the program to be more object oriented
- server/channel/version info is now stored in a TXT record in DNS for dynamic reconfigurability
- extra non-IRC characters are now allowed in DC nicks, through the use of escape sequences
- users are able to set a new channel topic (when it's not locked)
- nick hashes have been moved to the username field in IRC
- added p-commands, to let you view hall stats privately
- optionally block the output from public commands
- source authorization is based on IP or hostname, in case the hostname lookup fails
- hall names now appear in the "Connection" field, rather than the description
- always responds to $GetINFO packets, when the info is available. This causes certain clients to behave better.
- messages from IRC users are visible in the main chat, with their nick enclosed in [brackets].
- server messages are transmitted as CTCP replies, so IRC clients can be set to ignore them.
- default port number changed to 6473, to avoid privlieged ports on UNIX-like systems.
- uses a self-NOTICE to determine hostname, maximum line length, nick length, etc.
- mild anti-leech: users who don't share anything aren't able to make connections
- added a hashbang for running the script directly on UNIX-like systems
- stripped down the ircAsync library to do simpler dispatches.
1.3 (January 20, 2005)
- built with Python 2.4
- Fixed a race condition that would sometimes mark yourself as "Unknown" and sharing 0 bytes.
1.2 (November 13, 2004)
- built with Python 2.4b2
- fixed 100% cpu usage bug when server has problems
- tries to connect to an alternate server when certain problems occur
- when a new version is released, it provides a URL (from the chan topic)
- displays current channel topic (if any).
- Included "Kill DCgate" shortcut
- Added /commands, /version, and /topic
1.1 (October 18, 2004)
- built with Python 2.4b1
- added /shared command
- Obfuscated the channel password
- IRC address determined by a dyndns hostname.
- When logging in, reports the actual server address.
- Properly calculates the exact maximum line length.
- Automatically determines user's IP address instead of saying "client is confused..."
1.0 (October 12, 2004)
- built with Python 2.4a3
- new Python fixed the connection timeout bug on Windows
- Added IRC channel password
- Added the ability to see search results from yourself.
0.6.2 (October 1, 2004)
- Inserted DCgate version into the ++ tag.
- Improved handling of hall suffixes in description
0.6.1 (September 29, 2004)
- Fixed critical nick list bug, which caused bad things to happen when the count hit 30 or so.
- Replies to CTCP VERSION requests
0.6 (September 28, 2004)
- IRC address pulled from a geocities webpage. Effective, but not very clean.
0.5.2 (September 27, 2004)
- IRC address was locked to BS-Fnet's round-robin DNS. turned out to be a bad idea.
0.5.1 (September 26, 2004)
- IRC address was chosen randomly from a list of 3
0.5 (September 26, 2004)
- Realized ~ was not a permitted nick character, and replaced it with |
- DCgate version visible in the IRC /whois
0.2 .. 0.4 (September 25, 2004)
- New, shorter command formats
- Restricted connection requests to private messages.
- Added the /me command
- Removed special prefixes from nicknames, just in case.
- sends keep-alive messages to prevent router drop-outs.
0.1 (September 24, 2004)
- First public test release
|