1#!xchat 2# @(#) Login.PortSelUnix V1.0 Tue Sep 1 14:57:05 1992 (Bob Denny) 3# 4# NOTE: Untested with xchat V1.1. Taken from DECUS UUCP. 5# 6# From: "Kent C. Brodie" <moocow!brodie@CSD4.MILW.WISC.EDU> 7# uucp: {uunet!marque,csd4.milw.wisc.edu}!moocow!brodie 8# special script for "uwmcsd4", have to go through a port selector (and then 9# log in via standard Unix procedures). 10# 11# Also included is the ability to wait in the port selector queue. 12# Be forwarned that the debug log can get pretty big depending on 13# how many times you "wait" in the queue. 14# (C) 1989 Kent C. Brodie - Medical College of Wisconsin 15 16# P0 is systemname , P1 is username, P2 is password. 17 18 zero 19 20# send a CR to get the selector's attention. Sleep a little bit 21# due to large login text of selector. It sends "Which System?" 22# when it's ready. 23 24getprtslct: 25 count 26 ifgtr noprtslct 6 27 break 28 send \r 29 sleep 2000 30 flush 31 expect prtslctok ystem? 32 timeout getprtslct 15000 33 34noprtslct: 35 logerr Sent cr, no "Which System?" from port selector 36 failed 37 38# Send the system name. We either get "OK" (connected), or we 39# get "No ports available, would you like to wait?" (wait in queue) 40 41prtslctok: 42 zero 43 sendstr 0 44 send \r 45 expect connected OK 46 expect prtslctwait wait? 47 timeout noconnect 10000 48 49# Usually we get "nn Your place in queue" messages. JUST in case we 50# get a free port right away, check for 'Are you ready?' as well. 51 52prtslctwait: 53 zero 54 send Y\r 55 expect prtslctque queue 56 expect prtslctrdy ready? 57 timeout prtwaitbad 70000 58 59prtwaitbad: 60 logerr Sent "Y" to wait in queue, did not get valid response. 61 failed 62 63# Here's where we wait in the queue. The port selector sends us a status 64# message about once a minute. We either get "nn Your place in queue" 65# or we get "System Available. Are you Ready?". 66# If something goes wrong, we time out waiting for either response. 67# The reason we don't sleep for 40-50 seconds is because as SOON as the 68# port is ready, it informs us. If we wait too long, it drops us. 69# This setup is laid out for a maximum of 20 "tries" which is ABOUT 70# 20 minutes. Note: This constant retrying can make log files 71# kind of big.... 72 73prtslctque: 74 count 75 ifgtr prtslcttry 20 76 expect prtslctque queue 77 expect prtslctrdy ready? 78 timeout noportwait 70000 79 80prtslcttry: 81 logerr Too many (20) wait/retries -- queue too busy. 82 failed 83 84prtslctrdy: 85 send Y\r 86 expect connected OK 87 timeout noconnect 20000 88 89 90noportwait: 91 logerr Timed out awaiting place in port queue 92 failed 93 94noconnect: 95 logerr Sent system name, no "OK" from selector 96 failed 97 98# standard Unix login stuff. Send cr, expect "ogin:", if no, send a break 99# (which tells Unix to try the next bit rate) and try again. 100 101connected: 102 send \r 103 zero 104 goto waitlogin 105 106sendbreak: 107 count 108 ifgtr nolgi 6 109 flush 110 break 111 112waitlogin: 113 expect gotlogin ogin: 114 timeout sendbreak 5000 115 116nolgi: 117 logerr No login: prompt 118 failed 119 120gotlogin: 121 sendstr 1 122 send \r 123 expect gotword word: 124 timeout nopwd 10000 125 126nopwd: 127 logerr No password: prompt 128 failed 129 130gotword: 131 sendstr 2 132 send \r 133 success 134