______________________________________________________________________________ SLIP/PPP (PC): REX script for use with OS/2 3.0 (Warp) Q. Do you have a script I can use to make OS/2 3.0 (Warp) connect to halcyon via SLIP? A. Thanks to halcyon subscriber Larry da Ponte, here's a REX script that'll do the trick. The SLIP driver and Internet applications are included with "Bonus Pack" that accompanies the early shipments of Warp. The original script initialized the modem using a simple "hang up then recall saved parameters" string, which is likely to be insufficient for your modem. We've replaced it with a string suitable for a SupraFAXmodem V.32bis: AT&F2S7=75S9=16S10=36 If you have a different modem, search for that string below and modify it as appropriate. Because we don't currently have access to a system running Warp, we have not tested this script, and are unable to provide support for it. We recommend posting questions in the halcyon.slip newsgroup, where others using SLIP and OS/2 might be able to offer help. Please send any comments or corrections to: support@nwnexus.net ------------------------------- cut here ---------------------------------- /*--------------------------------------------------------------------------*/ /* */ /* OS/2 2.1 / WARP REX Driver for IBM TCP/IP version 2.0 / IAK */ /* */ /* nwnexus.cmd */ /* */ /* Based on a sample script supplied by IBM */ /* Modified to connect to Northwest Nexus by */ /* Larry da Ponte (daponte@halcyon.com */ /* and MJ Tardiff (mjt@halcyon.com) */ /* */ /* .................................................. */ /* */ /* Sample attachment script for dialing into Northwest Nexus' network */ /* servers in order to establish a SLIP connection. This script should be */ /* specified on page 1 in the Login Script field for connections via SlipPM */ /* or using the -connect option if executing slip directly. */ /* */ /* */ /* Comment from original script: */ /* NOTE: This file is supplied as a sample connection script, and */ /* does not constitute the endorsement of a particular */ /* Internet provider on the part of IBM. */ /* Internet providers periodically change their connection */ /* procedures; please refer to the latest information provided */ /* by the service provider. */ /* */ /* This script may be modified to suit the needs of the user */ /* and is written to process dialogs similar to those */ /* used by many Annex type service providers. */ /* End of original, unmodified comment */ /* */ /* The script parameters specify the command to send to the modem to dial */ /* the remote site and the username/password combination to use to log into */ /* the terminal server. If any of the parameters are omitted, or are */ /* specified as an asterix (*), the script will prompt for them (Refer */ /* to caveat below). This is most useful with the password parameter to */ /* avoid storing the password in a text file on the disk. */ /* */ /* For example, the following might be used in SlipPM: */ /* Login Script: nwnexus.cmd atdt999-9999 loginid password */ /* */ /* which would then feed the "atdt999-9999" command to the modem, followed */ /* by the login id and password once the connection is established. */ /* */ /* From slip directly this script supports: */ /* -connect "nwnexus.cmd atdt999-9999 loginid *" */ /* */ /* which would cause this script to initially prompt for the password. It */ /* would then feed the "atdt999-9999" command to the modem, and when the */ /* server answered, it would use "loginid" as a username and the password */ /* specified. */ /* */ /* NOTE: You must pass the phone number, and both login id and password */ /* to this script from the Dialer. The Dialer will NOT allow for the */ /* input of a phone number, login or password from the keyboard. */ /* - - - - - - - - - - - - - - - - - - - - - - - - - */ /* */ /* When the script runs, it is automatically passed the interface name for */ /* the interface it is running on as the first argument, followed by the */ /* user arguments. */ /* */ /* The script sends the dial string to the modem and then logs into the */ /* terminal server using the username/password. It then issues the SLIP */ /* command to start SLIP, and parses the resulting output to determine the */ /* appropriate addresses to use. Lastly, it issues ifconfig and route */ /* commands to configure the OS/2 system appropriately. Note that the */ /* configuration assumes a Class C netmask for the SLIP interface. */ /* */ /*--------------------------------------------------------------------------*/ parse arg interface , dialcmd username password /*--------------------------------------------------------------------------*/ /* Initialization and Main Script Code */ /*--------------------------------------------------------------------------*/ 'route -f' 'route -h' /* Set some definitions for easier COM strings */ cr='0d'x crlf='0d0a'x say '' say 'halcyon - SLIP Example Connection Script ', '(interface' interface')' /* Prompt for missing information */ if dialcmd = '' then do call charout , 'Dial Command: ' parse pull dialcmd end if username = '' | username = '*' then do call charout , 'User Name: ' parse pull username end else do say 'User:' username end if password = '' | password = '*' then do call charout , 'Password: ' password = readpass() end /* Flush any stuff left over from previous COM activity */ call flush_receive /* Reset the modem here */ /* You may need to customize this for your modem make and model */ call lineout , 'Reset modem...' call send 'AT&F2S7=75S9=16S10=36' || cr call waitfor 'OK', 5 ; call flush_receive 'echo' if RC = 1 then do call lineout , 'Modem not resetting... Trying again' call send '+++' call waitfor 'OK' call send 'ATH' || cr call waitfor 'OK', 3 end /* Dial the remote server */ call charout , 'Now Dialing...' /* Wait for connection */ call send dialcmd || cr call waitfor 'CONNECT' ; call waitfor crlf /* Handle login. We wait for standard strings, and then flush anything */ /* else to take care of trailing spaces, etc.. */ call waitfor 'login:' ; call flush_receive 'echo' call send username || cr call waitfor 'Password:' ; call flush_receive 'echo' call send password || cr /* Parse the results of the SLIP command to determine our address. */ /* We use the "waitfor_buffer" variable from the waitfor routine */ /* to parse the stuff we get from the server after waiting for an */ /* appropriate point in the data stream. */ /*call waitfor 'Your address is' */ call waitfor 'to' parse var waitfor_buffer . 'SL/IP session from (' a '.' b '.' c '.' d ') to' . server_address = a||'.'||b||'.'||c||'.'||d call waitfor 'beginning' parse var waitfor_buffer a '.' b '.' c '.' d 'beginning' os2_address = a||'.'||b||'.'||c||'.'||d call flush_receive 'echo' /* Now configure this host for the appropriate address, */ /* and for a default route through the server. */ say 'SLIP connection established' say 'Configuring local address =' os2_address say 'halcyon =' server_address 'ifconfig sl0' os2_address server_address 'netmask 255.255.255.0' 'route add default' server_address '1' /* All done */ exit 0 /*--------------------------------------------------------------------------*/ /* send ( sendstring) */ /*..........................................................................*/ /* */ /* Routine to send a character string off to the modem. */ /* */ /*--------------------------------------------------------------------------*/ send: parse arg sendstring call slip_com_output interface , sendstring return /*--------------------------------------------------------------------------*/ /* waitfor ( waitstring , [timeout] ) */ /*..........................................................................*/ /* */ /* Waits for the supplied string to show up in the COM input. All input */ /* from the time this function is called until the string shows up in the */ /* input is accumulated in the "waitfor_buffer" variable. */ /* */ /* If timeout is specified, it says how long to wait if data stops showing */ /* up on the COM port (in seconds). */ /* */ /*--------------------------------------------------------------------------*/ waitfor: parse arg waitstring , timeout if timeout = '' then timeout = 5000 /* L O N G delay if not specified */ waitfor_buffer = '' ; done = -1; curpos = 1 ORI_TIME=TIME('E') if (remain_buffer = 'REMAIN_BUFFER') then do remain_buffer = '' end do while (done = -1) if (remain_buffer \= '') then do line = remain_buffer remain_buffer = '' end else do line = slip_com_input(interface,,10) end waitfor_buffer = waitfor_buffer || line index = pos(waitstring,waitfor_buffer) if (index > 0) then do remain_buffer = substr(waitfor_buffer,index+length(waitstring)) waitfor_buffer = delstr(waitfor_buffer,index+length(waitstring)) done = 0 end call charout , substr(waitfor_buffer,curpos) curpos = length(waitfor_buffer)+1 if ((done \= 0) & (TIME('E')>timeout)) then do call lineout , ' WAITFOR: timed out ' done = 1 end end timeout=0 RC=done return RC /*--------------------------------------------------------------------------*/ /* readpass () */ /*..........................................................................*/ /* */ /* Routine used to read a password from the user without echoing the */ /* password to the screen. */ /* */ /*--------------------------------------------------------------------------*/ readpass: answer = '' do until key = cr key = slip_getch() if key \= cr then do answer = answer || key end end say '' return answer /*--------------------------------------------------------------------------*/ /* flush_receive () */ /*..........................................................................*/ /* */ /* Routine to flush any pending characters to be read from the COM port. */ /* Reads everything it can until nothing new shows up for 100ms, at which */ /* point it returns. */ /* */ /* The optional echo argument, if 1, says to echo flushed information. */ /* */ /*--------------------------------------------------------------------------*/ flush_receive: parse arg echo /* If echoing the flush - take care of waitfor remaining buffer */ if (echo \= '') & (length(remain_buffer) > 0) then do call charout , remain_buffer remain_buffer = '' end /* Eat anything left in the modem or COM buffers */ /* Stop when nothing new appears for 100ms. */ do until line = '' line = slip_com_input(interface,,100) if echo \= '' then call charout , line end return ------------------------------- cut here ----------------------------------- (13-Nov-94/spprsfow/MJT) ______________________________________________________________________________ Copyright 1996 Northwest Nexus Inc. All Rights Reserved. This document may not be reproduced nor redistributed in any form without express permission; contact us at support@nwnexus.net with questions.