home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / PPPBCKP / DOSPPP06.ZIP / SAMPLES.TXT < prev    next >
Text File  |  1997-09-14  |  18KB  |  586 lines

  1. PPPD for DOS 0.5 alpha              Copyright (c) 1997 Antonio Lopez Molero
  2.  
  3.  
  4. CONTENTS
  5.  
  6.         OVERVIEW
  7.         DIRECTORY STRUCTURE
  8.         NON BOOTP CONFIGURATION FILES
  9.         NOTES FOR THE FIRST SAMPLE
  10.         BOOTP CONFIGURATION FILES
  11.         NOTES FOR THE SECOND SAMPLE
  12.         TRADITIONAL LOGINS WITHOUT PAP
  13.         USING KERMIT AS DIALER
  14.         USING COMTOOL AS DIALER
  15.         USING CHAT0 AS SLIP DIALER
  16.  
  17. OVERVIEW
  18.  
  19.     This file shows how I configured my DOS Internet applications to work 
  20.     with the PPPD packet driver. There is also samples on how to use 
  21.     dialing tools other than the enclosed CHAT. I used KERMIT and COMTOOL 
  22.     as dialers before getting a working CHAT implementation. Even though it
  23.     is not a PPP topic, It also includes one example on how to use CHAT0
  24.     for SLIP dial out, showing the new string capture features found in
  25.     CHAT0. 
  26.  
  27.  
  28. DIRECTORY STRUCTURE
  29.  
  30.     I have the following directory structure for holding all my DOS 
  31.     Internet stuff:
  32.  
  33.         \DOSTCPIP
  34.         \DOSTCPIP\LYNX
  35.         \DOSTCPIP\FTPBETA
  36.         \DOSTCPIP\MINUET
  37.         \DOSTCPIP\POPML322
  38.         \DOSTCPIP\KERMIT
  39.  
  40.     I have each separate application installed in its own directory, for 
  41.     example DOSLYNX is installed under \DOSTCPIP\LYNX, MINUET is installed 
  42.     under \DOSTCPIP\MINUET, etc.
  43.  
  44.  
  45. NON BOOTP CONFIGURATION FILES
  46.  
  47.     I have the following files in the base \DOSTCPIP directory:
  48.  
  49.         PPPD.EXE
  50.         PPPDD.EXE
  51.         EPPPD.EXE
  52.         EPPPDD.EXE
  53.         CHAT.EXE
  54.         CHAT0.EXE
  55.         TERMIN.COM
  56.         COMTOOL.COM
  57.         MYISP.DAT
  58.         PPPDRC.CFG
  59.         CHATSCR
  60.         DIALER.BAT
  61.  
  62.     The files of interest for configuration purposes are MYISP.DAT, 
  63.     PPPDRC.CFG, CHATSCR and DIALER.BAT. I will describe them in greater 
  64.     detail in the following paragraphs.
  65.  
  66.     MYISP.DAT - This file holds some fixed information about my ISP for use 
  67.     in configuring WATTCP applications (DOSLYNX and FTPBETA) through a 
  68.     configuration file, its contents are as follows:
  69.  
  70.         nameserver=192.168.1.2
  71.         nameserver=192.168.1.244
  72.         domainslist="myisp.com"
  73.         smtphost=smtp.myisp.com
  74.         nntphost=news.myisp.com
  75.         mailaddr=myuserid@myisp.com
  76.  
  77.     PPPDRC.CFG - Local PPPD configuration file, it looks like:
  78.  
  79.         COM3
  80.         57600
  81.         irq 5
  82.         modem
  83.         crtscts
  84.         asyncmap 0
  85.         connect "chat -v -r pppdconn.lst -f chatscr"
  86.         user myuserid
  87.         passwd mypassword
  88.  
  89.     Note that I'm using the 'user' and 'passwd' options in the 
  90.     configuration file; that is because my ISP wants PAP for PPP 
  91.     authentication. I'm also using the CHAT report capabilities to generate 
  92.     a file called PPPDCONN.LST that will hold the date/time and the baud 
  93.     rate for each connection.
  94.  
  95.     CHATSCR - CHAT script file for handling modem interaction:
  96.  
  97.         ABORT ERROR ABORT BUSY ABORT 'NO DIALTONE'
  98.         ABORT 'NO CARRIER' ABORT RING
  99.         REPORT CONNECT
  100.         TIMEOUT 10
  101.         '' ATZ
  102.         OK AT&F
  103.         OK ATDP055
  104.         TIMEOUT 60
  105.         CONNECT
  106.  
  107.     DIALER.BAT - A DOS batch file used for the actual connection work, this 
  108.     file is run whenever I want to connect to my ISP:
  109.  
  110.         @echo off
  111.  
  112.         if _%1==_ goto DIALER
  113.  
  114.         if %1==h goto HANGUP
  115.         if %1==H goto HANGUP
  116.         goto SYNTERR
  117.  
  118.         :HANGUP
  119.         termin 0x60
  120.         echo Connection closed
  121.         goto END
  122.  
  123.         :SYNTERR
  124.         echo Syntax error, call as DIALER or DIALER H
  125.         goto END
  126.  
  127.         :DIALER
  128.         if exist ip-up.bat del ip-up.bat
  129.         pppdd debug kdebug 1 >>logger.out
  130.         if errorlevel goto CONNERR
  131.         if not exist ip-up.bat goto CONNERR
  132.         call ip-up.bat
  133.         if exist currconn.cfg del currconn.cfg
  134.         copy myisp.dat currconn.cfg
  135.         echo my_ip=%MYIP% >>currconn.cfg
  136.         echo gateway=%REMIP% >>currconn.cfg
  137.         echo netmask=%NETMASK% >>currconn.cfg
  138.         REM echo mss=%PEERMRU% >>currconn.cfg
  139.         echo Connection succesful
  140.         goto END
  141.  
  142.         :CONNERR
  143.         echo Connection failed...
  144.  
  145.         :END
  146.  
  147.  
  148. NOTES FOR THE FIRST SAMPLE
  149.  
  150.     The PPPDD executable is used, so debug information is generated and 
  151.     logged to the LOGGER.OUT file. If your connection is working OK, you 
  152.     can use the non-debug version instead. Replace the line by:
  153.  
  154.         pppd
  155.  
  156.     If you run the batch file as DIALER H, then the PPPD driver is removed 
  157.     from memory after closing the PPP link.
  158.  
  159.     Note how the CURRCONN.CFG file is created by taking the data in 
  160.     MYISP.DAT and the environment values set by the IP-UP.BAT call.  This 
  161.     file is then referenced in \DOSTCPIP\LYNX\DOSLYNX.CFG and in 
  162.     \DOSTCPIP\FTPBETA\WATTCP.CFG through the INCLUDE directive, so both 
  163.     DOSLYNX and FTP are properly configured whenever I dial into my ISP.
  164.  
  165.     MINUET and POPMAIL don't make use of the CURRCONN.CFG, so they get 
  166.     configured through the MYIP environment variable. The rest of TCP/IP 
  167.     data (nameservers, etc.) are directly entered in their respective 
  168.     configuration dialogs, as those items are always the same. This has the 
  169.     limitation of making it difficult to maintain more than one ISP 
  170.     account, as you would need to change some of the configuration data 
  171.     through the program dialogs every time you connected.
  172.  
  173.     The WATTCP.CFG file approach is best suited for multiple ISPs, as you 
  174.     could have a different MYISP.DAT for each and select one in the DIALER 
  175.     batch file, the generated CURRCONN.CFG file changing accordlingly.
  176.  
  177.     Things gets better for MINUET and POPMAIL if you use the BOOTP method 
  178.     of configuration, supported only by the Ethernet emulation drivers 
  179.     EPPPD.EXE and EPPPDD.EXE. We will see an example in the next section.
  180.  
  181.  
  182. BOOTP CONFIGURATION FILES
  183.  
  184.     A small number of changes is required for BOOTP configuration method. 
  185.     First, one of EPPPD.EXE or EPPPDD.EXE must be used in DIALER.BAT. Also 
  186.     the CURRCONN.CFG file generation is different. Now the MYISP.DAT file 
  187.     contains all the required data, so a simple copy is done. The last 
  188.     change involves the PPPDRC.CFG file. The 'namsrv' option is used to 
  189.     help set up the DNS IP addresses to be returned in the BOOTP replies.
  190.  
  191.     Let's start with the modified MYISP.DAT file:
  192.  
  193.         my_ip=bootp
  194.         domainslist="myisp.com"
  195.         smtphost=smtp.myisp.com
  196.         nntphost=news.myisp.com
  197.         mailaddr=myuserid@myisp.com
  198.  
  199.     The modified PPPDRC.CFG file:
  200.  
  201.         COM3
  202.         57600
  203.         irq 5
  204.         modem
  205.         crtscts
  206.         asyncmap 0
  207.         connect "chat -v -r pppdconn.lst -f chatscr"
  208.         user myuserid
  209.         passwd mypassword
  210.         namsrv 192.168.1.2
  211.         namsrv 192.168.1.244
  212.  
  213.     The modified DIALER.BAT file:
  214.  
  215.         @echo off
  216.  
  217.         if _%1==_ goto DIALER
  218.  
  219.         if %1==h goto HANGUP
  220.         if %1==H goto HANGUP
  221.         goto SYNTERR
  222.  
  223.         :HANGUP
  224.         termin 0x60
  225.         echo Connection closed
  226.         goto END
  227.  
  228.         :SYNTERR
  229.         echo Syntax error, call as DIALER or DIALER H
  230.         goto END
  231.  
  232.         :DIALER
  233.         epppd
  234.         if errorlevel goto CONNERR
  235.         if exist currconn.cfg del currconn.cfg
  236.         copy myisp.dat currconn.cfg
  237.         echo Connection succesful
  238.         goto END
  239.  
  240.         :CONNERR
  241.         echo Connection failed...
  242.  
  243.         :END
  244.  
  245.     
  246. NOTES FOR THE SECOND SAMPLE
  247.  
  248.     DOS PPPD version 0.6 beta solves a previous problem found in BOOTP
  249.     support for MINUET, so it is possible to configure this application
  250.     through BOOTP now.
  251.  
  252.  
  253. TRADITIONAL LOGINS WITHOUT PAP
  254.  
  255.     If your ISP is using a traditional UNIX style login, you must change 
  256.     the CHATSCR file to acomodate this. You might need to remove the 'user' 
  257.     and 'passwd' options from PPPDRC.CFG. A sample CHATSCR that handles 
  258.     UNIX style logins will look like this:
  259.  
  260.         ABORT ERROR ABORT BUSY ABORT 'NO DIALTONE'
  261.         ABORT 'NO CARRIER' ABORT RING
  262.         REPORT CONNECT
  263.         TIMEOUT 10
  264.         '' ATZ
  265.         OK AT&F
  266.         OK ATDP055
  267.         TIMEOUT 60
  268.         CONNECT \c
  269.         ogin: youruserid
  270.         word: yourpass
  271.  
  272.     Note how the \c string is used after the CONNECT expectation to send 
  273.     nothing to the modem, since the login: keyword is expected to come just 
  274.     after the CONNECT string. Note also how the login prompts are matched 
  275.     at final substrings, to prevent login failures due to possible garbage 
  276.     received after modem connection.
  277.  
  278.  
  279. USING KERMIT AS DIALER
  280.  
  281.     The next sample shows how to use the KERMIT terminal emulator program 
  282.     to establish the modem connection. It shouldn't be necessary to use it, 
  283.     since the enclose CHAT program should be powerful enough to handle most 
  284.     common login sequences. Nevertheless, some ISPs require convoluted 
  285.     login prompts that are best handled by a terminal program dialing in 
  286.     manual mode.
  287.  
  288.     First remove the 'connect ...' line from CHATSCR:
  289.  
  290.         COM3
  291.         57600
  292.         irq 5
  293.         modem
  294.         crtscts
  295.         asyncmap 0
  296.         user myuserid
  297.         passwd mypassword
  298.  
  299.     Then create the file PPPDIAL.SCR in the \DOSTCPIP directory:
  300.  
  301.         set COM3 \x3e8 5
  302.         set port COM3
  303.         set speed 57600
  304.         set parity none
  305.         set flow RTS/CTS
  306.  
  307.         def errfail echo \%1,hangup,goto fail ; Macro to handle failures.
  308.  
  309.         if < VERSION 311 errfail {MS-DOS Kermit 3.11 or later required.}
  310.  
  311.         set input timeout proceed
  312.         set input echo on
  313.  
  314.         output ATZ\13
  315.         input 2 OK
  316.         if fail errfail {Turn on or connect your modem!}
  317.  
  318.         output AT&FM1L1\13
  319.         input 2 OK
  320.         if fail errfail {Turn on or connect your modem!}
  321.  
  322.         clear
  323.         echo Dialing, wait...\13\10
  324.         pause 1
  325.         output ATDP055\13
  326.         set alarm 60
  327.         clear
  328.  
  329.         input 60 \10
  330.         if success goto gotmsg
  331.         if alarm errfail {No response from modem.}
  332.         hangup
  333.         goto fail
  334.  
  335.         :GOTMSG
  336.         reinput 1 CONNECT 14400/LAPM-V
  337.         if success goto login
  338.  
  339.         reinput 1 ERROR
  340.         if success errfail {Modem command error.}
  341.         reinput 0 BUSY
  342.         if success errfail {Line is busy.}
  343.         reinput 0 NO DIALTONE
  344.         if success errfail {No dialtone.}
  345.         reinput 0 NO CARRIER
  346.         if success errfail {No carrier.}
  347.         errfail {Unknown modem error.}
  348.  
  349.         :FAIL                           ; Dialing failed.
  350.         define errfail                  ; Erase ERRFAIL definition
  351.         end 1                           ; Return failure code.
  352.  
  353.         :LOGIN
  354.         end 0
  355.  
  356.     Note how serial port settings exactly match the ones given to PPPD - it 
  357.     is absolutely necessary that they do.
  358.  
  359.     Now change the DIALER.BAT file to:
  360.  
  361.         set KERMIT=PATH C:\DOSTCPIP\KERMIT
  362.         ..\kermit\kermit take pppdial.scr
  363.         if errorlevel goto CONNERR
  364.         pppd
  365.         if errorlevel goto CONNERR
  366.         if not exist ip-up.bat goto CONNERR
  367.         call ip-up.bat
  368.         if exist currconn.cfg del currconn.cfg
  369.         copy myisp.dat currconn.cfg
  370.         echo my_ip=%MYIP% >>currconn.cfg
  371.         echo gateway=%REMIP% >>currconn.cfg
  372.         echo netmask=%NETMASK% >>currconn.cfg
  373.         REM echo mss=%PEERMRU% >>currconn.cfg
  374.         echo Connection succesful
  375.         goto END
  376.  
  377.         :CONNERR
  378.         echo Connection failed...
  379.  
  380.         :END
  381.  
  382.     The CHATSCR file is not used now, so you can get rid off it if you 
  383.     want. In this sample, KERMIT is run automatically via a script, but you 
  384.     can omit the 'take pppdial.scr' command line option, and then it will 
  385.     be run in the normal interactive mode.
  386.  
  387.  
  388. USING COMTOOL AS DIALER
  389.  
  390.     COMTOOL is a tiny utility for COM port manipulation written by K.H. 
  391.     Weiss. It can be freely distributed for non commercial applications. 
  392.     This utility is meant to be used inside DOS batch files, and has a 
  393.     terminal mode also. The COMTOOL.DOC file is the documentation for it.
  394.  
  395.     The only file that changes for COMTOOL use is DIALER.BAT:
  396.  
  397.         @echo off
  398.         set PORT=3e8
  399.         set IRQ=5
  400.         set SPEED=1
  401.  
  402.         if _%1==_ goto DIALER
  403.  
  404.         if %1==h goto HANGUP
  405.         if %1==H goto HANGUP
  406.         goto SYNTERR
  407.  
  408.         :HANGUP
  409.         REM comtool %PORT% %IRQ% ^D0 ^T10 ^D1 +++ ^T5 ATH0^CR ^W20 OK ^D0 ^
  410.         termin 0x60
  411.         echo Connection closed
  412.         goto END
  413.  
  414.         :SYNTERR
  415.         echo Syntax error, call as DIALER or DIALER H
  416.         goto END
  417.  
  418.         :DIALER
  419.         comtool %PORT% %IRQ% ^B%SPEED% ^F81 ^D0 ^T10 ^D1 ATZ^CR ^W20 OK ^
  420.         if errorlevel 8 goto ABORT
  421.         if errorlevel 1 goto INI2
  422.         goto ERROR
  423.  
  424.         :INI2
  425.         comtool %PORT% %IRQ% AT&FM1L1^CR ^W20 OK ^
  426.         if errorlevel 8 goto ABORT
  427.         if errorlevel 1 goto DIAL
  428.         goto ERROR
  429.  
  430.         :DIAL
  431.         comtool %PORT% %IRQ% ATDP055^CR ^W900 CONNECT BUSY DIALTONE ^
  432.         if errorlevel 8 goto ABORT
  433.         if errorlevel 3 goto NOTONE
  434.         if errorlevel 2 goto ISBUSY
  435.         if errorlevel 1 goto CONN
  436.         goto ERROR
  437.  
  438.         :CONN
  439.         if exist ip-up.bat del ip-up.bat
  440.         pppd
  441.         if errorlevel goto CONNERR
  442.         if not exist ip-up.bat goto CONNERR
  443.         call ip-up.bat
  444.         if exist currconn.cfg del currconn.cfg
  445.         copy myisp.dat currconn.cfg
  446.         echo my_ip=%MYIP% >>currconn.cfg
  447.         echo gateway=%REMIP% >>currconn.cfg
  448.         echo netmask=%NETMASK% >>currconn.cfg
  449.         REM echo mss=%PEERMRU% >>currconn.cfg
  450.         echo Connection succesful
  451.         goto END
  452.  
  453.         :ABORT
  454.         comtool %PORT% %IRQ% ^D0 ^T10 ^D1 +++ ^T5 ATH0^CR ^W20 OK ^D0 ^
  455.         echo User abort...
  456.         goto END
  457.  
  458.         :NOTONE
  459.         comtool %PORT% %IRQ% ^D0 ^T10 ^D1 +++ ^T5 ATH0^CR ^W20 OK ^D0 ^
  460.         echo No DIALTONE...
  461.         goto END
  462.  
  463.         :ISBUSY
  464.         comtool %PORT% %IRQ% ^D0 ^T10 ^D1 +++ ^T5 ATH0^CR ^W20 OK ^D0 ^
  465.         echo Line BUSY...
  466.         goto END
  467.  
  468.         :ERROR
  469.         echo MODEM error...
  470.         goto END
  471.  
  472.         :CONNERR
  473.         comtool %PORT% %IRQ% ^D0 ^T10 ^D1 +++ ^T5 ATH0 ^W20 OK ^D0 ^
  474.         echo Connection failed...
  475.  
  476.         :END
  477.         set PORT=
  478.         set IRQ=
  479.         set SPEED=
  480.  
  481.  
  482. USING CHAT0 AS SLIP DIALER
  483.  
  484.     The following example shows how to use CHAT0 for SLIP dial out. One of
  485.     my ISPs still using SLIP, so I do run it very often. I'm using the
  486.     excellent Frank Molzahn's CSL_PKT package for my CSLIP connection, I
  487.     strongly recommend it if you are a C/SLIP user. It should also work for
  488.     other C/SLIP packet drivers, like ETHERSLIP or Tatam's
  489.     SLIPPER/CSLIPPER.
  490.  
  491.     The DIALER.BAT for my CSLIP connection looks like:
  492.  
  493.         @echo off
  494.  
  495.         if _%1==_ goto DIALER
  496.  
  497.         if %1==h goto UNLOAD
  498.         if %1==H goto UNLOAD
  499.  
  500.         :SYNTERR
  501.         echo Syntax error, call as DIALER or DIALER H
  502.         goto END
  503.  
  504.         :DIALER
  505.         termin.com 0x60 >nul
  506.         set MYIP=0.0.0.0
  507.         set REMIP=0.0.0.0
  508.         set NETMASK=
  509.         set PEERMRU=
  510.         if exist chatenv.bat del chatenv.bat >nul
  511.         chat0.exe -p com2 -s 115200 -v -r cslpconn.lst -f ignchat
  512.         if errorlevel 1 goto CONNERR
  513.         if not exist chatenv.bat goto BADIP
  514.         call chatenv.bat
  515.         if "%MYIP%"=="0.0.0.0" goto BADIP
  516.         lh cslpkt.com /c 2 /q 3 /d /i %MYIP%
  517.         if exist currconn.cfg del currconn.cfg >nul
  518.         copy myisp.dat currconn.cfg
  519.         echo my_ip=%MYIP% >>currconn.cfg
  520.         echo gateway=%REMIP% >>currconn.cfg
  521.         echo netmask=255.255.255.0 >>currconn.cfg
  522.         type c:\dostcpip\packetd\ign.dat >>currconn.cfg
  523.         echo mss=512 >>currconn.cfg
  524.         echo Connection succesful
  525.         goto END
  526.  
  527.         :BADIP
  528.         echo.
  529.         echo IP address of Not completed... Exiting Dialup
  530.         pause
  531.  
  532.         :UNLOAD
  533.         termin.com 0x60 >nul
  534.         set MYIP=
  535.         set REMIP=
  536.         echo.
  537.         echo Connection closed
  538.         goto END
  539.  
  540.         :CONNERR
  541.         echo Connection failed
  542.  
  543.         :END
  544.  
  545.     And here is the IGNCHAT file used by CHAT0 for dialing, log into the
  546.     ISP and capture both local and remote IPs for later use:
  547.  
  548.         ABORT ERROR
  549.         ABORT BUSY
  550.         ABORT 'NO DIALTONE'
  551.         ABORT 'NO CARRIER'
  552.         ABORT RING
  553.         REPORT CONNECT
  554.         TIMEOUT 2
  555.         '' ATZ
  556.         OK 'AT&F'
  557.         OK 'ATDT5554433'
  558.         TIMEOUT 60
  559.         CONNECT '\d&\d&\d&\d\d\d'
  560.         TIMEOUT 15
  561.         '==>' '1.1'
  562.         '==>' 'internet'
  563.         '==>' 'myaccountid\smyuserid\smypassword'
  564.         GRABIP MYIP
  565.         '' ''
  566.         GRABIP REMIP
  567.         'now.'
  568.  
  569.     This peculiar login sequence is for IBM Global Network Internet
  570.     Services, so users who has it as ISP could make direct use of the
  571.     IGNCHAT file by simply replacing myaccount, myuserid and mypassword
  572.     with their actual values.
  573.  
  574.     The GRABIP directives are used for capturing the values sent by the
  575.     remote into the MYIP and REMIP environment variables. CHAT0 does not
  576.     put these directly into the environment though, it creates a file
  577.     called CHATENV.BAT which contains SET directives. Note how this file is
  578.     checked for existence after CHAT0 call in DIALER.BAT, and is executed
  579.     after that for setting the environment values.
  580.  
  581.     Note also how MYIP value is passed to CSLPKT; this driver supports RARP
  582.     emulation for providing DOS Internet applications with local IP
  583.     information, so passing in the MYIP value guarantees proper RARP
  584.     emulation operation.
  585.  
  586.