imcserver/config/
imcserver/src/
IMC2 AntiFreeze Router - Changes since 3.10
-------------------------------------------

This is not necessarily a detailed list, just a general rundown based on a diff file
that was used to document the changes.

Changes in RT-4:

* Implemented the imclast tracking tables. imc-laston packet created.
* Reinstated the hotboot functionality.
* Added imcfread_long and imcfread_ulong to handle timestamp data in files.

Changes in RT-3a:

* MD5 encryption code fixed. Was having issues with ASCII chars 9-13.

Changes in RT-3:

* MD5 encryption code has been replaced with a more portable version.

Changes in RT-2:

* All references to "hub" changed to "router".
* Webstats script updated to reflect change to "router" vs "hub".
* Added info dump to webstats support. Drops remote info list to file.

Changes in RT-1:

* New name, obviously.
* Copyright headers updated.
* Remote info keeps track of network names for future use.
* close-notify changed back to using host name.
* hubflag variable name changed to router.
* iced_readchannel requires a name before it will link to the channel list.
* who output for router connections displays the type of connection.
* Trivial typos fixed in some log messages.

Changes in 3.31:

* Added support for MD5 Authentication of supporting clients and hubs.
* Logs will attempt to identify connection by IP if mud name isn't known yet.
* Moved banned IP check in clientpassword() to first priority.
* If registered mud is connecting from the same IP, old connection will be dropped.
* Remote administration functions require MD5 password for added security.

Changes in 3.30:

* Reinstituted remote hub administration commands.
* Removed the hotboot function. Did not work properly.
* Added reboot check event to replace hotboot code.
* SIGTERM now performs a complete shutdown of the hub.
* Increased spoof protection and packet screening.
* imc_name, imc_port, imc_bind all moved to imc_siteinfo struct.
* clientpassword function responds with more informative errors to client.
* Added IMCKEY macro for file loading.
* Added imcfread_* functions to read cleaned up iced file handling.
* iced file load and saveroutines cleaned up heavily.
* Channels now have default localnames and send them in ice-update.
* Logic error corrected in iced_load_oldchannels.
* Channel localname and permission can now be set using imccommand.
* Bans now kick connections properly when first added.
* imc_shutdown_port consolidated into imc_shutdown_network.
* iced_recv functions consolidated into imc_recv.
* Removed "notset" and "none" from channel perms.
* Updated imc_getarg with client version of code.
* imc_hasname returns bool instead of int.
* ice_audible returns bool instead of int.
* inpath returns bool instead of static int.
* checkrepeat returns bool instead of static int.
* imc_close_notify and related functions use INFO struct instead of name.
* imc_close_notify no longer sends version ID tag.
* Passwords no longer used in reminfo-destroy. No longer required.
* Removed imc_siteinfo.email
* Removed imc_setup_reconnect.
* Removed iced_init function.
* Channel creators line no longer required to start hub.
* Sealed a memory leak in imc_delete_reminfo.
* Sealed a memory leak in imc_extract_connect.
* Sealed a memory leak in imc_delete_info.

Changes in 3.25e:

* Channel refresh now sent as a forced event at hub reboot.
* Spoof protection added to prevent routing hijacks.

Changes in 3.25d:

* Added ability to add hubs that behave like Connection2 muds.
* Webstats file location defined in config file now.

Changes in 3.25c:

* Added URL processing to webstats script and code.

Changes in 3.25b:

* Reduced the broadcast packet spam generated by a mud or hub logging on to the network.

Changes in 3.25a:

* Fixed a crash bug in iced_recv_command.

Changes in 3.25:

* Added Xorith's statdump PHP code for web statistics.
* Implemented Rogel's fix for channel echo problems.
* Restructured the directories where files are stored for better organization.

Changes in 3.24:

* Netname sent during connection handshake now.
* Setup a hub-only multicast system.
* reminfo-destroy now uses new multicast system.
* Fixed broadcast bug in forward().
* Connection status on imcwho now reads as either online or offline.
* Added copyover feature. Can now reboot without dropping connections.

Changes in 3.23a:

* Clients can now ask for their connection data to be removed via the network.

Changes in 3.23:

* Modfied config file format to differentiate hubs.
* Added 'bool hubflag' to imc_info struct to distinguish other hubs.
* Muds who don't connect for 14 days will now be automatically removed.
* Mud removal from info list is sent to other hubs so they can purge their remote info lists.
* Autoupdate file supports auto-adding hubs with the new format.
* Removed the comma() formatting function. Useless.
* Cleared all aggressive warning flag errors from the code.

Changes in 3.22b:

* Autosetup handling interfered with 2.x and 1.x client authentication and has been reworked.

Changes in 3.22a:

* Applied hub level local-echo fix.
* Bugfix in iced_privmsg applied.

Changes in 3.22:

* Protocol version taken back to 2.
* can_forward changed from static int to bool.
* broadcast and isbroadcast in forward function changed to bool variables.
* Version check removed from imc_addnewmud. "unsupported" packet no longer sent.
* Autosetup 'command' in clientpassword added to support non-version dependent autoconnect function.
  - Temporary fix to provide autoconn to clients using V3 to indicate this.
* Hub brings connection version down to it's own version to avoid compatibility issues.
* Config file will save with the current hub version when doing updates.
* BUG: Broadcast packets were not being sent back to the mud who sent them. Affected channel displays.

Version 3.21 was skipped to resynch with new client version.

Changes in 3.20:

* Protocol version raised to 3 for support of autoconn setups.
  - imc_addnewmud function added to handle autoconn support.
  - serverpassword and clientpassword modified to accomadate autoconn.
* Channel file renamed back to iced to maintain compatibiilty with old hub setups.
* Added support for hub level bans. Old ignore system had been removed. (!)
  - Added ban file to hold ban data.
  - Added IMC_BAN struct for data tables.
  - Added host field to IMC_CONNECTION to support IP address bans.
  - clientpassword checks connection host before allowing complete connection.
  - Bans can be added and removed using the autoupdate feature if enabled.
* Control socket listens for 3 queued connections now instead of just 1. *boggle*
* Added disconnect bool to IMC_CONNECTION struct to delay disconnect until after messages are sent.
* Memory handling macros updated to the latest versions.
* Default channel level now sent down by the hub with the ice-refresh packets.
  - This is used with the 3.20 client permissions system.
* Added autoupdate field to imc_siteinfo_struct for config file control of update file.
* Added private field to imc_siteinfo_struct to allow hubs to deny autoconn. Controlled by config file.
* Added connects field to imc_siteinfo_struct for counting the number of connections in the config.
* Added maxconnects field to imc_siteinfo_struct to allow control over how many muds can connect. Config file.
* log() function renamed to imclog() to shut GCC 3.3.x up.
* imc_saveconfig is only called by check_mudsfile if an update actually succeeded.
* Network name can now be specified in the config file vs hardcoding in send_keepalive.

Changes in 3.15: [These have been documented by myself since a changelog for this can't be found]

* Connection flags removed. No longer used.
* Invisibiliy states removed. No longer used.
* IMC_KEEPALIVE_TIME definition removed. No longer used.
* IMC_KEEPALIVE_TIMEOUT definition removed. No longer used.
* IMC_DROP_TIMEOUT definition removed. No longer used.
* Spam counters, definitions, and struct fields removed. No longer used.
* IMC_SHRINKTIME definition removed. No longer used.
* IMC_PARANOIA definition removed. No longer used. Hub is always paranoid now.
* Activation states renamed as connection states and stored in an enum.
* LSS, MSS, and SSS string size values defined. MSL, MIL removed.
* SFCLOSE macro adpoted from DOTDII codebase FCLOSE macro.
* IMC_IGNORE structures removed. Ignore support removed.
* imc_isignored function removed.
* Channel policy reduced to open or private. policy field in imc_channel struct changed to a bool and renamed 'open'.
* Flag state/table struct removed. No longer used.
* stamp field removed from imc_packet. No longer used.
* flags, timer_duration, rcvstamp, noforward, and connect_attempts fields removed from imc_info struct. No longer used.
* alive, type, ping, hide, and route removed from imc_reminfo struct. No longer used.
* timed field removed from imc_event. No longer used.
* imc_char_data removed.
* name, port, www, details, and flags removed from imc_siteinfo_struct. No longer used.
* chancreators added to imc_siteinfo_struct to remove hardcoded definition.
* imc_prefix variable removed. No longer used.
* imc_active variable removed. Replaced with connection state variable.
* strlcpy and strlcat added for prevention of buffer overflows.
* calls to strcpy, strcat, and imc_sncpy changed to strlcpy and strlcat.
* imc_sncpy removed. Superceded by strlcat.
* Memory handling macros moved from router.h to imc.h
* router.c and router.h deleted. Functions moved to imc.c and imc.h
* iced file renamed as channel.
* FreeBSD file locking defines removed. No longer used.
* imc_logon variable removed. No longer used.
* istat ping monitor variables removed. No longer used.
* GETSTRING macro removed.
* imc_clone_data function removed. No longer used.
* imc_slower function removed.
* imc_hubinpath function added.
* STRFREE calls changed to DISPOSE calls.
* Various error messages made more informative.
* Channel refreshes only sent when requested by clients instead of at regular intervals.
  - Note: This may have broken support for 1.03g since it doesn't seem to maintain its channels with this version of the hub.
* Automated connection list updating added to allow adding muds without rebooting the hub.
  - Uses an 'update' file in the hub's main directory. Checks every 15 seconds.
* substr function removed. No longer used.
* imc_send_chat function removed. No longer used.