# simple/mini shell chat

This collection of scripts provides a simple chat service on a Unix
system. Design considerations were small footprint, simple interface
working also on dumb terminals, small system load, and requirement
of standard command-line tools only.

The suite was developed for use on <gopher://circumlunar.space>
but is licensed under BSD-3-Clause license.

It is meant to be used on a friendly system, as it is running with
normal user privileges, and therefore all users must have full read
and write access to the required files.
This obviously is not vandal-proof.

Chat users are automatically identified with their user names,
i.e users cannot choose their nicks. There is only one common channel,
and no possibility to transmit private messages.
Due to argument processing, whitespace between the first three words
of any entered message will be reduced to one space each.

All scripts display help information when started without arguments.

The main script `schat.sh` will generate a config file `$HOME/.schatnrc`
on the first start (or when this is missing) with definitions for
strings surrounding the time-stamp and the nick during formatted output.
These strings may also contain control characters like ESC-color-codes.
An example is provided as `schatnrc.color` which can be copied into the
config file.
Due to simple formatting procedure, line lengths will be affected by
length of control codes.
For security reasons, backslashes `\` will be replaced by '/' and
pipe symbols `|` by '!' in these configuration strings.

To manage the chat and log files, `schatarch.sh` is provided
which copies the file contents into new files with names extended by
the current date. It will then keep the last N lines in the original
files, with N being given as argument.

## Installation

Please modify the installation script `install.sh` according to your
local needs.

In addition, you should prepare a directory for shared files used
to store message text entered by users and notifications, e.g
`/var/local/share/schat` or similar, and provide that name in the
installation script as well.

Then, execute the installation script (preferably in the directory
containing it, otherwise it may not find the source code files),
if necessary with the required permissions (e.g root, sudo),
and confirm the prompt with hitting RETURN. The script will then
try to install the executables and the shared files.

Finally, users should add the directory with the executables to their
path, and maybe copy (or symlink) the sample configuration file in the
shared directory (see final note of installation script).

---

*(2019-04-24 Yargo/HB9KNS)*