Copyright (c) 1993, 1994 Eugene G. Crosser

ifcico is a FidoNet(tm) compatible mailer for U*IX platforms.

You may do virtually what you wish with this software, as long as the
explicit reference to its original author is retained:

Eugene G. Crosser <crosser@pccross.msk.su>, 2:5020/230@FidoNet

THIS SOFTWARE IS PROVIDED AS IS AND COME WITH NO WARRANTY OF ANY KIND,
EITHER EXPRESSED OR IMPLIED.  IN NO EVENT WILL THE COPYRIGHT HOLDER BE
LIABLE FOR ANY DAMAGES RESULTING FROM THE USE OF THIS SOFTWARE.

This is a BETA version, it is far from being fully tested.  If you think
that you found a bug, contact the author at crosser@pccross.msk.su.

All programs show a small help message when run with "-h" flag.

"ifcico" stands for "Internet - Fidonet Copy In / Copy Out", this is a
FidoNet(tm) compatible transport agent.  Currently it supports FTS-0001,
YooHoo/2U2 and EMSI handshake protocols, Xmodem (untested), Telink
(untested), Modem7 (untested), SEAlink w/overdrive and crash recovery,
Bark file and update requests, WaZOO protocols: DietIFNA, plain Zmodem
(aka ZedZip, EMSI flag "ZMO") and ZedZap, WaZOO file and update requests
(nodelist flag should be XA).  Password protected requests are not
implemented.  There are plans to implement Janus (and maybe Hydra)
protocols in the future.

Outbound directory structure is BinkleyTerm compatible, with domains and
point subdirectories (full 5d).  There are separate "listed" and
"protected" inbound directories for the incoming sessions with the nodes
present in the nodelist(s) and with nodes that have a password assigned
respectively.  Files received during an outbound session are always put
into the "protected" directory. (Only "protected" directory is looked up
by ifunpack by default, see ifgate subdir).

"Magic" file request processors are executable files placed in the
"magic" directory.  If request is made for a file with matching name,
the executable from the "magic" directory is run, and its stdout sent to
the requestor.  Full requestor's address, in the form "John Smith of
1:234/56.7" is passed to the executable in the command line.  See
"misc/FILES" for an example of a magic request processor.

To make ifcico work in answer mode, you need a hack in uugetty. Provided
are diffs for Linux getty_ps 2.0.7c, named GETTY.diff.  Gert Doering's
mgetty .17 (from the mgetty+sendfax package) and later versions have
fidonet support built-in.  Getty_ps 2.0.7d and further versions are
supposed to have fidonet support too.  Getty must distinguish incoming
FidoNet type calls, and start ifcico with one parameter:

FTS-0001 call:		"ifcico tsync"
FTS-0006 call:		"ifcico yoohoo"
EMSI call:		"ifcico **EMSI_....."

(in the latter case the received EMSI packet should be passed without
trailing CR).

If you are using getty_ps, don't forget to (a) #define FIDO in tune.h,
and (b) create the file /etc/default/uugetty with the contents similar
to the following (case sensitive):

FIDO=/usr/local/lib/fnet/ifcico
EMSI=yes

It is also recommended to increase getty's input buffer size to 0.5 - 1
Kb (in tune.h).

When called without parameters, ifcico runs in slave mode and determines
the type of inbound session itself.  This mode may be used when ifcico
runs as an internet or ISDN daemon.

To make ifcico scan for pending outbound mail and do appropriate calls,
start it with "-r1" flag.  To force polling of particular nodes, specify
these nodes in the command line (addresses should be in domain notation,
e.g. "ifcico f23.n5020 f155.n5020").  The latter implies master mode
(-r1).  Note that "hold" packets and files, as well as file requests, do
not cause the node to be polled.

Inbound directory is created automatically if it does not exist, along
with the "tmp" subdir. The latter is used while receiving files. After
being successfully received, the files are moved up to the "inbound"
directory.

Almost all features are controlled by the configuration file. See
"misc/config" file as an example, it contains a lot of comments.  To use
ifcico over TCP/IP, see "services" file with an example line for the
service entry, and "initd.conf" file with an example how to make ifcico
listen for incoming connects.  To initiate outgoing TCP/IP connect, use
"-a" flag.

Ifcico can use text format nodelists in original (MS/DOS) form with
<CR><LF>'s as well as in UNIX form, with <LF>'s only.  When you get
a fresh nodelist, or change the "nodelist" statements in the config
file, you must rebuild index with "ifindex" program.

ifstat program shows a summary of pending outbound mail.

ifroute program (not working yet - under development) can be used in a
"queryprogram" driver with Smail.  It accepts destination address on the
commend line and writes routing address to stdout, taking care of
hub/host/zonegate routing.

sumlog is a simple example perl script to count session durations.

Acknowlegements:

Some ideas taken from FidoGate-RFmail package written by Teemu Torma and
hacked by Martin Junius. Several source modules taken from INN 1.4 package.
Zmodem source taken from sz/rz programs by Chuck Forsberg (I may rewrite
it from scratch in future).
