home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 3 / Meeting_Pearls_III.iso / Pearls / tcp / Networking / TCP / Server / telser / doc / telser.doc < prev    next >
Text File  |  1995-03-06  |  62KB  |  1,629 lines

  1. Document telser.doc
  2.  
  3.     =============================================================
  4.     telser 1.20 -- serial telnet(d) device for TCP/IP and AS225r2
  5.                             Documentation
  6.                           - March 6, 1995 -
  7.     =============================================================
  8.  
  9.       Copyright (c) 1994-1995 by Sam Yee.  All rights reserved.
  10.  
  11.  
  12. 1. Legal Stuff
  13. ==============
  14.  
  15. 1.1. Copyright
  16. --------------
  17.  
  18. The   program,  telser  and  its  associated  files  are  written  and
  19. copyrighted  by  Sam  Yee.   telser  is SHAREWARE and the UNREGISTERED
  20. version  of  telser  may be distributed freely providing the following
  21. conditions hold:
  22.  
  23. o Distributors may not charge more than the cost of a diskette used in
  24.   the distribution of this program.
  25.  
  26. o Distributors may only distribute the unmodified copy of the original
  27.   program, along with its documentation, and copyright notices intact.
  28.  
  29. o Commercial  distribution  is  only  possible with written permission
  30.   from the author.
  31.  
  32. 1.2. License Agreement
  33. ----------------------
  34.  
  35. The   REGISTERED   versions   of  telser  may  not  be  redistributed.
  36. Redistribution  is  illegal,  immoral,  and  strictly prohibited.  The
  37. licensed keyfile may be used on more than one machine if you own those
  38. machines and that they are not for business use.  Otherwise, different
  39. keyfiles are required for each machine.
  40.  
  41. 1.3. Disclaimer
  42. ---------------
  43.  
  44. This   program  and  its  documentation  are  provided  "as  is".   No
  45. warranties  are  made  with  respect  to  the  accuracy,  reliability,
  46. performance  or  operation  of this software and information.  You are
  47. using this program at your own risk.  The author is not liable for any
  48. damages that may have been caused by using this software.
  49.  
  50.  
  51. 2. Introduction
  52. ===============
  53.  
  54. telser.device ("telser") is a modem simulator over a TCP telnet/rlogin
  55. connection.   It  simulates  basic  `modem commands',  so  you can use
  56. telecommunication  ("comm")  programs  over  a network connection.  To
  57. your  comm  program,  it  thinks  it's  talking  to a modem.  Terminal
  58. emulation,  file  transfers,  scripting, etc.  are all handled by your
  59. comm  program.   Connecting  to  a  host  is as simple as typing "ATDT
  60. abc.edu,23"  or  even  simpler  if  you  add  the  host to your comm's
  61. phonebook.
  62.  
  63. telser  supports  most  of  the telnet/rlogin negotiation commands and
  64. options.   For  example,  you  may  elect to notify the remote host on
  65. changes  to  your  terminal  emulation  type,  and  window  size.   An
  66. intuitive  "gadtools"  graphical user interface is supplied to control
  67. your  connections.   You also have the option to automatically connect
  68. to  a host after starting up your comm program.  Instant logins at the
  69. click of a button!
  70.  
  71. telser can also run in host mode, which means it would accept incoming
  72. telnet/rlogin  calls.   Calls  may  be  tracked  by telser's caller ID
  73. feature.  You can easily set up a "multi-line" BBS over the internet!
  74.  
  75. telser  is capable of unlimited device units, which means you can have
  76. unlimited  incoming and outgoing connections.  It supports both TCP/IP
  77. packages  on  the Amiga, namely AmiTCP (tested with 3.0b2 and 4.0/4.1)
  78. and AS225r2.
  79.  
  80.  
  81. 3. Demo Restrictions
  82. ====================
  83.  
  84. The  demo  version of telser allows one device unit.  Opening a second
  85. unit  causes  a  device busy result code.  If you use telser often you
  86. are  recommended  to  register.   When  you register you get unlimited
  87. device units and help keep this project alive...
  88.  
  89.  
  90. 4. Requirements
  91. ===============
  92.  
  93. telser  runs  on  any  Amiga(tm)  with version 2.04 of the OS, running
  94. AmiTCP  or AS225r2.  AmiTCP 3.0b2 and 4.0 demo has been tested, and it
  95. does not work with 2.3.  telser uses very little memory (perhaps 90K).
  96. To  make  telser  even  more memory efficient, make it resident.  Then
  97. every device unit you open will use about 20K.
  98.  
  99.  
  100. 5. Installation
  101. ===============
  102.  
  103. The telser archive contains the following files:
  104.  
  105. telser_install      - Installer script
  106. telser_install.info - icon for above
  107. bin/telser          - telser main program for AmiTCP
  108. bin/tstelnet        - comm program that uses telser.device
  109. TelserMon           - telser monitor commoditiy
  110. TelserMon.info      - icon for TelserMon
  111. c/telser            - telser main program for AS225r2
  112. db/telser.conf      - configuration file for each device unit
  113. db/telser.hosts     - list of host aliases
  114. db/telser.mdm       - stores modem configuration
  115. db/telser.terms     - list of terminal types
  116. db/telserd.conf     - configuration file for serv/telserd
  117. devs/telser.device_amitcp  -
  118.                        device driver that talks to bin/telser
  119. devs/telser.device_as225r2 -
  120.                        device driver that talks to c/telser
  121. doc/telser-Axsh-setup.doc - Axsh setup tutorial in text format
  122. doc/telser-Axsh-setup.doc.info -- icon for above
  123. doc/telser-Axsh-setup.guide - Axsh setup tutorial in AmigaGuide(r)
  124.                                format
  125. doc/telser-Axsh-setup.guide.info - icon for above
  126. doc/telser.doc      - telser documentation in text format
  127. doc/telser.guide    - telser documentation in AmigaGuide(r) format
  128. doc/telser.guide.info - icon for the above
  129. doc.info            - icon for doc/ directory
  130. libs/rawin.library  - linemode editing handling library
  131. serv/telserd_amitcp - telser daemon ("server") for AmiTCP
  132. serv/telserd_as225r2 - telser daemon for AS225r2
  133. src/tstelnet.c      - sample source that uses telser.device
  134. src/tstelnet.makefile - makefile of course
  135. s:telser.key        - registration keyfile for telser
  136.  
  137. Once unpacked, the above files reside in the telser/ directory.
  138.  
  139. AmiTCP Installation
  140. -------------------
  141.  
  142. To install telser for AmiTCP, unpack the archive into AMITCP:
  143.  1> lha x DH0:telser100.lha AMITCP:
  144.  
  145. Copy and rename the device driver telser.device_amitcp into devs:
  146.  1> copy AMITCP:telser/devs/telser.device_amitcp
  147.          devs:telser.device clone
  148.  
  149. Rename the executables:
  150.  1> rename AMITCP:telser/serv/telserd_amitcp AMITCP:serv/telserd
  151.  
  152. AS225r2 Installation
  153. --------------------
  154.  
  155. To install telser for AS225r2, unpack the archive into INET:
  156.  1> lha x DH0:telser100.lha INET:
  157.  
  158. Copy and rename the device driver telser.device_as225r2 into devs:
  159.  1> copy INET:telser/devs/telser.device_as225r2
  160.           devs:telser.device clone
  161.  
  162. Rename the executables:
  163.  1> rename INET:telser/bin/tstelnet INET:c/
  164.  1> rename INET:telser/serv/telserd_as225r2 INET:serv/telserd
  165.  
  166. Installer Script
  167. ----------------
  168.  
  169. A  Installer  script ("telser/telser_install") is included to automate
  170. the above procedures.  Just click on the install icon and way you go.
  171.  
  172.  
  173. 6. Configuration
  174. ================
  175.  
  176. telser  is  a  very  configurable  program.  Most of the configuration
  177. files  can  be  manipulated  by  the  save  buttons in section
  178. `Telser Options Window'.  The rest must be editted with a text editor.
  179. In  most  files,  a  "#" or ";" ignores ("comment out") lines.
  180.  
  181. 6.1. Device Unit Configuration
  182. ------------------------------
  183.  
  184. db/telser.conf allows you to configure each unit of telser.device.
  185.  
  186. The follow is how db/telser.conf looks like:
  187. ------------------------------------------------------------------------------------------------
  188. #unit default host (alias)  map serial break to   OPENWIN    LINGER    DEBUG    logfile
  189. #                           Nothing               or         or        or
  190. #                           OpenWindow            NOOPENWIN  NOLINGER  NODEBUG
  191. #                           AbortOutput
  192. #                           AreYouThere
  193. #                           Break
  194. #                           EraseChar
  195. #                           EraseLine
  196. #                           GoAhead
  197. #                           InterruptProcess
  198. #                           NoOperation
  199. #                           SynchOperation
  200.  0    ""                    OpenWindow            OPENWIN    NOLINGER  DEBUG    T:telser.log
  201.  2    home                  OpenWindow            OPENWIN    NOLINGER  DEBUG    T:telser.log
  202.  3    home                  OpenWindow            NOOPENWIN  NOLINGER  DEBUG    T:telser.log
  203. ------------------------------------------------------------------------------------------------
  204.  
  205. Unit field:
  206.     The unit number the comm program will use.
  207.  
  208. Host (Alias) field:
  209.     This  field  tells  telser  which  host  should  a  connection  be
  210.     attempted once the comm program is started.  Enter "" if automatic
  211.     connection  is not desired at telser.device opening time.  You may
  212.     use an IP address, host alias, or a real hostname for this field.
  213.  
  214. Map Serial Break To field:
  215.     Most  comm programs allow the user to send a physical break signal
  216.     to   the   modem.   This  feature  is  inapplicable  to  a  telnet
  217.     connection.   Instead, telser allows the user to do various things
  218.     when he/she tries to send a "virtual" break.  When such a break is
  219.     sent, telser can be directed to do the following:
  220.  
  221.     Nothing:    ignore the virtual break signal
  222.     OpenWindow: Open telser's main window if it's not already opened.
  223.                 If already opened, bring the window to front.
  224.     AbortOutput: Send a telnet Abort Output command to host.
  225.     AreYouThere: Send a telnet Are You There command to host.
  226.     Break:       Send a telnet Break command to host.
  227.                  Note that this break is nothing like a modem break.
  228.     EraseChar:  Send a telnet Erase Character command to host.
  229.     EraseLine:  Send a telnet Erase Line command to host.
  230.     GoAhead:    Send a telnet Go Ahead command to host.
  231.     Interrupt Process: Send a telnet Interrupt Process command to host.
  232.                        Often this command kills the foreground process
  233.                        on Unix machines.
  234.     NoOperation: Send a telnet No Operation command to host.
  235.     SynchOperation: Send a telnet Synchronize Operation to host.
  236.  
  237.     Consult  Telnet  RFC's  (e.g.,  RFC854) for more information about
  238.     Telnet commands and options.
  239.  
  240. OpenWin/NoOpenWin field:
  241.     This  flag  tells telser to open its window when your comm program
  242.     starts up.  If OpenWin is specified, the window will be opened, or
  243.     if NoOpeWin no window will be opened.
  244.  
  245. Linger/NoLinger field:
  246.     This  flag  allows  you  to  terminate  your  comm program without
  247.     closing  the  telnet  connection.  This is useful when you need to
  248.     switch  comm  programs.  When Linger is specified, telser will not
  249.     quit  when  the  comm  program  exits.   Otherwise, if NoLinger is
  250.     specified,  the  connection  will  be closed and telser terminates
  251.     when  the  comm program quits.  This flag sets the Linger checkbox
  252.     in  section  `Telser Options Window'.  Some BBS packages need this
  253.     option on.
  254.  
  255. Debug/NoDebug field:
  256.     When  Debug  is  specified,  all  telnet  negotiation  options and
  257.     commands will be logged.
  258.  
  259. Logfile field:
  260.     Specify  the  file  name  where  all  logs should go.  Enter "" to
  261.     disable  logging  to  file.   The  logfile is written after telser
  262.     exits.   For  an  explanation  on  the  format  of log entries see
  263.     section `Logging'.
  264.  
  265. This  file  can  be  manipulated  by the "Save Unit Options" button in
  266. section  `Telser Options Window'.  This  file is not necessary for the
  267. operation  of  telser.  If a unit or the file is missing defaults will
  268. be used.
  269.  
  270. 6.2. Telnet Hosts Configuration
  271. -------------------------------
  272.  
  273. db/telser.hosts looks something like this:
  274. ----------------------------------------------------------------------
  275. #                                       telnet options
  276. #                                       bitmap (if set)
  277. #                                       0 - initiate negotiation
  278. #                                       1 - do binary
  279. #                                       2 - do echo
  280. #                                       3 - do sga
  281. #                                       4 - will ttype
  282. #                                       5 - will naws
  283. #                                       6 - will linemode
  284. #                                       7 - will tspeed
  285. #                                       8 - will lineflow
  286. #                                       9 - force linemode
  287. #                                       10 - ignore neg.
  288. #alias   hostname or IP      port term  bits            rlogin? login id    login-script
  289. #                                       01234567890
  290. home     localhost           23   ansi  11111111010
  291. archie   archie.rutgers.edu  23   ansi  11111111010
  292. school   fraser.sfu.ca       23   vt100 11111100010     y       samy
  293. work     incognito.com       23   vt220 11111111010
  294. fun      res.com             0    vt100 11111111010     n       root        amitcp:db/res.login
  295. -----------------------------------------------------------------------------------------------
  296.  
  297. Alias field:
  298.     An alias for the host you want to connect to.
  299.  
  300. Hostname or IP field:
  301.     The real name or IP address of the host you want to connect to.
  302.  
  303. Port field:
  304.     The  port  you  want to telnet into.  Normally this is 23, but for
  305.     MUD  (Multi-User  Dungeon) sites, this can be something like 6667.
  306.     Specify 0 if you don't care which port you are connecting to.
  307.  
  308. Term field:
  309.     The terminal emulation you will be using for the connection.  Note
  310.     that  telser  does not handle terminal emulation per se.  It is up
  311.     to  your comm program to do so.  Term is provided so that the host
  312.     you  are  connected  to  will automatically know what term you are
  313.     using.   You  must enable automatic terminal emulation if you want
  314.     to  notify  the  host  about  the  terminal you are using.  Telnet
  315.     options bit #4 is used for this purpose.
  316.  
  317. Telnet Options Bitmap field:
  318.     This  bitmap  allows you to specify what is to be performed during
  319.     telnet negotiation.  Putting a "1" at a bit position sets it.  The
  320.     bits are defined as follows.
  321.  
  322.     Bit 0:  We initiate telnet negotiation with the host.
  323.             If   0,   telser   will   not  talk  first  during  Telnet
  324.             negotiation.
  325.     Bit 1:  We ask the host to go into binary mode.
  326.     Bit 2:  We ask the host to echo what we typed.  We will not do any
  327.             echoing.
  328.     Bit 3:  We ask the host to Suppress Go Ahead.
  329.     Bit 4:  We tell the host we will be sending our terminal type.
  330.     Bit 5:  We tell the host we will be sending our window size.
  331.     Bit 6:  We tell the host we will be going into linemode.
  332.             In  linemode,  editing  is  done  locally.  This speeds up
  333.             command line editing immensely.
  334.     Bit 7:  We tell the host we will be sending our terminal speed.
  335.     Bit 8:  We tell the host we can do local flow control.
  336.             If host grants permission, when user presses ^S (XOFF),
  337.             incoming TCP data is stopped until user presses ^Q (XON).
  338.             When incoming flow is stopped, outgoing flow is still
  339.             possible.
  340.     Bit 9:  We do linemode whether host allows it or not.  In linemode,
  341.             command line editing is performed locally.  This bit does
  342.             not result in any negotiation with the host.
  343.     Bit 10: If set, the telnet protocol is not used.  Telnet control
  344.             codes (if any) are passed directly to the comm program.
  345.             This is required to connect to some TCP ports, such as
  346.             UUCP and MUD servers.
  347.  
  348.     Of course the host can refuse any of our requests.
  349.     To  understand what these Telnet options and commands do, refer to
  350.     their RFCs (Request-For-Comments).  The following RFCs deal with
  351.     the telnet protocol: 652, 653, 727, 854, 855, 856, 857, 858, 859,
  352.     860, 885, 930, 1073, 1079, 1143, and 1372,
  353.  
  354. rlogin field:
  355.     This field indicates whether the host should be connected with the
  356.     rlogin  protocol.   Enter "Y" for yes, or "N" for no.  If "N" then
  357.     the login id field is ignored.  The rlogin protocol typically uses
  358.     TCP port 513.  See `Telser Main Window'.
  359.  
  360. login: field:
  361.     This  field  specifies  the  login  ID  to  be used for the rlogin
  362.     protocol.  See `Telser Main Window'
  363.  
  364. login-script field:
  365.     The script file used for auto-login.  See section `Login Scripts'
  366.     on the script language.
  367.  
  368. This  file  can  be manipulated by the "Save Telnet Options" button in
  369. section `Telser Options Window'.
  370.  
  371. 6.3. Terminal Emulation Configuration
  372. -------------------------------------
  373.  
  374. db/telser.terms  allows you to specify the list of terminal emulations
  375. your  comm  programs can support.  They can be used to notify the host
  376. on what emulation you are using.
  377.  
  378. db/telser.terms looks something like this:
  379. ----------------------------------------------------------------------
  380. #term   cols rows
  381. ansi    80   24
  382. dumb    80   24
  383. vt52    80   24
  384. vt100   80   24
  385. vt102   80   24
  386. vt200   80   24
  387. vt220   80   24
  388. vt240   80   24
  389. vt300   80   24
  390. vt320   80   24
  391. vt340   80   24
  392. vt420   80   24
  393. rip     80   48
  394. unknown 80   24
  395. xterm   160  128
  396. ----------------------------------------------------------------------
  397.  
  398. Term field:
  399.     The terminal type supported by your comm program.
  400.  
  401. Cols field:
  402.     The number of columns of your comm window.
  403.  
  404. Rows field:
  405.     The number of rows of your comm window.
  406.  
  407. This  file is what gets displayed in the terminal list box in
  408. `Telser Main Window'.   Telnet negotiation on terminal type and window
  409. size will use these definitions.
  410.  
  411. 6.4. Modem Profile Configuration
  412. --------------------------------
  413.  
  414. db/telser.mdm  stores  the  modem profile for each telser.device unit.
  415. The  profile  is  loaded  every  time  telser.device  is opened with a
  416. particular unit.
  417.  
  418. db/telser.mdm looks something like this:
  419. ----------------------------------------------------------------------
  420. [0]
  421. B0
  422. E1
  423. F1
  424. M1
  425. ...
  426. ----------------------------------------------------------------------
  427.  
  428. The  number  in  [] is the unit number of the modem.  What follows are
  429. the  registers, etc.  for that unit.  In this case, telser.device unit
  430.  0 will  use  the  above.   You  normally don't need to edit this file
  431. directly.   Do  your stuff with the "AT" commands in your comm program
  432. and type "AT&W" to save it to this file.
  433.  
  434.  
  435. 6.5. Server Mode Configuration
  436. ------------------------------
  437.  
  438. db/telserd.conf  stores  the  units that telserd should attempt to use
  439. when an incoming call is detected.
  440.  
  441. db/telserd.conf looks something like this:
  442. ----------------------------------------------------------------------
  443. #unit ring-interval max-rings   startup-command cleanup-command logfile
  444. #     (seconds)                 "" for none     "" for none     "" for none
  445.  0    2             2           ""              ""              t:telserd.log
  446.  2    2             2           ""              ""              t:telserd.log
  447. ...
  448. ----------------------------------------------------------------------
  449.  
  450. Unit field:
  451.     The  telser.device  unit  to check for the possibility of making a
  452.     connection.   If this unit is not already opened or busy, the next
  453.     one will be attempted.
  454.  
  455. Ring-Interval field:
  456.     The number of seconds between "RING" messages are sent to the unit.
  457.  
  458. Max-Rings field:
  459.     The maximum number of "RING"s to send to the unit before giving up.
  460.     After giving up, the next unit is tried.
  461.  
  462. Startup-Command field:
  463.     The command to execute before actually trying to talk to the unit.
  464.     If the command fails (errorcode non-zero), this unit is ignored.
  465.  
  466. Cleanup-Command field:
  467.     The command to execute after the telnet connection is closed.
  468.  
  469. Logfile field:
  470.     The   file   where  all  logs  are  written  to.   If  logging  is
  471.     undesirable,  enter  ""  for  this  field.  The logfile is written
  472.     after telserd exits.
  473.  
  474. In addition to editing the above file you must also edit db/inetd.conf
  475. and db/services.
  476.  
  477. Your db/inetd.conf file should look like this:
  478.  
  479. telnet    stream  tcp nowait root amitcp:serv/telserd -telserd
  480.  
  481. If  you are using the current version of AS225 or newer, you must omit
  482. the "root" word from the above line!
  483.  
  484. Your db/services file should look like this:
  485.  
  486. telnet          23/tcp
  487.  
  488. Usually, the services file is already set up by your TCP package.
  489.  
  490. To   get   your   BBS   running   over  telser,  you  must  make  sure
  491. db/telserd.conf  contains  the  unit  number that is opened by the BBS
  492. software.   Also,  db/telser.conf  should  have  an entry for the unit
  493. used.   All  units  to  be  used by telserd should not have auto-login
  494. enabled!!!   i.e.,  make  sure  the  "host"  field is blank ("").  You
  495. wouldn't  want your BBS automatically dial out everytime the device is
  496. openend.   If  you  are  using  AXsh  with telserd, make sure you have
  497. LINGER on or AT&D0!!!  It may apply to other BBS packages as well.
  498.  
  499.  
  500. 6.5.1. Using telserd Server on Multiple TCP Ports
  501. -------------------------------------------------
  502.  
  503. If  you need telserd to launch from different TCP ports, you may do so
  504. by   passing  the  telserd  program  a  different  telserd.conf  file.
  505. telserd.conf specifies which telser.device units to connect the remote
  506. user to.  The command line options are:
  507.  
  508.     serv/telserd -telserd -c db/telserd2.conf
  509.  
  510.     (-telserd is the name of the newly created process.
  511.      telserd2.conf is your alternative telserd config file.
  512.      The filename is arbitrary.)
  513.  
  514. In  addition,  you  must also edit your db/services and db/inetd.conf
  515. files:
  516.  
  517. db/services:
  518.     telnet2  1234/tcp
  519.  
  520.     (port 1234 is just an example.)
  521.  
  522. db/inetd.conf:
  523.     telnet2 stream tcp nowait root serv/telserd -telserd -c db/telserd2.conf
  524.  
  525. Note  that  telnet2  is  used  in  both  files.   This allows inetd to
  526. determine which daemon to launch when service is requested at a port.
  527.  
  528. This  setup  is  useful  if  you  want  to run different programs from
  529. different  ports.   For example, your AXsh runs from port 23, BBS runs
  530. from port 3000, and AmigaMUD runs from 6667.
  531.  
  532.  
  533. 6.5.2. Using telserd in rlogind mode
  534. -----------------------------------
  535.  
  536. By default, telserd acts as a telnetd server, but it can also act as a
  537. rlogind  server.  This is accomplished by passing the "-r" or "RLOGIN"
  538. parameter  to  telserd.   db/services  must  have  the "login" service
  539. specified  and  db/inetd.conf  must determine which daemon to load for
  540. "login".
  541.  
  542. Example:
  543.  
  544. db/services:
  545.     login 513/tcp
  546.  
  547. db/inetd.conf:
  548.     login stream tcp nowait root serv/telserd -telserd -r
  549.  
  550. The standard rlogin port is 513, but you may change it.
  551.  
  552. When the user logs on, the environment variables are set:  USER<unit>,
  553. <TERM><unit>,  and BAUD<unit>.  <unit> is the telser.device unit.  For
  554. example,  when  I  rlogin  from  my  school the variable contents are:
  555. USER2=samy,TERM2=vt100,BAUD2=9600.   If you are writing an application
  556. that uses telser, you may take advantage of these variables.
  557.  
  558. While  the  user  is logged in, the standard way to forcibly terminate
  559. the connection is by pressing "<CR>~." (carriage-return tilde period).
  560.  
  561. When  the  user disconnects, the above three environment variables are
  562. cleared.
  563.  
  564.  
  565. 7. How telser works
  566. ===================
  567.  
  568. In client mode:
  569.  
  570. <comm-prog> <--> <telser.device> <--> [telser] <-..->  [telnetd]
  571.                 ((( LOCAL HOST)))             (TCP/IP)  ((( REMOTE HOST )))
  572.  
  573. Your  <comm-prog>  opens telser.device and talks to it.  telser.device
  574. relays  all  your  serial commands to [telser].  [telser] also handles
  575. the  telnet/telnetd  protocol.  [telser] communicates with telnetd (or
  576. other daemons) on the remote host.
  577.  
  578. In server mode:
  579.  
  580. <BBS> <--> <telser.device> <--> [telser] <--> [telserd] <-..-> [telnet]
  581.                 ((( LOCAL HOST)))                      (TCP/IP) (( REMOTE ))
  582.  
  583. Your  <BBS> opens <telser.device> and waits for an incoming call.  The
  584. remote  user  uses  the  [telnet]  program  to  connect  to [telserd].
  585. ([telserd]  is launched by inetd.) [telserd] simply moderates messages
  586. between  [telser] and [telnet].  Once [telserd] makes a connection, it
  587. sends  a  "RING" message to [telser], which is then passed back to the
  588. <BBS>.  If [telser] is set up to auto-answer it would do an auto-matic
  589. connection  with [telserd].  Otherwise, the <BBS> must explicitly send
  590. an "ATA" command to [telser] to "answer" the call.
  591.  
  592.  
  593. 8. Using telser.device
  594. ======================
  595.  
  596. To use telser.device, run your comm program the usual way.  Select the
  597. option   to   change   the   serial  device  and  unit.   Change  from
  598. "serial.device" to "telser.device".  And if you need to have automatic
  599. connections,  define  a  unit  in  db/telser.conf.  See
  600. `Device Unit Configuration' for details.
  601.  
  602. If  telser.device  is  opened  successfully you should be able to send
  603. modem  commands to it.
  604.  
  605. To  make  a  connection with a host either type "ATDT <host>,[<port>]"
  606. from  your comm program or enter the host information and click on the
  607. Connect  button in the `Telser Main Window'.  To disconnect from host,
  608. either  log  off  from  the  host,  or  type  "+++ATH",  or  press the
  609. Disconnect button from the `Telser Main Window'.  After disconnection,
  610. a "NO CARRIER" message is returned.
  611.  
  612. When  you  are done, just exit your comm program.  telser will stay in
  613. memory   and/or  close  any  connection  depending  on  the  following
  614. condition.  If LINGER on or AT&D0, telser will not exit.  If LINGER on
  615. and AT&D2, telser will disconnect if connected, but will not exit.  If
  616. LINGER  off  and  AT&D2,  telser  will  exit and close any connection.
  617. Under any other condition, telser stays running.
  618.  
  619.  
  620. Controlling telser from the Shell
  621. ---------------------------------
  622.  
  623. If  a  telser  client  is  still running (when running with the linger
  624. option  on)  but  it  is  not  servicing  a  comm  program,  it may be
  625. terminated  by  sending  a  ^C  break  signal  to  it with the "break"
  626. command.
  627.  
  628. For example:
  629.  1> status
  630.  2> break <telser-process> C
  631.  
  632. To  open  a telser client's window, send it an E signal.  e.g., "break
  633. <telser-process> E".  To close the window, "break <telser-process> D".
  634. A telser process can also be controlled by `TelserMon'.
  635.  
  636.  
  637. 9. Using tstelnet
  638. =================
  639.  
  640. tstelnet  is a really simple comm program that opens telser.device and
  641. allows  you  to connect to a host.  tstelnet starts from device unit 0
  642. and  goes  through  to  20 until telser.device is opened successfully.
  643. You  may of course specify a specific unit to attempt.  By trying each
  644. unit you can use tstelnet to act like the "telnet" program.
  645.  
  646. Usage: tstelnet [-ddevice,unit] host-name [port]
  647.  
  648. Examples: tstelnet archie.rutgers.edu
  649.           tstelnet mud.com 6667
  650.           tstelnet -dtelser.device,100 amiga.rules.com
  651.  
  652. tstelnet  essentially sends "ATDT <host>,[port]" to the telser.device.
  653. If  the  host name is not given, the user is prompted for the host and
  654. port.  The following prompts are displayed:
  655.  
  656. Telnet Host: abc.edu
  657. Port [23]: 
  658.  
  659. tstelnet is particularly useful for telnetting out of a BBS because it
  660. is 8 bit clean, so file transfers will work.
  661.  
  662. Note  that tstelnet is not limited to the usage of telser.device.  You
  663. can  use it as a comm program for a real serial port.  e.g., "tstelnet
  664. -dserial.device,0  1-604-434-3665" would open serial.device unit 0 and
  665. tone-dials  1-604-434-3665.   To  exit  tstelnet  just hit ecape three
  666. times.   (Three ^C break signals would also work.) For your enjoyment,
  667. the C source code to tstelnet is included in the src/ directory.
  668.  
  669.  
  670. 10. TelserMon
  671. =============
  672.  
  673. TelserMon is a commodity program that allows you to monitor the status
  674. of  each  telser unit.  The program should go into your SYS:WBstartup/
  675. drawer,  so it is run every time your system boots into Wokrbench.  In
  676. the TelserMon.info icon, the following tooltypes are supported:
  677.  
  678. DONOTWAIT
  679.     If  specified,  this  is a standard tooltype which tells Workbench
  680.     not  to wait for the program to return before it (WB) continues to
  681.     execute.
  682.  
  683. CX_PRIORITY=<priority>
  684.     Specifies the priority the commodity should run at.
  685.  
  686.     Default: CX_PRIORITY=0
  687.  
  688. CX_POPUP=<YES|NO>
  689.     Specifies whether the TelserMon window should open when it starts.
  690.  
  691.     Default: CX_POPUP=YES
  692.  
  693. CX_POPKEY=<hotkey>
  694.     Specifies  the  key to press (or "hotkey") to bring up the monitor
  695.     window.
  696.  
  697.     Some of the standard qualifier keys are:
  698.  
  699.     lshift      - left shift
  700.     rshift      - right shift
  701.     capslock    - Caps Lock
  702.     control     - Ctrl
  703.     lalt        - left Alt
  704.     ralt        - right Alt
  705.     lcommand    - left Amiga
  706.     rcommand    - right Amiga
  707.  
  708.     Default: CX_POPKEY=control alt t
  709.  
  710. TCPDIR=<directory>
  711.     This  specifies  the  directory  where  db/telser.conf  is stored.
  712.     telser.conf lets TelserMon know which units it should check.
  713.  
  714.     Default: TCPDIR=AmiTCP:
  715.  
  716. TelserMon can also be run from the command line, and it also uses the
  717. same arguments as the icon tooltypes.
  718.  
  719. When the TelserMon window opens, it looks like the following:
  720.  
  721. +--------------------------------------+-+
  722. |[]| TelserMon 1.20 - © 1995 by Sam Yee|Z|
  723. |--------------------------------------+-+
  724. | Unit CLI Owner        Connected Host   |
  725. |+------------------------------------+-+|
  726. ||  11  10 prog         fraser.sfu.ca | ||
  727. ||                                    | ||
  728. ||                                    | ||
  729. ||                                    | ||
  730. ||                                    | ||
  731. ||                                    | ||
  732. ||                                    | ||
  733. ||                                    |_||
  734. ||                                    |^||
  735. ||                                    |v||
  736. |+------------------------------------+-+|
  737. |+---------+---------+---------+--------+|
  738. ||   Open  |  Close  |  Break  |  Hide  ||
  739. |+---------+---------+---------+--------+|
  740. +----------------------------------------+
  741.  
  742. Unit column:
  743.     The unit number being monitored.
  744.  
  745. CLI column:
  746.     The CLI number of the telser process.
  747.  
  748. Owner column:
  749.     The  name  of the program that opened the unit.  If this column is
  750.     empty, this unit has no owner.
  751.  
  752. Connected Host column:
  753.     The  host  the  unit  is  connected  to.  If the host is empty, no
  754.     connection is made.
  755.  
  756. Open button:
  757.     When  pressed,  the  window  associated  with the selected unit is
  758.     opened.   Essentially,  an  E  signal  is sent to the CLI.  Double
  759.     clicking  on  a unit in the units list box is effectively the same
  760.     as clicking on the unit and then Open.
  761.  
  762. Close button:
  763.     When  pressed,  the  window  of the unit is closed.  A D signal is
  764.     sent to the CLI.
  765.  
  766. Break button:
  767.     Terminate the selected telser unit if it has no owner.
  768.  
  769. Hide button:
  770.     This  button causes the TelserMon window to close.  The window can
  771.     again be opened by pressing the hotkey.
  772.  
  773. TelserMon can be terminated by either hitting the close gadget on the
  774. window or by sending the program a ^C break signal.
  775.  
  776.  
  777. 11. Gadtools Graphical User Interface
  778. =====================================
  779.  
  780. As  mentioned  before,  your  telnet connections can be managed with a
  781. GUI.   The  GUI  may  be  opened  on  any public screen by setting the
  782. environment  variable  "TELSERPUBSCREEN"  to  point to the name of the
  783. screen.  For example:
  784.  
  785.  1> setenv TELSERPUBSCREEN TERM
  786.  1> copy ENV:TELSERPUBSCREEN envarc: ; permanently saves it
  787.  
  788. If  the  public  screen cannot be opened, the Workbench screen is used
  789. instead.  Note that some comm programs, such as Term, opens the serial
  790. device  first  before opening its screen.  In this case, if telser was
  791. told  to  open  its  GUI  at  start up time, it will not appear in the
  792. comm's  screen.   To  solve  this  problem,  simply  close the GUI and
  793. re-open  it.  Note that the environment variable can be changed at any
  794. time and will take effect the next time the GUI is re-opened.
  795.  
  796. Telser has 3 windows in which you can change things.
  797.  
  798. 11.1. Telser Main Window
  799. ------------------------
  800.  
  801. If  you  specify  it, when telser.device is opened a window that looks
  802. like   the  below  opens.  The  OpenWin/NoOpenWin  option  in  section
  803. `Device Unit Configuration'  can determine whether this window will be
  804. opened  at  device  opening  time.   Alternatively,  you  may  send  a
  805. "virtual"   break   signal   to   telser,   as  described  in  section
  806. `Device Unit Configuration', or typing "AT[" in command mode.
  807.  
  808. +--------------------------------------------------+-+-+
  809. |[]| [0] Telser 1.10 - Copyright 1994-5 by Sam Yee |%|Z|
  810. |--------------------------------------------------+-+-+
  811. | Unregistered version                        +------+ |
  812. |      Select Host     Select Term            | Help | |
  813. | +----------------+-+ +--------+-+ +---------+------+ |
  814. | |home            |#| |ansi    |#| |     Connect    | |
  815. | |archie          |#| |dumb    | | +----------------+ |
  816. | |school          |_| |vt52    |_| |   Disconnect   | |
  817. | |work            |^| |vt100   |^| +----------------+ |
  818. | |fun             |v| |vt102   |v| |  Send Commands | |
  819. | +----------------+-+ +--------+-+ +----------------+ |
  820. | +------------------+ +----------+ |Change Term Type| |
  821. | |fun               | |vt100     | +----------------+ |
  822. | +------------------+ +----------+ |Change Win Size | |
  823. | | |rlogin?   +-----+       +----+ +----------------+ |
  824. | +-+     Port |6667 |  Cols |80  | |     Options    | |
  825. |         +----+-----+       +----+ +----------------+ |
  826. |  login: |root      |  Rows |24  |                    |
  827. |         +----------+       +----+                    |
  828. |  Script |amitcp:db/|              +--------+-------+ |
  829. |         +----------+ log          |Save As | Clear | |
  830. | +-------+-----+----------------------------------+-+ |
  831. | |[94-Oct-30 13:25:43] Trying localhost...        | | |
  832. | |[94-Oct-30 13:25:43] Connection established.    | | |
  833. | |                                                | | |
  834. | |                                                | | |
  835. | |                                                +-+ |
  836. | |                                                |^| |
  837. | |                                                |v| |
  838. | +------------------------------------------------+-+ |
  839. +------------------------------------------------------+
  840.  
  841. The title bar displays the unit number (e.g., "[0]") of telser.device.
  842. You  can  safely  close  the window if you don't need it anymore.  All
  843. other  windows  associated  with  this  window will be closed as well.
  844. Hitting the Escape key also closes the window.
  845.  
  846. The second line of text displays who telser is registered to.
  847.  
  848. The gadgets are defines as follows.
  849.  
  850. Select Host:
  851.     Select  a  host  you want to connect to.  To attempt a connection,
  852.     click  once  on a host and click on the Connect gadget.  Otherwise
  853.     double-click on the host.  If you want to connect to a host not in
  854.     the  list,  simply enter it in the edit box below the list box and
  855.     click on the Connect button.
  856.  
  857. Port:
  858.     This edit box enables you to establish a connection with a host at
  859.     particular port number.  In this example, the familar port 6667 is
  860.     used.
  861.  
  862. rlogin?:
  863.     The rlogin protocol allows you to connect to a site automatically,
  864.     without  enter  a login ID or even a password.  You should see the
  865.     Unix  man  pages  on rlogin(d) before trying this feature.  Rlogin
  866.     posts a security risk, so use it with caution.
  867.  
  868.     Rlogin requires both the local username and the remote username to
  869.     be  sent  to  the host.  The local user name is retrieved from the
  870.     $USER  environment variable.  The remote name (or login id) can be
  871.     specified in the db/telser.hosts file or manually entered from the
  872.     username field below.
  873.  
  874.     If  this  checkbox  is  checked, use the rlogin protocol to do the
  875.     connection.   After  it's checked, the login:  gadget is activated
  876.     and  the  port number is cleared if it is set at 23 (telnet).  For
  877.     the  port number, you may enter 513 (rlogin) or just leave it at 0
  878.     to  use  the  default.   If  the rlogin checkbox is unchecked, the
  879.     login id gadget is ghosted out.
  880.  
  881.     Note  that rlogin is a simple protocol, unlike telnet, so the only
  882.     thing you can do while connected (if host permits) is changing the
  883.     window  size.  File transfers may not work properly because rlogin
  884.     is  not  100% 8-bit clean.  However, on some sites, file transfers
  885.     work better with rlogin!
  886.  
  887. login:
  888.     The remote login id to use for the rlogin protocol.  It is ghosted
  889.     out if rlogin is not used.
  890.  
  891. Script:
  892.     The script file to execute after connecting to the host.
  893.     See section `Login Scripts'
  894.  
  895. Select Term:
  896.     Select  the  terminal  type you will be using for this connection.
  897.     Once  a  term  has  been  selected,  the  Cols and Rows edit boxes
  898.     reflect the type of terminal.  However, Cols and Rows can still be
  899.     manually  changed.   Note  that  telser  will only notify the host
  900.     which terminal you are using if you tell it to.
  901.     See `Telser Options Window'
  902.  
  903. Cols:
  904.     This  edit  box  allows  you to specify the number of columns your
  905.     comm program supports.
  906.  
  907. Rows:
  908.     The number of rows your comm program supports.
  909.  
  910. Help:
  911.     Brings up the AmigaGuide(r) help file.
  912.  
  913. Connect:
  914.     Attempt  a  connection with the specified host.  Once a connection
  915.     has been established, this buttons is ghosted out.
  916.  
  917. Disconnect:
  918.     Disconnect  from  the  host  you are connected to.  If you are not
  919.     connected to a host, this button is ghosted out.
  920.  
  921. Send Commands:
  922.     When  a  connection is made, you may control the telnet connection
  923.     by  clicking  on this button.  It will then bring up a window with
  924.     many buttons you can push.  See `Telnet Send Commands Window'
  925.  
  926. Change Term Type:
  927.     If  you are already connected, you may tell the host what your new
  928.     terminal type is.
  929.  
  930. Change Win Size:
  931.     If  you  are already connected, you may tell the host how big your
  932.     comm  program's  window  is.   Programs  like  "vi"  on  Unix will
  933.     auto-adjust itself to reflect the change in window size.
  934.  
  935. Save As:
  936.     Save the logs to a particular file.  A file requester will open up
  937.     to request for a filename.
  938.  
  939. Clear:
  940.     Clear the logs.  No warning is given prior to the clear.
  941.  
  942. 11.2. Telser Options Window
  943. ---------------------------
  944.  
  945. This  window  allows you to manipulate options for a telnet connection
  946. or a telser unit.
  947.  
  948. +-----------------------------------------------+-+-+
  949. |[]| [0] Telser Options                         |%|Z|
  950. |-----------------------------------------------+-+-+
  951. |         Telnet Client Negotiation Options         |
  952. |  _                         _                      |
  953. | |_| Ignore Negotiation    |_| Will Flow Control   |
  954. | |_| Initiate Negotiation  |_| Will Terminal Type  |
  955. | |_| Do Binary             |_| Will Window Size    |
  956. | |_| Do Echo               |_| Will Terminal Speed |
  957. | |_| Do Suppress Go Ahead  |_| Will Linemode       |
  958. |                           |_| Force Linemode      |
  959. |                                                   |
  960. |             telser.device Unit Options            |
  961. |                                                   |
  962. |   Map Serial Break To      _                      |
  963. | +---------------------+   |_| Open Window         |
  964. | |@|    Open Window    |   |_| Linger  [ ] Debug   |
  965. | +-+-------------------+                           |
  966. |                                                   |
  967. | +---------------------+   +---------------------+ |
  968. | | Save Telnet Options |   |  Save Unit Options  | |
  969. | +---------------------+   +---------------------+ |
  970. +---------------------------------------------------+
  971.  
  972. The  "[0]"  above  indicates  that these options are for telser.device
  973. unit 0.
  974.  
  975. Telnet Host Options:
  976.     These options are defined in `Telnet Hosts Configuration'
  977.  
  978. Telser Unit Options:
  979.     These options are defined in `Device Unit Configuration'
  980.  
  981. Save Telnet Options:
  982.     Save these telnet options to the db/telser.hosts file.
  983.  
  984. Save Unit Options:
  985.     Save these telser.device unit options to the db/telser.conf file.
  986.  
  987.  
  988. 11.3. Telnet Send Commands Window
  989. ---------------------------------
  990.  
  991. When  a telnet connection has been established, sometimes it is useful
  992. to send telnet commands to the host.  This window will allow you to do
  993. just that.
  994.  
  995. +-----------------------------------------------------------+-+-+
  996. |[]| [0] Send Telnet Commands                               |%|Z|
  997. |-----------------------------------------------------------+-+-+
  998. | +-------------------+-------------------+-------------------+ |
  999. | |   Abort Output    |  Erase Character  | Interrupt Process | |
  1000. | +-------------------+-------------------+-------------------+ |
  1001. | |   Are You There   |     Erase Line    |    No Operation   | |
  1002. | +-------------------+-------------------+-------------------+ |
  1003. | |       Break       |      Go Ahead     | Synch Operation   | |
  1004. | +-------------------+-------------------+-------------------+ |
  1005. +---------------------------------------------------------------+
  1006.  
  1007. The  "[0]"  above  indicates  that these options are for telser.device
  1008. unit 0.
  1009.  
  1010. All  these  commands  are documented in "Map Serial Break To field" of
  1011. section `Device Unit Configuration'.
  1012.  
  1013.  
  1014. 12. Logging
  1015. ===========
  1016.  
  1017. All  log  entries have a time/date stamp.  The logs are written at the
  1018. time  telser.device  closes,  unless  of course you click on the "Save
  1019. Log"  button in the `Telser Main Window'.  Most of the log entry types
  1020. are defined as follows.
  1021.  
  1022. Connection closed by foreign host.
  1023.     telnetd on the other end has closed our connection
  1024.  
  1025. Connection closed.
  1026.     you forcibly close the connection
  1027.  
  1028. connect() error
  1029.     Unable to connect to host at a particular port number.
  1030.     Check your host name and port number and try again.
  1031.     Port number 0 is the default.
  1032.  
  1033. Connection established.
  1034.     A successful outgoing connection has been made with the host.
  1035.  
  1036. local: <local-name>; remote: <remote-name>; term: <term>; baud: <baud>
  1037.     While   handling  incoming  rlogin  connections,  this  log  entry
  1038.     displays  the local name the user wants to log in with, the remote
  1039.     name of the user, terminal type used, and baud rate he/she is at.
  1040.  
  1041. Received ^C break signal
  1042.     You sent a break signal to the telser process.  If you are
  1043.     connected, you will no longer.
  1044.  
  1045. received TCP urgent data
  1046.     
  1047. rlogind connection established.
  1048.     A successful incoming rlogind connection has been made.
  1049.  
  1050. select() returns <result>: error <code>
  1051.     Internal error <code> caused by select()
  1052.  
  1053. socket() error
  1054.     Unable to open a socket
  1055.  
  1056. tcp/rlogin: unknown service
  1057.     The ermote host does not have rlogind running.
  1058.  
  1059. tcp/telnet: unknown service
  1060.     The remote host does not have telnetd running.
  1061.  
  1062. telnetd connection established.
  1063.     A successful incoming telnetd connection has been made.
  1064.  
  1065. Trying <host>...
  1066.     Client is trying to open a telnet connection with <host>
  1067.     Note that this may take a while if the host is unreachable.
  1068.     Hitting a key on your keyboard won't abort it.
  1069.  
  1070. unknown host: <host>
  1071.     <host> is not in your hosts file or your name server.
  1072.     Try again with an IP address instead.
  1073.  
  1074. Refer to your TCP/IP package for other network error codes.
  1075.  
  1076.  
  1077. 13. Modem Commands
  1078. ==================
  1079.  
  1080. The basic Hayes(r) compatible modem commands and options are supported
  1081. by  telser.device.   Also,  several  new  commands are used by telser.
  1082. Note  that  many  commands  and  options  are  there for compatibility
  1083. reasons  and  are  ignored.   The  effective  commands and options are
  1084. defined as follows.
  1085.  
  1086. Command/    Function
  1087. Options
  1088. --------    ----------------------------------------------------------
  1089. A           Manually answer an incoming call.
  1090. A/          Re-execute the last command. Useful for redialing.
  1091.             It does not take AT or <Enter>.
  1092. AT          Attention: lets the telser know that commands are
  1093.             being issued to it.
  1094. DP or DT    Attempt to connect to a host.
  1095.             E.g.,  "ATDT archie.rutgers.edu,23".  The 23 following the
  1096.             host name is the port number.
  1097. DSn         Connect to the host stored at host list position n.
  1098.             See &Zn.  E.g., "ATDS3"
  1099. En          Command mode local echo.
  1100.             E0  Echo OFF
  1101.             E1  telser.device displays keyboard commands
  1102. Fn          Online local echo.
  1103.             F0  Echo ON
  1104.             F1  Echo OFF (default)
  1105. H0          Disconnect from host.
  1106. In          Information display.
  1107.             I0  Three digit version number.
  1108.             I4  Display current modem settings.
  1109.             I5  Display nonvolatile memory (NVRAM) (ie., from file)
  1110.                 settings.
  1111.             I7  Return version information
  1112. O0          Return online.
  1113. Qn          Result Codes displayed/suppressed.
  1114.             Q0  Display result codes
  1115.             Q1  Quiet mode; no result codes.
  1116. Sr=n        Set register r to n.
  1117. Sr?         Show contents of S-Register r.
  1118. V0          Verbal/numeric result codes.
  1119.             V0  Numeric codes
  1120.             V1  Verbal codes
  1121. Xn          Result code set.
  1122.  
  1123.             Result Code     X0  X1  X2  X3  X4
  1124.             ----------------------------------
  1125.             0/OK            .   .   .   .   .
  1126.             1/CONNECT       .   .   .   .   .
  1127.             2/RING          .   .   .   .   .
  1128.             3/NO CARRIER    .   .   .   .   .
  1129.             4/ERROR         .   .   .   .   .
  1130.             5/CONNECT 1200      .   .   .   .
  1131.             6/NO DIALTONE           .       .
  1132.             7/BUSY                      .   .
  1133.             8/NO ANSWER                 .   .
  1134.             10/CONNECT 2400     .   .   .   .
  1135.             13/CONNECT 9600     .   .   .   .
  1136.             18/CONNECT 4800     .   .   .   .
  1137.             20/CONNECT 7200     .   .   .   .
  1138.             21/CONNECT 12000    .   .   .   .
  1139.             25/CONNECT 14400    .   .   .   .
  1140.             26/CONNECT 19200    .   .   .   .
  1141.             27/CONNECT 38400    .   .   .   .
  1142.             28/CONNECT 57600    .   .   .   .
  1143.             29/CONNECT 115200   .   .   .   .
  1144. Z           Reset to software defaults.
  1145. &Cn         Carrier Detect (CD) signal.
  1146.             &C0 CD override
  1147.             &C1 Normal CD operations
  1148. &Dn         Data Terminal Ready operations.
  1149.             &D0 DTR override; so DTR drop would not cause a
  1150.                 disconnection from host.
  1151.             &D2 Normal DTR operations; telser disconnects when DTR
  1152.                 drops.
  1153. &V          Same as "ATI4"
  1154. &W          Write current configuration to NVRAM (ie., db/telser.mdm).
  1155. &Zn=s       Write host name string s to NVRAM at position n.
  1156. +++         Escape to Online-command mode, or if S14=1, disconnect
  1157.             from host and escape to command mode.
  1158. [           Open the telser window. E.g., "AT[".
  1159. ]           Close the telser window. E.g., "AT]".
  1160. +CID=n      Caller ID
  1161.             +CID=0 disable caller ID.
  1162.             +CID=1 enable caller ID: display IP address of caller
  1163.             +CID=2 enable caller ID: display hostname of caller
  1164.             +CID=3 enable caller ID: display both address and name
  1165.  
  1166.             When caller ID is on, incoming calls will cause the
  1167.             following lines to be displayed:
  1168.  
  1169.             RING
  1170.             CID = IP address and/or hostname
  1171.  
  1172. *cmd        Special modem commands for sending telnet commands.
  1173.             *AO     Abort Output
  1174.             *AYT    Are You There?
  1175.             *BRK    Break
  1176.             *EC     Erase Character
  1177.             *EL     Erase Line
  1178.             *GA     Go Ahead
  1179.             *IP     Interrupt Process
  1180.             *NOP    No Operation
  1181.             *SYNCH  Synch Operation
  1182.  
  1183. $           Display quick command summary.  E.g., "AT$"
  1184.  
  1185.  
  1186. S-Registers
  1187.  
  1188. Register    Default     Function
  1189. --------    -------     ----------------------------------------------
  1190. S0          0           Sets the number of rings on which to answer in
  1191.                         Auto Answer mode.
  1192. S1          0           Counts and stores the number of rings from an
  1193.                         incoming call.
  1194. S2          43          Stores the ASCII decimal code for the escape
  1195.                         character.  The default is '+' (43).    A
  1196.                         value of 128-255 disables the escape code.
  1197. S3          13          Stores the ASCII decimal code for the
  1198.                         Carriage Return Character.
  1199. S4          10          Stores the ASCII decimal code for the Line
  1200.                         Feed Character.
  1201. S5          8           Stores the ASCII decimal code for the Back-
  1202.                         space character.
  1203. S14         0           If set to 1, the connection will be closed up
  1204.                         on receipt of the escape code, returns to
  1205.                         command mode and sends the NO CARRIER result
  1206.                         code.
  1207. S19         0           Sets the duration, in minutes, for the
  1208.                         Inactivity Timer.  To disable it set it to 0.
  1209.                         When the timer goes off, any connection will
  1210.                         be closed.
  1211. S50         0           When in host mode, the number of seconds to
  1212.                         wait before returning the CONNECT string.
  1213.  
  1214. 13.1. Connection Result Codes
  1215. =============================
  1216.  
  1217. Telnet  connection  result  codes  are  mapped  to the following modem
  1218. result codes.
  1219.  
  1220. NO CARRIER
  1221.     unknown host or disconnection closed
  1222.  
  1223. NO ANSWER
  1224.     unable to connect to host because host is down
  1225.  
  1226. NO DIALTONE
  1227.     unable to open a socket
  1228.  
  1229. BUSY
  1230.     unknown service
  1231.  
  1232. CONNECT ...
  1233.     connection established.
  1234.  
  1235.  
  1236. 14. serial.device compatibility
  1237. ===============================
  1238.  
  1239. The basic serial.device commands are supported.  The ones that are not
  1240. supported  are simply ignored and a successful result code is returned
  1241. to the comm program.  Most comm programs are supported.  Some examples
  1242. are:   Term  4.1/4.2,  VLT  5.867, NComm 3.0, Terminus 2.0c/d, Termite
  1243.  1.00 demo,  Platinum  Works!   Comm,  JPTC, TinyTerminal, and X-Comm.
  1244. Note  that when using telser with Terminus, the "Ignore ODU" option in
  1245. settings/port  must be turned off.  When switching to telser.device in
  1246. X-Comm, make sure you activate the port (Device/Active) and then flush
  1247. it  (Device/Flush Port).  AXSH 1.3, DLG 1.0 BBS/OS, AmigaMud, and CNet
  1248. BBS  has  also been tested to work.  The comm programs that don't work
  1249. include  hft,  and  Baud Bandit.  If you are a comm/BBS program author
  1250. and telser doesn't work with your program let me know.
  1251.  
  1252.  
  1253. 15. Login Scripts
  1254. =================
  1255.  
  1256. telser  supports  a  limited  scripting  language which enables you to
  1257. auto-login into a host.  Lines in the script file can be commented out
  1258. by  preceding  the lines with ";" or "#" characters.  Commands are not
  1259. case sensitive.  Command arguments that contain spaces must be quoted.
  1260. The script commands are described as follows.
  1261.  
  1262. DELAY <seconds>
  1263.     Delay some seconds before executing the next line in the script.
  1264.  
  1265.     Example: DELAY 5
  1266.              delays 5 seconds
  1267.  
  1268. DTENTHS <10th-seconds>
  1269.     Delays some 10th seconds before executing the next line.
  1270.  
  1271.     Example: DELAY 5
  1272.              delays 1/2 seconds
  1273.  
  1274. END
  1275.     Ends  the  executing of the script.  This is optional and required
  1276.     only if early termination of the script is desired.
  1277.  
  1278. MESSAGE <string>
  1279.     Sends a string to the comm program.  The string is the same format
  1280.     as SEND.
  1281.  
  1282.     Example: MESSAGE "About to auto-login...\r\n"
  1283.  
  1284. SEND <string>
  1285.     Sends  a  string  to  the  host.   The  string may contain special
  1286.     control codes, which are defined as follows:
  1287.  
  1288.     \b - backspace (control-H)
  1289.     \e - escape (control-[)
  1290.     \f - form-feed (control-L)
  1291.     \n - newline (control-J)
  1292.     \r - carriage-return (control-M)
  1293.     \t - tab (control-I)
  1294.  
  1295.     Example: SEND "samy\r"
  1296.              sends samy<CR> to the host.  Usually sent when the host
  1297.              prompts "login: "
  1298.  
  1299. WAIT <string>
  1300.     Waits until a string is received before executing the next line.
  1301.  
  1302.     Example: WAIT "login: "
  1303.              waits until the "login:" string is received before moving
  1304.              on.
  1305.  
  1306. The  script file may reside anywhere, and its name is specified in the
  1307. telser.hosts file.  (See section `Telnet Hosts Configuration').  Hosts
  1308. may  share  the  same  script files.  This is particular useful if you
  1309. connect to several hosts using the same user id and password.
  1310.  
  1311. Example script file:
  1312.  
  1313.     ; this script auto logins into my U
  1314.     message "Auto logging into school...\r\n"
  1315.     wait "ogin: "
  1316.     send "samy\r"
  1317.     wait "assword:"
  1318.     send "nicetry\r"
  1319.  
  1320. If  telser's scripting capability is primitive for your needs, you can
  1321. always  use  the  script language built in your comm program.
  1322.  
  1323. You  are not recommended to use login scripts if your Amiga is used by
  1324. someone you don't really trust.  They can steal your passwords!
  1325.  
  1326.  
  1327. 16. Troubleshooting
  1328. ===================
  1329.  
  1330. ----------------------------------------------------------------------
  1331. Problem:
  1332.     Nothing happens after I see the "CONNECT" string.
  1333.  
  1334. Cause:
  1335.     Telnet negotiation failed.
  1336.  
  1337. Solution:
  1338.     Turn  BINARY  mode  off from the `Telser Options Window'.  On some
  1339.     Suns,  use  the  terminal  "UNKNOWN"  when  logging in.  After you
  1340.     logged  in,  issue  "setenv  TERM  <your-term>".  (The Suns I have
  1341.     access to don't suffer this problem.)
  1342.  
  1343. ----------------------------------------------------------------------
  1344. Problem:
  1345.     You can't enter your user id and password.
  1346.  
  1347. Cause:
  1348.     The host expects a different end-of-line character that terminates
  1349.     a line of input.
  1350.  
  1351. Solution:
  1352.     On  some  Suns,  use ^J (linefeed) instead of carriage-return.  If
  1353.     possible, remap your carriage-return key to linefeed.  It may also
  1354.     help if you uncheck the "Do Binary" checkbox in the
  1355.     `Telser Options Window'.
  1356.  
  1357. ----------------------------------------------------------------------
  1358. Problem:
  1359.     You can't log into Amiga NetBSD systems.
  1360.  
  1361. Cause:
  1362.     Telnet negotiation failed.
  1363.  
  1364. Solution (maybe):
  1365.     Telser's  LINEMODE  options  are not 100% implemented.  Hopefully,
  1366.     it'll  be  completed  in  the future releases.  Meanwhile, try the
  1367.     host again with LINEMODE set off in the `Telser Options Window'
  1368.  
  1369. ----------------------------------------------------------------------
  1370. Problem:
  1371.     You  can  log  into a BSDI BSD/386 or BSD 4.4 system, but it won't
  1372.     respond to your keystrokes.
  1373.  
  1374. Cause:
  1375.     Telnet negotiation failed.
  1376.  
  1377. Solution:
  1378.     telser  doesn't  support ("real" or "kludge") LINEMODE completely,
  1379.     so turn off LINEMODE in the `Telser Options Window' and try again.
  1380.  
  1381. ----------------------------------------------------------------------
  1382. Problem:
  1383.     When you use DTR drop to hang up telser you don't see the full
  1384.     "NO CARRIER" string.
  1385.  
  1386. Cause:
  1387.     DTR  drop  involves  closing and re-opening the device.  Some comm
  1388.     programs  flush the device after it opens it, but before the first
  1389.     read.  Therefore, the "NO CARRIER" can be partly flushed out.
  1390.  
  1391. Solution:
  1392.     Do not use DTR drop to hang up.  Instead use +++ATH\r.
  1393.  
  1394. ----------------------------------------------------------------------
  1395. Problem:
  1396.     When  telser.device  is  opened  the second time, the comm program
  1397.     reports busy.
  1398.  
  1399. Cause:
  1400.     The unregistered version of telser allows only one unit at a time.
  1401.     You are recommended to register.  See `Registration Form'
  1402.     You chose the same unit as the first comm program.
  1403.  
  1404. Solution:
  1405.     If you are already a registered user, make sure the telser.key
  1406.     file is in S:
  1407.     Chose a different unit and try again.
  1408.  
  1409. ----------------------------------------------------------------------
  1410. Problem:
  1411.     You can't do file transfers.
  1412.  
  1413. Cause:
  1414.     Intolerable time delays affecting the underlying transfer protocol.
  1415.  
  1416. Solution:
  1417.     Play  with  the protocol parameters such as relaxed timing, packet
  1418.     sizes, etc.  If all else fails, you can always "uuencode" the file
  1419.     and ascii capture the output from the "cat" command.
  1420.  
  1421.     Try  to log on with the rlogin protocol and do file transfers.  It
  1422.     works on some systems, like IRIX.
  1423.  
  1424. ----------------------------------------------------------------------
  1425. Problem:
  1426.     You cannot abort dialing.
  1427.  
  1428. Cause:
  1429.     TCP/IP is taking a long time finding a route to the host.
  1430.  
  1431. Solution:
  1432.     Issue a "status" command and then use "break" to send a Ctrl-C
  1433.     break signal to the telser process responsible for the
  1434.     telser.device unit you are using.
  1435.  
  1436. ----------------------------------------------------------------------
  1437. Problem:
  1438.     You see garbage after you connect.
  1439.  
  1440. Cause:
  1441.     Wrong TCP port
  1442.  
  1443. Solution:
  1444.     Make  sure  you  telnetted to the correct port (typically 23), and
  1445.     rlogin  to  the  right  port also.  Telnetting to a rlogin port or
  1446.     rloginning  to a telnet port will display garbage and possibly get
  1447.     disconnected.
  1448.  
  1449. ----------------------------------------------------------------------
  1450. Problem:
  1451.     You cannot get telser to work with CNet BBS.
  1452.  
  1453. Cause:
  1454.     modem setup incorrectly.
  1455.  
  1456. Solution: (written by Dan Fraser (IRC nick: Optic)):
  1457.     There are some simple changes that must be made to allow telser to
  1458.     work properly with CNet BBS.
  1459.  
  1460.     First,  load  CONFIG  and configure a new CNet port as if you were
  1461.     installing a new modem.  Completely remove the "Init#1", "Init#2",
  1462.     "Terminal", and "Term link" modem strings.  Set the "Idle baud" to
  1463.     whatever  speed  you  would  like to use with telser (ie:  19200).
  1464.     Remember  to  change the serial device to "telser.device".  Ensure
  1465.     that the "Ans.  pause" field is set to at least 10.
  1466.  
  1467.     Now,  load  the port in CNet's control panel, open its screen, and
  1468.     enter  terminal  mode.   Type  "ATS0=0&D2&W" to make the necessary
  1469.     changes  to  telser's config.  Exit terminal mode, and your telser
  1470.     port is all ready to go.
  1471.  
  1472. ----------------------------------------------------------------------
  1473. Problem:
  1474.     You cannot get telser to work with TSL 2.0e (Terminus) from
  1475.     Workbench
  1476.  
  1477. Causes:
  1478.     unknown
  1479.  
  1480. Solution:
  1481.     As reported by Dan Zerkle:
  1482.  
  1483.     If  I  start  Terminus  directly from the workbench (without TSL),
  1484.     it's fine.  It's also fine to run TSL from the shell.
  1485.  
  1486.     To summarize:
  1487.  
  1488.                     Shell   Workbench
  1489.     Terminus        OK      OK
  1490.     TSL             OK      HANGS
  1491.  
  1492.     I  now  suspect that is is due to a bug or incompatibility in TSL,
  1493.     not telser.
  1494.  
  1495.  
  1496. 17. History
  1497. ===========
  1498.  
  1499.  Ver. YY/MM/DD Changes
  1500.  ---- -------- --------------------------------------------------------
  1501.  1.20 95/03/06 - save telnet options now saves the rlogin preferences
  1502.                  and login ID.
  1503.                - at startup, if window is opened, it will not be
  1504.                  become active.  (Suggested by Vincent Hodges)
  1505.                - telserd can now take config filename from command
  1506.                  line.  Therefore, it can now service different ports.
  1507.                  (Suggested by Vincent Hodges)
  1508.                - now works with Platinum Works! comm program
  1509.                - can disable telnet negotiation.  This is needed for
  1510.                  some MUD servers and UUCP.
  1511.                - added modem register S50 to allow CONNECT string
  1512.                  report to be delayed while in hostmode
  1513.                - added simple script capabilities
  1514.                  (Suggested by Dennis Lee Bieber)
  1515.                - added TelserMon to monitor telser units
  1516.                - can now handle incoming rlogin connections
  1517.                - file transfers much improved
  1518.  1.10 95/01/29 - Checkbox gadgets are now scaled.
  1519.                - ZModem upload/downloading much improved.
  1520.                - Spurious characters problem fixed.
  1521.                - Caller ID can now report hostname as well as IP
  1522.                  address.
  1523.                - RLogin protocol now supported, as suggested by
  1524.                  Eddy Carroll.
  1525.                - serial EOF mode supported, but not fully tested.
  1526.                - asynchronous connect, but stuff like address
  1527.                  resolution is still synchronous.  You can abort
  1528.                  host "dialing" some of the time, but not always.
  1529.                - known enforcer hits removed
  1530.                - added telnet flow control negotiation
  1531.                - linemode can now be forced
  1532.  
  1533.  1.00 95/01/01 - Original release
  1534.  
  1535.  
  1536. 18. Acknowledgements
  1537. ====================
  1538.  
  1539. Thank-you's go to...
  1540.  
  1541.  - The AmiTCP group at Helsinki University for their great work,
  1542.  
  1543.  - Stephan Sürken for Text2Guide, which made creating AmigaGuide
  1544.    documents easy,
  1545.  
  1546.  - All the beta-testers (TOO many to list.), especially those who
  1547.    made reports.
  1548.  
  1549.    Special thanks to:
  1550.  
  1551.    David Zvekic (IRC nick: Ensoniq) for major testing with the AS225
  1552.         version;
  1553.  
  1554.    NJ Verenini (IRC nick: Spumoni) for testing the AmiTCP version and
  1555.         writing the AXsh installation guide;
  1556.  
  1557.    Robert Reiswig (IRC nick: RobR) for writing the Installer script;
  1558.         and
  1559.  
  1560.    Dan Fraser (IRC nick: Optic) for writing the CNet BBS installation
  1561.         tip in the Troubleshooting section,
  1562.  
  1563.  - David Swasbrook (author of SwazBlanker, IRC nick: Swaz) for helping
  1564.         debug TelserMon's popup key, and
  1565.  
  1566.  - All registered users.  Without you, there probably wouldn't have
  1567.    been as many enhancements since 1.0.
  1568.  
  1569.  
  1570. 19. Registration Form
  1571. =====================
  1572.  
  1573. ----------------------- telser Registration --------------------------
  1574.  
  1575. Surname___________________________ Given Name_________________________
  1576.  
  1577. Company Name_________________ Type of Business________________________
  1578.  
  1579. Street Address________________________________________________________
  1580.  
  1581. City______________________________ Prov./State________________________
  1582.  
  1583. Postal/ZipCode_____________________ Country___________________________
  1584.  
  1585. E-Mail_________________________________________ uuencoded files OK?___
  1586.  
  1587. Networking software and hardware in use_______________________________
  1588.  
  1589. ______________________________________________________________________
  1590.  
  1591. Hostname of BBS telserd is used on____________________________________
  1592.  
  1593. Where did you obtain telser?_______________________ Version Number____
  1594.  
  1595. Suggestions for future releases or new programs_______________________
  1596.  
  1597. ______________________________________________________________________
  1598.  
  1599. Registration fee: $15US for unlimited units.
  1600.                   Canadian users may send $20CAN.
  1601.  
  1602. Method of payment:
  1603. [ ] Money order
  1604. [ ] Personal check, please allow 3-4 weeks for clearance.
  1605.     No personal checks from outside of Canada and US.
  1606. [ ] Cash (wrapped with sufficient paper).
  1607.     I hold no responsibility for missing cash.
  1608.  
  1609. I have read the section `Legal Stuff' and agree with it.
  1610.  
  1611. _________________________  ___________________________________________
  1612.        (Date)                           (Signature)
  1613. ----------------------------------------------------------------------
  1614.  
  1615.  
  1616. 20. Contact Address
  1617. ===================
  1618.  
  1619. Registration  fees,  questions,  ideas,  comments,  bug  reports, etc.
  1620. should go to:
  1621.  
  1622. Snail Mail: Sam Yee
  1623.             4595 Nanaimo St.
  1624.             Vancouver, B.C.
  1625.             Canada  V5N 5J5
  1626.  
  1627.   Internet: samy@sfu.ca (IRC nick: Encoder in channel #amiga)
  1628.    FidoNet: 1:153/765 (Terra Firma BBS (604) 434-3665)
  1629.