#!xchat
# @(#) login.LAT V1.2 Tue Sep  1 13:25:28 1992
#
# xchat script for logging into a VMS system through a LAT
# terminal server port. If no VMS password parameter supplied,
# skips password phase of VMS login. If LAT-password supplied,
# will log into LAT server using that password. NOTE: does not
# handle the situation where a LAT password is needed but no
# VMS password is needed.
#
# Usage:
#	xchat login.LAT sysname username [ password [ LAT-password ] ]
#
# History:
#  rbd Fri Aug 14 13:37:06 1992	
#    Changes for Lantronix ETS-16. It says "type help at the Local> 
#    prompt..." then it gives the prompt for real! Prompt may need
#    to be something other than "Local>". We match the real Local> 
#    prompt by matching	the leading newline!
#
#  rbd Tue Sep  1 13:04:32 1992 
#    Remove absolute path name from log file. Now defaults per config.
#
start:
	dbgfile	Login.Log
	dbgset	15
	sleep	2000			# Wait 2 seconds
	flush				# Flush typeahead
	ifnstr	svrstart	3	# Skip server password if not given
#
# Starting point if server password supplied. Handle situation
# where the server line may have been left waiting for username
# or at local> prompt.
#
getsvrpwp:
	zero
l0:
	count				# Get server's password prompt
	ifgtr	deadmux		5	# die if 5 cr's don't do it
	send	\r
	timeout	l0		1000	# Wait and try again
	expect	dosvrpw		ssword>
	expect	svrlogin	ername>
	expect	connect		\nLocal>
#
# Send server's password. Fail if don't get Username
# or Local> prompt.
#
dosvrpw:
	zero
l2:
	sendstr	3
	send \r
	timeout	badsvrpw	5000	# Die if invalid
	expect	svrlogin	ername>
	expect	connect		\nLocal>
#
# Starting point if NO server password supplied. Handle situation
# where the server line may have been left at local> prompt.
#
svrstart:
	zero
l1:
	count				# Get username> or local> prompt
	ifgtr	deadmux		5	# Die if 5 cr's don't do it
	send	\r
	timeout	l1		1000	# Wait and try again
	expect	svrlogin	ername>
	expect	connect		\nLocal>
#
# Server asked for a username. Just give 'uucp'.
#
svrlogin:
	send	uucp\r
	timeout deadmux		2000
	expect	connect		\nLocal>
#
# At this point, we have the Local> prompt. Send the connect
# command for the specified LAT host service name, and wait for
# VMS "Username:" prompt. Die after 10 seconds.
#
connect:
	send	c\s
	sendstr	0
	send	\r
	timeout	nologin		10000
	expect	gotlogin	ername:
#
# Got VMS "Username:" prompt. Send the username. If a password
# was given, wait for the "Password:" prompt. Die after 10 seconds.
# if no password was given, we're done!
#
gotlogin:
	sendstr	1
	send	\r
	ifnstr	done		2
	timeout	nopasswd	10000
	expect	gotpasswd	ssword:
#
# Got VMS "Password:" prompt. Send the password and we're done!
#
gotpasswd:
	sendstr	2
	send	\r
#
# Success!
#
done:
	success
#
# ERROR HANDLERS
#
#
# LAT server appears dead. Fail.
#
deadmux:
	logerr	No response from LAT server
	failed
#
# The server password was bad. Fail.
#
badsvrpw:
	logerr	Invalid LAT server password
	failed
#
# VMS system appears to be dead. Fail.
#
nologin:
	logerr	No VMS Username: prompt
	failed
#
# Failed to get "Password:" prompt. Fail.
#
nopasswd:
	logerr	No VMS Password: prompt. Invalid password?
	failed

