This is the background server running on the client's site used to access data
from a Fip Remote Server.

It reads a parameter file called "REMOTE.FIP".

This contains enough information to connect to - or be connected from - the
remote host.

Syntax of the parameter file is :
    ; comment

--------- For the Connection to the Remote Server....

    delivery-method:broadcast (one-way), server (logon/password protected)
        default is server
        If using broadcast, you MUST specify an end-of-message string
    connection-started-by:client or server
        Who makes the initial call - client connecting to the server or vice versa
            default is server

If the delivery method is 'server', we need a port on this machine (and
optionally a
alternate hostname for multi-ip addressed boxes where the boot address is NOT
the one we
want to use - this is relevant for clusters and other HACMP type boxes where

    port: port on this box to use           default: 9123
        You MUST make sure this port is NOT used by any other program.
        On UNIX, /etc/services holds the list of reserved ports
    host: hostname or IPaddress to use      default: boot hostname

If the delivery method is 'client'm we need a hostname AND a port on the remote
An alternate or failver host and/or port can also be specified.

    host: hostname of the remote server     no default
    port: port of the remote server         no default
    host2: hostname of an optional alternate remote server. no default
    port2: port of the alternate remote server  no default

    http-proxy-host: Hostname of Proxy HTTP server. default: direct connection
    http-proxy-port: Port Number of Proxy server.   default: direct connection
    proxy-is-squid: (yes/no) Use squid style HTTP syntax for traversing a
squid-like proxy server default: no
    http-proxy-logon: This is the logon and password to get thru the firewall
        if required. The format is (logon) (colon) (password) and is
        converted to base 64.

        To generate (use 'type' on Winnt and just 'echo' for other Unix) :
            echo -n "logon:password" | sffb64 -i
        eg  echo -n "chris:sleekpanther" | sffb64 -i
        gives   Y2hyaXM6c2xlZWtwYW50aGVy
    http-header: Extra header information in FipSeq
        eg  http-header:Accept: *|*\r\nUser-Agent: FipServer\r\n

--------- Other parameters
    log-level: (0-99)
        Add information to the log file /fip/log/ALL
        default is to log only failures and errors.
        level 0     .. and Stop and Start
        level 3     .. and Connections, Disconnections
        level 6     .. and log each incoming file
        level 12    .. and log each Reply and Heartbeat

    log-every: (secs)
        Number of seconds between messages if the remote (or local relay) is down.
        default is 60 secs.

        Log timing stats            default: no

--------- For the Data on the local system....

    local-delivery-method:(file, relay, passive-port, serial-line)
        file - leave the files in a folder on this system
            Other parameters for this option include :
                data-path:  (optional)
                filename:   (optional)
        relay - open a TCP raw socket to another host/port and stuff the data down.
            Other parameters for this option include :
                relay-host: (mandatory)
                relay-port: (optional)
        passive-port - wait for a connection on a TCP port for
            another host to connect to and then stuff the data down.
            Other parameters for this option include :
                passive-port:   (mandatory)
                passive-host:   (optional)
            You can test this option using a telnet on your
            PC/Mac/Sparc/Linux to this passive-host/port.
        serial-line: send all to a com port or tty port
            Other parameters for this option include :
                For Winnt   serial-line:\\.\com3
                For Unix    serial-line:/dev/ttyh0
            This also needs a parameter file in /fip/tables/stty
            to setup the Com port.
            For WinNT/2k this is    MODE_(logon)_(COMMPORT)
                eg      MODE_AGENCY1_COM3.fip
                Note that NT/2000 com ports need pin DSR raised high by the cable.
            For Unix this is    STTY_(logon)_(TTYPORT)
                eg      STTY_AGENCY1_TTYA0
            In the case of NO logon the file is MODE_NONAME_COM3.fip
    keep-local-connection:Normally if there is nothing to send, the connection to
        local output device is dropped (to allow another program to connect perhaps).
        This flag states that this copy of the program has full-use of the
        device - so keep the connection alive.
        keep-local-connection:  will leave the connection open
        keep-local-connection:no    will disconnect
        keep-local-connection:yes   will leave the connection open

    poll-remote-server:Normally the connection to the remote server
        is kept open. Use this parameter for those connections which
        share a server and to state the number of seconds between
        attempts. If specified, the minimum is 30 secs.
        poll-remote-server:60   will reconnect every 60 secs
        poll-remote-server:0    will leave the connection open

    data-path: Path name for Folder/Directory where all the data files should be
        default is the path 'fipremote' was started from;
        unless it was '/' in which case the path is /fip/spool/xremote.
    filename: (new name)                default: \SN
        Use FipSeq to change the filename of the incoming files
        \SN represents the existing filename which is the Service Designator and
        eg  filename:\SN.bag
            will add a '.bag' extention to the filename

    passive-host: Hostname for this machine if not the boot address. Use this
        for servers with more than one network card or IP address and
        you need to sit on a particular address only.
    passive-port: Port number on this server

    relay-host: Hostname of another server that we will forward the data to
    relay-port: Port number on the other (forwarded-to or relayed-to) server.

    add-fiphdr: (yes/no) Add a FipHdr on the incoming file      default: no
    extra-fiphdr: Extra FipHdr information which can be added
        to the incoming file or used for the filename       default: none
    archive: (yes/no) Add the ZI: Fiphdr to the incoming file   default: yes
        This option only takes effect if 'add-fiphdr:yes' is also selected

--------- General Parameters to be set the same as the remote server.

    no-logon-required: Trusted connection   default: logon/pwd required
        allow a connection WITHOUT a logon/password
    logon: logon to use to connect          no default
    password: password to use to connect        no default
    encrypt-size: (number)
    encrypt-string: (FipSeq string of encrypt-size)
        These state a length and string to map to the data.
        They MUST be exactly the same as the Remote system.
        Check the MD5 signature of the incoming file.
        The file is logged if in error
        External script to decrypt or uncompress the data.
        This option is only valid for 'local-delivery-method:file'
        There is one and only one parameter to this script which is
        the name of the file to decrypt and in which the new contents
        will be stuffed.

    end-of-message: For Broadcast deliveries, this specifies the string
        which defines the end of each file.
        Eg for ANPA-1312 or IPTC-7901   end-of-message:\004
        for a tagged format like NewsML end-of-message:</NewsML>
        Ths string is case-insensitive.

--------- Running redundant fipremote on two Fip systems
    check-primary-server: pseudo-host name that is specified in
        that is used whether the current host should be getting the files or not.
        ie  check-primary-server:remotewire
        and in the DEST_REDUN is
            ; psuedohost    primary secondary
            remotewire  fip1    fip2
        Then if fip1 is up, the fipremote on fip1 will always get while on fip2 it
will just check/loop.
            if fip1 is down, the 'fipremote' on fip2 will start getting.

Input switches are (all optional) :
    -install : install the program      default: no
        (For WIN2K, this installs FipRemote as a Service)
    -I : WIN2K installation only - Disk Drive to use
            eg fipremote -install -Ie   default  default drive
    -D : display state for debugging    default: no logging
    -remove : remove the program        default: no
        (For WIN2K, this removes FipRemote as a Service)
    -S : Step through the files     default: no
        This prompts after each file has been received.
        Use this for debugging only!
    -T : write audits to log/remote_trace file  default: no
    -z : Name of Parameter file     default: REMOTE.FIP
    -W : do NOT run as a WIN2K Service  default: do for WIN2K
        Use this parameter if running from a Command Window
    -v : print version number and quit  default: no


0. First the disclaimer...
'fipremote' and any associated files are supplied at no charge with the previso
that they remain Copyright FingerPost and there is absolutely no
support/warranty/guarantee implied what so ever. The Source is not available
for general use but in every other case the Gnu GPL licence holds.

Having said that, all bugs/wishes may be emailed to FingerPost and will be
gratefully received.

1. Download the relevant files for your system from the Fip Web Site :
Note that some old versions of NetScape cannot download binary files.
Check this documentation at
for any site specific settings you might need.
    UNIX    i.  program
        ii. sample REMOTE.FIP parameter file
        iii. S99fipremote

    WIN2K   i.  program.exe
        ii. sample REMOTE.FIP parameter file
        iii. note that it is generally safe to map the '.fip'
            extension to be opened by 'NOTEPAD'
            (or 'WORDPAD' but watch out for file locking).

2. On your server, decide :
    UNIX -  which partition do you want the data files
        which logon do you want the files to have for permissions

    WIN2K - which drive to have the data files.

Note that 'fipremote' will make a top folder '/fip' on the drive you choose,
plus a couple of sub-folders. The total disk space used should be under 5 mb
even during running.

3. To install the program the first time.

If '/fip' or '/fip/bin/fipremote' does NOT exist
    UNIX    open a telnet/Xterm window
        cd (folder-you-have-downloaded-too)
        mv fipremote.(full-download-name) fipremote
        chmod 700 fipremote
        ./fipremote -install

    WIN2K   open a 'command' window
        cd (folder-you-have-downloaded-too)
        either      fipremote -install
        or      fipremote -install -Ix
                where x is a drive letter

The install process will automatically make folders :
    /fip/bin        you need to copy the 'fipremote' program here.
    /fip/x          (temporary files folder)
    /fip/fix        (system files folder)
    /fip/log        A log file called ALL and REMOTE.STATUS.FIP
    /fip/tables/remote  please copy REMOTE.FIP in here.
    /fip/spool/xremote  default folder for data files.

In the current version you will need to manually copy -
    'fipremote' program to /fip/bin
    'REMOTE.FIP' parameter file to /fip/tables/remote

For WIN2K you can either
    run 'fipremote' as a service'
        - run 'fipremote -install' a second time to make sure you have everything
matched up.

or  run it manually on logon
        - in Explorer, make a ShortCut from /fip/bin/fipremote to 'Start Menu', if

'fipremote' stops at the end of the install and does NOT go on-line.

***** do NOT start the WIN2K Service or start 'fipremote' manually ..
***** UNTIL you have checked the REMOTE.FIP file.

4. Modify the REMOTE.FIP parameter file.
    'fipremote' expects this file to be in /fip/tables/remote

    Please change those parameters as per the Suppliers email/fax.

    WIN2K - if using WORDPAD or someother Word Processor, please store the file as
        MSDOS text and NOT WORD or RTF or any other format.

    WIN2K - please make sure that the file does NOT have a '.txt' extention on.
        The filename MUST be 'REMOTE.FIP'

    UNIX - please make sure the file name is UPPERCASE.
        The filename MUST be 'REMOTE.FIP'

5. Do you have to do something to your FireWall ?

The System which starts the connection MUST be able to 'see' the other.

If the Supplier's system starts and your (the Client's) system is behind a
Firewall you MUST punch a hole through for TCP at the port number given to your

If you (the Client) start, check you can get out of your own site first !

Or there is a hole already through for Browsers - like IExplorer and NetScape
(see below)

Often the bastard in charge of the Firewall has blocked all outgoing TCP ports
except for a couple of well-known types like HTTP.
    To check, use 'telnet' to manually connect to the remote systeM :
        telnet suppliers-ip-address supplier-portno
    eg  telnet 9012
    You should get the characters '#%#%#%#' back.

Stop the 'telnet' connection before you start 'fipremote' as ONLY one
connection is allowed at any one time.

If your only choice is using the Proxy Server for Browsers - like IExplorer and
    You can look in 'Preferences' or 'Options' on the browser menu.
    and plug in same values into the REMOTE.FIP file using the 'http-proxy-host
etc as described above.

6. Set the startup automatically
(Unix/Linux only)
    - The startup script is S99fipremote
    - copy this (as root) :     cp S99fipremote /etc/init.d/fipremote
    - then link it to the run level : ln -s /etc/init.d/fipremote
        (note in some versions of Linux, the link should be in /etc/rc3.d not rc2.d)
    - Go into ControlPanel->AdministrativeTasks->Services
    or  ControlPanel->Services       on older boxes
    - Open for 'FipRemote'
    - Set to run Automatically (and run if not already running)
    - Close and exit

7. Run it up !

The first time, for testing, you can run manually with the '-D' input switch to
display what state the connection is at any point.

8. Good Luck !

9. Status and Stats

Note that Current Status is held in /fip/log/REMOTE. The actual file contains a
number of lines, starting with a key.

The Keys are :
    DAY - Current day of the year
    TRYCON  - Logon attempts
    LOGON   - Logons
    FILE    - info about the number of files
    KALIVE  - keep alives
    ERROR   - last error message
The file is visable/readable by 'NOTEPAD' or 'more' (please do NOT use
'WORDPAD' or any other editor which may lock the file and prevent it being

The actual Fields are pipe delimited :
    time of last entry
    total since last logon
    total since midnight

Other Issues

You may wish to trim/delete/process the Log file, /fip/log/ALL from
This should be a nighlty/weekly/yearly maintenance task.
The file is an ordinary text file and can be copied, deleted, moved etc

The temporary system files area, /fip/x, should also be cleaned occasionally of
any old files.

Removing 'fipremote'

If it is the only FIP program running, just kill the program and zap the /fip
folder. Take out any ShortCuts etc.

For WIN2K, you MUST restop and remove the Service first though :
    c>fipremote -remove

Release Notes for version 01c

WIN2K - running 'fipremote' as a Service is now available.

It may be started by a specific logon by placing a ShortCut in the
'Winnt/Profiles/(Logon)/Start Menu'.

WIN2K -  able to specify drive. Pls run the Install from the drive you want it
to run AND use the '-I' switch (capital eye) to denote the actual drive letter.


Version Control
;2e16   12dec07 mods for server version
    ;e2-4 redunBalanced ;7 for replysent bugette
    ;8-12 added add-fiphdr and extra-fiphdr and timings
    ;13-16 added remote_trace and -T ;16 add <LOG>
;001y2  22feb01 added no-logon-required
    ;a/b/c 20mar01 added http-proxy-logon
    ;d/e/f/g 22jun01 WIN2K Service and allow local ports
    ;h/j 17sep01 added TTY as a local port
    ;k/l 16nov01added logging
    ;m/n 25feb02 if WIN2K and TTY for local port, do NOT close.
    ;o 22may03 added primary/secondary
    ;p 26jul03 added logging with host and port
    ;q 20dec03 cleanup broadcast
    ;r-s 24feb04 added poll-remote-server
    ;t 01aug04 bugette in localSock
    ;u 15aug04 added decrypt-script and check-md5-signature
    ;v-y2 13jan05 better logging

(copyright) 2017 and previous years FingerPost Ltd.