Version history for Henry Michaels Beta versions ================================================================================ Henry v0.39 +Fixed parsing and output of the who-set-topic-when code from the server. +Added internal event list for executing actions at preset times. +Added ARexx commands ADDEVENT, to add an event, and GETTIMENOW, to get the current system time (seconds since something in the 70s). ================================================================================ Henry v0.38 - Henry Public Beta 4 +Removed the ARexx port from the GUI subtask. +Wrote my own ARexx port in the main Henry program. +Included ReadArgs() parsing of arguments to ARexx commands, to make it as powerful and easy to extend as the MUI version of the port. +Henry now correctly parses users with voice on the channel when he joins. +Fixed a problem with the return value of the GETUSERS ARexx command. +Hopefully fixed a series of hits on some bogus ARexx commands. +Completely removed the GUI from the main Henry program. +Fixed a bunch of hits when not giving an argument to the FINDDBITEM command. +Now won't allow access levels > 255 in the config files anymore. +Added loading and starting of external plugins. +Added autostarting of plugins on Henry startup. +Fixed a seglist bug in spawning of subtasks/plugins. +Now correctly notifies subtask that they should die, and waits for them. +Fixed a problem with ARexx making lots of hits under certain error conditions. +Added a pretty cool varargs interface for sending commands to subtasks. +Very long lines (by for instance ARexx scripts) are now divided into several lines to avoid going past the maximum line length allowed by IRC. +Removed annoying error output from unknown ARexx commands to shell window. Thanks to Sigbjørn Skjæret. +Added a LOGPUBLIC ARexx command, to add information messages to the public log. +Fixed an IronDuck hit caused by an empty subtask lists and a brain fart. ================================================================================ Henry v0.37 +Fixed a silly bug that made every authentication be successful. +Added simple internal support for ignoring flooders. +Fixed some enforcer hits that occured when someone outside the channel tried to authenticate themselves. +Fixed a very silly parsing bug in the config reader that would some time trash the user database. +Added an ARexx "ADDNEWS" command. Parameters are the same as for the regular ADDNEWS command. +Added internal SVIEW command, used for looking at some stuff on your users. +Now correctly quits upon recieved CTRL-C signal. For instance, this allows Miami to automatically quit Henry when shutting down. +Henry no longer logs private notices as public messages. +Added CTCP commands ECHO, SOURCE and CLIENTINFO. +Henry now handles CTCP ACTIONs properly, even when someone is ignored. +Wrote a new memory handler subsystem for Henry. This has so far led to the discovery of quite a few (minor) memory leaks, and will report any memory mishappenings to stdout. +Fixed a bug in the RAW ARexx command. +Added a TOPIC ARexx command. The argument is just the topic you want to set. +Internal TOPIC command no longer accepts empty strings as arguments. +ARexx scripts are now properly executed without Henry being started from it's home directory. +It now takes 10 msgs in 10 seconds to make Henry ignore you, instead of 5/5. +Updated the installer script to the point of being useful. +Removed a memory leak and potential crash condition that could occur when Miami told Henry to quit. +Henry now gracefully moves on to the next server if all his nicknames are in use on the current one. +Fixed a LAME bug caused by a buffer overflow when saving users. Thanks to Simeone Tellini. +Fixed another buffer overflow when giving very long arguments to ARexx scripts. +Reduced internal program stack from 50k to 16k, after profiling and figuring out what Henry actually used. ================================================================================ Henry v0.36 +Added internal support for a list of external subtasks under Henry's control. +Fixed a few parsing bugs that were responsible for Henry crashing on DALnet. +Added a CHECKPASS command to authenticate users with their passwords. +Added an "Auth" option to commands - you will only have access to commands that have Auth set to True if you have authenticated yourself, no matter what your access level is. +If you have a password, you must now authenticate yourself before you can set a new one. +Henry now warns about possible password compromisation if CHECKPASS or NEWPASS commands are given in public. +Separated BearConfig's history into it's own file. ================================================================================ Henry v0.35 - Henry Public Beta 3, released November 13th, 1997 +Converted to ADT-V2 searching for Aminet find. More robust and compatible. +Fixed a parsing bug in Aminet find. +Added the Henry symbol to the About requester. +Fixed a little problem that could cause Henry to time out the first find request prematurely if looking up the host name took too long. +Now cleans out special characters (bold etc.) from own output before writing it to the public log file. +Fixed a bug that occured when the Aminet search returned items, but Henry filtered them all out. +Added crypted passwords and a new command "NEWPASS". The passwords aren't used for anything yet, but they will. Oh yes, they will. +If a user in the channel sends a private Aminet find request, and then leaves/ quits/is kicked out before the find is done, it will now be removed. +Should now be a little better at handling ERRORs from the servers. +System log now _properly_ reports the module that gives an error. +Fixed some enforcer hits that happened when the server disconnected us due to an error. +Started implementing a 30 character nickname limit, to be able to run the bot on DALnet etc. ================================================================================ Henry v0.34 +Added a "rollover" log function - a new public log will be opened at 00:00 every night. This keeps public log files from becoming hideously large, but makes a lot of them. :) Thanks to Jamie "Colitis" Walker for suggesting. +Removed the annoying kneeling of the bot. Related to the next item. +Added autogreet messages. If a user has a "Greet" line in the Config/Users file, this line will be sent via notice to the channel when (s)he joins. +Added internal command "SETGREET". It's purpose should be clear. +Added internal command "AMINETFIND", used to search an ADT server for Aminet files. +Added "FindServer" option to the Config/General file. The one most people use is ftp.wustl.edu. +Improved "NOTICE" support, nothing much other than some code cleanup tho. ================================================================================ Henry v0.33 +Fixed a bug that would not let Henry do a "seen" on someone who had been on the channel in this current session. +If you do a seen on whoever has the same host mask as the bot itself, it will report it correctly, and not treat him as still on just because the bot is. +Fixed a mini-bug in nickname parsing in the seen-routine. +Changes in access levels were not properly set troughout the system when the SETACCESS command was being used. +Removed an enforcer hit that would occur when someone who was not in the user database left the channel. +Added a mostly useless but functional menu. +Started rewriting network routines to handle multiple connections. It will be a painful birth, but worth it in the long run. This seemingly works right now, but there might very well be bugs in this code - there always are with major code changes. ================================================================================ Henry v0.32 +Fixed some potential crashes that were caused by brain damaged handling of missing configuration files. +Added "RAW" ARexx command to send strings unprocessed to the IRC server. +Database item lengths are now dynamic. Removes some potential crashes. +Public messages sent by Henry trough ARexx commands now show up properly in the public log. +Added internal "INFO" command to show information about the different commands. +Fixed the internal command "COMMANDS" so that instead of listing one command on each line with the command info, it gives you a space separated list of command names ONLY. +If someone tries to create new users with higher levels than their own, the default access levels are used. +Little brain fart: Would include more than one word in the search for database items. +Added new internal command - "SETACCESS". It is used to set the access level of someone in the user database. +Fixed a bug that made Henry not try again with his next nick if the first one he tried was already in use. ================================================================================ Henry v0.31 - Henry Public Beta 2, released October 3rd, 1997 +Added the following internal commands: Op, Deop, Topic, Kick, AddUser and AddMask. Note that AddUser does NOT add any masks to the new user. +Fixed some potential hits in the routines that checked access/fileaccess levels based on host names. +When adding a mask to a user, and someone on the channel fits that mask, they are now automatically updated in the GUI, as well as notified of unread messages and news items. +Will now also update "seen" info on people still in the channel when Henry leaves. +Changed the arguments passed along to ARexx scripts - now the channel that we're in and whether or not the user expects a "public" reply are put in as arguments. +Fixed some annoying feedback messages that would end up as public notices. +Fixed a bug that could give a hit and destroy Config/Users when the bot was quit before it logged on properly. +Fixed a very annoying bug that would eat CPU and keep Miami from being able to authorize IRC connections. Thanks a lot to Holger Kruse! ================================================================================ Henry v0.30 - Developement set back quite a bit because of a very unfortunate hard disk crash. Re-implementing lost features will take some time, and then new stuff will be added. +A hang that occured when playing with MUI prefs has been fixed. Thanks to Jacek Trzmiel. +Henry Version Control (dev/c/hvc.lha) is now being used for better and cleaner version bumping. I'm sure this is worth mentioning. No, really. +Added all database functions again, only took about 2 hours. +FINALLY removed an error that has been a problem for a LONG time - Henry would ALWAYS get an error 9 on the first connection, but no more! MUA HAW HAW HAW HAW HAW HAW HAW HAW HAW HAW HAW HAW HAW HAW! +Removed a batch of Enforcer hits in connection with logging on and off. +Added the news support back in. +Now reports the ip address of the server it is connecting to ;) +News database, message database and the custom databases are now all stored in the Config/ directory. +GUI now correctly updates when someone changes their nick. Thanks Tonix. +Now handles extension 333 - who set the topic and when - correctly. +Henry could some times give part of the last message as an argument to an ARexx script. Fixed, thanks to IronDuck for discovering. +Uptime command returns a notice and not a privmsg. +ARexx commands now return error code 10 when called with improper arguments. +Fixed (maybe) an error with Henry never giving up on problematic servers. This needs more testing, tho. +The nick names of people who vote are now part of the vote report. +Henry is now faster and more reliable if you try to quit it while you are waiting to be logged on to a server. +Could add "empty" DB entries if no arguments were given to the ADDDBITEM command. +Removed a possible (but unlikely) enforcer hit and blatant bug from the login routine. +Restructured the event handler to better handle subtasks quitting and deciding when it is safe to quit. +Removed a racing condition when the GUI subtask was too quick at quitting. +Command names are not hardcoded into the system anymore. +Hopefully fixed a problem with how servers return WHO info on whatever they feel is relevant. Could cause a crash. +Fixed a program deadlock (not dangerous) that occured when no server was found. +Would accidentally not delete FAQs that already existed with the same name when adding a new one. +Private message database wouldn't get saved/loaded again. Oops. +Now saves the session uptime in the system log file upon quitting. +Recompiled with SAS/C v6.58. ================================================================================ Henry v0.29 +Should now handle extension 333 - who set the topic and when - correctly. ================================================================================ Henry v0.28 +Henry will now notify everyone on the channel that can get news when a new news item has been added. +Fixed a bug in the "Seen" command - it wouldn't know that someone who joined after itself was online. +Added more verbose output to the "Seen" command. +Fixed some tiny bugs in News functionality. +Added a messaging system similar to that of Espresso. +Fixed a little bug in the CheckNews routine. Thanks Fosters. +Removed some Enforcer hits connected to getting messages, saving the user database and news operations. +Henry now gets the topic of the channel when it joins. +Fixed another little bug that would tell people about new news twice. +Added a condition so that the bot wouldn't send messages to itself instead of it's owner when they were using the same account. +Fixed a little bug when people quit with a one-word signoff message. :) +Now Henry deletes the user list if he loses the connection to the server. He didn't before, and that led to double user lists when he came back. +Fixed an enforcer hit that happened when losing the connection to a server. +Added (not very well tested) support for Cobranet's evil 513 extension - which is probably there to keep bots out ;) +Instead of a BOOL indicating wether or not a user in the database is on, Henry now keeps the number of times he/she is on. This fixes some bugs. +Added a little "Looking up host" text - if this stays in the window for a long time, you might have a DNS problem. +Fixed a potential memory leak and/or crash that could occur if Henry got two or more quit requests (closewindows) while the main program was busy. ================================================================================ Henry Michaels beta release 3 - March 31st, 1997 Henry v0.27 +The user list in Henry's window now uses the Tiny font configured in MUI. +Removed an endless loop of Enforcer hits from Henry's GUI creation, that happened due to a brain damaged version string. Thanks IronDuck. +Fixed the GETNICK Arexx command. Also, first nick on the list is now 1, not 0. +Removed Enforcer hit that happened when Henry opened a requester before the GUI itself was opened - i.e. if no TCP/IP-stack was found. Thanks IronDuck. +Fixed a silly one; It put the server name instead of the real name when logging on to the server. +Rewrote and removed large parts of the logon routine, making the main loop much more pleasant. Should also respond better to user input now. +Now the userlist notices nick changes. This previously prevented dudes that changed their nicks and then left from being removed from the list (silly). +Fixed a minor memory leak and a problem with nick changing in the internal (non-GUI) database. +Now uses Wait() instead of DoWaitSelect() when there is no connection to avoid some problems when no server can be reached. +Fixed up some of the socket code, thanks to Logixs for some tips :) +Now outputs some info when recieving votes (locally only), to help out the bot admin while conducting long/lagged votes. +Fixed a long standing brain fart that caused an error on the time of the first vote in a vote report. +Fixed another few glitches in the socket code. Thanks Eppu and Logixs. +Added database functionality to be used for FAQs, URLs etc. Three new internal commands to handle them; FINDDBITEM, ADDDBITEM and DELDBITEM. +Fixed a CTCP parsing bug that wouldn't remove the closing \1 on incoming msgs. +Fixed a minor bug in the Notice function - would never send to channel. +Fixed a bug in the public log function that would lose parts of a message when it had to be split up into more than 1 lines. +Added a startup script function. The script to edit is ARexx/Startup.hrx, and it isn't called with any arguments. It is executed as soon as Henry joins the channel. Thanks to Clavin for nagging about it. ;) +Added "news" functionality. This change also brought with it a change in the Users config file and a lot of new functions that will be nice to have. +Added the "seen" function - it works, but isn't finished yet. ================================================================================ Henry Michaels beta release 2 Henry v0.26 +Henry now autorejoins if he is kicked from a channel (thanks to Clavin for pointing this out). +Changed the arguments sent along to ARexx scripts. +Fixed a very annoying bug with the multithreading - the subprocess freed the seglist of the whole program! Thanks to alfo for enlightening me on this. +Added an annoying requester informing that this is a beta version. :) +Fixed some pretty annoying ARexx bugs that were caused by some misbeliefs about how multitasking works. I spend too much time on the PC at work :) +Fixed a minor memory leak that happened with ARexx ACTION commands. +Implemented a new version revision system. For now, just to help me keep track of how many builds I've done etc. ================================================================================ Henry Michaels beta release 1 Henry v0.25 +Getting of hostnames is now more efficient. Also, cleaned up this part of the code and removed some bugs. +FINALLY removed the Enforcer hits from the ARexx port. BIG thanks to Karl Bellve and Oliver Wagner! +Now displays information about channel users in the window. Also adds/removes them when they join/leave/quit/get kicked. +Added ARexx commands GETMYNICK and GETNICK. +Made the main window resizeable vertically ;) +Ordered one of them abflex things. +Started working on internal multithreading. For now, this will mostly result in the GUI being run by its own process. Took about a week of bugfighting, too. +Removed a silly bug in the ARexx commands (happened due to the multithreading stuff). +Removed ARexx command "REPLY". +Added ARexx commands "TELL" and "NOTICE". +Improved the multithreading slightly. Now the GUI process actually gets the correct quit message when the main process decides to quit :) +Fixed a brain fart that made it lose the first connection when you have a fast connection to the server (i.e. localhost). +Changed the format of the system log slightly. Should be more readable now. +Fixed a problem that could cause some stupid servers to recognice Henry as a bot . ================================================================================ Henry v0.24, BearConfig v0.4 +Fixed a stupid bug that could cause Henry to crash if someone gave a command that was longer than 20 characters...thanks Fosters! +Will now actually tell you if it can't find one of the configuration files. +Many more internal commands to use. +The GUI is being implemented. Just some status texts for now, plus you can kill it with the close gadget ;) +Stopped linking with net.lib, which saved a few bytes. +Pops up some ReqTools requesters when fatal error conditions occur. +No hostname is required anymore, as the IRC server overrides this anyway. +Fixed a few lame stack problems - thanks alfo! +A few displaced error messages got cleaned up - again, thanks to alfo! +Now uses PROGDIR: for all file accesses, thanks to alfo (!) for pointing this out. +Cleaned up this History file a tad. +Added a simple installer script. +Started adding the ARexx port. Some evil bugs removed, just a few simple commands supported (see Docs/Henry.guide) to prove that the port actually exists. +Removed about 70000 Enforcer/CyberGuard hits from the login routine. Remind my subconscious not to be so clever the next time it is adding bugs. +Fixed problems with access restrictions for commands based on ARexx scripts. +Added support for multiple connections needed for DCC CHAT, SEND and GET. +Cleaned up the routine that checks for activity so it doesn't use so much CPU in certain cases. +Now automatically gets hostnames of everyone on the channel right after logon. +Started making the GUI a little more advanced and useable. ================================================================================ v0.23 +Rewrote the whole message handler. Big mess now gone. +Changed some internal structures for better and faster operation. +Fixed the anti-flooding routine. The bot will not flood itself off now under normal circumstances. +Started adding support for custom command definition +Added CTCP Time handling :) +Fixed a bug in the server PING handling...this one kills me every time :) +Priority of outgoing messages now count. Server PINGs come before CTCP TIME requests etc. +Made the reading of configuration files a little more robust. +Added some time functions to ease up a bit here and there. Thanks to alfo for the example. +You can now define the commands as you want, but it does not respond to more than just QUIT and COMMANDS right now. This is easily added in half a day. +Fixed a hairy bug with server pings during logins. +Fixed a mini bug with hostnames in the login routine. +The public logging is a little more verbose about logging in now. ================================================================================ v0.22 - No sad attempt at a funny comment this time +New async. output handler routine, should avoid flooding now (but I know it doesn't due to a bug). +Much improved routine to get online to a server. 90% of previous failed connections would now work. +The priority of the bot is now set to -1..just seemed like a good idea..:) +Added a little condition to avoid some busy looping in the async. handler. +Won't try to connect to a server for all eternity (if we can reach it but not log in) anymore. ================================================================================ v0.21 - Fixes and fixes..are you people never happy? ;) +Added the Config/General options Debug, PublicLog and ShowPublic. See Config/Examples/General +Added and fixed some evil bugs in the debug routine, now Logs/Debug.log should work. +Changes in the archive: Default/ no longer exists, contents moved to Config/Examples/ +Started writing the AmigaGuide documentation. It's quite useless. +Another stupid bug removed from the debug routine, caused guru on long lines. Thanks Ink! +Silly case sensitivity removed from host matching, thanks again Ink. :) ================================================================================ v0.20 - Even more little fixes and addons..someone kill me +Added the Vote command. What a beast! Lots to fix and test still. +(Two days later) Found an EVIL bug that crashed upon quitting...damn missing NewList(). +Added an entry in Config/Levels - VoteControl, deciding who can create votes etc. +Fixed a bug that gave everyone top access all the time, which was a Bad Thing (tm). +Removed the EVIL vote bug...a BIG THANKS to Logixs for pointing it out. +Removed another little bug that let people vote twice. +Added sorting of votes..damn, those exec lists are nasty ;) +Cleaned up some of the vote code (again). +Added a silly icon that will be replaced with anything better anyone draws me :) ================================================================================ v0.19 - Major reconstructive surgery +The logon routine is rewritten. No more UGLY busy-waiting for the server. Also started adding support for PINGs at login. Thanks Shape and Eppu. +Takes better care of server aliases now. Thanks Kinetik ;) +Added a bunch of vote commands...2 hours to add, 3 hours to debug..;) You can create, open and close votes and add + list candidates right now. +Fixed a few little bug babies that hadn't led to anything yet. ================================================================================ v0.18 - Man, there are still bugs. But I fixed some and added some stuff +Fixed the handling of kick messages. +Now the bot reads the Config/Levels file and utilizes it. +Added an "Op" command. Doesn't take an argument yet. +Renamed "FileAccess" to "File" in Users file to avoid a STUPID bug. +Fixed small bugs when doing "info" or "cchar" commands with improper arguments - thanks Shape! +More bugs in "commands" command removed. Now lists them properly. ================================================================================ v0.17 - Minor update, some bug fixes and addons +Fixed a bug that locked the Config/Users file. +Added command line option NoLog to turn off logging. +Added command line option Debug to turn on extended debug info in Logs/System. +The bot now autoops anyone with 250 or higher access. +The bot now greets its master when he/she joins. :) +Changed the name of the executable to Henry to avoid hatred. +Added and fixed a bug that caused it to reply badly to unknown commands - thanks Ink! +Config files are now in Default/ in the archive, so it won't overwrite your files. Copy them from Default/#? to Config/ to get a default setup. ================================================================================ v0.16 - Relatively feature- and bug free first closed beta release +No known bugs as we go into beta testing. +User parsing, command/CTCP parsing, configuration reading works. +Logging of everything that goes on in public plus some other events. +Parses channel mode changes correctly, AFAIK. +Added commands CChar, Access and Commands. ================================================================================