IPSYND is the syndication daemon which is normally started as a local process
by the main IP system.

It continually checks the syndication contorl queue for new client
transmissions to start (flagged by a SYN_client record in spool/syn/control).

These would have been written by MUI user interface SYN or crontab or the Web

Once a record has been found, IPSYND opens the CLIENT parameter file for the
ROUTE to start the transmission on. It then checks the PORTS file in tables/syn
for a valid port to use. If this is NOT already in use by another
syndication/library client, IPSYND starts program IPSYN to do the dirty work.

Once started, IPSYND checks on progress. If IPSYN has failed completely or has
not managed to send all the files, IPSYND restarts it.

The Ports file which is in tables/syn, has the following syntax :
    ; comment
    route:(routename)  host:(hostname/terminal server)  port:(port no) 
multi:(number) telnet:
where   route   is the name of a route file in tables/syn/route
    host    is the hostname of the terminal server port or network device
    port    is the port number on the terminal server
    multi   is (optional) number of simultaneous connections on the port
        multi defaults to one - and for terminals servers is generally
        all you can have.
    telnet  is (optional) telnet transparency OFF for this port.
    rawtelnet is (optional) use raw telnet (ie binary/no escapes) for this port.

These parameters are case insensitive in the PORTS file as filenames etc are
automatically forced Uppercase and hostnames lowercase.

A single port can be specified for several routes. However only one connection
will be allowed at any one time (unless 'multi' is also specified) :
    route:hayes12   host:svr3   port:1103
    route:hayes24   host:svr3   port:1103
    route:hayes96   host:svr3   port:1103

When there is more than one modem/port available for the same traffic, the
'route' is NOT unique :
    route:x25slow   host:bigpad multi:7
    route:x25slow   host:lilpad
This will allow up to 8 simultaneous transmissions, 7 via 'bigpad' and another
via 'lilpad'.

The Client parameter file has the following syntax :
    ; comment
    route:  name of the Routing file in tables/syn/route
    alt:    (optional) name of the Alternate Routing file in tables/syn/route
    timeout: (optional) the number of seconds delay between attempts.
            default is 90.
    tryalt: (optional) try the Alternate route every N goes.
        Default: 5 (or half the 'retry' parameter below)
        This can be tryalt:(number from 2 to 100)
            or  tryalt:even     meaning every other go
    remsys: name of the System file in tables/syn/remsys
    retry: (optional) the number of retries before stopping the the whole
        transmission            Default: 11
        Normally 11 retries is adequate - if slightly too many - but
        you can vary it between 1 and 100 according to taste.
    prior: (optional) priority of this client
        This is a number from 1-99 which is the order in which the
        client is serviced. The client with the lowest number has
        their files sent first. default is 50
    maxtime: (optional) maximum time in secs to allow for the transmission
        default no limit    eg.     for a 10 mins timeout :
    maxkill: (optional) script to destroy a program/ftp/script which has taken
        more than 'maxtime'. This is only used if maxtime has been specified
        and is > 0. If no 'maxkill' is specified, just the running PID
        is zapped. If this is 'ipsyn or 'ftp' that will be fine. However
        if it is a script which is running other programs, you need to kill
        all the 'children' too. Script '/fip/local/killer.sff' is an example.

If 'ipsyn' is NOT the transmittor either a program or script or FTP can be used
    script:(path and name of script)
        The path name is usually a good idea. Extra parameters can be added
        script:/fip/local/bigcommie "red" "underBed"

You may also use FTP to send. The following keywords are significant :
    useftp:     Use FTP in place of ipsyn
        if there are no parameters the program starts '/usr/bin/ftp -dinv'
        eg: useftp:/usr/ucb/ftp -zSx

    ftpline: A single line for the FTP command file.
        eg ftpline:binary

General Notes on the Client file
-- IPSYND ignores the 'remsys' parameter as only 'ipsyn' needs that.

-- These parameters are case insensitive in the CLIENTS file as filenames etc
are automatically forced Uppercase and hostnames lowercase.

Notes for FTP
-- There are normally at least 2 lines specified is this order :
    ftpline:user logon,passwd
    ftpline:cd /remote/path
where 'logon' and 'passwd' and '/remote/path' are correct for this transmission

-- Other lines could be to send binary rather than ascii text :
or using a proxy server :
    ftpline:proxy open myfirewall
    ftpline:proxy user spy,hole
    ftpline:open clientbox
    ftpline:user anonymous,charles@highgrove.not.so.com

-- Each file in the input queue at the begining of the tranmission is sent
using a 'put' without you needing to specify. Please note that the filename on
the remote system will be the same. So pls tidy the filename BEFORE

-- A log line is automatically created in log/syn/CLIENT.date.and.time with the
results of the session

Notes for SCRIPT
-- the script MUST start '#! (shell)' in the first line or you will get Execlp
error 8.
    eg: #! /bin/csh     for the c shell
-- Parameters for the script are :
    scriptname  -c client -q queue -s termsvr -p port -l logfile -r inuseflagfile
-z successflagfile
    var0        v1 var2   v3 var4  v5 var6  v7 var8 v9 var10   v11 var12    v13 var14

These variables are :
    0 - program to use
    2 - name of client (forced uppercase)
    4 - name of queue to scan in '/fip/spool/syn' (forced lowercase)
    6 - Terminal Server name    - optional
    8 - Port number or zero if not relevant - optional
    10 - logfile. Pls write relevant information into this file as the 
        transmission progresses. Normally the file is
    12 - file to be used as a  I-am-still-running flag
        This file is a flag for IPSYND to say the script is still running
        and the port is still in-use. So IPSYND creates it when the script
        starts but the script MUST delete it when it finishes. If you do
        NOT delete it at the end of transmission, the port will remain
        out-of-use until someone reboots the machine or  use SYN to unlock
        the port manually. The parameter will be top and tailed with
        double quotes as it will contain pipes.
    14 - file to be deleted if the program returns success (0)
        This is the control file for I-need-a-transmission. So if the
        script finishes with no errors (ie so it does NOT need to be
        restarted), it should delete/zap this control file (in
        /fip/spool/syn/control). This file will be top and tailed
        with double quotes as it will contain pipes.
Note that Terminal Server/Hostname and Port Number (and there switches) are
optional depending on whether they have been specified in the PORTS file.

-- a ROUTE in the client file is Optional but, if stated, there MUST be a
corresponding entry on the PORTS file.
-- SYSTEM file (in tables/remsys) and any parameters within are ignored.
-- you can add extra parameters to the script. As it can be in FipSeq, system
varaibles etc can be added.
Additionally any 2 letter header codes can be randomly added to the CLIENT file
EG if the client file is called JUKEBOX and looks like :
script:/fip/local/funnies -1 \C1 -2 \C2 -y \L1 -z \L2

if there is no entry for 'funnycomms' in the PORTS file will give start
    /fip/local/funnies -1 234765403299 -2 234765400319 -y SECRET -z BINGCROSBY
JUKEBOX jukebox spider3 0 "/fip/log/syn/JUKEBOX.10Jan97.14.10"
"/fip/x/SYN|123|JUKEBOX" "/fip/syn/control/JUKEBOX"
if the entry for 'funnycomms' in the PORTS file is 
    route:funnycomms    host:obnoxiousnoise port:9191
will give start
    /fip/local/funnies -1 234765403299 -2 234765400319 -y SECRET -z BINGCROSBY
JUKEBOX jukebox obnoxiousnoise 9191 "/fip/log/syn/JUKEBOX.10Jan97.14.10"
"/fip/x/SYN|123|JUKEBOX" "/fip/syn/control/JUKEBOX"

The only input parameter for IPSYND is -v : print version number and exit.

(copyright) 2017 and previous years FingerPost Ltd.