═══ 1. REXXchat User Guide ═══ AN INTERNET CHAT SYSTEM WRITTEN IN REXX FOR OS/2 Welcome to REXXchat, a free and easy way to turn your OS/2-based Internet-connected system into an IRC-like chat server that can be accessed with any VT100 telnet client. This document will guide you through the process of learning what exactly REXXchat is, how to set it up on your computer in the quickest, most painless way possible, and how to use REXXchat to the fullest. This guide is divided into the following sections: o System Requirements Explains what you need on your computer for REXXchat to be able to do its job. You may be surprised to find that once OS/2 is installed, you pretty much have everything you need. o How It All Works Because of the fact that all of the work, both client- and server-side is done on the host computer (yours), the interaction between all the components of REXXchat is not exactly simple. This section attempts to provide some clarification on that score. o Simple Installation A step-by-step guide to installing REXXchat on an average OS/2 computer which can connect to the Internet. The aim of this section is to provide a fool-proof way of getting REXXchat installed without having to worry about or understand how everything works. If you're in a hurry, or not interested in details, this is the place to go. o Using REXXchat Teaches you how to use REXXchat. If you're an IRC veteran, then you can probably give this section a miss, as any significant differences between REXXchat and IRC are easy to pick up on from the online help in REXXchat itself. o REXXchat Commands The list of commands that users have access to in the REXXchat environment. o IMPORTANT: Security Issues REXXchat is not secure. Do not allow untrusted users to connect to the current version of the REXXchat system. o Advanced Suggestions A few ideas for using REXXchat in some more advanced and complicated ways. A lot of these are things I'm thinking of doing myself. o To-Do List A list of features I plan to implement in the near future to come closer to, and in some cases move beyond the flexibility and power of IRC. If you have ideas to add to this list, I'm always interested in suggestions! o Known Bugs All the glitches, gotchas and all-out bugs that I'm aware of in REXXchat at the time of release of this version. Hopefully a short list. o Administrativa License, disclaimer, e-mail address, and other boring stuff. ═══ 1.1. System Requirements ═══ All that is really required to sucessfully run REXXchat is an OS/2 system with the TCP/IP and REXX components installed. More specifically you need: o An OS/2 System capable of running REXX programs (REXXchat has not been tested with ObjectREXX!) o TCP/IP. This does not necessarily have to be a connection to the Internet. REXXchat can be used just as easily on a small TCP/IP network or on an office Intranet. o A telnet server capable of spawning a REXX program to host the remote user. The telnet server included with OS/2 Warp Connect or Warp 4.0 includes this feature, and a simple script to call REXXchat is included for your convenience. The Simple Installation section makes use of this server. ═══ 1.2. How It All Works ═══ As illustrated in Figure 1 below, REXXchat is not a simple system. It is, however, a well-organized one. This section attempts to give you a grasp of how the various components of REXXchat fit together and interact so that it is easier for you to understand the next section: Simple Installation. Fig. 1 - The organizational structure of a REXXchat system with three connected clients REXXchat loosely obeys a client/server model, where there is a main program, called the server, that serves as a host for all of the smaller programs (clients) that wish to use the service it provides. For this reason REXXchat has two main components. Firstly we have chatd.cmd -- the REXXchat server. Its role is to keep track of all the users who have logged into your computer to chat to eachother. It can accept a virtually unlimited number of connected users (any limitations are imposed by the OS/2 implementation of REXX or by system resources, not by REXXchat itself). Secondly there's chat.cmd -- the REXXchat client. It provides the interface for users to access REXXchat. This client differs from others that you may be used to in the Internet world in the fact that the client runs on the same computer as the server, even though the user of the client may be on a remote computer. I like to refer to it as a "remote-controlled" client, because the client is controlled over a telnet connection (which is itself a client/server system). To allow you to grasp how all this comes together to form a working system, let me take you through what happens each time a new user connects to your REXXchat system. This will allow you to observe each of the components in action. Firstly, a user someplace on the TCP/IP network (for example, the Internet) starts their telnet client and connects to your computer. The telnet server running on your computer accepts their connection, and spawns a host script, which provides the initial interface for the user to interact with your computer. In the simplest case, this script will do nothing more than spawn a copy of the REXXchat client (chat.cmd). The REXXchat client is now a program running on the host computer, and is being controlled remotely by the user through the telnet server. Next, the REXXchat client connects to the REXXchat server, which is also a program running on the host machine. The server provides the intermediary through which multiple clients can communicate with eachother. The client then asks the remote user to provide a nickname for him/herself, and the session can then proceed. Commands issued by the user are sent over the telnet link to the REXXchat client, which interprets them. The REXXchat client communicates relevant commands to the REXXchat server, so that other connected clients can be informed. If you don't understand the above, go ahead and read it again. It may help to refer to the diagram above while doing so, as they illustrate the very same thing (except the diagram shows what the system looks like when there are three connected clients). Basically, for each user wishing to chat on your REXXchat system, there is one telnet connection to your telnet server, which spawns one copy of the REXXchat client. There is only ever one copy of the telnet and REXXchat servers running. In the end, it is helpful for you to be able to understand everything that's going on, but not vital. You can quickly get a REXXchat system running in no time by just following the simple installation instructions provided in the next section, never having any idea whatsoever what you're doing. ═══ 1.3. Simple Installation ═══ By following the simple instructions below, you should be able to get REXXchat up and running in no time. It really isn't all that hard... really! Okay, I'll automate all this in future -- promise! 1. Place all of REXXchat's files into a directory of their own. Anywhere will do. The directory does not have to be on your LIBPATH or anything like that. Just find a nice spot on your hard drive and unzip the distribution archive into it. 2. Set up the telnet server. This process may differ if you choose to use a telnet server other than that included with OS/2. The choice is up to you, but I suggest you get REXXchat working with this, the simplest setup first. Then you can look into fancier options for telnet servers. a. Choose a telnet password. The telnet server included with OS/2 requires that any user connecting to your system must know a password specified by you. Every user uses the same password. You must set this password in your CONFIG.SYS file by adding the following line: SET TELNET.PASSWORD.ID=password Replace the word "password" (the second, lowercase one -- not the uppercase one in the variable name) with the password you want users to have to type when logging into your REXXchat system. For example, if you typed the line exactly as it appears above, users would have to type "password" each time they wished to use REXXchat. b. Set the telnet server to run at system startup. This can be done in the "TCP/IP Configuration" notebook, but the simplest way to do it is to add a program object to your Startup folder. To do this, open your Startup folder (commonly located in the System Setup folder on your desktop) and drag the Program template (in the Templates folder, also in the Programs folder in OS/2 Warp 4) to the background of the Startup folder. A properties (settings in Warp 3) notebook will open requesting a few specifics. Fill in the first page as shown in Figure 2. Fig. 2 - Settings for telnet server object You will probably want to name the icon "Telnet Server" or something on the "Icon" page ("General" in Warp 3), and set the program to "Start minimized" on the "Session" page. c. Reboot. Make sure you've saved the changes to your CONFIG.SYS file and shut down your system to allow changes to take effect. d. Create the telnet server script. OS/2's telnet server will by default dump all users to an OS/2 command line once they have correctly typed the password. Now, besides the fact that this would seriously endanger the valuable data on your system, it does not get the user any closer to being able to use REXXchat. The next thing we must do is specify what the telnet server should show users instead of a command line. To do this, we must write a simple REXX program that runs REXXchat. This program is included with the rest of REXXchat's files and is reproduced here: /* Telnet server script */ SIGNAL ON HALT SIGNAL ON SYNTAX MAIN: olddir = DIRECTORY('C:\REXXchat') CALL 'chat.cmd' CALL DIRECTORY olddir HALT: SYNTAX: '@EXIT' EXIT(0) You should find this listing matches the contents of the telnetd.cmd file included with the rest of the REXXchat files. You must do two things to this file to set it up for your system: 1. Change the C:\REXXchat on the sixth line of the file to the full path to REXXchat's files. You can do this by opening the telnetd.cmd file in any plain text editor such as E.EXE included with OS/2. 2. Move the file to the \TCPIP\BIN directory on the drive where you installed TCP/IP (commonly your OS/2 boot drive). If you do not wish to have OS/2's default telnetd.cmd replaced, it would be a good idea to back it up as telnetd.old or something similar. Leave all the other REXXchat files where they are. 3. Set the REXXchat server to start at system startup. Okay, we're in the home stretch, here... This process is the same as for the telnet server (step 2b above), except that instead of putting telnetd.exe in the properties notebook, you must put C:\REXXchat\chatd.cmd (replacing C:\REXXchat with the full path to the REXXchat files). You should also name the icon something like "REXXchat Server", and again make it "Start minimized". 4. Reboot. Make sure you've saved all your changes, then shut down and reboot your system for changes to take effect. 5. Test your setup. Now that everything is set up all that's left is to telnet to your own computer (thus playing the roles of user and host) to see if it all works. If you have configured TCP/IP on your system to assign yourself a hostname and IP address, all you have to do is go to an OS/2 command line and type telnet hostname where hostname is your computer. If you have not fully configured TCP/IP, then you will have to connect to the Internet to test REXXchat: a. Connect to the Internet. Hook up to your ISP as you normally would. b. Get your IP address. Most ISP's these days provide you with a new IP address each time you connect to the Internet. To find out your IP address for any given connection, go to an OS/2 command line and type hostid. This command will return your present IP address. Note this address. c. Telnet to yourself. Go to an OS/2 command line and type telnet 123.123.123.123 where 123.123.123.123 is your IP address as found in step b. You should now connect to your own computer with a telnet connection. It will prompt you for a password, and you must type the password you specified in step 2a. At this point REXXchat should start up and prompt you for a nickname. Everything from this point should be covered in detail in the section titled Using REXXchat. ═══ 1.4. Using REXXchat ═══ The Server. The two main components of REXXchat are the client and the server. The server doesn't have a whole lot to it. It runs, it manages the connections of clients, every once in awhile it'll spit out a message about a system event, but in general it stays pretty quiet (unless it crashes, in which case it spits out a big, fat error message!). Seriously, though, the server is not complex enough to warrant any text on how to use it. It runs, it's happy. One thing you may wish to note, however, is that it marks its presence on the system, so that if for some reason you try to start a second copy of the server, the second will detect the first and inform you that a copy of the server is already running. This is all well and dandy, but not being the perfect programmer I strive to be, the server has been known to crash in previous versions. There are no currently known bugs that could cause it to crash in this version, but that doesn't mean there aren't any. Now, if (when?) the server crashes, it sometimes fails to stop advertising its presence on the system before keeling over. This means that when you try to start a fresh copy to replace the one that's died, it will sometimes complain that a server is already running, even though it may not be. In such a case you will want to run the allclear.cmd program included with REXXchat. Warning!! Do not run allclear.cmd while a valid copy of the server is running as it will destroy some of the data structures used to communicate between the server and the clients. Unpredictable behaviour will result but one thing is for sure -- no new clients will be able to connect (the clients will not be able to detect the server). If you do this by mistake, kill all the client sessions and the server before restarting a fresh server. The Client. That about covers the server, now on to the interesting part -- the REXXchat client. Put simply, the REXXchat client is a simplified IRC client. Simplified because it's not finished yet. Hopefully someday REXXchat will be as flexible and feature-rich as IRC is, but not yet. I suppose this allows it to have the advantage of being very easy to learn. Any IRC veterans in the audience are welcome to skip this part if they wish. Be forewarned that there are differences, however. REXXchat, like IRC is a channel-based chat system, where conversations are separated into channels, or rooms. Once you have logged into the system, you assign yourself a nickname, which is the name you are known by in the REXXchat universe. Nicknames can be up to 9 characters long and may not contain spaces. You can change your nickname at will (with the /nick command) and everyone else in REXXchat will be informed of your new nickname (in the next version this will be changed so that only those users in the same room as you will be informed, as in IRC). The next step is to join a channel. A channel is a "room" in the REXXchat universe that users can join or leave. Channels are created when users enter them for the first time, so to create a new channel all you have to do is join one that does not yet exist. Each channel is identified by a unique name that can be up to 10 characters in length and may not contain spaces. Unlike IRC, channel names do not have to begin with a pound character (#), although some people prefer to begin channel names with this character out of convention. Once you have joined a channel you can observe and participate in the conversation occuring in that channel. Users in one channel are not aware of the goings-on in any other channel. In the present version each user can only be in one channel at once, but in future versions users will be able to join as many channels as they feel capable of keeping up with (as in IRC). Users are free to move from one channel to another at will, but in future versions special hidden and private channels will be added. Each channel has a topic, which is a string of text describing the purpose of a channel which can be set by any user in that channel (again, this may change in future versions). TIP: The current version of REXXchat limits each user to occupying only one channel at once. To circumvent this, however, users are free to log in more than once to the same REXXchat server (under different nicknames) and thus can occupy as many channels as they feel able to manage telnet sessions. Users can get lists of all channels, those users in their current channel and all users on the REXXchat system with them. All of the commands involved in the above are described in the next section: REXXchat Commands. Now let's take a closer look at the interface of the REXXchat client. Fig. 3 - The REXXchat client interface Shown here is what REXXchat looks like from the perspective of a client connected to your REXXchat server over a telnet connection. In this case the telnet client is OS/2's built-in telnet.exe, but it could just as easily be running on a Win95 or Unix machine. Basically anything that can run a telnet client supporting the VT100 specification and an 80x25 character screen can sucessfully use REXXchat. There are three basic elements to the REXXchat screen. The bottom-most line is the entryfield. Anything you type appears here, and it is in this space that you enter commands or type things you want to say. The entryfield expands to occupy more and more of the screen if you type more than one line (80 characters). The next line up from the bottom of the screen, highlighted with a grey background, is the status line. It will provide vital information that is always available at a glance. In the current version of REXXchat however, it only shows your nickname and the name of the channel you are currently in. On the far right it provides a reminder of the command to access the online help (/?). The remainder of the screen is the output window. This is where everything that is going on in REXXchat shows up. If someone in the same channel as you says something, it appears here. If someone sends you a private message, it appears here. Everything from things that you have said to error messages from the REXXchat server appear in this window. It sounds like a bit of a mish-mash, but each different type of item that can appear has its own distinct visual clues to identify it, so it really isn't very hard to follow. The newest additions to the output window appear at the bottom extremity of the window, with the older text scrolling upwards on the screen to make room for it. There is presently no way to review text that has passed off the top of the screen (unless of course your telnet client posesses a scrollback buffer). The following list demonstrates the appearance of the different items that can show up in the output window: *** Message goes here. A system message or event, marked by three asterixes (*) followed by a message. This can include people changing their nicknames, joining/leaving REXXchat, joining/leaving channels, and can also include messages from the REXXchat server and online help. Hi, there! The most common thing to appear in the output window is something "said" by a user. The line begins with the nickname of the user who typed the message in question enclosed in greater-than/less-than signs (<...>), followed by the message itself. If you were the one to write the message, your nickname is displayed in bright letters so that it stands out from the rest. * nickname jumps up and down. When a user executes an action (for example, jumping up and down), the line begins with a single asterix, followed by a description of the action (this always begins with the user's nickname, e.g. "* Kev does somersaults." or "* Amy runs up to you and giggles!"). -> nick2 Do you read me? [nick2] Loud and clear! When you send a private message to a particular user, you see the message preceeded by an arrow and their nickname. When someone sends a private message to you, you see the message preceeded by the originating user's nickname enclosed in square brackets. -> nick2 * nick1 makes a face at you. * [nick2] makes an even worse face back. Similarly for private actions, when you send a private action to a user, you see the action (beginning with your nickname) preceeded by an asterix, which in turn is preceeded by an arrown and the target nickname. When someone sends you a private action, the display looks much as it would for a normal action, except the originating nickname is enclosed in square brackets (as for a private message). And with that we have covered just about everything that can (should?) appear in the output window. Don't worry about memorizing it, it's all pretty evident once you begin using REXXchat. The only other thing you need to know to sucessfully use REXXchat is the set of commands. This, however, is covered in the next section -- REXXchat Commands. ═══ 1.5. REXXchat Commands ═══ The following table lists the syntax and meaning of each of the commands available to users in the REXXchat environment. At present there are no restricted commands, that is to say that all commands are available to all users. In future some commands will become restricted as I introduce user levels and other useful but complicated things. In all of the commands below, something enclosed in <> brackets is a required parameter which you must replace with an appropriate expression, and something enclosed in [] brackets is an optional parameter, which you can include if you wish, or leave out if you prefer. ┌────────────────────────────┬┬──────────────────────────────────────────────────────┐ │ Command Syntax ││ Command Description and Examples │ ├────────────────────────────┼┼──────────────────────────────────────────────────────┤ │┌──────────────────────────┐││┌────────────────────────────────────────────────────┐│ ││ ││││Say something publically to all the members of the ││ ││ ││││channel you are currently in. This is the most ││ ││ ││││commonly-used command; so much so that most people ││ ││ ││││don't even think of it as a command. ││ ││ ││││ ││ ││ ││││EXAMPLE: How is everyone tonight? ││ │└──────────────────────────┘││└────────────────────────────────────────────────────┘│ ├────────────────────────────┼┼──────────────────────────────────────────────────────┤ │┌──────────────────────────┐││┌────────────────────────────────────────────────────┐│ ││/me ││││Do something publically, which will be visible to ││ ││ ││││all members of your current channel. ││ ││ ││││ ││ ││ ││││EXAMPLE: /me jumps up and down! ││ │└──────────────────────────┘││└────────────────────────────────────────────────────┘│ ├────────────────────────────┼┼──────────────────────────────────────────────────────┤ │┌──────────────────────────┐││┌────────────────────────────────────────────────────┐│ ││/msg ││││Send a private message to an individual user. ││ ││ ││││ ││ ││ ││││ = target user's nickname ││ ││ ││││ ││ ││ ││││EXAMPLE: /msg Kev Psst... are you okay? ││ │└──────────────────────────┘││└────────────────────────────────────────────────────┘│ ├────────────────────────────┼┼──────────────────────────────────────────────────────┤ │┌──────────────────────────┐││┌────────────────────────────────────────────────────┐│ ││/describe ││││Do something privately, which will only be visible ││ ││ ││││to the specified user. ││ ││ ││││ ││ ││ ││││EXAMPLE: /describe Kev pokes you in the ribs. ││ │└──────────────────────────┘││└────────────────────────────────────────────────────┘│ ├────────────────────────────┼┼──────────────────────────────────────────────────────┤ │┌──────────────────────────┐││┌────────────────────────────────────────────────────┐│ ││/list ││││Requests a list of all the channels on this server. ││ │└──────────────────────────┘││└────────────────────────────────────────────────────┘│ ├────────────────────────────┼┼──────────────────────────────────────────────────────┤ │┌──────────────────────────┐││┌────────────────────────────────────────────────────┐│ ││/join ││││Joins the specified channel, leaving any channel ││ ││ ││││that you may currently be in (joining multiple ││ ││ ││││channels is not yet supported). The channel is ││ ││ ││││created if it does not exist. ││ ││ ││││ ││ ││ ││││ = name of channel to join ││ ││ ││││ ││ ││ ││││EXAMPLE: /join generalchat ││ │└──────────────────────────┘││└────────────────────────────────────────────────────┘│ ├────────────────────────────┼┼──────────────────────────────────────────────────────┤ │┌──────────────────────────┐││┌────────────────────────────────────────────────────┐│ ││/leave [parting message] ││││Leaves the current channel with an optionnal parting││ ││ ││││message. If no parting message is specified, the ││ ││ ││││default "Leaving..." is used. ││ ││ ││││ ││ ││ ││││EXAMPLE: /leave See you fellas later! ││ │└──────────────────────────┘││└────────────────────────────────────────────────────┘│ ├────────────────────────────┼┼──────────────────────────────────────────────────────┤ │┌──────────────────────────┐││┌────────────────────────────────────────────────────┐│ ││/names ││││Requests a list of all users in your current ││ ││ ││││channel. ││ │└──────────────────────────┘││└────────────────────────────────────────────────────┘│ ├────────────────────────────┼┼──────────────────────────────────────────────────────┤ │┌──────────────────────────┐││┌────────────────────────────────────────────────────┐│ ││/topic [new topic] ││││If a new topic is not specified, this command simply││ ││ ││││requests the topic of the current channel. If you ││ ││ ││││provide a new topic however, this command sets the ││ ││ ││││channel topic, ││ ││ ││││ ││ ││ ││││EXAMPLE: /topic A place to come and chat. ││ │└──────────────────────────┘││└────────────────────────────────────────────────────┘│ ├────────────────────────────┼┼──────────────────────────────────────────────────────┤ │┌──────────────────────────┐││┌────────────────────────────────────────────────────┐│ ││/nick ││││Changes your nickname. ││ ││ ││││ ││ ││ ││││ = your new nickname ││ ││ ││││ ││ ││ ││││EXAMPLE: /nick Yoda ││ │└──────────────────────────┘││└────────────────────────────────────────────────────┘│ ├────────────────────────────┼┼──────────────────────────────────────────────────────┤ │┌──────────────────────────┐││┌────────────────────────────────────────────────────┐│ ││/users ││││Requests a list of all users on this server and the ││ ││ ││││channels they are in. ││ │└──────────────────────────┘││└────────────────────────────────────────────────────┘│ ├────────────────────────────┼┼──────────────────────────────────────────────────────┤ │┌──────────────────────────┐││┌────────────────────────────────────────────────────┐│ ││/clear ││││Clears the output window. ││ │└──────────────────────────┘││└────────────────────────────────────────────────────┘│ ├────────────────────────────┼┼──────────────────────────────────────────────────────┤ │┌──────────────────────────┐││┌────────────────────────────────────────────────────┐│ ││/quit [parting message] ││││Quits REXXchat completely with an optionnal parting ││ ││ ││││message. If no parting message is specified, the ││ ││ ││││default of "Leaving..." is used. ││ ││ ││││EXAMPLE: /quit G'night, all! ││ │└──────────────────────────┘││└────────────────────────────────────────────────────┘│ └────────────────────────────┴┴──────────────────────────────────────────────────────┘ ═══ 1.6. Security Issues ═══ The current version of REXXchat should not be considered safe to run on a large-scale, anonymous basis when used with the telnet server provided with OS/2. The reason for this is that if for some reason the REXXchat server should crash, the error-handling routines are currently unable to dump users off your server before dying completely. This means that there is a chance users may break out of the REXXchat client environment and gain access to an unlimited command line on your system. All precautions have been taken to avoid this eventuality, but the possibility remains that there is something I have not thought of. I'll be running through some crash scenarios in the near future to see if there are indeed security holes in REXXchat, and if any of you budding hackers out there would like to find a way through the error-handling routines I'd love to hear from you. To completely eliminate these security concerns, I plan to expand REXXchat in the near future to encompass the telnet server itself, so that instead of connecting to a third-party telnet server on your system, users will be connecting directly to REXXchat, so any crash would take the telnet connection with it. In the meantime though, I don't suggest handing out the password to your REXXchat server to people you don't trust unless you plan to be vigilantly in front of your computer whenever REXXchat is available (for example, if you plan to use REXXchat to chat with people yourself when you're online). Any damage done by someone gaining access to your system due to a bug in REXXchat is disclaimed, both explicitly and implicitly in the disclaimer later in this guide. ═══ 1.7. Advanced Suggestions ═══ This section contains a few tips, tricks and ideas for some more advanced ways of customizing and using REXXchat. If you think of any of your own, I'd love to hear them! My e-mail address is in the Administrativa section. o Custom welcome screen The welcome.txt file contains the text that is displayed when users first connect to your REXXchat system. Feel free to customize this file to your heart's content (although I must say I'm quite fond of the default one). o A small part of a bigger picture REXXchat, in the final analysis is a simple REXX program. As such you are not limited to using it in the most basic way described in Simple Installation. For example, you could write your own REXX host script which could provide services like discussion groups, file transfers... you could set up a complete Internet BBS system of which REXXchat is only a part. o Multiple channel join work-around The current version of REXXchat limits each user to occupying only one channel at once. To circumvent this, however, users are free to log in more than once to the same REXXchat server (under different nicknames) and thus can occupy as many channels as they feel able to manage telnet sessions. o Program you own If you fancy yourself a REXX programmer, there's nothing stopping you from going in and dabbling with the REXXchat code to customize it to your own needs. It is specified in the license, however, that you are not allowed to redistribute a modified version of REXXchat unless you first remove all references to REXXchat and the author, Kevin Yank. Such references include all documentation, code comments and hard-coded elements of the interface. If you wish to redistribute a modified version of REXXchat, it is recommended that you submit it to the author for approval beforehand. Kevin Yank's e-mail address is available in the Administrativa section. ═══ 1.8. To-Do List ═══ The following features/changes are planned for future versions of REXXchat. I would appreciate comments and suggestions on any of these. My e-mail address is available in the Administrativa section. o Private/Hidden/Invite-Only/Moderated channels. o Joining multiple channels. o User flags (channelop/systemop/invisible/etc.). o Channel administration (kick/ban/topic/etc.). o Have an optional status area at top of screen to display stuff like a dynamic user list, command help, etc. o Use the REXX sockets interface library in OS/2 to manage the telnet server aspect of REXXchat. o Clients should detect server crashes/closes and automatically disconnect instead of simply hanging. o Improve status line with addition of new features to REXXchat (e.g. uptime, channel/user flags, etc.). o optionnal beep on receipt of a private message/action. o make "*** X is now known as Y" a channel-wide message (not system-wide). o make '#' at beginning of channel names required and implicit. ═══ 1.9. Known Bugs ═══ Hopefully this will remain a very short list. Any bugs you trip over that are not listed here you can assume I don't know about. Please drop me a line explaining the bug and I'll fix it ASAP (for my e-mail address check the Administrativa section). o If the server is closed or crashes while there are connected clients, the clients are not informed -- they just hang. ═══ 1.10. Administrativa ═══ REXXchat was written for personal use by Kevin Yank because the only existing chat servers for OS/2 were either too limited or not feature-rich enough. During a bout of "nothing better to do" syndrome he decided to improve and document it for distribution as Freeware. LICENSE REXXchat is Freeware. That is to say you are licensed to use it for non-commercial purposes for no charge. If you wish to use REXXchat in a for-profit enterprise, please contact the author for permission. Redistribution of REXXchat if it has been modified in any way from the initial distribution. If you wish to distribute a modified version of REXXchat, you must first remove all references to REXXchat and the author, Kevin Yank. Such references include all documentation, code comments and hard-coded elements of the interface. If you wish to redistribute a modified version of REXXchat, it is recommended that you submit it to the author for approval beforehand. If find that this program meets your needs, I would appreciate a short e-mail saying so. I spent a significant amount of time writing this software and the accompanying documentation, and I'd like to know if anyone out there actually uses it before I spend more time improving it. DISCLAIMER Please understand that the author will not be held responsible for any damages, problems, etc. that occur as a direct or indirect result of using this software. I have tried to make this program as bug-free and system-friendly as possible, but if you have any concerns feel free to contact me (see below). REXXchat should not be considered secure. The author hereby explicitly disclaims any responsibility for damage or data loss as a result of some party gaining access to your system through a flaw in REXXchat. I am not aware of any such flaw, but I take no responsibility if one is found to exist. Please contact me if you have any concerns and I will do my best to address them. ABOUT THE AUTHOR (CONTACT INFO) Mental note: Get a better picture of yourself, Kev. Kevin Yank has been using OS/2 since the release of OS/2 Warp 3.0 in late 1994. Since then he has been active in the Hunter Region OS/2 User Group (HROUG) as newsletter editor and general positive element. He then went on to co-found the first OS/2-only mail order company in Australia -- Sentience Software. He worked with a close friend, Tony Terbizan, on Sentience for two years under the title of " Director of Development", which meant he was in charge of relations between Sentience and the developers of new products. In this capacity he assisted Dan Libby with the production and marketing of Animouse, an OS/2 add-on that animates your mouse pointer. He also helped establish Sentience's WWW presence as WebMaster, designing and creating the company's Web site (http://www.sentience.com.au/). Today, Sentience is still in business, although Kevin is no longer directly involved in their operations. Kevin has just recently moved back to Montreal, Canada after living for three years in Newcastle, Australia. He is presently studying in his second year of a Bachelor of Computer Engineering at McGill University in Montreal. Kevin is also the author of TagAdd, a Freeware, PM add-in for Southside Software's PMMail which is currently very late for its next version (apologies to the team of beta testers out there!), available as tladd10a.zip at an FTP site near you. Kevin aspires to someday write something that will make him some money. He can currently be contacted at kyank@ibm.net on the internet, or as Sentience on EFNet's #OS/2 IRC