# pragma ident "@(#)bnu:Systems	1.7 91/11/07 "
#
# Copyright 1991 Apple Computer, Inc.
# All Rights Reserved.
#
# Copyright 1984-85 AT&T
# AT&T K18 bnu:Systems 2.4 
# Systems 1.1 12/10/90 common
# common:Systems 1.2 1/17/90 10:10:38
#
# 'Systems' Basic Networking Utilities (BNU) Data Base Support File.
# [Related files: Devices, Dialers, and Dialcodes]
# -----------------------------------------------------------------------------
# This file contains information needed by the BNU program 'uucico' to 
# establish a communication link to a remote computer.  Each entry represents
# a computer that can be called by your computer.  In addition, the BNU
# software is configured to prevent any computer that does not appear in
# this file from logging in on your computer (the remote system will get the
# message "You are unknown to me" if not listed in this file).  More than one
# entry may be present for a particular computer.  The additional entries
# represent alternative communication paths that will be tried in sequential
# order.
#
# For each computer (system) you wish to call or allow to call you, you must
# have an entry in this format (entries can span many lines as long as the
# end of the line is a '\' followed by a newline):
#
#     System_name Time Type Class Phone Login
#
#     System_name
#         This field contains the node name of the remote computer.  This is
#         the name that appears when you do a 'uuname -l' on the remote
#         computer.  The name must be left-justified (whitespace before the
#         name is considered part of the name...).
#
#     Time
#         This field is a string that specifies the day-of-week and time-of-day
#         when the remote computer can be called.  The format of this field is:
#
#         daytime[;retry]
#
#         'daytime' is a combination of the day and time.  The day can be any
#         of:
#
#             Su, Mo, Tu, We, Th, Fr, Sa		- Days of the week
#	      Wk					- Any weekday (Mon-Fri)
#             Any					- Any day (Mon-Sun)
#             Never					- Never call
#
#         The time is represented in 24-hour notation and is written as a range
#         as in this example:
#
#             0800-1230
#
#         If the time is left off, it implies that any time of the day is ok to 
#         call.  You can specify multiple daytime combinations by use of the
#         comma:
#
#             Wk1700-0800,Sa,Su
#
#         The above says it's ok to call any day of the week between 1700 and
#         0800 inclusive, and anytime during Saturday and Sunday.
#
#         The 'retry' field tells uucico when it's ok to try calling the remote
#         computer again after a failed attempt.  The retry value is in minutes.
#     
#             Wk1700-0800,Sa,Su;9			- Retry in 9 minutes
#
#         If the remote system is never to be called (as in it calls you, you
#         don't call it), then the Time field should say 'Never'.  If you use
#         'Never', it's not required that you fill in the other fields such as
#         the Type, Class, Phone and Login because they're needed only for
#         calling out -- just leave them blank.
#
#     Type
#         This field contains the device type that should be used to establish
#         the communication link to the remote computer.  The keyword used in
#         this field is matched against the first field (Type) of the 'Devices'
#         file entries.  In addition, you can specify the particular protocol
#         to be used with this device type by the format: 
#
#             device_type[,protocol]
#
#         In this example, we want to use the 'ACU' device type and the 'g'
#         protocol:
#
#             ACU,g
#
#     Class
#         This field specifies the transfer speed of the device used in
#         establishing the communication link.  It may contain a letter and
#         speed to differentiate between classes of dialers.  Some devices can
#         be used at any speed, so the keyword 'Any' can be used.  This field
#         is matched against the forth field (Class) of the 'Devices' file
#         entries.  If this field doesn't make any sense for the device type,
#         then place a '-' here to act as a place holder.  This field can be
#         any string (not just speeds) that can be used to futher narrow down
#         the selection of a particular device. As used in the internal TCP
#         protocol above, the Class field is used to determine what remote
#         program we'll invoke via TCP to perform the uucico communication
#         (this requires the 'Devices' file to be set up correctly as well).
#         
#     Phone
#         This field allows you to specify the telephone number (token) of the
#         remote computer for automatic dialers.  The telephone number is made
#         up of an optional alphabetic abbreviation and a numeric part.  If
#         an abbreviation is used, it must be listed as an entry in the 
#         'Dialcodes' file. If the device type is not an autodialer, but
#         perhaps a LAN switch, this field can be used to specify other useful
#         information in the form of a token that can be passed to the LAN
#         switch.  Within this field, the following characters are special:
#
#             =    Tells the ACU to wait for a secondary dialtone before
#                  dialing the remaining digits.
#
#             -    Tells the ACU to pause 4 seconds before dialing the next
#                  digit.
#
#     Login
#         This field contains login information given as a series of fields and
#         subfields in the format:
#
#             expect send
#
#         The 'expect' string is what you expect to receive from the device and
#         the 'send' string is what you send to the device.  The 'expect'
#         string can have a subfield of:
#
#             expect[-send-expect]
#
#         Where the 'send' string is sent if the first 'expect' string hasn't
#         been seen within the timeout period.  The next 'expect' string is
#         then waited upon.  This subfield can be extended as much as you like
#         as in this example:
#
#             in:-BREAK-in:-BREAK-in:-BREAK-in:
#
#         This expect-send sequence is looking for the string 'in:' and if
#         the string isn't seen within the timeout period, a BREAK (internal
#         meaning to uucico is to send a communication line "break") is sent.
#         This cycle repeats a total of three times (you can have more if
#         desired).  If the expect-send-expect sequence was:
#
#             in:--in:--in:--in:
#
#         The send string is null, but a '\n' (newline) is appended to this
#         null string anyway and that's what will be written to the device.
#
#         The expect string can be "" which says don't expect anything.  Sort
#         of like a place holder because expect/send sequences must be paired
#         together.  Unless the send string is terminated with '\c', a '\r'
#         (carriage return, not newline!) will be appended to the end of the
#	  send string before it's written out to the device.  This is unlike
#	  older uucps where the default is '\n'.  If you want to send just a
#	  newline, do this:
#
#             5555555\n\c
#
#         Within a expect/send sequence, a set of "escape characters" and
#         keyword strings are available to handle special requests. The
#         escape characters always start with a backslash ('\') and may be
#         embedded within a expect/send string.  The keywords must stand-alone
#         because they are very hard to separate from the strings that make
#         up the actual user text; this is accomplished by expecting nothing
#         (""), then sending the keyword.  All these strings are case sensitive.
#
#         Expect keyword strings:
#
#             The keywords ABORT, EXIT, ERROR and HANGUP can be used as normal
#	      words by preceeding them with a backslash (\).  To clear an
#	      ABORT, EXIT, ERROR or ABORT list, use the string "".
#
#             ""	  Expect nothing.  Used when you need a place-holder in
#			  the expect field of the expect/send sequence.
#
#             ABORT	  The ABORT expect-send sequence works like this:  The
#			  ABORT keyword is placed in the expect field and the
#			  string that will cause the abort is in the send field
#			  as in this example:
#
#	      		    macaux Any ACU 1200 5555555 ABORT BUSY \
#			      ABORT NO\sANSWER in:-\K-in: ucat word: 5Tw1Ja9J
#
#                         In the above example, the chat script will fail if
#                         either the "BUSY" or "NO ANSWER" strings are seen.
#                         The placement of the ABORT strings determine when
#			  they take effect.
#
#             EXIT	  The EXIT expect-send sequence works just like the
#			  ABORT except it just terminates a chat script as if
#			  the script completed normally.
#
#             ERROR	  The ERROR expect-send sequence works just like the
#			  ABORT except it causes a error message to be logged
#                         in /usr/spool/uucp/.Admin/errors.
#
#             HANGUP	  The HANGUP expect-send sequence is used to specify
#			  a "hangup" script in the Hangups file(s) to use when
#			  the connection is being closed.  This is useful when
#			  you have a modem that doesn't respond to a DTR drop.
#
#         Send keyword strings:
#
#             EOT 	  Send the EOT sequence "^D\n^D\n" (^D is control-D).
#			  (yes, that's '\n', not '\r')
#             BREAK 	  Send a 0.25-sec break over the line.
#             ""	  Send only newline/carriage_return.
#
#         Expect escape characters:
#
#	      \A	Expect anything.  Waits for any character.
#             \N	Expect a null character (ASCII NULL).
#             \\	Expect a '\' character.
#             \b	Expect a backspace character.
#             \ddd	Collapse the octal digits (ddd) into a single character.
#             \n	Expect a newline character.
#             \r	Expect a carriage return character.
#             \s	Expect a space character.
#             \t	Expect a tab character.
#
#         Send escape characters:
#
#             \D	Phone number without 'Dialcodes' translation.
#             \E        Start echo checking, from this point on, whenever a
#                       character is sent to a device, we'll wait for the
#                       character to echoed back to us from that device before
#                       doing anything else.
#	      \F	Flush input line.
#             \K	Send a break.
#	      \L	Lower DTR.
#             \M	Turn on the CLOCAL flag (assumes local line).
#             \N	Send a null character (ASCII NULL).
#	      \R	Raise DTR.
#             \T	Phone number with 'Dialcodes' translation.
#             \\	Send a '\' character.
#             \b	Send a backspace character.
#             \c        If at the end of a string, suppress the newline that is
#                       normally sent.  Ignored otherwise.
#             \d        Delay two seconds before sending more characters.
#             \ddd	Collapse the octal digits (ddd) into a single character.
#             \e	Turn echo checking off.
#             \m	Turn off the CLOCAL flag (assumes modem line).
#             \n	Send a newline character.
#             \p        Pause for approximately 1/4 second.
#             \r	Send a carriage return character.
#             \s	Send a space character.
#             \t	Send a tab character.
#
#         Special Send escape characters sequences.  These may be "embedded"
#	  in the send sequence anywhere:
#
#	      \^An\$	Change number of stop bits to 'n' where 'n' is 1 or 2.
#			If 'n' is 0, the original number of stop bits is
#			restored.
#
#	      \^Bn\$	Change line bits to 'n' where 'n' is a valid number of
#			bits per character (7,8).  If 'n' is 0, the original
#			number of bits is restored.
#
#	      \^Cn\$	Change breaktime to 'n' where 'n' is the number of
#			milliseconds of BREAK time during a BREAK. if 'n' is 0,
#			the original breaktime is used.
#
#	      \^Dn\$	Change dtrtime to 'n' where 'n' is the number of
#			milliseconds that the DTR will be held low during 
#			a DTR drop.  if 'n' is 0, the original dtrtime is used.
#
#	      \^En\$	Change expecttime to 'n' where 'n' is the number of
#			seconds to wait for an "expect" string before aborting.
#			if 'n' is 0, the original expecttime is used.
#
#	      \^Fn\$	Change pausetime to 'n' where 'n' is the number of
#			milliseconds of PAUSE time during a PAUSE. if 'n' is 0,
#			the original pausetime is used.
#
#	      \^Mn\$	Change msgtime to 'n' where 'n' is the number of
#			seconds to wait for the uucico's to "handshake" before
#			aborting.  if 'n' is 0, the original msgtime is used.
#
#	      \^Pn\$	Change line parity to 'n' where 'n' is a valid parity
#			option (even, odd, none). If 'n' is 0, the original
#			parity is restored.
#
#	      \^Sn\$	Change line speed to 'n' where 'n' is a valid baud rate
#			(50,75,110,134,150,200,300,600,1200,1800,2400,4800,
#			9600,19200,38400).  If 'n' is 0, the original baud
#			rate is restored.
#
# This is an example of a remote computer that we can communicate with via
# three device types: TCP, Direct, and ACU.  The order of these entries
# determines which device type we'll try first.  Because TCP is the fastest
# and most reliable communication link, we'll list it first.  If that fails,
# we'll try a 'Direct' link which in our case will be a serial cable between
# our computer's tty port and the remote computer's tty port.  If this fails
# also, we'll try dialing out over a modem.
#
#   macaux  Any TCP,e              uucp       - in:--in:   ucat word: 5Tw1Ja9J
#   macaux  Any TCP,e              port      23 in:--in:   ucat word: 5Tw1Ja9J
#   macaux  Any Direct,fG(4,1024)g 9600       - in:-\K-in: ucat word: 5Tw1Ja9J
#   macaux  Any ACU,G(7,512)g      1200 5555555 in:-\K-in: ucat word: 5Tw1Ja9J
#
# In the above example, the remote system name is "macaux" and our name is
# "ucat".  We must log into the remote system using the "ucat" login id and
# a password of "5Tw1Ja9J".  We could have logged in as "nuucp" but it's
# more secure to have a unique login account for each system.  The first
# protocol, in the list of protocols for the Direct and ACU devices, that
# both the local and remote system agree on, is used.
#
# Here's a example of logging into a system that requires many breaks to
# sync up to speed:
#
#   ucat Any ACU 2400 5555555 \
#           "" \^E5\$ \
#           in:-\K-in:-\K-in:-\K-in:-\K-in:-\K-in:-\K-in: \^E0\$Uucat \
#           word: jolly
# 
# The above example chat script does the following:
#   - sends a carriage return (\r).
#   - changes the expect timeout value to 5 seconds.
#   - expects the "in:" string and will send a break if it doesn't see it.
#   - restores default expect time and sends the login id "Uucat".
#   - expects the "word:" string.
#   - sends the password "jolly".
#
###############################################################################
# THE CONFIGURATION OF THIS FILE CURRENTLY DOESN'T ALLOW ANY REMOTE SYSTEM    #
# TO CALL YOU AND YOU DON'T CALL ANY REMOTE SYSTEM. YOU NEED TO PROVIDE THE   #
# REQUIRED ENTRIES.                                                           #
###############################################################################

