home *** CD-ROM | disk | FTP | other *** search
/ Hall of Fame / HallofFameCDROM.cdr / rbbs / rbbsdocs.lzh / RBBSDOCS.14 < prev    next >
Text File  |  1990-11-05  |  21KB  |  405 lines

  1.  
  2.  
  3.  
  4.     THE USE OF RBBS-PC "DOORS"                                             14-1
  5.  
  6.  
  7.     14. THE USE OF RBBS-PC "DOORS"
  8.     ------------------------------
  9.     A door is a program contained on the RBBS-PC machine which can be run by an
  10.     RBBS-PC caller.   This allows the  BBS user access to  functions other than
  11.     those provided by  RBBS-PC.  After the door terminates,  control returns to
  12.     RBBS-PC.
  13.  
  14.     The concept of doors  can be confusing and complicated,  but from RBBS-PC's
  15.     perspective, it is simple:
  16.  
  17.          When a caller requests a DOOR, RBBS-PC checks to see  if the door
  18.          exists.  If so, RBBS-PC will  create a DOOR signal file and exit.
  19.          It is the responsibility  of the invoking .BAT file  (see section
  20.          13) to  start the  door.   RBBS-PC will regain  control when  the
  21.          invoking .BAT file ends.
  22.  
  23.     With this  simplicity in mind, we  will now explain the  complex details of
  24.     door processing:
  25.  
  26.     As a potential  door installer, you should  first become familiar  with the
  27.     door program, WITHOUT RBBS-PC INVOLVEMENT!   Most door programs can also be
  28.     run directly from DOS.  Make sure the program works, and you understand  it
  29.     before you expect RBBS-PC to run it.
  30.  
  31.     Once you  understand the door  program, you  must set up  the interface  to
  32.     RBBS-PC.  A sample door is included with RBBS-PC.  The door (DOORTEST) does
  33.     nothing, but it does show you how the interface works.
  34.  
  35.     14.1 A Quick Start to Installing Doors
  36.     --------------------------------------
  37.     To install the door, follow these steps:
  38.  
  39.        - Create  the  door batch  file,  and place  it in  the  default RBBS-PC
  40.          directory  (DOORTEST.BAT  is an  example).    This  batch file  should
  41.          contain the commands needed to run the door, and then  return to DOS).
  42.          RBBS-PC will automatically restart after the door.
  43.  
  44.        - If you want  maximum control over  your door, create  an entry in  the
  45.          DOORS.DEF file (see section 14.3).  Without this  entry, the door will
  46.          still work,  but you will be able to control  more aspects of the door
  47.          interface with this control file
  48.  
  49.        - Edit the MENU5  file (including  the graphic and  color versions)  and
  50.          enter the name of your  door.  The door name must be IN  CAPS, and the
  51.          first word on a line.  The sample DOORTEST can be used as a guide.  If
  52.          the door name  is NOT in all MENU5 files, RBBS-PC will allow the SysOp
  53.          to  exit  the door,  but your  callers  will not  be  able to  use it.
  54.          RBBS-PC uses the MENU5 as a security measure.  If the door name is not
  55.          found in this file, callers are denied access to the door.
  56.  
  57.     14.2 The Major Problems with DOORS
  58.     ----------------------------------
  59.     The hard  fact about doors is  that most DOS application  programs that run
  60.     perfectly fine  locally will not  run correctly for  a remote caller.   The
  61.     general reason for this is  that, compared the UNIX  and even the old  CP/M
  62.     microcomputer  operating system, DOS has very limited support for access to
  63.     a computer from a remote site.   The primary general problem is getting the
  64.     application to  take its input from the communications port rather than the
  65.     keyboard  and  getting  the   application  to  write  its  output   to  the
  66.  
  67.  
  68.  
  69.     RBBS-PC 17.3A            TECHNICAL REFERENCE MANUAL                    14-2
  70.  
  71.  
  72.     communications port rather than the local monitor.  In  addition, even when
  73.     input  is redirected to the communications port, some remote keystrokes may
  74.     not  work, such  as the  function  and arrow  keys.   Also, creating  "full
  75.     screen" effects on a remote  BBS is difficult, because of the  wide variety
  76.     of monitors and terminal controller cards.   Another general problem is how
  77.     to  pass information between  the BBS software  and the  program doored to,
  78.     such as limiting the amount of time a  caller can spend in the door.   Most
  79.     applications  also are programmed to  wait indefinitely for  input and will
  80.     not time out.  More seriously, if the caller drops carrier, the door should
  81.     terminate  and  send  control  back  to  the  BBS  software,  whereas  most
  82.     applications will totally  ignore the fact that  carrier drops.    Finally,
  83.     many applications let the user issue  DOS commands from within them or even
  84.     to drop to DOS, which would be an intolerable security risk for a BBS.
  85.          The  upshot of  all of these  problems is  that most,  though not all,
  86.     applications that run  acceptably as  doors on BBS's  have been  especially
  87.     designed to run as a door.
  88.  
  89.     14.2.1 Redirecting I/O
  90.     ----------------------
  91.     The main facility  DOS provides in its operating system for redirecting I/O
  92.     is the CTTY command.   Unfortunately, this only works for applications that
  93.     use standard DOS bios  calls to do I/O rather  than "directly write to  the
  94.     hardware".    Unfortunately, the DOS bios for  handling I/O is so slow that
  95.     most  applications  directly  write  to  hardware  rather  than   accept  a
  96.     performance penalty.    When SysOp  function 7 is used,  RBBS-PC will write
  97.     out  a door  that does  nothing  but redirect  I/O  and drop  to DOS,  then
  98.     terminate completely.    What  typically happens after  the drop to  DOS is
  99.     that the output of an  invoked program appears on the local  monitor rather
  100.     than the remote, so that the remote SysOp calling in sees nothing.
  101.  
  102.     While being limited to programs  that use standard DOS callers and  print a
  103.     "line  at a  time" on the  screen, scrolling  prior lines up,  CTTY has one
  104.     major liability.    When the output  is redirected from the console  to the
  105.     communications  port, nothing  appears on  the local  monitor, so  that the
  106.     SysOp "snooping"  on the BBS  is unable to  see what the  caller does while
  107.     dooring.  This program is addressed by a device driver called GATEWAY which
  108.     adds local echo to remote sending.    It is installed in CONFIG.SYS.    For
  109.     doors, then simply  say "CTTY GATE1" rather than "CTTY COM1".   For drop to
  110.     dos, simply tell RBBS-PC in configuration parameter 106  what device to use
  111.     after specifying you do not want to use CTTY.
  112.  
  113.     CTTY does not work in every environment.   For example, it is ignored under
  114.     Desqview and does not work  properly under TANDY DOS.    Also, with DOS  it
  115.     fails  to  redirect  standard error  messages.      To  solve this  problem
  116.     STDERR.COM is included  as part of the basic RBBS-PC  system.  This program
  117.     was provided by Quarterdeck  Systems.  If  you encounter this problem,  run
  118.     "STDERR.COM" one time only before  you start RBBS-PC, including it  in your
  119.     AUTOEXEC.BAT file.
  120.  
  121.     An alternative  method for redirecting I/O  is to use DOS  redirection on a
  122.     command line.     The ">xxx"  redirects standard output  to device  xxx and
  123.     "<xxx" redirects  standard input  to device  xxx.     So, invoking  program
  124.     "TEST" as follows
  125.  
  126.                           TEST <com1 >com1
  127.  
  128.     should  send and  receive from  communications port  1, if  the application
  129.     supports DOS redirection.
  130.  
  131.  
  132.  
  133.     THE USE OF RBBS-PC "DOORS"                                             14-3
  134.  
  135.  
  136.     A  shareware  product  called  DOORWAY  goes  a  long  way  toward  getting
  137.     applications never written to  be a door to at  least work remotely.    You
  138.     simply door  to DOORWAY and invoke the intended door through DOORWAY rather
  139.     than directly.   While not every application will run, it does take care of
  140.     most I/O problems.   See the documentation of DOORWAY on how to install it.
  141.  
  142.     Programs  written  explicitly   as  a  door  will  handle   these  problems
  143.     themselves.
  144.  
  145.     14.2.2 Exchanging Information
  146.     -----------------------------
  147.     Most  applications were never designed  to take input  from another running
  148.     program.   This creates a problem  for BBS's, which almost always limit the
  149.     session time a caller  can have, so that the  time a caller can spend  in a
  150.     door  likewise  should have  a upper  limit,  preferably no  more  that the
  151.     session time remaining that the caller has.   One of the main advantages of
  152.     applications  written  to  be  doors  is  that  they  are  design  to  take
  153.     information from the BBS.  RBBS-PC has for years written out information in
  154.     a standardized format, in  a text file, for doors  to read.   This  file is
  155.     DORINFOn.DEF, where  n is  the node  id (1-9,0,A-Z),  written  to the  same
  156.     drive/path as  the caller's file,  and consists of  all text, one  piece in
  157.     information per line, in the following order:
  158.  
  159.          1.   The name of the RBBS-PC system
  160.          2.   The SysOp's first name
  161.          3.   The SysOp's last name
  162.          4.   The communications port being used
  163.          5.   The baud rate and parity with which the caller logged on, and the
  164.               baud rate at which RBBS-PC is connected to the modem
  165.          6.   The network type (if any) RBBS-PC is running in
  166.          7.   The caller's first name
  167.          8.   The caller's last name
  168.          9.   The city and state the caller is from
  169.          10.  The caller's graphics preferences
  170.          11.  The caller's security level
  171.          12.  The caller's time remaining in the current session
  172.          13.  Whether fossil driver is used (-1 = yes, 0 = no)
  173.  
  174.     RBBS-PC macros allow any information to be  written to a file for a door in
  175.     nearly any format desired (see 13.4), as well as put  different information
  176.     on a command line for the door.
  177.          RBBS-PC passes the  node id as the first command  line argument to the
  178.     batch  file it invokes (or  as specified in the door  control file) so that
  179.     the DOOR knows which  DORINFO file to read.    There are external utilities
  180.     for  converting DORINFO interfaces to other formats, for doors that support
  181.     different standards.
  182.  
  183.     14.2.3 Terminating After Carrier Loss
  184.     -------------------------------------
  185.     Applications not written as doors  typically will sit and wait forever  for
  186.     input.   The do not "time out", that is, terminate after a limited  time in
  187.     which no input is  received.   After if the carrier is dropped, they do not
  188.     detect that  the remote caller is  "gone" and will sit  forever waiting for
  189.     input.   In effect, a dropped carrier "hangs" the BBS  and no further calls
  190.     will  be  processed.   Programs written  as doors  will terminate  both for
  191.     inactivity  and when carrier drops.     The solution  to this problem is to
  192.     install a memory resident program that will reboot the PC if carrier drops.
  193.     The public domain program WATCHDOG does this.   Simply turn  WATCHDOG on in
  194.     the first  statement in the  door batch file, and  turn it off  as the last
  195.  
  196.  
  197.  
  198.     RBBS-PC 17.3A            TECHNICAL REFERENCE MANUAL                    14-4
  199.  
  200.  
  201.     statement.    WATCHDOG is not needed, and should  not be used, for programs
  202.     explicitly written to be doors.
  203.  
  204.     14.2.4 Security
  205.     ---------------
  206.     SysOps should  realize  that  doors  greatly increase  the  security  risks
  207.     associated  with  running  a  BBS.     One  general  problem  is  that most
  208.     applications for personal computers  assume that the user is  the owner and
  209.     has access  to everything on  the PC.    As a  matter of  convenience, they
  210.     often give  the user access to  many functions, such as  deleting files, or
  211.     even shelling  to DOS.    This  assumption is simply  not true when  remote
  212.     callers  door to the application.   Very  few programs not designed to be a
  213.     door let the SysOp disable such dangerous functions.
  214.  
  215.     14.3 Invoking "DOOR"s Via The External Control File
  216.     ---------------------------------------------------
  217.     In addition to simply invoking "DOOR"s using the standard approach outlined
  218.     above,  RBBS-PC supports a more  sophisticated interface to  doors.  CONFIG
  219.     parameter 109  allows the SysOp to  specify the name of  this control file,
  220.     which is usually DOORS.DEF.
  221.  
  222.     This  approach  allows  each   DOOR  to  be  invoked  in   different  ways.
  223.     Specifically,  the SysOp  can  tailor the  way  each "DOOR"  is invoked  as
  224.     follows:
  225.  
  226.        - The minimum security level to invoke each "DOOR" may be different.
  227.  
  228.        - The caller may be required to answer a questionnaire before the "DOOR"
  229.          is  invoked.   This is extremely  useful if  the "DOOR"  is a database
  230.          search  program and  the  questionnaire gathers  the necessary  search
  231.          criteria from the caller prior to invoking the "DOOR".
  232.  
  233.        - The "DOOR" may be either SHELLed to (RBBS-PC remains in memory and the
  234.          "DOOR"  is  loaded into  free RAM)  or  EXITed to  (RBBS-PC terminates
  235.          itself and releases the memory for the "DOOR" to use).
  236.  
  237.        - The "DOOR"  may be  invoked via  a "template"  (see section 20.2)  and
  238.          information passed to the "DOOR".  "Templates" are useful when passing
  239.          information  from  a  questionnaire  to  a  database  search  program.
  240.          RBBS-PC  normally  passes the  node  ID as  the  first parameter  to a
  241.          "DOOR".   When using a  "template" to invoke  a "DOOR" the  "template"
  242.          must include the parameter "[NODE]", if the node ID is to be passed to
  243.          the "DOOR".
  244.  
  245.        - A file  may be  specified for  RBBS-PC to display  to the  caller upon
  246.          returning from a  "DOOR".  This file may be created by the "DOOR" that
  247.          was invoked  (i.e. the output of the database search and retrieval) or
  248.          simply a text file that the SysOp created.
  249.  
  250.        - When  returning  from  each "DOOR",  the  caller  can  be required  to
  251.          re-enter their password as an added security verification.
  252.  
  253.        - The maximum amount  of time a caller can  spend in each "DOOR"  can be
  254.          specified.  If the amount of time remaining the user has on the system
  255.          is greater  than the amount of time allowed in the "DOOR", the smaller
  256.          of the two times is used.
  257.  
  258.     The format of the door control file is:
  259.  
  260.  
  261.  
  262.     THE USE OF RBBS-PC "DOORS"                                             14-5
  263.  
  264.  
  265.     1.   Name of door - up to 8 characters
  266.     2.   Minimum security to use door
  267.     3.   Questionnaire to execute before the door
  268.     4.   Method to invoke doors - "S" for shelling, else go to .BAT file
  269.     5.   Template for invoking door  - make sure the first  word has a file
  270.          extension  - RBBS-PC will  check for  existence of  the first  word as
  271.          file.
  272.     6.   Whether to  ask for  password  on return  - Y  is  yes, anything  else
  273.          bypasses password check
  274.     7.   File to display after the door
  275.     8.   Maximum time allowed  in doors - time  remaining passed to door is
  276.          reduced if max time is less.
  277.  
  278.     Note:  RBBS-PC normally passes  the node id as the 1st parameter to a door.
  279.     If  a template is used, RBBS-PC will  not automatically add this parameter.
  280.     If you want it, you should include "[NODE]" in the template.  Special note:
  281.     A door must still have a .BAT file  in order to be invoked, even if the BAT
  282.     file is not used in the template!
  283.     Example #1:
  284.  
  285.     MYDOOR,4,C:\RBBS\QUESTION\DOORQ.DEF,D,"MYDOOR.BAT [1] [2]",N,MYDOOR.TXT,
  286.  
  287.     This line tells RBBS-PC:
  288.  
  289.        - The name of the door is "MYDOOR"
  290.        - Users with security 4 and above can run this door
  291.        - Before starting the door, users are asked the DOORQ.DEF questionnaire
  292.        - RBBS-PC should EXIT and run the door (rather than SHELLING)
  293.        - The  door  is  started  by  running  MYDOOR.BAT,  and  two  parameters
  294.          (presumably set in the questionnaire) are passed to the .BAT.
  295.        - The caller does NOT have to enter a password to return to RBBS-PC
  296.        - The  file  "MYDOOR.TXT" is  shown to  the  caller before  returning to
  297.          RBBS-PC
  298.        - No time limit (other than the caller's session time) is placed on this
  299.          door.
  300.  
  301.     Example #2:
  302.  
  303.     MYDOOR,10,,S,"MYDOOR.BAT [NODE]",Y,,10
  304.  
  305.     This line tells RBBS-PC:
  306.  
  307.        - The name of the door is "MYDOOR"
  308.        - Users with security 10 and above can run this door
  309.        - No questionnaire is asked before starting the door
  310.        - RBBS-PC should SHELL to  the door (rather than EXITING)
  311.        - The door is started by running MYDOOR.BAT, and the RBBS-PC node number
  312.          is passed to the .BAT.
  313.        - The caller DOES have to enter a password to return to RBBS-PC
  314.        - No file is shown to the caller before returning to RBBS-PC
  315.        - A 10  minute time limit  is placed on  this door (unless  the caller's
  316.          session time is less than this).
  317.  
  318.     As with  all features, the  control file approach  to invoking a  "DOOR" is
  319.     optional.  However, even  if it is used a  "DOOR" can only be invoked  by a
  320.     caller if a .BAT file exists.
  321.  
  322.  
  323.  
  324.     RBBS-PC 17.3A            TECHNICAL REFERENCE MANUAL                    14-6
  325.  
  326.  
  327.     14.4 EXITing or SHELLing to "DOOR"s
  328.     -----------------------------------
  329.     There are two ways to execute other programs from RBBS-PC:
  330.  
  331.      1)  EXITing RBBS-PC  and invoking the other  program via a .BAT  file that
  332.          RBBS-PC builds dynamically, or
  333.  
  334.      2)  SHELLing to the other program while RBBS-PC remains in memory.
  335.  
  336.     EXITing RBBS-PC allows other BASIC programs  to be run as external programs
  337.     to RBBS-PC, and allows all of RBBS-PC's features to be  active in computers
  338.     with only 320K of memory.  The "price" that is paid  is that upon returning
  339.     from  the externally called program,  RBBS-PC's .EXE file  must be reloaded
  340.     into  memory.   Unless a control  file is  used to  invoke "DOOR"s, RBBS-PC
  341.     always EXITs to "DOOR"s.
  342.  
  343.     SHELLing prohibits other BASIC programs  to be run as external programs  to
  344.     RBBS-PC, consumes memory because  RBBS-PC remains in memory when  the other
  345.     program is running, and requires 386K of memory (under DOS 3.2) to activate
  346.     all of RBBS-PC's  features.  However, SHELLing  does eliminate the  need to
  347.     reload the RBBS-PC.EXE file each time.
  348.  
  349.     14.5 Resetting The User's Record Via a "DOOR"
  350.     ---------------------------------------------
  351.     WARNING -- this is an  extremely powerful feature!  It opens  up everything
  352.     in the  user record to  modification by the "DOOR".   The "door"  must also
  353.     have knowledge of where fields are in the user record and may cease to work
  354.     properly when the user record changes its format.  The main application for
  355.     this is feature within RBBS-PC if for "DOOR"s that maintain  certain SysOp-
  356.     defined fields.
  357.  
  358.     For a "DOOR" to reset  any part of the user record all a door  has to do is
  359.     include in DOUTx.DEF file, where x is node number, a line in the format
  360.  
  361.                         UR(<start>:<end>),<value>
  362.  
  363.     where:
  364.            <start> is the beginning byte in user record,
  365.            <end> is the number of bytes to revise, and
  366.            <value>  is  what goes  into the  specified  position in  the user's
  367.     record.
  368.  
  369.      For example,
  370.  
  371.                     UR(63:24),"City,State"
  372.  
  373.     would update the city/state  field with the value "City,State",  setting 24
  374.     bytes in  user record to that  value (blank fill to  right), beginning with
  375.     character position 63.    The "UR"  request only works  for data stored  in
  376.     character format in the user record.   RBBS-PC supports a second request in
  377.     the form
  378.  
  379.                      SL,<sign><value>
  380.  
  381.     where  "SL" stands for  security level.    <sign> can be  nothing, plus, or
  382.     minus, and  means respectively to  set the security level  to the following
  383.     value, or  to raise  or lower the  security by the  amount specified.   For
  384.     example, "SL,6"  requests that  the security  be set to  6 whereas  "SL,-2"
  385.     means to lower the security by 2.
  386.  
  387.  
  388.  
  389.     THE USE OF RBBS-PC "DOORS"                                             14-7
  390.  
  391.  
  392.     14.6 A Summary of "DOOR"s
  393.     -------------------------
  394.     Doors stretch IBM's DOS' capabilities and requires more knowledge than most
  395.     other BBS  functions.  If the preceding discussion of "doors" is a complete
  396.     mystery to you, contact a SysOp of an RBBS-PC that is using "doors" and ask
  397.     for help.  However, if you call a SysOp to learn about "doors" for personal
  398.     gain (i.e.  you are a consultant  or some company's employee  being paid to
  399.     write  a  "door") have  the  courtesy to  tell  him.   Please  do  not take
  400.     advantage  of the  "user helping  user" concept.   Anyone who  has acquired
  401.     specialized knowledge has the right to  be remunerated for their efforts if
  402.     their  knowledge  is being  used to  further  commercial purposes  and they
  403.     request it.
  404.  
  405.