134 lines
3.0 KiB
Plaintext
134 lines
3.0 KiB
Plaintext
#!xchat
|
|
# @(#) Login.PortSelUnix V1.0 Tue Sep 1 14:57:05 1992 (Bob Denny)
|
|
#
|
|
# NOTE: Untested with xchat V1.1. Taken from DECUS UUCP.
|
|
#
|
|
# From: "Kent C. Brodie" <moocow!brodie@CSD4.MILW.WISC.EDU>
|
|
# uucp: {uunet!marque,csd4.milw.wisc.edu}!moocow!brodie
|
|
# special script for "uwmcsd4", have to go through a port selector (and then
|
|
# log in via standard Unix procedures).
|
|
#
|
|
# Also included is the ability to wait in the port selector queue.
|
|
# Be forwarned that the debug log can get pretty big depending on
|
|
# how many times you "wait" in the queue.
|
|
# (C) 1989 Kent C. Brodie - Medical College of Wisconsin
|
|
|
|
# P0 is systemname , P1 is username, P2 is password.
|
|
|
|
zero
|
|
|
|
# send a CR to get the selector's attention. Sleep a little bit
|
|
# due to large login text of selector. It sends "Which System?"
|
|
# when it's ready.
|
|
|
|
getprtslct:
|
|
count
|
|
ifgtr noprtslct 6
|
|
break
|
|
send \r
|
|
sleep 2000
|
|
flush
|
|
expect prtslctok ystem?
|
|
timeout getprtslct 15000
|
|
|
|
noprtslct:
|
|
logerr Sent cr, no "Which System?" from port selector
|
|
failed
|
|
|
|
# Send the system name. We either get "OK" (connected), or we
|
|
# get "No ports available, would you like to wait?" (wait in queue)
|
|
|
|
prtslctok:
|
|
zero
|
|
sendstr 0
|
|
send \r
|
|
expect connected OK
|
|
expect prtslctwait wait?
|
|
timeout noconnect 10000
|
|
|
|
# Usually we get "nn Your place in queue" messages. JUST in case we
|
|
# get a free port right away, check for 'Are you ready?' as well.
|
|
|
|
prtslctwait:
|
|
zero
|
|
send Y\r
|
|
expect prtslctque queue
|
|
expect prtslctrdy ready?
|
|
timeout prtwaitbad 70000
|
|
|
|
prtwaitbad:
|
|
logerr Sent "Y" to wait in queue, did not get valid response.
|
|
failed
|
|
|
|
# Here's where we wait in the queue. The port selector sends us a status
|
|
# message about once a minute. We either get "nn Your place in queue"
|
|
# or we get "System Available. Are you Ready?".
|
|
# If something goes wrong, we time out waiting for either response.
|
|
# The reason we don't sleep for 40-50 seconds is because as SOON as the
|
|
# port is ready, it informs us. If we wait too long, it drops us.
|
|
# This setup is laid out for a maximum of 20 "tries" which is ABOUT
|
|
# 20 minutes. Note: This constant retrying can make log files
|
|
# kind of big....
|
|
|
|
prtslctque:
|
|
count
|
|
ifgtr prtslcttry 20
|
|
expect prtslctque queue
|
|
expect prtslctrdy ready?
|
|
timeout noportwait 70000
|
|
|
|
prtslcttry:
|
|
logerr Too many (20) wait/retries -- queue too busy.
|
|
failed
|
|
|
|
prtslctrdy:
|
|
send Y\r
|
|
expect connected OK
|
|
timeout noconnect 20000
|
|
|
|
|
|
noportwait:
|
|
logerr Timed out awaiting place in port queue
|
|
failed
|
|
|
|
noconnect:
|
|
logerr Sent system name, no "OK" from selector
|
|
failed
|
|
|
|
# standard Unix login stuff. Send cr, expect "ogin:", if no, send a break
|
|
# (which tells Unix to try the next bit rate) and try again.
|
|
|
|
connected:
|
|
send \r
|
|
zero
|
|
goto waitlogin
|
|
|
|
sendbreak:
|
|
count
|
|
ifgtr nolgi 6
|
|
flush
|
|
break
|
|
|
|
waitlogin:
|
|
expect gotlogin ogin:
|
|
timeout sendbreak 5000
|
|
|
|
nolgi:
|
|
logerr No login: prompt
|
|
failed
|
|
|
|
gotlogin:
|
|
sendstr 1
|
|
send \r
|
|
expect gotword word:
|
|
timeout nopwd 10000
|
|
|
|
nopwd:
|
|
logerr No password: prompt
|
|
failed
|
|
|
|
gotword:
|
|
sendstr 2
|
|
send \r
|
|
success
|