

                       KA9Q FTN version 2.16/1.4
                                10/25/95


INTRO:

    The KA9Q_FTN package is a DOS based Internet software package
    capable of automating Fidonet-like mail transfers via Internet FTP.

    Features:

        DOS based - may be run on anything from an 8088 to a Pentium,
            using DOS 3.3 or above. Will also run under DV or Windows.
        Built in dialer to connect and log onto a local Internet
            providor using PPP or SLIP access.
        Supports comm port speeds to 115K.
        Scripted FTP sessions allowing opening session to remote host,
            logging on, put, mput, get, and mget commands. These can be
            configured to delete files succesfully sent and the deletion
            of files successfully received from the remote system.


CONTENTS:

    FTP     .HLP*   FTP help file
    DOSFTN14.TXT    Intro file
    SETUP   .TXT*   This file
    KA9QNOS .TXT    Original documentation for KA9Q by Phil Karn
    KA9Q_FTN.HST*   History file of modifications for FTN version
    MVMAIL_B.LZH*   Small utility to move mail archives w/o overwriting
                    (docs included in archive)
    NET14   .EXE*   Main executable (Version 2.16/1.4)
    NETHIST .TXT    Demon Internet history file for their changes
    PABONE  .BAT*   Main batch file for running things
    PABONE  .DIL*   Dialer file to connect to local Internet host
    PABONE  .FTP*   FTP script file to do the actual transfers
    PABONE  .NET*   Startup script file for Net.Exe
    TODO    .FTN*   ToDo list of possible future enhancements and bug fixes
    ZSTAROUT.BAT*   Batch file to move outbound mail to George

        * indicates changes since last release

DIRECTORY STRUCTURE:

    The same drive is used as Net.Exe doesn't like switching
    drives. With this version, Outbound files are placed in a separate
    directory while the Inbound files are placed in the normal mailer
    inbound directory. The working directory is changed during the
    FTP session via the commands contained in the PaBone.Ftp script.
    This eliminates the need to sort things out after the session. After
    exiting, the PaBone.Bat file exits and control returns to the mailer
    batch file.

    Here is what I'm using:

        c:\nos              contains all the primary files
        c:\nos\spool        holds ftp.hlp due to being hardcoded
        c:\in               my normal inbound directory
        c:\in\ftpout        holding directory for outgoing mail files
        c:\in\ftpsent       directory used to hold a copy of all outbound
                            archives

OVERVIEW:

    1) The mailer (Binkley) is configured via it's event file to exit
        with a specified errorlevel of 50 (F5 for manual use).  In the
        batch file with runs Binkley, this jumps to the routine which
        changes to the directory containing Net.Exe and calls the
        primary batch file which sets up the files to transfer and
        invokes Net.Exe:

        Rem **  Errorlevel 50  (F5)
        :FTPBONE
        vfos_del
        cd \
        cd \nos
        call PaBone
        vfos_ibm
        goto START

    2) PaBone.Bat calls ZstarOut.Bat which transfers outbound archives
        from Bink's outbound holding area to a dedicated directory
        (\ftpout) for use by the FTP session. It also creates the .Bsy
        and .Tmp files to transfer to my \inbound directory after
        connecting with PaOnline and prevents collisions between my end
        and PaOnline from accessing the same file at the same time.

    3) PaBone.Bat then invokes Net14.Exe and specifies the startup script
        (PaBone.Net) Net14.Exe needs to get things going.

    4) PaBone.Net sets up various runtime configuration options,
        invokes the dialer portion (using PaBone.Dil) to connect to my
        local host, and then after connecting, starts up an FTP session
        using the named script file (PaBone.Ftp) to open the connection
        to PaOnline and do the actual file transfers.

    5) After the transfers are complete, the PaBone.Ftp script closes
        the connection with PaOnline, detaches the interface (comm port)
        and exits the FTP session.  This puts things back at the main
        net> prompt where the PPP idle timeout (specified in PaBone.Net)
        takes affect and exits Net.Exe back to the PaBone.Bat file.

    6) After PaBone.Bat is finished, the Mailer.Bat file restarts the
        video fossil for Bink and restarts Bink.  Since the event for
        this process is only defined as 1 minute long, upon returning,
        Bink starts the next event which exits out and includes
        processing any inbound mail before restarting Bink up again. ;-)


TRANSFER FAILURES:

    Should a transfer fail due to losing the connection, Net.Exe aborts
    the FTP session.  This returns the program back to the net> prompt,
    where the PPP idle timeout exits the program and returns control
    back the the PaBone.Bat file.

    Introduced in a prior version is a special <ftpopt> config verb. The
    syntax is <ftpopt ftnmode on|off> and is placed in the pabone.net
    startup file. The default is off.

    When on, this will cause deletion of the local file after successful
    outbound transfers (via 'put' or 'mput') and deletion of the remote
    files during successful inbound transfers (via 'get' and 'mget').
    If this option is not specified, then remote deletion is skipped and
    partial files received will be retained.

    The zzzzzzzz.tmp file sent initially, acts as a flag file, in that
    during the mget receiving sequence, it is transferred last. An 'if
    exist' trap in the PaBone.Bat file could be used to reinitiate the
    connection.

    If the *.tmp file isn't received, then the session didn't finish and
    the session got aborted before the .bsy file in the 'incoming'
    directory got deleted.  This means that what is left on PaOnline
    is still there, ready to be transferred the next time.  The leftover
    .bsy flag file will keep PaOnline from adding or modifying anything
    until the next session.
    
    As MoveMail truncated the outbound files initially, and should they
    still exist, would merely increment the extension and we'd transfer
    a zero byte file along with the previously moved files. (As a safety
    hedge, Zstarout.Bat copies all outbound files after the MoveMail
    call to a separate directory)


INSTALLATION:

    Create a separate directory to hold all the Net specific files:
        ie \nos
            Net14.Exe
            PaBone.Net
            PaBone.Dil
            PaBone.Ftp

    Copy the MoveMail.Exe file to somewhere in your path

    Create the necessary support directories:
        ie  \nos\spool\help (to hold the ftp.hlp file)
            \ftpin
            \ftpout
            \ftpsent

    Edit the contents of the following files to match your system:
        PaBone.Bat
        PaBone.Net
        PaBone.Ftp  Note: delete any comment lines before using!
        Zstarout.Bat


KNOWN BUGS:

    MoveMail may not work correctly on networked drives.  Additional
    feedback would be welcome so I can isolate and eliminate this.
    (As I'm not running a network, I don't have any way of testing this.)
    It works fine on local drives, both logical and physical.

    The <memory status> command is broken (apparently during my rewrite)
    and causes a divide by zero error.  This causes the program to abort
    back to DOS and seems to leave the system unstable.  I would
    recommend rebooting the system.  It's on my ToDo list to fix.


BUG REPORTS/ENHANCEMENTS/COMMENTS:

    All are welcome.  I can be reached via Fidonet netmail at 1:138/146
    (direct or routed) or via Internet E-Mail at
    lookglas@adrift.harbornet.com.


MODULE STATUS in this version:

    /* Software options */
    #undef  MAILBOX     1   /* Include SM0RGV mailbox server */
    #define NNTP        1   /* Netnews client */
    #define SERVERS     1   /* Include TCP servers */
    #define TRACE       1   /* Include packet tracing code */
    #undef  RIP         1   /* Include RIP routing */
    #define HOPCHECK    1   /* IP path tracing command */
    #define DIALER      1   /* SLIP redial code */
    #undef  NRS         1   /* NET/ROM async interface */
    #undef  NETROM      1   /* NET/ROM network support */
    #undef  LZW         1   /* LZW-compressed sockets */
    #define SLIP        1   /* Serial line IP on built-in ports */
    #define PPP         1   /* Point-to-Point Protocol code */
    #define VJCOMPRESS  1   /* Van Jacobson TCP compression for SLIP */
    #define ATCMD       1   /* Include timed 'at' execution */
    #undef  MULTITASK   1   /* Include Dos shell multi-tasker */
    #define ALLCMD      1   /* if undefined, exclude a bunch of commands */
    #define ANSI        1   /* Emulate an ansi terminal */
    #undef  DSERVER     1   /* Domain Name Server */
    #undef  FILTER      1   /* IP packet filtering */
    #define FILETRANS   1   /* X/Y/Zmodem file transfer */
    /* Hardware driver options */
    #undef  ARCNET      1   /* ARCnet via PACKET driver */
    #undef  PC_EC       1   /* 3-Com 3C501 Ethernet controller */
    #undef  KISS        1   /* KISS TNC code */
    #undef  HS          1   /* High speed (56kbps) modem driver */
    #undef  HAPN        1   /* Hamilton Area Packet Network driver code */
    #undef  EAGLE       1   /* Eagle card driver */
    #undef  PI          1   /*  PI card driver */
    #undef  PACKET      1   /* FTP Software's Packet Driver interface */
    #undef  PC100       1   /* PAC-COM PC-100 driver code */
    #undef  APPLETALK   1   /* Appletalk interface (Macintosh) */
    #undef  DRSI        1   /* DRSI PCPA slow-speed driver */
    #undef  SCC         1   /* PE1CHL generic scc driver */
    #define ASY         1   /* Asynch driver code */
    #undef  SLFP        1   /* SLFP packet driver class supported */



AVAILABILITY:

    I will keep the latest version available on my system at 1:138/146
    for file request using the magic name: KA9Q_FTN.
    I'll forward copies to George Peace and John Souvestre to allow
    anonymous FTP access from their systems.

    Source code can be had for the brave at heart.  Drop me a message
    until I get that part automated. ;-)


CREDITS:

    Many thanks to George Peace for implementing the FTP_BONE!  There
    are many others who have contributed to this package. Please see the
    accompanying documentation files, for without their time and
    talents, this project wouldn't have been possible.

    KA9Q was apparently put together originally in '91/'92 by Phil Karn,
    for use by ham radio buffs, but it also supported dial up links
    using PPP or SLIP connections, as well as various other connections
    types.  After this, Demon Internet Services in the UK, picked up the
    source code and made extensive modifications for use by their
    subscribers.  While they added extensively to KA9Q's capabilities,
    most were structured for their Internet environment, which is a lot
    different than FTN networking. We've really been spoiled with our
    FTN mailers. ;-)


    Wed  10-25-1995  13:04:54   MB


