CLChatSystem 3.3 for AmiTCP
---------------------------

(1) Copyrights

    The CLChatServer, the CLChatD, CLChatLink and the CLChatGUI are
    Copyright (C) 1994-1995 Oliver Wagner (o.wagner@pluribus.wupper.de)
    All Rights Reserved.

    The files are freely distributable as long as no modifications are
    made to any part of the package and all files are distributed in
    a single archive, accompanied by this documentation file.

    CLChatGUI is a MUI application. MUI is (C) 1993-1995 Stefan Stuntz.

    AmiTCP is (C) 1994-95 NSDI Inc.


(2) Overview

    This is a multi-user multi-channel chat system somewhat based on
    IRC. It features:

    o unlimited number of users
    o unlimited number of channels
    o private messaging
    o automatic user identification
    o flood protection
    o NEW: user banning
    o NEW: multiple server capability with loop protection
    o channel operator privileges for setting channel topics
      and removing users from a channel
    o chat operator privilege for global channel operator status
      and removing users from chat completely

    The user frontend for the chat is a comfortable GUI client
    providing

    o easy user & channel operations
    o input history
    o automatic notifications of certain events via Deiconification
      or beep
    o builtin ARexx-Port
    o NEW: direct file transfers to remote users via IP


(3) Origin

    The Chatsystem is originally part of the Connectline/Amiga BBS
    package which features an ANSI text client for online usage
    and the possibility to login to the chat during Hydra file 
    transfers. The standlone ChatServer and the GUI client are
    only a subset of the whole package.

    Write to Connectline@pluribus.wupper.de for more information
    about Connectline.


(4) Server Installation

    Copy the CLChatServer to AmiTCP:bin
    Copy the CLChatLink to AmiTCP:bin
    Copy the CLChatD to AmiTCP:serv

    Add the following line to AmiTCP:db/services:
    clchat/5555

    Add the following line to AmiTCP:db/InetD.conf:
    clchat    stream      tcp nowait root amitcp:serv/clchatd

    Add the following line to AmiTCP:bin/startnet:
    run >NIL: AmiTCP:bin/CLChatServer

    Optionally create a file named AmiTCP:db/ChatServer.MOTD
    containing a text file which will be display to each new user
    logging into the chat.

    Optionally create a file named AmiTCP:db/ChatServer.OPList
    containing a list of users which have the "Chat Operator"
    privilege. These users automatically receive channel operator
    status for every channel they join and can use the hidden
    server command "/KILL" to remove other users from the
    chat server. They may also the "/NETINFO" command to inquiry
    chat network information, and use the BAN commands to list,
    add or remove user bans.
    This file contains entries of the following form:
    Nickname Netaddress
    For example:
    Olli olli@lsd.wupper.de

    Optionally create a file named AmiTCP:db/ChatServer.Servers
    containing a list of remote servers allowed to connect to your
    server. This file contains a list of FQDN addresses or a
    standard AmigaDOS wildcard matching FQDN addresses. If this
    file is missing, all servers are allowed to connect.
    If you want to ban a single server only, you can add a
    exclusive pattern. For example, to ban server "lsd.wupper.de"
    only, add the line
    ~(lsd.wupper.de)
    The first line of the file may contain a number specifying
    the maximum number of servers to connect. This defaults to 8.

    You can make CLChatD and CLChatLink resident to increase
    startup speed and reduce memory usage; this might proof
    useful if you run or accept several connections.


(5) Client installation

    No installation required, simply run the Client from either
    Shell or Workbench. It will prompt for your user information
    and the server to connect to. See the Client guide for
    more information about using it.


(6) Using the server

    Using the server should be quite self-explainatory. Use the
    command "/?" to obtain a list of available commands.

    Channels are created automatically when a users joins
    and removed when the last user leaves. There is a
    persistant default channel called MAIN on which every
    new users starts. The first user entering a channel
    will obtain channel operator status. He may change
    the topic, kick other users, give or remove channel
    operator status from them.

    Specifc users may be banned from a server using the
    /BANADD command which is available to chat operators only.
    Bans are stored in the file "AmiTCP:DB/ChatServer.UserBans"
    and contain FQDN addresses or a AmigaDOS wildcard matching
    FQDN addresses. You may want to use wildcards of the form
    "#?@machine" because the user part of addresses is generally
    the same as the nickname which may be set by the user.
    For example, to ban users from lsd.wupper.de, use the
    entry
    #?@lsd.wupper.de

    Note that adding a line "#?" will make you quite lonely
    on your server.

    The server respons to three shell signals. CTRL^C will
    cause it to terminate instantly, CTRL^E will cause a
    restart (with reloading the executable) and CTRL^F will
    cause the server to output diagnostic stats into the
    shell window.


(7) Connecting several servers

    After running your local server, use the command "CLChatLink"
    to connect to a different server. Usage is
    CLChatLink <remoteservername> <remoteport> [retrycount]

    The retrycount is optional; if specified, CLChatLink will
    retry a connection until the count runs out. If a already
    successfully established connection break, retries start
    back from 1.

    Note that the server-server protocol is quite bandwidth
    expensive, so you should *NOT* create a server for single
    users only.

    Note that nicknames must be unique on all servers; if servers
    connect and a nick collision occurs, both users are removed
    from their correspondending servers and a nick collision
    message is broadcasted.

    Server loops may be created; every server message carries
    a unique messageid which will be checked by every server
    it passes; dupes are filtered out. Server loops may raise
    broadcast speed esspecially on slow network connections.
    The server uses some kind of smart routing for private
    messages: if the destination of a private message is on a
    directly linked server, the message is send to this
    server only. If not, it is broadcasted, so no routing
    tables are necessary.


(8) History:

    See the CLChatGUI.(doc|guide) for more specific GUI
    client revision information.

    Release 3.0
    -----------
    - the server now uses smart routing for private messages;
      if the destination server is a direct link, no broadcast
      is produced
    - added user banning capabilities
    - added /NETINFO server inquiry broadcast
    - added chat operator command output on /HELP if the
      use is a chat operator.
    - made /SERVERS command available to normal chat users
    - updated CLChatLink to correctly fill in the remote
      server name.
    - extended server msgs with a message id tag to filter
      message dupes produced by server loops.

    Release 3.1
    -----------
    - everything is now compiled with SAS/C 6.55. Also added
      server version directly compiled for 68030 CPUs.
    - added more detailed NETINFO output.
    - added /STAT command for chat operators. Also "/STAT *"
      broadcasts /STAT requests via net.
    - extended /USERS command with "S" option to display
      users with the servers they're on.
    - added /RESTART command for chat operators to have
      the server restart itself. Also CTRL^E will cause
      a restart.
    - added CTRL^F response displaying server stats to
      the shell.
    - fixed CLChatLink and CLChatD to fill in the IP
      address of remote servers for the /SERVERS command
      output.
    - fixed smart privmsg routing.
    - fixed user removement for flood protection and
      /KILL commands.
    - fixed may GUI client bugs & quirks.
    - GUI client now has IP file transfer option similar
      to DCC
    - GUI client now has a PING option to test links
      from user to user directly
    - fixed bug in the server which caused a stack
      overwrite on privmsgs > 230 bytes
    - both CLChatD and CLChatLink are now "pure" code
      and can be made resident for more efficient memory
      usage

    Release 3.2
    -----------
    - fixed local /STAT output to report only local
      users
    - fixed server validation bug; checked IP addresse instead
      of FQDN
    - fixed server reject error message
    - cleaned up GUI client scroller handling
    - added PLUBOT sample code


    Release 3.3
    -----------
    - CLChatLink was seriously broken; retry didn't worked
      and broken active links causes server crashes due to
      illegal messages.
    - increased stacksizes or reduced stack usage in all parts
      of the package due to frequent crashes on some setups.
    - some GUI client cleanup.


(9) ARCnet

    There is already a public Internet chat network based on
    CLChat called the "ARCnet" (Amiga Relay Chat Network).
    See the client documentation for up-to-date information
    about this network and servers you can connect to.


(10) Thanks must go to:

     Roy Millican  - for encouragement and running the first
                     public CLChat server on the InterNet ;-)

     James Atwill, `Mephisto'
                   - for their help during multi server testing

     Jeremiah S. Junken
                   - for the CLChatGUI icon
