PPPD para DOS 0.6 beta               Copyright (c) 1997 Antonio Lopez Molero


CONTENIDO

        INTRODUCCION
        ESTRUCTURA DE DIRECTORIOS
        FICHEROS DE CONFIGURACION SIN BOOTP
        NOTAS SOBRE EL PRIMER EJEMPLO
        FICHEROS DE CONFIGURACION CON BOOTP
        NOTAS SOBRE EL SEGUNDO EJEMPLO
        ACCESO TRADICIONAL SIN PAP
        UTILIZAR KERMIT COMO MARCADOR DE MODEM
        UTILIZAR COMTOOL COMO MARCADOR DE MODEM
        UTILIZAR CHAT0 COMO MARCADOR DE MODEM PARA SLIP


INTRODUCCION

    Este fichero muestra como he configurado mis aplicaciones Internet bajo
    DOS para trabajar con el packet driver DOS PPPD. Tambin contiene algn
    ejemplo sobre como utilizar otras herramientas de marcado de modem aparte
    de la includa en el paquete, CHAT. Utilic KERMIT y COMTOOL durante la
    fase de desarrollo de DOS PPPD, antes de conseguir que la implementacin
    para DOS de CHAT funcionara. Aunque no se un tpico demasiado relacionado
    con PPP, tambin muestra como utilizar CHAT0 para conexiones SLIP,
    aprovechando sus nuevas caractersticas de captura de cadenas.


ESTRUCTURA DE DIRECTORIOS

    Tengo creada la siguiente estructura de directorios en mi mquina para
    contener todo lo relacionado con Internet bajo DOS:

        \DOSTCPIP
        \DOSTCPIP\LYNX
        \DOSTCPIP\FTPBETA
        \DOSTCPIP\MINUET
        \DOSTCPIP\POPML322
        \DOSTCPIP\KERMIT

    Cada aplicacin separada se encuentra instalada en su propio directorio,
    por ejemplo DOSLYNX est instalado en \DOSTCPIP\LYNX, MINUET est
    instalado en \DOSTCPIP\MINUET, etc.


FICHEROS DE CONFIGURACION SIN BOOTP

    Los siguientes ficheros se encuentran instalados en el directorio
    \DOSTCPIP que es la base de la instalacin:

        PPPD.EXE
        PPPDD.EXE
        EPPPD.EXE
        EPPPDD.EXE
        CHAT.EXE
        CHAT0.EXE
        TERMIN.COM
        COMTOOL.COM
        MYISP.DAT
        PPPDRC.CFG
        CHATSCR
        DIALER.BAT

    Los ficheros de inters para tareas de configuracin son MYISP.DAT,
    PPPDRC.CFG, CHATSCR y DIALER.BAT. Cada uno de ellos ser descrito en
    detalle durante los prrafos siguientes.

    MYISP.DAT - Este fichero contiene datos sobre mi proveedor que sern
    utilizados para configurar aplicaciones basadas en WATTCP (DOSLYNX y
    FTPBETA) a travs de un fichero de configuracin, su contenido es el
    siguiente:

        nameserver=192.168.1.2
        nameserver=192.168.1.244
        domainslist="myisp.com"
        smtphost=smtp.myisp.com
        nntphost=news.myisp.com
        mailaddr=myuserid@myisp.com

    PPPDRC.CFG - Fichero de configuracin local para DOS PPPD, contiene:

        COM3
        57600
        irq 5
        modem
        crtscts
        asyncmap 0
        connect "chat -v -r pppdconn.lst -f chatscr"
        user myuserid
        passwd mypassword

    Ntese la utilizacin de las opciones 'user' y 'passwd' en el fichero de
    configuracin; esto es debido a que mi proveedor requiere PAP como mtodo
    de autentificacin. Tambin utilizo las capacidades de CHAT para generar
    un fichero PPPDCONN.LST con un registro de la fecha/hora y velocidad de
    comunicacin para cada conexin realizada.

    CHATSCR - script CHAT para manejar la interaccin con el modem:

        ABORT ERROR ABORT BUSY ABORT 'NO DIALTONE'
        ABORT 'NO CARRIER' ABORT RING
        REPORT CONNECT
        TIMEOUT 10
        '' ATZ
        OK AT&F
        OK ATDP055
        TIMEOUT 60
        CONNECT

    DIALER.BAT - fichero .BAT de DOS para establecer la conexin, lo ejecuto
    cada vez que quiero conectarme a mi proveedor:

        @echo off

        if _%1==_ goto DIALER

        if %1==h goto HANGUP
        if %1==H goto HANGUP
        goto SYNTERR

        :HANGUP
        termin 0x60
        echo Connection closed
        goto END

        :SYNTERR
        echo Syntax error, call as DIALER or DIALER H
        goto END

        :DIALER
        if exist ip-up.bat del ip-up.bat
        pppdd debug kdebug 1 >>logger.out
        if errorlevel goto CONNERR
        if not exist ip-up.bat goto CONNERR
        call ip-up.bat
        if exist currconn.cfg del currconn.cfg
        copy myisp.dat currconn.cfg
        echo my_ip=%MYIP% >>currconn.cfg
        echo gateway=%REMIP% >>currconn.cfg
        echo netmask=%NETMASK% >>currconn.cfg
        REM echo mss=%PEERMRU% >>currconn.cfg
        echo Connection succesful
        goto END

        :CONNERR
        echo Connection failed...

        :END


NOTAS SOBRE EL PRIMER EJEMPLO

    Se utiliza el ejecutable PPPDD.EXE, as que se genera informacin de
    depuracin que se registra en fichero LOGGER.OUT. Si la conexin funciona
    correctamente no es necesario utilizar la versin de depuracin,
    reemplazar la lnea que llama a PPPDD con:

        pppd

    Si ejecutamos DIALER pasndole la opcin H, o sea, DIALER H, el driver
    ser desinstalado de la memoria y se cerrar el enlace PPP.

    Ntese como se crea el fichero CURRCONN.CFG a partir de los datos en
    MYISP.DAT y los valores de las variables de entorno que IP-UP.BAT se
    encarg de establecer. Los ficheros \DOSTCPIP\LYNX\DOSLYNX.CFG y
    \DOSTCPIP\FTPBETA\WATTCP.CFG hacen referencia a \DOSTCPIP\CURRCONN.CFG
    mediante la directiva INCLUDE, as que ambos progrmas quedan
    correctamente configurados cada vez que llamo a mi proveedor.

    MINUET y POPMAIL no hacen uso de CURRCONN.CFG, as que quedan
    configurados por medio de la variable de entorno MYIP. El resto de
    configuracin TCP/IP para estos programas (servidor de nombres, gateway,
    etc.) la hice a travs de los dilogos respectivos de cada aplicacin, ya
    que estos datos son siempre los mismos. Este mtodo hace difcil el
    mantenimiento de diferentes cuentas de acceso a Internet, pus parte de
    la configuracin debe ser cambiada por medio de los dilogos de estos
    programas cada vez que conectamos con un proveedor diferente.

    El mtodo del fichero WATTCP.CFG es mejor para soportar mltiples
    cuentas, pus se podra tener un MYISP.DAT diferente para cada proveedor
    y seleccionar uno durante la ejecucin de DIALER.BAT y el fichero
    CURRCONN.CFG ser generado con los datos del proveedor que estemos
    utilizando en ese momento.

    Las cosas van mejor con MINUET y POPMAIL si se utiliza el mtodo de
    configuracin BOOTP, que est soportado por los drivers que emulan
    Ethernet EPPPD.EXE y EPPPDD.EXE. Veremos un ejemplo en la seccin
    siguiente.


FICHEROS DE CONFIGURACION CON BOOTP

    Deberemos aplicar un pequeo nmero de cambios al ejemplo anterior para
    poder utilizar el mtodo BOOTP. Primero y ms importante, deberemos
    utilizar uno de los ejecutables EPPPD.EXE o EPPPDD.EXE; la generacin del
    fichero CURRCONN.CFG es diferente tambin, ahora el fichero MYISP.DAT
    contiene menos datos y estos no varan con la conexin, as que bastar
    con realizar una copia sobre CURRCONN.CFG. El ltimo cambio est en el
    fichero PPPDRC.CFG, se aade la opcin 'namsrv' para establecer las
    direcciones IP de servidores de nombres que se retornarn en las
    respuestas BOOTP emuladas por DOS PPPD.

    Comencemos con las modificaciones de MYISP.DAT:

        my_ip=bootp
        domainslist="myisp.com"
        smtphost=smtp.myisp.com
        nntphost=news.myisp.com
        mailaddr=myuserid@myisp.com

    El fichero PPPDRC.CFG modificado:

        COM3
        57600
        irq 5
        modem
        crtscts
        asyncmap 0
        connect "chat -v -r pppdconn.lst -f chatscr"
        user myuserid
        passwd mypassword
        namsrv 192.168.1.2
        namsrv 192.168.1.244

    El fichero DIALER.BAT modificado:

        @echo off

        if _%1==_ goto DIALER

        if %1==h goto HANGUP
        if %1==H goto HANGUP
        goto SYNTERR

        :HANGUP
        termin 0x60
        echo Connection closed
        goto END

        :SYNTERR
        echo Syntax error, call as DIALER or DIALER H
        goto END

        :DIALER
        epppd
        if errorlevel goto CONNERR
        if exist currconn.cfg del currconn.cfg
        copy myisp.dat currconn.cfg
        echo Connection succesful
        goto END

        :CONNERR
        echo Connection failed...

        :END


NOTAS SOBRE EL SEGUNDO EJEMPLO

    La versin 0.6 beta de DOS PPPD resuelve un problema relacionado con el
    soporte BOOTP y MINUET, as que ahora es posible configurar sta
    aplicacin por ese mtodo.


ACCESO TRADICIONAL SIN PAP

    Si el proveedor utiliza un mtodo de autentificacin basado en un 'login'
    *NIX, se debern realizar algunos cambios en el fichero CHATSCR. Podra
    ser necesario tambin eliminar las opciones 'user' y 'passwd' del fichero
    PPPDRC.CFG. Un ejemplo de CHATSCR para conectar con un proveedor con
    'login' stilo *NIX sera parecido a este:

        ABORT ERROR ABORT BUSY ABORT 'NO DIALTONE'
        ABORT 'NO CARRIER' ABORT RING
        REPORT CONNECT
        TIMEOUT 10
        '' ATZ
        OK AT&F
        OK ATDP055
        TIMEOUT 60
        CONNECT \c
        ogin: youruserid
        word: yourpass

    Ntese como se usa la cadena \c despus de la espera de CONNECT, para
    evitar que se enve un CR al sistema remoto, pus la cadena login: se
    espera que sea recibida justo despus de la cadena CONNECT. Notar tambin
    que las cadenas del 'login' *NIX se comparan solo en su parte final, para
    evitar fallos en la comparacin que pudieran darse por caracteres
    distorsionados justo tras conectar.


UTILIZAR KERMIT COMO MARCADOR DE MODEM

    El siguiente ejemplo muestra como utilizar el programa de emulacin
    de terminal KERMIT como marcador de modem. No debera ser necesario
    utilizar este programa, dado que CHAT es lo suficientemente potente como
    para manejar las situaciones ms comunes. De todos modos, algunos
    proveedores requieren procesos de entrada complicados que se resuelven
    mejor de modo interactivo con un programa de emulacin de terminal.

    Primero eliminar la linea 'connect ...' del fichero PPPDRC.CFG:

        COM3
        57600
        irq 5
        modem
        crtscts
        asyncmap 0
        user myuserid
        passwd mypassword

    Crear el fichero PPPDIAL.SCR en el directorio \DOSTCPIP con el siguiente
    contenido: 

        set COM3 \x3e8 5
        set port COM3
        set speed 57600
        set parity none
        set flow RTS/CTS

        def errfail echo \%1,hangup,goto fail ; Macro to handle failures.

        if < VERSION 311 errfail {MS-DOS Kermit 3.11 or later required.}

        set input timeout proceed
        set input echo on

        output ATZ\13
        input 2 OK
        if fail errfail {Turn on or connect your modem!}

        output AT&FM1L1\13
        input 2 OK
        if fail errfail {Turn on or connect your modem!}

        clear
        echo Dialing, wait...\13\10
        pause 1
        output ATDP055\13
        set alarm 60
        clear

        input 60 \10
        if success goto gotmsg
        if alarm errfail {No response from modem.}
        hangup
        goto fail

        :GOTMSG
        reinput 1 CONNECT 14400/LAPM-V
        if success goto login

        reinput 1 ERROR
        if success errfail {Modem command error.}
        reinput 0 BUSY
        if success errfail {Line is busy.}
        reinput 0 NO DIALTONE
        if success errfail {No dialtone.}
        reinput 0 NO CARRIER
        if success errfail {No carrier.}
        errfail {Unknown modem error.}

        :FAIL                           ; Dialing failed.
        define errfail                  ; Erase ERRFAIL definition
        end 1                           ; Return failure code.

        :LOGIN
        end 0

    Ntese como los valores de configuracin de puerto serie coinciden
    exactamente con los utilizados en DOS PPPD, es abolutamente necesario que
    esto sea as.

    Ahora cambiaremos el fichero DIALER.BAT para que quede como sigue:

        set KERMIT=PATH C:\DOSTCPIP\KERMIT
        ..\kermit\kermit take pppdial.scr
        if errorlevel goto CONNERR
        pppd
        if errorlevel goto CONNERR
        if not exist ip-up.bat goto CONNERR
        call ip-up.bat
        if exist currconn.cfg del currconn.cfg
        copy myisp.dat currconn.cfg
        echo my_ip=%MYIP% >>currconn.cfg
        echo gateway=%REMIP% >>currconn.cfg
        echo netmask=%NETMASK% >>currconn.cfg
        REM echo mss=%PEERMRU% >>currconn.cfg
        echo Connection succesful
        goto END

        :CONNERR
        echo Connection failed...

        :END


    El fichero CHATSCR no ser utilizado en este caso, as que podr ser
    eliminado si as se desea. En este ejemplo, se le pasa a KERMIT un script
    para que ejecute las operaciones de forma automtica, pero se podra
    omitir la opcin 'take pppdial.scr' de la lnea de comando y el programa
    se ejecutara en el modo interactivo normal.


UTILIZAR COMTOOL COMO MARCADOR DE MODEM

    La utilidad COMTOOL es un pequeo programa de manipulacin de puerto
    serie diseado por K.H. Weiss, puede distribuirse libremente para
    aplicaciones no comerciales. Esta utilidad est diseada para ser
    utilizada dentro de ficheros .BAT de DOS, incluyendo un modo
    mini-terminal interactivo. El fichero COMTOOL.DOC es la documentacin
    para esta utilidad.

    El nico fichero que requiere modificaciones para la utilizacin de
    COMTOOL es DIALER.BAT, que quedar como sigue:

        @echo off
        set PORT=3e8
        set IRQ=5
        set SPEED=1

        if _%1==_ goto DIALER

        if %1==h goto HANGUP
        if %1==H goto HANGUP
        goto SYNTERR

        :HANGUP
        REM comtool %PORT% %IRQ% ^D0 ^T10 ^D1 +++ ^T5 ATH0^CR ^W20 OK ^D0 ^
        termin 0x60
        echo Connection closed
        goto END

        :SYNTERR
        echo Syntax error, call as DIALER or DIALER H
        goto END

        :DIALER
        comtool %PORT% %IRQ% ^B%SPEED% ^F81 ^D0 ^T10 ^D1 ATZ^CR ^W20 OK ^
        if errorlevel 8 goto ABORT
        if errorlevel 1 goto INI2
        goto ERROR

        :INI2
        comtool %PORT% %IRQ% AT&FM1L1^CR ^W20 OK ^
        if errorlevel 8 goto ABORT
        if errorlevel 1 goto DIAL
        goto ERROR

        :DIAL
        comtool %PORT% %IRQ% ATDP055^CR ^W900 CONNECT BUSY DIALTONE ^
        if errorlevel 8 goto ABORT
        if errorlevel 3 goto NOTONE
        if errorlevel 2 goto ISBUSY
        if errorlevel 1 goto CONN
        goto ERROR

        :CONN
        if exist ip-up.bat del ip-up.bat
        pppd
        if errorlevel goto CONNERR
        if not exist ip-up.bat goto CONNERR
        call ip-up.bat
        if exist currconn.cfg del currconn.cfg
        copy myisp.dat currconn.cfg
        echo my_ip=%MYIP% >>currconn.cfg
        echo gateway=%REMIP% >>currconn.cfg
        echo netmask=%NETMASK% >>currconn.cfg
        REM echo mss=%PEERMRU% >>currconn.cfg
        echo Connection succesful
        goto END

        :ABORT
        comtool %PORT% %IRQ% ^D0 ^T10 ^D1 +++ ^T5 ATH0^CR ^W20 OK ^D0 ^
        echo User abort...
        goto END

        :NOTONE
        comtool %PORT% %IRQ% ^D0 ^T10 ^D1 +++ ^T5 ATH0^CR ^W20 OK ^D0 ^
        echo No DIALTONE...
        goto END

        :ISBUSY
        comtool %PORT% %IRQ% ^D0 ^T10 ^D1 +++ ^T5 ATH0^CR ^W20 OK ^D0 ^
        echo Line BUSY...
        goto END

        :ERROR
        echo MODEM error...
        goto END

        :CONNERR
        comtool %PORT% %IRQ% ^D0 ^T10 ^D1 +++ ^T5 ATH0 ^W20 OK ^D0 ^
        echo Connection failed...

        :END
        set PORT=
        set IRQ=
        set SPEED=


UTILIZAR CHAT0 COMO MARCADOR DE MODEM PARA SLIP

    El ejemplo que sigue demuestra la utilizacin de CHAT0 para manipular el
    modem en una conexin SLIP. Uno de mis proveedores contina dando soporte
    a este protocolo, aunque no lo utilizo con frecuencia. Utilizo el
    excelente packet driver CSL_PKT desarrollado por Frank Molzahn, aconsejo
    la utilizacin de este driver a todos aquellos que requieran una conexin
    por el mtodo SLIP. El mtodo presentado debera ser vlido para
    utilizarlo con otros packet driver SLIP, como ETHERSLIP o
    SLIPPER/CSLIPPER.

    El fichero DIALER.BAT para la conexin CSLIP quedar as:

        @echo off

        if _%1==_ goto DIALER

        if %1==h goto UNLOAD
        if %1==H goto UNLOAD

        :SYNTERR
        echo Syntax error, call as DIALER or DIALER H
        goto END

        :DIALER
        termin.com 0x60 >nul
        set MYIP=0.0.0.0
        set REMIP=0.0.0.0
        set NETMASK=
        set PEERMRU=
        if exist chatenv.bat del chatenv.bat >nul
        chat0.exe -p com2 -s 115200 -v -r cslpconn.lst -f ignchat
        if errorlevel 1 goto CONNERR
        if not exist chatenv.bat goto BADIP
        call chatenv.bat
        if "%MYIP%"=="0.0.0.0" goto BADIP
        lh cslpkt.com /c 2 /q 3 /d /i %MYIP%
        if exist currconn.cfg del currconn.cfg >nul
        copy myisp.dat currconn.cfg
        echo my_ip=%MYIP% >>currconn.cfg
        echo gateway=%REMIP% >>currconn.cfg
        echo netmask=255.255.255.0 >>currconn.cfg
        type c:\dostcpip\packetd\ign.dat >>currconn.cfg
        echo mss=512 >>currconn.cfg
        echo Connection succesful
        goto END

        :BADIP
        echo.
        echo IP address of Not completed... Exiting Dialup
        pause

        :UNLOAD
        termin.com 0x60 >nul
        set MYIP=
        set REMIP=
        echo.
        echo Connection closed
        goto END

        :CONNERR
        echo Connection failed

        :END

    Aqu tenemos el fichero IGNCHAT utilizado como script para CHAT0, realiza
    la entrada en el servidor y captura las direcciones IP local y remota
    para su utilizacin posterior:

        ABORT ERROR
        ABORT BUSY
        ABORT 'NO DIALTONE'
        ABORT 'NO CARRIER'
        ABORT RING
        REPORT CONNECT
        TIMEOUT 2
        '' ATZ
        OK 'AT&F'
        OK 'ATDT5554433'
        TIMEOUT 60
        CONNECT '\d&\d&\d&\d\d\d'
        TIMEOUT 15
        '==>' '1.1'
        '==>' 'internet'
        '==>' 'myaccountid\smyuserid\smypassword'
        GRABIP MYIP
        '' ''
        GRABIP REMIP
        'now.'

    Esta particular secuencia de entrada es para IBM Global Network, as que
    usuarios de este proveedor podrn hacer un uso directo de este ejemplo,
    nicamente deber reemplazar myaccount, myuserisd y mypassword con los
    suyos.

    Se utilizan directivas GRABIP para capturar los valores enviados por el
    ordenador remoto, que son colocados en las variables de entorno MYIP y
    REMIP. CHAT0 no las crear automticamente, deber ejecutarse el fichero
    CHATENV.BAT para que las variables se inicialicen. Ntese como se
    comprueba la existencia de este fichero tras la llamada a CHAT0 en
    DIALER.BAT, para ejecutarlo solo en el caso de que haya sido creado.

    Notar tambin la manera en que se pasa el valor de MYIP a CSL_PKT; este
    driver soporta emulacin RARP para pasar la direccin IP local a las
    aplicaciones que lo utilicen, as que es requerido proveer este valor a
    CSL_PKT para un funcionamiento correcto de la emulacin RARP.

