home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1999 February / PCO_0299.ISO / filesbbs / os2 / tor165gp.exe / TDOC.ZIP / TORNADO.DO1 < prev    next >
Encoding:
Text File  |  1998-11-29  |  86.7 KB  |  2,102 lines

  1. ═════════════════════════════════════════════════════════════════════════════
  2.  
  3.           █▀▀█▀▀█ █▀▀▀▀█▄ ▀█▀▀▀█▄ ▀█▄   ▀█ ▀█▀█▄  ▀█▀▀█▄  █▀▀▀▀█▄
  4.              █    █     █  █    █  █▀█   █  █  ▀█  █   ▀█ █     █
  5.              █    █     █ ▄█▄▄▄█▀  █ ▀█  █ ▀█▀▀▀█  █    █ █     █
  6.              █    █     █  █   ▀█  █  ▀█ █  █   █  █   ▄█ █     █
  7.             ▄█▄   ▀█▄▄▄▄█ ▄█   ▄█ ▄█   ▀██ ▄█  ▄█ ▄█▄▄█▀  ▀█▄▄▄▄█
  8.  
  9. ─────────────────────────────────────────────────────────────────────────────
  10.  
  11.                       Tornado Bulletin Board System
  12.      Copyright (c) 1995-97 Konstantin Klyagin [2:461/22] & Tornado Team.
  13.                Translated by Vadim Vasilenko [2:461/79.44]
  14.  
  15. ═════════════════════════════════════════════════════════════════════════════
  16.  
  17.     Table of content                           Feci quod potui, faciant
  18.     ════════════════                           meliora potentes.
  19.  
  20.     1. Development history ......................................... XX
  21.     2. Program features ............................................ XX
  22.     3. About this document ......................................... XX
  23.     4. Hardware and software requirements .......................... XX
  24.         4.1. Hardware requirements ................................. XX
  25.         4.2. Software requirements ................................. XX
  26.         4.3. Additional hardware and software....................... XX
  27.     5. User interface .............................................. XX
  28.         5.1. Call waiting mode ..................................... XX
  29.         5.2. User session .......................................... XX
  30.         5.3. Colors customizing .................................... XX
  31.     6. The Tornado workcycle ....................................... XX
  32.         6.1. Command line parameters ............................... XX
  33.         6.2. Errorlevel codes ...................................... XX
  34.         6.3. Flagfiles ............................................. XX
  35.     7. Customizing ................................................. XX
  36.         7.1. Text color setting codes .............................. XX
  37.         7.2. Macros ................................................ XX
  38.         7.3. Setting time intervals ................................ XX
  39.         7.4. .A?? filenames ........................................ XX
  40.         7.5. Access levels and user semaphores ..................... XX
  41.         7.6. Messages language customizing ......................... XX
  42.         7.7. User menu customizing ................................. XX
  43.         7.8. File transfer protocols configuration ................. XX
  44.         7.9. Running the Tornado under mailer....................... XX
  45.           7.9.1. Tornado/DOS (DOS version) ......................... XX
  46.           7.9.2. Tornado/2 (OS/2 version) .......................... XX
  47.           7.9.3. Tornado/W32 (Win95/98/NT version) ................. XX
  48.        7.10. Some notes about multiline mode ....................... XX
  49.        7.11. File areas and message areas .......................... XX
  50.        7.12. File area and message area groups ..................... XX
  51.        7.13. Newsservice ........................................... XX
  52.     8. Built-in script language .................................... XX
  53.         8.1. Sections .............................................. XX
  54.         8.2. Variables ............................................. XX
  55.         8.3. Statements ............................................ XX
  56.         8.4. Labels ................................................ XX
  57.         8.5. Procedures ............................................ XX
  58.         8.6. Reserved names of script files ........................ XX
  59.         8.7. REXX support (OS/2 version only) ...................... XX
  60.     9. Advanced features ........................................... XX
  61.         9.1. Built-in DoorWay ...................................... XX
  62.         9.2. ManualSend (tm) ....................................... XX
  63.         9.3. SaveTagList (tm) ...................................... XX
  64.         9.4. The Tornado Upgrade Manager (tm) ...................... XX
  65.         9.5. Registration Resume (tm) .............................. XX
  66.         9.6. Private Uploads (tm) .................................. XX
  67.    10. Other info .................................................. XX
  68.        10.1. Acknowledgements ...................................... XX
  69.        10.2. Distribution and the author's responsibility .......... XX
  70.        10.3. Support ............................................... XX
  71.        10.4. The author............................................. XX
  72.        10.5. Trademarks ............................................ XX
  73.  
  74.  
  75.  1. Development history
  76.  ══════════════════════
  77.  
  78.    The Tornado is a  program to create and arrange BBS  (Bulletin Board
  79.  System). There is a lot of such programs, the most popular are Remote-
  80.  Access, Maximus, PCBoard, SuperBBS,  etc.  But it's always interesting
  81.  to do it by oneself. So dealing with the BBS programs setting and cus-
  82.  tomizing on my own BBS, I noticed some inconveniences.  This forced me
  83.  to think about developing my own BBS program.  This was happened on 26
  84.  July 1995.  That day I've created  the TORNADO.PAS file in the Borland
  85.  Pascal 7.0 IDE - really  amazing Borland Inc. product.  The Tornado is
  86.  my try (it's up on you to judge whether is it succesful ;) to join the
  87.  strengthes of the programs of such class, assembling them with own fe-
  88.  atures (as well as with bugs - there are many of them, surely). I paid
  89.  special  attention to comfortable work,  number of  features increase,
  90.  and thorough  debugging.  So if you've  noticed some inconveniences or
  91.  errors, you ought to contact me for them to be removed.
  92.  
  93.  
  94.  2. Program features
  95.  ═══════════════════
  96.  
  97.    - Text configuration files;
  98.    - Built-in ANSI, TTY and AVATAR terminals support;
  99.    - Built-in XModem,  XModemCRC,  XModem1K, XModem1KG, YModem, YModemG
  100.      and ZModem file transfer protocols;
  101.    - Built-in script language being very useful for tuning up any BBS;
  102.    - Customizable messages languages support;
  103.    - Free choice of the I/O device used to interface to COM-port (UART,
  104.      FOSSIL, DigiBoard, Int 14h);
  105.    - Built-in DoorWay-like shell enables remote access to the host sys-
  106.      tem without installing any additional software;
  107.    - File- and mail areas and groups support;
  108.    - IEMSI protocol support;
  109.    - SaveTagList (tm).  Saving  a list of files  tagged  as being to be
  110.      downloaded after user's hangup;
  111.    - Registration Resume (tm). Resuming  of  registration procedure  in
  112.      case of carrier loss;
  113.    - Tornado  upgrade  manager (tm). Automatic increasing of user's ac-
  114.      cess level after predefined  amount of calls; the Tornado  may  be
  115.      told to notify the user by placing a message to a message area;
  116.    - Working under multitasking operating systems;
  117.    - Local work mode;
  118.    - Local UpLoad/DownLoad;
  119.    - Support of *.MSG, Hudson, Squish ¿ JAM messagebase formats;
  120.    - Logging all the events to logfile;
  121.    - Multilevel user menus;
  122.    - Convenient SysOp turbointerface;
  123.    - Multiline work;
  124.    - Tornado Relay Chat: realtime conferencing under multiline working;
  125.    - Viewing archive files by a user;
  126.    - Support of the EXITINFO.BBS and DORINFO.DEF formats;
  127.    - Other features making  working with the  Tornado pleasant for both
  128.      the SysOp and users.
  129.  
  130.  
  131.  3. About this document
  132.  ══════════════════════
  133.  
  134.    Creating this documentation, I decided not to follow usual for docu-
  135.  mentation of such kind rules,  which are based on thoroughly commented
  136.  configuration files.  This  documentation covers just major guidelines
  137.  of the Tornado using, as well as possibly unclear matters. All the va-
  138.  riables of the main configuration file are commented so they will just
  139.  be referred to by full variable name and section title.
  140.  
  141.    I strongly recommend to read FAQ which  answers a lot of most common
  142.  questions on Tornado.
  143.  
  144.  
  145.  4. Hardware and software requirements
  146.  ═════════════════════════════════════
  147.  
  148.  4.1. Hardware requirements
  149.  ──────────────────────────
  150.  
  151.  For the Tornado to work, such hardware configuration is needed:
  152.  
  153.    - IBM PC XT/AT, PS/2 or 100%-compatible computer;
  154.    - Monochrome or color display;
  155.    - /if external modem is used/ Communication (COM) port;
  156.    - Hayes-, Courier-, or Microcom-compatible internal or ext. modem.
  157.  
  158.  NOTE: The OS/2 Tornado  version assumes the  configuration is conside-
  159.        rable to run OS/2 itself.
  160.  
  161.  4.2. Software requirements
  162.  ──────────────────────────
  163.  
  164.  For the Tornado to work, such hardware configuration is needed:
  165.  
  166.   ■ DOS version:
  167.     - MS/PC DOS 3.30+ or DR-DOS 3.41+.
  168.  
  169.   ■ OS/2 version:
  170.     - OS/2 2.1+;
  171.     - fossil communication driver (e.g. sio).
  172.  
  173.  4.3. Additional hardware and software
  174.  ─────────────────────────────────────
  175.  
  176.    The  hardware and software  mentioned  below isn't necessary for the
  177.  Tornado to work,  but they will improve work and spread  possible area
  178.  the Tornado use:
  179.  
  180.    - EMS/XMS  memory  (used for swapping program while running external
  181.      applications  and  commands,  as well as for  loading  TORNADO.OVR
  182.      overlay file);
  183.    - Disk caching programs;
  184.    - Multitasking operating systems and shells (OS/2, MS Windows, Desq-
  185.      View, TopView, VM/386, PC-MOS/386, etc.) which enable running mul-
  186.      tiple Tornado copies to work in multiline mode.
  187.  
  188.  5. User interface
  189.  ═════════════════
  190.  
  191.    The Tornado has quite  easy-to-use  interface  which has two  modes:
  192.  call waiting mode and user session mode.
  193.  
  194.  5.1. Call waiting mode
  195.  ──────────────────────
  196.  
  197.    Launched without -C and -B switches, the Tornado  works in auto mode
  198.  which assumes autonatic calls responding.  In this mode, such informa-
  199.  tion is displayed:
  200.  
  201.    - Log Echo window (events list);
  202.  
  203.    - Clock in the upper right corner;
  204.      NOTE: You can disable clock (tornado.ctl->[Miscellaneous]->Clock).
  205.  
  206.    - A window in the lower right corner which displays information abo-
  207.      ut the last 8  BBS users  (username, session time, the session up-
  208.      and download size);
  209.  
  210.    - Statistics window  (the lower left corner) which displays some bo-
  211.      ard statistics (total calls number, total registered users number,
  212.      number of user messages, number of up- and downloaded files);
  213.  
  214.    - Status line with the  help on  hotkeys and  modem "lights"  (CTS -
  215.      clear to  send,  DSR - data send ready, DR - data ready, RI - ring
  216.      indicator, CD - carrier detected) - at the bottom of the screen.
  217.  
  218.    In this mode are used such hotkeys:
  219.  
  220.    ┌────────┬─────────────────────────────────────────────────────────┐
  221.    │ Hotkey │ Action                                                  │
  222.    ├────────┼─────────────────────────────────────────────────────────┤
  223.    │ Alt-A  │ Forced call answer                                      │
  224.    ├────────┼─────────────────────────────────────────────────────────┤
  225.    │ Alt-L  │ Entering the Tornado in the local mode (similar to the  │
  226.    │        │ -L command switch)                                      │
  227.    ├────────┼─────────────────────────────────────────────────────────┤
  228.    │ Esc    │ Stopping. In case of call answerring - immediate hangup,│
  229.    │        │ in the call waiting mode - exiting the Tornado          │
  230.    └────────┴─────────────────────────────────────────────────────────┘
  231.  
  232.  5.2. User session
  233.  ─────────────────
  234.  
  235.    While user session  all user screen output is  copied to SysOp local
  236.  screen  (but status line  toggled on/off by  F10 hotkey).  Status line
  237.  displays the user's name,  location,  access level and  time remaining
  238.  for this day,  as well as  modem "lights",  or "Local mode" message if
  239.  local  mode is used. Standard clock is displayed in upper right corner
  240.  of the screen. Such hotkeys are available in this mode:
  241.  
  242.    ┌────────┬─────────────────────────────────────────────────────────┐
  243.    │ Hotkey │ Action                                                  │
  244.    ├────────┼─────────────────────────────────────────────────────────┤
  245.    │ F1     │ Displays help on the hotkeys                            │
  246.    ├────────┼─────────────────────────────────────────────────────────┤
  247.    │ F2     │ Current session information                             │
  248.    ├────────┼─────────────────────────────────────────────────────────┤
  249.    │ F3/F4  │ Increase/decrease user time by 1 min. respectively      │
  250.    ├────────┼─────────────────────────────────────────────────────────┤
  251.    │ F10    │ Toggle status line on/off                               │
  252.    ├────────┼─────────────────────────────────────────────────────────┤
  253.    │ Alt-C  │ Chatting with user                                      │
  254.    ├────────┼─────────────────────────────────────────────────────────┤
  255.    │ Alt-E  │ User data editing                                       │
  256.    ├────────┼─────────────────────────────────────────────────────────┤
  257.    │ Alt-G  │ "Gluck" (makes user think that connection is bad)       │
  258.    ├────────┼─────────────────────────────────────────────────────────┤
  259.    │ Alt-H  │ Forced session termination and hangup                   │
  260.    ├────────┼─────────────────────────────────────────────────────────┤
  261.    │ Alt-I  │ Displaying a textfile to user                           │
  262.    ├────────┼─────────────────────────────────────────────────────────┤
  263.    │ Alt-J  │ DOS shell (without session break)                       │
  264.    ├────────┼─────────────────────────────────────────────────────────┤
  265.    │ Alt-L  │ Lockout (throwing the user away) - terminating the      │
  266.    │        │ current session and making the user disable to reenter  │
  267.    │        │ the BBS until increasing his/her zero access level by   │
  268.    │        │ the SysOp (using user editor)                           │
  269.    ├────────┼─────────────────────────────────────────────────────────┤
  270.    │ Alt-S  │ Change access level                                     │
  271.    ├────────┼─────────────────────────────────────────────────────────┤
  272.    │ Alt-T  │ VIewing list of files tagged by user for download       │
  273.    ├────────┼─────────────────────────────────────────────────────────┤
  274.    │ PageUp │ ManualSend (tm) - send previously selected in the File  │
  275.    │        │ Manager files to user                                   │
  276.    └────────┴─────────────────────────────────────────────────────────┘
  277.  
  278.  5.3. Colors customizing
  279.  ───────────────────────
  280.  
  281.    Colors are customized  via changing the TORNADO.CTL [Colors] section
  282.  parameters in the apptopriate way. Each parameter sets a color for one
  283.  or several visible screen items. "Blinking" parameter deals with blin-
  284.  king mode.  See comments to the  parameters in the [Colors] section of
  285.  the sample TORNADO.CTL configuration file for more details.
  286.  
  287.  
  288.  6. The Tornado workcycle
  289.  ════════════════════════
  290.  
  291.  6.1. Command line parameters
  292.  ────────────────────────────
  293.  
  294.     -K<filename>    - set configuration filename;
  295.     -C<num>         - set COM-port number to <num> while running  under
  296.                       mailer;
  297.     -B<baud>        - set connection speed to <baud> while running mai-
  298.                       ler;
  299.     -O<filename> [D]- path to and  filename of the overlay  (in case of
  300.                       TORNADO.EXE and  TORNADO.OVR files being in  dif-
  301.                       ferent directories or on different drives);
  302.                       NOTE: only valid for DOS version;
  303.     -H<handle>   [O]- handle of the communication port;
  304.                       NOTE: only valid for OS/2 version;
  305.     -M<command>     - specify command to send to port at Tornado start
  306.     -A<command>  [W]- specify program to launch before Tornado exit
  307.     -U<user_name>   - set name of user entering BBS to <user_name>;
  308.                       NOTE: instead of space (" ") must be used  under-
  309.                       line symbol ("_");
  310.     -L        [O][D]- local work mode;
  311.     -R        [O][D]- do not release timeslices;
  312.     -E<time>        - time <time> until the next event;
  313.     -N<node_number> - set number of node in case of multiline working;
  314.  
  315.  Notes: [D] - valid for DOS version
  316.         [O] - valid for OS/2 version
  317.         [W] - valid for Win95/98/NT version
  318.  
  319.  6.2. Errorlevel codes
  320.  ─────────────────────
  321.  
  322.       0 : Normal termination.
  323.      10 : Work has been stopped at the operator request.
  324.     200 : Open/read error of the TORNADO.RES file.
  325.     201 : Open/read error of the main configuration file (TORNADO.CTL).
  326.     202 : None language descripting file  (*.LNG) found in  the Tornado
  327.           system directory.
  328.     203 : Default access level (set in the tornado.ctl->[NewUsers]->Se-
  329.           curity) not found in the LIMITS.CTL file.
  330.     204 : Opening error of the main menu file  (tornado.ctl->[Miscella-
  331.           neous] -> MainMenu).
  332.     205 : Work directory (tornado.ctl->[System]->Path) not found.
  333.     206 : Modem initialization error.
  334.     207 : Open/read error of the users base file (USERS.TOR).
  335.     208 : Open/read error of the logfile (TORNADO.LOG).
  336.     209 : Open/read error of the overlay (TORNADO.OVR).
  337.     210 : Open/read error of the system messages file (TORNADO.MSG).
  338.     211 : Runtime error. It's desired to inform the author.
  339.     212 : Not enough memory to run the Tornado.
  340.  
  341.  6.3. Flagfiles
  342.  ──────────────
  343.  
  344.    While working the Tornado creates so-called  flagfiles in the direc-
  345.  tory set in the tornado.ctl->[Files&Dirs]->FlagsDir parameter. They're
  346.  composed from preset filename listed below, and the extension equal to
  347.  line  tumber.  For example,  TOR_FILE.001  flagfile means that line #1
  348.  user has uploaded a file.
  349.  
  350.  Flagfiles filenames:
  351.  
  352.  TOR_RUN  - a line with the <extension> number is running;
  353.  TOR_MAIL - user has posted a message to a mail area;
  354.  TOR_FILE - user has uploaded a file to a file area;
  355.  TOR_NCHT - is  the  SysOp available for chat for now (present flagfile
  356.             means chat is disabled).
  357.  
  358.  
  359.  7. Customizing
  360.  ══════════════
  361.  
  362.  7.1. Text color setting codes
  363.  ─────────────────────────────
  364.  
  365.  Color of messages text can be set by using in *.LNG files such commands:
  366.  
  367.  \00 - black;
  368.  \01 - blue;
  369.  \02 - green;
  370.  \03 - cyan;
  371.  \04 - red;
  372.  \05 - magenta;
  373.  \06 - yellow;
  374.  \07 - white;
  375.  \08 - bright black;
  376.  \09 - bright blue;
  377.  \10 - bright green;
  378.  \11 - bright blue;
  379.  \12 - bright red;
  380.  \13 - bright magenta;
  381.  \14 - bright yellow;
  382.  \15 - bright white.
  383.  
  384.  If  to  replace "\" with "%" the command will impact to the background
  385.  color.
  386.  
  387.  "|" symbol means line break.
  388.  
  389.  The  same  commands can be used for color customizing for showing file
  390.  descriptions. They should be placed into the FILES.BBS file.
  391.  
  392.  7.2. Macros
  393.  ───────────
  394.  
  395.  In the text and *.LNG files such macros can be used:
  396.  
  397.  $FILE:<filename> - show .A??-file with <filename> name;
  398.  $EXEC:<filename> - execute the script stored in the <filename> file;
  399.  $PROD - current version of Tornado;
  400.  $USRS - the total amount of the BBS users;
  401.  $NAME - user name;
  402.  $FNAM - user first name;
  403.  $LNAM - user last name;
  404.  $ALAS - user alias;
  405.  $PSWD - user password;
  406.  $DAOB - birthday date;
  407.  $SYSO - SysOp name;
  408.  $BBSN - Board name;
  409.  $NODE - number of the active BBS line;
  410.  $LOCA - user location;
  411.  $ORGZ - organization;
  412.  $HPHN - home phone;
  413.  $BPHN - work phone;
  414.  $ADR1 - net addresses;
  415.  $ADR2 ──┤
  416.  $ADR3 ──┘
  417.  $CMNT - comment;
  418.  $DATE - current date;
  419.  $TIME - current time;
  420.  $SECR - access level;
  421.  $FLGS - flags;
  422.  $FARE - current filearea name;
  423.  $FNUM - current filearea number;
  424.  $FGRP - current filegroup name;
  425.  $FGRN - current filegroup number;
  426.  $MARE - current message area name;
  427.  $MNUM - current message area number;
  428.  $MGRP - current message group name;
  429.  $MGRN - current message area number;
  430.  $ULDS - amount of files uploaded by the user;
  431.  $DNLS - amount of files downloaded by the user;
  432.  $ULKB - total size of files uploaded by the user;
  433.  $DLKB - total size of files downloaded by the user;
  434.  $DLTK - total size of user's day download;
  435.  $MSGP - amount of messages written by user;
  436.  $LFKB - the download limit rest (in kilobytes)
  437.  $TTME - time for the user per day according to his/her access level;
  438.  $ETME - time remaining;
  439.  $OTME - time spent while the current session;
  440.  $CALN - number of call to the BBS;
  441.  $FDTE - the first call date;
  442.  $LDTE - the last call date;
  443.  $LTME - last call time;
  444.  $PROT - name of protocol used for transferring files;
  445.  $LINS - number of lines on screen (taken from user settings);
  446.  $LANG - name of current language of messages;
  447.  $EMUL - name of emulated terminal ("ANSI", "AVATAR", or "TTY");
  448.  $MORE - pause after each screen (yes/no);
  449.  $HKEY - using hotkeys (yes/no);
  450.  $SELK - size of files selected by user;
  451.  $SELN - number of files selected by user;
  452.  $LIMK - daily size limit on downloading files
  453.  $ETTM - prognosed time of transferring all the files;
  454.  $BAUD - connection speed.
  455.  
  456.  If to place some quantity of the "X" symbol after the macro, the macro
  457.  value will be adjusted to  the length of <"X" symbols quantity> plus 5
  458.  symbols of the macro itself. This is useful for  placing macro's value
  459.  to frames and tables.
  460.  
  461.  7.3. Setting time intervals
  462.  ───────────────────────────
  463.  
  464.  Some  parameters  of the configuration files use time intervals. These
  465.  intervals  may  contain one or more time intervals separated by comma.
  466.  The simplest example is
  467.  
  468.                             23:00-05:30
  469.  
  470.  that means that the interval covers time  from 11:00 p.m. to 5:30 a.m.
  471.  daily.  One  can  specify days of week for the command to be executed,
  472.  for  example:
  473.                         1.10:00-5.16:00
  474.  
  475.  that  means that the interval covers time from 10:00 a.m. to 4:00 p.m.
  476.  for  5  days  per week - from Monday to Friday. A number followed by a
  477.  period,  that  appears  before time interval, means day of week number
  478.  (where  Sunday  is  0,  Monday  is  1,  Tuesday  is  2, etc.). Complex
  479.  intervals are allowed, like one below:
  480.  
  481.                     1.22:00-5.06:00,6.00:00-7.24:00
  482.  
  483.  that  means  10  p.m.  to  6:00  a.m.  for  Monday to Friday and whole
  484.  Satruday and Sunday; or
  485.  
  486.       1.09:00-1.17:00,2.09:00-2.15:00,3.12:00-5.18:00,6.21:00-6.23:30
  487.  
  488.  standing for: 9:00 a.m. to 5:00 p.m. on Monday, 9:00 a.m. to 3:00 p.m.
  489.  on  Tuesday, 12:00 a.m. to 6:00 p.m. from  Wednesday  to  Friday, 9:00
  490.  p.m. to 11:30 p.m. on Saturday, and no intervals on Sunday.
  491.  
  492.  7.4. .A?? filenames
  493.  ───────────────────
  494.  
  495.  Some  parameters  of configuration files require file names to be shown
  496.  as arguments. There are several ways of presenting file names:
  497.  
  498.  1. Set full path to, name and extension of the file.
  499.  2. Omit extension. In this case Tornado will complete  the  name  given
  500.     with the terminal emulation protocol dependent extension (.ANS,.AVT,
  501.     and .ASC for ANSI, Avatar and TTY terminals respectively).
  502.  3. Skip path. Is this case Tornado assumes that the according .LNG-file
  503.     contains list file of name set in the [Files] -> TxtFiles parameter.
  504.  
  505.  A  special code (ASCII #1) can be used in .A??-files. It makes Tornado
  506.  wait for pressing Enter.
  507.  
  508.  There exist files with  preset  names  and  .ANS/.ASC/.AVT  extensions
  509.  (depending on whether the terminal supports the corresponding terminal
  510.  emulation protocol) and located in the directory set in current  *.LNG
  511.  file ( [Files]->TxtFiles ) will be displayed in such a way:
  512.  
  513.  WELCOME  - before request for scanning message areas and file areas;
  514.  LOGOFF   - at the end of user  working with the BBS via selecting cor-
  515.             responding menu item;
  516.  LOCKOUT  - at user lockout  (forced by SysOp  termination of user work
  517.             with getting impossible to enter the BBS under the same na-
  518.             me any further). If such a  user tries to enter the BBS af-
  519.             ter having been locked out,  he/she will be shown this file
  520.             once again and the system will hang off;
  521.  NEWUSER  - after  positive answer to the  question  about beginning of
  522.             registration of the new user;
  523.  REGEND   - just after ending of the new user registration;
  524.  BADUSER  - at entering of the user listed in the bad users list;
  525.  GOODUSR  - at entering of the user listed in the good users list;
  526.  TOOSLOW  - at entering of the user connected at the speed less than
  527.             minimal one (set in tornado.ctl->[Modem]->Min_Speed);
  528.  NOTAVAL  - at request for SysOp in ádmissible time;
  529.  LOGTIME  - at user try to login in case the login time mismatches  to
  530.             that of user's access level (limits.ctl->[Limit]->Login_Ti-
  531.             me);
  532.  START    - just before displaying main menu.
  533.  
  534.  To  make  several  files  be  shown in the cases above, place into the
  535.  directory,  mentioned in <Current_Lng_File.LNG>->[Files]->TxtFiles pa-
  536.  rameter, files with filenames like LOGOFF.ANS, LOGOFF1.ANS, ... , LOG-
  537.  OFF9.ANS. They will be displayed in turn.
  538.  
  539.  7.5. Access levels and user semaphores
  540.  ──────────────────────────────────────
  541.  
  542.    To separate privileges of different users, there exist so-called ac-
  543.  cess levels  (or security levels).  They define a possibility for user
  544.  to make an action. If user's access level is less than the one  needed
  545.  for the action to be done, the user won't do this action anyway.
  546.  
  547.    Actions to be  allowed/forbidden are  described in the configuration
  548.  file. Access levels and corresponding limits are set in the LIMITS.CTL
  549.  configuration  file. The default access level assigned to a user while
  550.  registration is set by the tornado.ctl->[NewUsers]->Security parameter.
  551.  
  552.    If,  suppose, it's  necessary  to allow/forbid  some  actions to the
  553.  users of the same access level (and therefore of the same limits), and
  554.  it's undesirable  to change limits, one should use flagd which provide
  555.  very comfortable and flexy tool of privileges customizing.  Flag is an
  556.  uppercase letter  (just flag) or set  of those  uni-letter flags. User
  557.  info contains specific for  the user  flag string.  If it contains all
  558.  the necessary flags to do an action, this action is allowed, otherwise
  559.  it isn't.
  560.  
  561.  Examples:
  562.  
  563.  User flag string │ Needed flags │ Action status
  564.  ─────────────────┼──────────────┼──────────────
  565.  ABCD             │ ABD          │ Enabled
  566.  ABCD             │ ACF          │ Disabled
  567.  ABCDEFGHIJKLMNOP │ AJO          │ Enabled
  568.  A                │ ABC          │ Disabled
  569.  
  570.    The default registration  flags are set in the TORNADO.CTL->NewUsers
  571.  ->Security parameter.  They must be separated  form access level value
  572.  by a space (" "). This is true for all the parameters dealing with ac-
  573.  cess level (e.g., FILEAREA.CTL->List_Security; MSGAREA.CTL->Read_Secu-
  574.  rity; etc.).
  575.  
  576.  7.6. Messages language customizing
  577.  ──────────────────────────────────
  578.  
  579.    All the Tornado messages to user are customizable. All the  messages
  580.  and paths to text and menu files are set using language .LNG-files lo-
  581.  cated  in the Tornado system directory. XLAT-tables to convert Tornado
  582.  messages to the desired codepage are also stored there.
  583.    At the very beginning of a  user registration, the  user is asked to
  584.  choose  a language among available  to work with the BBS. This menu is
  585.  composed of titles described in the .LNG-files. If there  is  just one
  586.  .LNG-file, it's automatically assumed as default.
  587.  
  588.    Each .LNG-file contains 3 sections:
  589.  
  590.  [Main]
  591.  
  592.  Name
  593.    Title of messages language;
  594.  
  595.  Ask_XLAT
  596.    Whether to ask user about the desired XLAT-table;
  597.  
  598.  Raw_XLAT_Name
  599.    Name of XLAT-table to disable converting (useful if some "empty" co-
  600.    depage is needed).
  601.  
  602.  [Files]
  603.  
  604.  TxtFiles
  605.    Path to the text files (.ASC/.ANS/.AVT) for the language.
  606.  
  607.  Menus
  608.    Path to the menu files for the language.
  609.  
  610.  News
  611.    Path to the news file for the language (see Chapter 7.13).
  612.  
  613.  [Language_Section]
  614.  
  615.    Section containing  messages bodies; see  sample .LNG-files supplied
  616.    for more detailed info. I, however, strongly suggest to pay particu-
  617.    lar attention to the following variables: Msg_Keys, YesNo_Keys, Yes-
  618.    NoQuit_Keys, PostKeys, FArea_Menu,  which  contain the hotkeys list.
  619.    Help info on these hotkeys is  stored in MsgString, Yes_No, Post_Me-
  620.    nu, Yes_No_Quit, FAreaLine variables respectively.
  621.  
  622.  [XLAT]
  623.  
  624.    Define XLAT-tables to  convert messages  to different codepages. Can
  625.    be as many sections  as needed. If [Main]->Ask_XLAT parameter is set
  626.    to Yes, then just  after a  user have chosen a language, he/she will
  627.    be shown  menu to  choose the  desired XLAT-table. Each section con-
  628.    tains 3 parameters:
  629.  
  630.  XLAT_Name
  631.    XLAT-table name.
  632.  
  633.  TransTable_In
  634.    String containing symbols to be replaced with the corresponding ones
  635.    of the TransTable_Out parameter.
  636.  
  637.  TransTable_Out
  638.    String containing  symbols to  replace the  corresponding symbols of
  639.    the TransTable_In parameter.
  640.  
  641.  Example:
  642.  
  643.  TransTable_In    "abcd"
  644.  TransTable_Out   "efgh"
  645.  
  646.  All the displayed messages will have "a", "b", "c" and "d" symbols re-
  647.  placed with "e", "f", "g" and "h" symbols respectively.
  648.  
  649.  
  650.  7.7. User menu customizing
  651.  ──────────────────────────
  652.  
  653.    Menus are an important part helping a user to choose an action to do.
  654.  Like all the other Tornado configuration files, menu files are in text
  655.  form. They must be located in the directory specified by the [Files]->
  656.  Menus of the  appropriate  language file (they have .LNG extension and
  657.  are located in Tornado  system directory). Menu files have .MNU exten-
  658.  sion as default and contain 2 sections:
  659.  
  660.  [Header]      - contains global  settings and is composed of 3 parame-
  661.                  ters:
  662.  
  663.  DisplayFile   - file to display (.ASC/.ANS/.AVT) depending on the cho-
  664.                  sen terminal emulation. If none is set, a list of  the
  665.                  menu items will be shown.
  666.  
  667.  Prompt        - a string to be  shown  while  waiting for the  user to
  668.                  choose; may contain macros and color sequences.
  669.  
  670.  WriteHotKeys  - "Yes" or "No"; defines whether  to  show  hotkeys list
  671.                  after having shown all the menu items and before disp-
  672.                  laying the string defined by the "Prompt" parameter.
  673.  
  674.  Arrows_Setup  - Whether to use cursor keys or rather hotkeys to choose
  675.                  menu item; if the parameter is specified, cursor  keys
  676.                  are assumed; syntax is as follows:
  677.  
  678.                  Arrows_Setup Cols:Rows Y:X HighLightColor
  679.  
  680.                  where
  681.                  Cols and Rows : Number of columns and rows  (respecti-
  682.                                  vely) of the menu;
  683.                  Y ¿ X         : Coordinates  of  the  menu upper  left
  684.                                  corner
  685.                  Color         : Color of the backhround for the  high-
  686.                                  lighted (current) menu item; specified
  687.                                  as the color name.
  688.  
  689.  and
  690.  
  691.  [Menu]        - A  set  of  strings  defining each choose variant. For
  692.                  example:
  693.  
  694.  Gosub_Menu+   "files"   ABC    0    "\14(\15F\14) \02öá⌐½δ  |"    F
  695.  ^^^^^^^^^^^(1) ^^^^^(2) ^^^(3) ^(4) ^^^^^^^^^^^^^^^^^^^^^^^^^^(5) ^(6)
  696.  
  697.  where
  698.  (1)   The action to be done on choosing this  menu  item. "Gosub_Menu"
  699.        in the example means going to another menu file;
  700.  
  701.        NOTE: a plus sign ending the action identifier means this action
  702.              is the "autoexec" one (i.e. it'll be done just after disp-
  703.              laying menu);
  704.  
  705.  (2)   Optional  data  (additional info needed to implement the action;
  706.        in the example they contain menu file name to be gone to in case
  707.        of choosing this menu item);
  708.  
  709.  (3)   Flags authorizing access to this menu item;
  710.  
  711.  (4)   Minimal  access  level  (zero in the example means this item  is
  712.        accessible foe any user of access level greater than zero);
  713.  
  714.  (5)   Text  to  be  displayed for this item; the example text contains
  715.        color sequences; see Chapter 7 for more info about them;
  716.  
  717.  (6)   Hotkey to activate item (in the example - the "F" key).
  718.  
  719.  Below is the actions list with brief description and optional data:
  720.  
  721.  ──────────────────────────────────────────────────────────────────────
  722.  Action        : Display_Text
  723.  Effect        : Just display text metioned as optional data
  724.  Optional data : Text to be displayed
  725.  ──────────────────────────────────────────────────────────────────────
  726.  Action        : Gosub_Menu
  727.  Effect        : Going to another menu
  728.  Optional data : Menu file name
  729.  ──────────────────────────────────────────────────────────────────────
  730.  Action        : DownLoad
  731.  Effect        : File(s) download. If filename is specified as optional
  732.                  data,  this  file will be downloaded; otherwise a user
  733.                  will be prompted to tag file in the current file area.
  734.  Optional data : Filename to download / None
  735.  ──────────────────────────────────────────────────────────────────────
  736.  Action        : UpLoad
  737.  Effect        : File upload to the directory specified in the optional
  738.                  data,  or  to  the  directory  specified by the ULPath
  739.                  parameter of the current file area description.
  740.  Optional data : Directory for upload / None
  741.  ──────────────────────────────────────────────────────────────────────
  742.  Action        : UpLoad_Priv
  743.  Effect        : Special action  for  the Private uploads (tm) feature.
  744.                  A  user  is asked for user name the files will be sent
  745.                  to,  then  these  files will be uploaded and .LST-file
  746.                  will be created. After the adressee having entered the
  747.                  BBS he/she will be proposed to download these files.
  748.  Optional data : Receiver user name / None
  749.  ──────────────────────────────────────────────────────────────────────
  750.  Action        : Return
  751.  Effect        : Return to the previous menu
  752.  Optional data : None
  753.  ──────────────────────────────────────────────────────────────────────
  754.  Action        : LogOFF
  755.  Effect        : Session ending
  756.  Optional data : None
  757.  ──────────────────────────────────────────────────────────────────────
  758.  Action        : Change_FGroup
  759.  Effect        : Change file group of the number specified in the opti-
  760.                  onal data or chosen from a list if none specified;
  761.  Optional data : File group number / None
  762.  ──────────────────────────────────────────────────────────────────────
  763.  Action        : Change_FArea
  764.  Effect        : Change  file  area. If its  number is specified in the
  765.                  optional  data,  this  area  becomes  the current one,
  766.                  otherwise  user is prompted to choose an area from the
  767.                  list.
  768.  Optional data : File area number / None
  769.  ──────────────────────────────────────────────────────────────────────
  770.  Action        : User_Info
  771.  Effect        : Information about user whose name is specified in  the
  772.                  optional data.
  773.  Optional data : User name
  774.  ──────────────────────────────────────────────────────────────────────
  775.  Action        : Msg_Post
  776.  Effect        : Compose  a  message  to  the  mail  area  with  number
  777.                  specified  in the optional data, or to the current one
  778.                  if none number specified.
  779.                  optional data.
  780.  Optional data : Mail area
  781.  ──────────────────────────────────────────────────────────────────────
  782.  Action        : FileList
  783.  Effect        : Shows filelist  in  the current file area or file area
  784.                  with the number specified.
  785.                  optional data.
  786.  Optional data : File area number / None
  787.  ──────────────────────────────────────────────────────────────────────
  788.  Action        : Show_Raw_Dir
  789.  Effect        : Lists files in file area with number mentioned in  op-
  790.                  tional data (or  in  current  file  area, if no number
  791.                  specified) without using files.bbs  content.  Same  as
  792.                  MSDOS "DIR" command.
  793.  Optional data : File area number / None
  794.  ──────────────────────────────────────────────────────────────────────
  795.  Action        : Display_File
  796.  Effect        : Display a file with filename specified in the optional
  797.                  data  and  path  specified  by the [Files] -> TxtFiles
  798.                  variable of the current .LNG-file.
  799.  Optional data : Filename
  800.  ──────────────────────────────────────────────────────────────────────
  801.  Action        : Page_SysOp
  802.  Effect        : Call  sysop  for  chatting  on  topic specified it the
  803.                  optional  data.  User  will be asked for topic if none
  804.                  specified.
  805.  Optional data : Chat topic
  806.  ──────────────────────────────────────────────────────────────────────
  807.  Action        : Shell
  808.  Effect        : Entering built-in DoorWay
  809.  Optional data : None
  810.  ──────────────────────────────────────────────────────────────────────
  811.  Action        : Change_MGroup
  812.  Effect        : Change message group to the one with number  specified
  813.                  in  the  optional data or chosen from the list if none
  814.                  number specified.
  815.  Optional data : Message group number/ None
  816.  ──────────────────────────────────────────────────────────────────────
  817.  Action        : Change_Msg_Area
  818.  Effect        : Change message area to the one with  number  specified
  819.                  in  the  optional data or chosen from the list if none
  820.                  number specified.
  821.  Optional data : Message area number.
  822.  ──────────────────────────────────────────────────────────────────────
  823.  Action        : Msg_Read
  824.  Effect        : Reading messages in the  message area with number spe-
  825.                  cified in the  optional data or in the  current one if
  826.                  none number specified.
  827.  Optional data : Message area number
  828.  ──────────────────────────────────────────────────────────────────────
  829.  Action        : Msg_List
  830.  Effect        : Listing messages in the message  area with number spe-
  831.                  cified in the  optional data or in  the current one if
  832.                  none number specified.
  833.  Optional data : Message area number
  834.  ──────────────────────────────────────────────────────────────────────
  835.  Action        : System_Info
  836.  Effect        : Show system information
  837.  Optional data : None
  838.  ──────────────────────────────────────────────────────────────────────
  839.  Action        : Goto_Menu
  840.  Effect        : Going to menu  specified in the optional data.  Unlike
  841.                  GoSub_Menu, return to the previous menu is disable.
  842.  Optional data : Menu file name.
  843.  ──────────────────────────────────────────────────────────────────────
  844.  Action        : Exec
  845.  Effect        : Launch a program
  846.  Optional data : Program/command name
  847.                  NOTE: Such macroses may be used:
  848.                        *P - Number of the used communication port;
  849.                        *B - Connection speed;
  850.                        *H - COM-port handle (for OS/2 version only)
  851.                        *G - Using ANSI-graphics (1 - yes, 0 - no)
  852.                        *F - The user first name;
  853.                        *L - The user last name;
  854.                        *T - Time remaining for the user;
  855.                        *N - Line number
  856.                  For example:
  857.                        door.exe /c*P /b*B
  858.                  will be expanded into
  859.                        door.exe /c1 /b2400
  860.                  if COM1 is used and connection speed is 2400 bps
  861.  ──────────────────────────────────────────────────────────────────────
  862.  Action        : Scan_NewFiles
  863.  Effect        : Scanning all file areas for new files since  the  last
  864.                  user session.
  865.  Optional data : None
  866.  ──────────────────────────────────────────────────────────────────────
  867.  Action        : Scan_PrivMail
  868.  Effect        : Scanning all the message areas for unread messages  to
  869.                  the user.
  870.  Optional data : None
  871.  ──────────────────────────────────────────────────────────────────────
  872.  Action        : Send_Msg
  873.  Effect        : Send  a  message to a user connected via another line
  874.                  while running in multiline mode
  875.  Optional data : None
  876.  ──────────────────────────────────────────────────────────────────────
  877.  Action        : Set_Msg_Off
  878.  Effect        : Disables  getting  messages  from users on other lines
  879.                  while running in multiline mode
  880.  Optional data : None
  881.  ──────────────────────────────────────────────────────────────────────
  882.  Action        : Set_Msg_On
  883.  Effect        : Opposite to Set_Msg_Off
  884.  Optional data : None
  885.  ──────────────────────────────────────────────────────────────────────
  886.  Action        : Line_List
  887.  Effect        : List of users on others BBS lines
  888.  Optional data : None
  889.  ──────────────────────────────────────────────────────────────────────
  890.  Action        : Change_Param
  891.  Effect        : Changes  user parameter, specified in optional data by
  892.                  one of such letters:
  893.  
  894.                  A - location;
  895.                  B - work/education place;
  896.                  C - network addressess;
  897.                  D - password;
  898.                  E - home phone;
  899.                  F - work/modem phone;
  900.                  G - date of birth;
  901.                  H - display lines;
  902.                  I - messages language;
  903.                  J - transfer protocol;
  904.                  K - using ANSI-sequences;
  905.                  L - pause after each screen;
  906.                  M - using of hotkeys;
  907.                  N - using of "framed" input fields;
  908.                  O - alias;
  909.                  P - using fullscreen message editor.
  910.  
  911.  Optional data : Parameter letter.
  912.  ──────────────────────────────────────────────────────────────────────
  913.  Action        : ArcView
  914.  Effect        : Viewing an archive  file from the current file area or
  915.                  the specified archive file.
  916.  Optional data : Path to and name of the archive file/
  917.  ──────────────────────────────────────────────────────────────────────
  918.  Action        : Re_Login
  919.  Effect        : Re-enter the BBS using  another  username without dis-
  920.                  connect.
  921.  Optional data : None
  922.  ──────────────────────────────────────────────────────────────────────
  923.  Action        : Todays_Callers
  924.  Effect        : Displays list of today callers.
  925.  Optional data : None
  926.  ──────────────────────────────────────────────────────────────────────
  927.  Action        : News
  928.  Effect        : Viewing news.
  929.  Optional data : None
  930.  ──────────────────────────────────────────────────────────────────────
  931.  Action        : Conference
  932.  Effect        : Enter the Realtime  Conference while running in multi-
  933.                  line mode.
  934.  Optional data : None
  935.  ──────────────────────────────────────────────────────────────────────
  936.  Action        : Next_FileArea
  937.  Effect        : Quick going to the next file area.
  938.  Optional data : None
  939.  ──────────────────────────────────────────────────────────────────────
  940.  Action        : Prev_FileArea
  941.  Effect        : Quick going to the previous file area.
  942.  Optional data : None
  943.  ──────────────────────────────────────────────────────────────────────
  944.  Action        : Next_MsgArea
  945.  Effect        : Quick going to the next message area.
  946.  Optional data : None
  947.  ──────────────────────────────────────────────────────────────────────
  948.  Action        : Prev_MsgArea
  949.  Effect        : Quick going to the previous message area.
  950.  Optional data : None
  951.  ──────────────────────────────────────────────────────────────────────
  952.  Action        : Next_FileGroup
  953.  Effect        : Quick going to the next file group.
  954.  Optional data : None
  955.  ──────────────────────────────────────────────────────────────────────
  956.  Action        : Prev_FileGroup
  957.  Effect        : Quick going to the previous file group.
  958.  Optional data : None
  959.  ──────────────────────────────────────────────────────────────────────
  960.  Action        : Next_MsgGroup
  961.  Effect        : Quick going to the next message group.
  962.  Optional data : None
  963.  ──────────────────────────────────────────────────────────────────────
  964.  Action        : Prev_MsgGroup
  965.  Effect        : Quick going to the previous message group.
  966.  Optional data : None
  967.  ──────────────────────────────────────────────────────────────────────
  968.  Action        : Exec_Script
  969.  Effect        : Launch script file (see Chapter 8 for detailed  infor-
  970.                  mation on the Tornado built-in script language)
  971.  Optional data : Script file name. If no path given, the file is assum-
  972.                  ed to be located in the textfiles directory  specified
  973.                  in the corresponding .LNG-file. If extension is omitt-
  974.                  ed, filename is completed with the default .TRS exten-
  975.                  sion.
  976.  ──────────────────────────────────────────────────────────────────────
  977.  Action        : Exec_Rexx
  978.  Effect        : Launch REXX script file (for OS/2 version only)
  979.  Optional data : Script file name. If no path given, the file is assum-
  980.                  ed to be located in the textfiles directory  specified
  981.                  in the corresponding .LNG-file. If extension is omitt-
  982.                  ed, filename is completed with the default .TRX exten-
  983.                  sion.
  984.  ──────────────────────────────────────────────────────────────────────
  985.  Action        : Select_QWK
  986.  Effect        : Select active mail areas to scan and pack  messages in
  987.                  QWK-format.
  988.  Optional data : None
  989.  ──────────────────────────────────────────────────────────────────────
  990.  Action        : DownLoad_QWK
  991.  Effect        : Searching, packing  and  sending QWK-packet  with  new
  992.                  messages to the user.
  993.  Optional data : None
  994.  ──────────────────────────────────────────────────────────────────────
  995.  Action        : UpLoad_QWK
  996.  Effect        : Receiving a REP-packet and unpacking it to the corres-
  997.                  ponding mail areas.
  998.  Optional data : None
  999.  ──────────────────────────────────────────────────────────────────────
  1000.  
  1001.  7.8. File transfer protocols configuration
  1002.  ──────────────────────────────────────────
  1003.  
  1004.  Protocol   configuration  filename  for  both  external  and  internal
  1005.  protocols  is  stored  in the TORNADO.CTL's [Files&Dirs]_>Protocol_CTL
  1006.  variable. This file contains two sections:
  1007.  
  1008.  [Internal]
  1009.  
  1010.  In this section internal protocols available to BBS users are mention-
  1011.  ed.  Seven  preset parameters define availability of the corresponding
  1012.  protocols.  They  can  only  contain  "Yes"  or "No" statements, which
  1013.  enable   or   disable   the   protocol,   respectively.  The  protocol
  1014.  configuration  file  can  contain  no  more  than  one  section  named
  1015.  "[Internal]".
  1016.  
  1017.  [External]
  1018.  
  1019.  These  section (may be more than one) describe external protocols. One
  1020.  can  describe  several  protocols.  For  further  information  on  the
  1021.  settings please refer to the sample protocol configuration file.
  1022.  
  1023.  
  1024.  7.9. Running the Tornado under mailer
  1025.  ─────────────────────────────────────
  1026.  
  1027.    As you may already have seen, run without  parameters the Tornado is
  1028.  switched to auto mode.  But it's not  comfortable if you're using mai-
  1029.  lers which are used in  different  networks like FIDONet. To eliminate
  1030.  this unconvenience,  there  exist a way  to run the  Tornado under the
  1031.  mailer. The explanation below assumes you're using T-Mail, but even if
  1032.  you prefer  another one,  all is done in  the similar way. Because  of
  1033.  some nuances in implementation of operating systems Tornado is design-
  1034.  ed for, the procedure may vary.
  1035.  
  1036.  
  1037.  7.9.1. Tornado/DOS (DOS version)
  1038.  ────────────────────────────────
  1039.  
  1040.  1. Put
  1041.  -----
  1042.  Process BBS exebbs.bat *P *B *T *H
  1043.  -----
  1044.  line into the t-mail.ctl file. This line  means that at request to the
  1045.  BBS will be  launched  exebbs.bat  file with *P (port), *B (connection
  1046.  speed), *T (line number), *H (time to  the nearest event) given as pa-
  1047.  rameters.
  1048.  
  1049.  2. The exebbs.bat must contain the following lines:
  1050.  -----
  1051.  cd <path_to_the_Tornado>
  1052.  tornado exe -c%1 -b%2 -n%3 -e%4
  1053.  -----
  1054.  Given a -B or -C parameter,  the Tornado  assumes itself running under
  1055.  mailer and the  connect already  established.  (Refer to Chapter 5 for
  1056.  more info about the Tornado command-line parameters.)
  1057.  
  1058.  
  1059.  7.9.2. Tornado/2 (OS/2 version)
  1060.  ───────────────────────────────
  1061.  
  1062.  Refer to section 7.9.1. with replacing all the .BAT batch files exten-
  1063.  sions to .CMD, as it's assumed for OS/2 batch files.
  1064.  
  1065.  
  1066.  7.9.3. Tornado/W32 (Win95/98/NT version)
  1067.  ────────────────────────────────────────
  1068.  
  1069.  There are two ways of launching  Tornado/W32 under  mailer. Choose the
  1070.  one you like better.
  1071.  
  1072.  WAY 1
  1073.  ─────
  1074.  
  1075.  1. Since Windows  automatically drops DTR  flag at port closing, modem
  1076.  has to be forced to keep connection  anyway. In order to do this, such
  1077.  answer string should be specified:
  1078.  -----
  1079.  Modem_Answer AT&D1A|
  1080.  -----
  1081.  The &D1 command of AT-compatible modems tells device to switch to com-
  1082.  mand mode rather than break connection at DTR flag drop.
  1083.  
  1084.  2. Use such Tornado start command string:
  1085.  -----
  1086.  Process BBS   !start /w C:\TORNADO\tor32.exe -b*B -c*P -e*H -mAT&D2O
  1087.  -----
  1088.  This starts  Tornado, making the mailer task wait for Tornado end with
  1089.  further activation of the mailer task and continuing normal work.
  1090.  
  1091.  WAY 2
  1092.  ─────
  1093.  
  1094.  1. Create .BAT-file to start mailer (below is example for T-Mail.NT):
  1095.  
  1096.  === T-MAIL.BAT ===
  1097.  cd \t-mail
  1098.  t-mailnt.exe
  1099.  if errorlevel 99 goto bbs
  1100.  goto end
  1101.  :bbs
  1102.  cd \tornado
  1103.  tor32 -c2 -b14400 -aT-MAIL.BAT -mAT&D2O
  1104.  :end
  1105.  ==================
  1106.  
  1107.  2. Tell mailer to generate errorlevel 99 and  exit at BBS user logging
  1108.  in. In our case, such string must be put into the t-mail.ctl file:
  1109.  -----
  1110.  Process BBS Exit 99
  1111.  -----
  1112.  
  1113.  3. Force modem to keep connection at DTR drop:
  1114.  -----
  1115.  Modem_Answer AT&D1A|
  1116.  -----
  1117.  
  1118.  How does it all work? Well, as user presses the Esc-Esc key combinati-
  1119.  on, the  mailer  exits with  errorlevel 99, and the  batch file starts
  1120.  Tornado/W32 thus finishing its work. Tornado, in turn, sends at start,
  1121.  a AT&D2O  command  into COM-port (using -M parameter) to switch  modem
  1122.  back from command  mode to  online mode. As the  Tornado exits, it re-
  1123.  starts the T-MAIL.BAT in order to re-launch the mailer.
  1124.  
  1125.  
  1126.  7.10. Some notes about multiline mode
  1127.  ─────────────────────────────────────
  1128.  
  1129.     If You are familiar to features of multiline work of the Sf-Mail or
  1130.  T-Mail mailers, you shouldn't get confused with the Tornado  multiline
  1131.  mode. The Tornado uses just one configuration file for all the  lines.
  1132.  It's obvious, however, that at least  communication  ports  specifica-
  1133.  tions must differ depending on line(s), i.e. each  line  must  possess
  1134.  its own port. For this to be done, for ALL the *.CTL files such syntax
  1135.  is assumed:
  1136.  ----------------
  1137.    {N,N1,N2,...,Nx} Parameter Value
  1138.  ----------------
  1139.    where N,N1,N2,...,Nx - lines numbers,
  1140.          Parameter      - configuration parameter set to <Value>
  1141.  
  1142.  for example
  1143.  ----------------
  1144.    [System]
  1145.    {1} BBSName "Pulse BBS line 1"
  1146.    {2} BBSName "Pulse BBS line 2"
  1147.  
  1148.    [Modem]
  1149.    {1} Port 1
  1150.    {2} Port 2
  1151.   ---------------
  1152.  Parameters  without the "{N}" modifier  are considered  as similar for
  1153.  all the lines. So  all seems to  be quite  simple. You are just to set
  1154.  parameters which must  differ depending on line(s) and to run the Tor-
  1155.  nado in several  windows (depending on amount of lines) under any mul-
  1156.  titasking  environment  with  command  line parameter -N<node_number>,
  1157.  where <node_number> is a number of the line to be used.
  1158.  
  1159.  7.11. File areas and message areas
  1160.  ──────────────────────────────────
  1161.  
  1162.     File areas and message areas are to  separate  various  information
  1163.  available to the BBS users. Names of configuration files of file areas
  1164.  and message areas are set in the TORNADO.CTL configuration file:
  1165.  
  1166.     [Files&Dirs] -> FileAreas_File       - for file areas
  1167.     [Files&Dirs] -> MsgAreas_File        - for message areas
  1168.  
  1169.  The  default  are  FILEAREA.CTL and MSGAREA.CTL files respectively. The
  1170.  Tornado  package  includes  sample configuration files with the default
  1171.  filenames. Refer to them for more detailed information on parameters.
  1172.  
  1173.  7.12. File area and message area groups
  1174.  ───────────────────────────────────────
  1175.  
  1176.     These are, in opposite to paragraph 7.11., to joining file areas or
  1177.  message areas using some attributes. Names of configuration files  are
  1178.  set in the TORNADO.CTL configuration file:
  1179.  
  1180.     [Files&Dirs] -> FileGroups_File       - for file areas
  1181.     [Files&Dirs] -> MsgGroups_File        - for message areas
  1182.  
  1183.  Refer to the sample files for more detailed information on parameters.
  1184.  
  1185.  7.13. Newsservice
  1186.  ─────────────────
  1187.  
  1188.    User is shown news each time he/she enters BBS, after him/her having
  1189.  been  asked about searching for new files and personal mail. Depending
  1190.  on the tornado.ctl->[Miscellaneous]->ShowNews variable value, the user
  1191.  will be  shown all (the  variable set to Yes), those  added  after the
  1192.  user's last call (Last), or  none (No). Each language  can be provided
  1193.  with their own newsfile  specified by the *.LNG->[Files]->News variab-
  1194.  le. The sample newsfile is shown and commented below:
  1195.  
  1196.  = NEWS.TXT ===============
  1197.  13-10-97 10:25  <────────────────┐
  1198.                                   │
  1199.  The news  <────────────────────┐ │
  1200.     body ...                    │ │
  1201.                                 │ │
  1202.  /***/     <──────────────────┐ │ │
  1203.  14-10-97                     │ │ │
  1204.                               │ │ │
  1205.  The                          │ │ │
  1206.   other                       │ │ │
  1207.    news                       │ │ │
  1208.     body ...                  │ │ │
  1209.                               │ │ │
  1210.  ... etc.                     │ │ │
  1211.  ==========================   3 2 1
  1212.  
  1213.  where
  1214.  
  1215.  1 - The bulletin creation date in format  defined in the tornado.ctl->
  1216.      [System]->DateMask. Time of the bulletin creating can be optional-
  1217.      ly specified to enable.
  1218.  2 - The body of the bulletin.
  1219.  3 - The bulletins separator.
  1220.  
  1221.  8. Built-in script language
  1222.  ═══════════════════════════
  1223.  
  1224.    Tornado now contains built-in  script language to implement some ad-
  1225.  ditional features. The  language is lexically  based on  sections, va-
  1226.  riables, statements  and labels. Comments are  also available and must
  1227.  be begun with double slash ("//").
  1228.  
  1229.    Scripts supply parameters, which can be specified in such way:
  1230.                  D:\PATH\script.trs param1 param2 param3
  1231.  The parameters are accessed to using GetArg statement
  1232.  
  1233.  8.1. Sections
  1234.  ─────────────
  1235.  
  1236.    Each script must  be a set of sections. There are two section types:
  1237.  variables section to  declare variables used in the script, and state-
  1238.  ments section containing  just the  statement part  of the script. The
  1239.  variables section is optional (is only needed if one uses variables in
  1240.  the script), while the statements section is obligatory for the script
  1241.  to run.
  1242.  
  1243.    The sections begin with the  preset keyword (see below) and end with
  1244.  End keyword. Preset keyword to begin a section must be one of the fol-
  1245.  lowing:
  1246.  
  1247.     Variables - variables declaring section
  1248.     Program   - script statements
  1249.     Procedure - procedure description section (see below)
  1250.  
  1251.  8.2. Variables
  1252.  ──────────────
  1253.  
  1254.    Rational and  meaningful  use of  variables  dramatically  increases
  1255.  programming efficiency. To introduce  variables into  the script, they
  1256.  must be described in the variables section in such a way:
  1257.  
  1258.  ---------------------------------------
  1259.  Variables
  1260.    <variable_name>          : <type>
  1261.    <variable1>, <variable2> : <type>
  1262.    ...
  1263.  End
  1264.  ---------------------------------------
  1265.  
  1266.  The <type> may be one of the following:
  1267.  
  1268.  String  - A string of up to  80 symbols. Any  ASCII-coded  symbols can
  1269.            also be used via #<code_number> format. Plain text and ASCII
  1270.            codes can be mixed, as in the example below:
  1271.            S = #13"String"#10
  1272.  
  1273.  Logical - Either true or false ("True" or "False" keywords respective-
  1274.            ly);
  1275.  
  1276.  Number  - Any integer number between -2147483648 and 2147483647.
  1277.  
  1278.    The variables are assigned a value using "=" operator. "A=10" string
  1279.  means  that to variable named "A" is assigned value of 10. Expressions
  1280.  may be assigned to  variables as well. Expression  assigned to the va-
  1281.  riables of  String type  can be symbolic  strings  put into  quotation
  1282.  marks, e.g. "A simple  symbolic string" as well as "+" operator  which
  1283.  concatenates  strings   and   string  variables.  For  example:  "User
  1284.  name: " + $NAME, where $NAME is a reserved  variable in which username
  1285.  is stored, will be  transformed  into: "User name: Konstantin Klyagin"
  1286.  string, if the  $NAME  variable  contains "Konstantin Klyagin" string.
  1287.  Variables of Number type can accept expressions containing simple ari-
  1288.  thmetic  operations: addition ("+" operator), substraction ("-" opera-
  1289.  tor),  multiplication ("*" operator), division ("/" or ":" operators),
  1290.  power ("^" operator). Variables of  Logical type can  only be assigned
  1291.  values of the preset "True" and "False" range.
  1292.  
  1293.    Arrays of variables are also supported. Below is the  syntax to dec-
  1294.  lare an array:
  1295.  
  1296.   <variable> [, <variable> ...] : <type> Array [<amount_of_elements>]
  1297.  
  1298.  where <type> is one of the standard language types.
  1299.  Array  elements are referred to by their numbers that can be specified
  1300.  both evidently and as result of the mathematical expression to be cal-
  1301.  culated (see examples below).
  1302.  
  1303.  The full syntax is ArrayName#<number_or_expression>
  1304.  for example: Arr#1 or Arr#i*j-5
  1305.  
  1306.    Variables are  divided into internal and user-defined. The first are
  1307.  provided  by  the  Tornado  script  language  interpreter and thus are
  1308.  available  in  any  script without declating in the variables section.
  1309.  The internal variables names are just the same as these of macros (see
  1310.  paragraph 7.2. for the list). All  names  can  be  used  in  assigning
  1311.  statements  without limitations, but those listed below:
  1312.  
  1313.    $NAME  $PROD  $SYSO  $BBSN  $BAUD  $FARE
  1314.    $FGRP  $MARE  $MGRP  $TTME  $FNAM  $LNAM
  1315.    $LFKB  $OTME  $DLTK  $MSGP  $SELK  $SELN
  1316.  
  1317.  These variables are prohibited to be changed from within scripts.
  1318.  
  1319.    Besides  macros-similar, there  exist some  other groups of internal
  1320.  variables. Here they go:
  1321.  
  1322.  System
  1323.  ──────
  1324.  
  1325.    ArgCount       = returns number of parameters of the script
  1326.  
  1327.  Configuration (store some configuration parameters, indeed)
  1328.  ───────────────────────────────────────────────────────────
  1329.  
  1330.    cfgPath        = tornado.ctl->[System]->Path
  1331.    cfgPort        = tornado.ctl->[Modem]->Port
  1332.    cfgLog         = tornado.ctl->[Files&Dirs]->LogFile
  1333.    cfgChatLog     = tornado.ctl->[Files&Dirs]->Chat_Log
  1334.    cfgTRCLog      = tornado.ctl->[Files&Dirs]->TRC_Log
  1335.    cfgTempDir     = tornado.ctl->[Files&Dirs]->TempDir
  1336.    cfgFlagsDir    = tornado.ctl->[Files&Dirs]->FlagsDir
  1337.    cfgDoorDir     = tornado.ctl->[Files&Dirs]->DoorInfoDir
  1338.    cfgLogo        = tornado.ctl->[Files&Dirs]->Logo
  1339.    cfgSaveTag     = tornado.ctl->[Files&Dirs]->Save_Tag_Path
  1340.    cfgPrivUL      = tornado.ctl->[Files&Dirs]->Priv_Uploads_Dir
  1341.    cfgLangDir     = tornado.ctl->[Files&Dirs]->LNG_Path
  1342.    cfgLangTxtPath = ÆÑ¬πΘ¿⌐ Σá⌐½ .lng->[Files]->TxtFiles
  1343.    cfgLangMnuPath = ÆÑ¬πΘ¿⌐ Σá⌐½ .lng->[Files]->Menus
  1344.    cfgLangNews    = ÆÑ¬πΘ¿⌐ Σá⌐½ .lng->[Files]->News
  1345.  
  1346.    [ The below variables store the parameters values  ]
  1347.    [ for the CURRENT file area or message area        ]
  1348.  
  1349.    faDLPath     = filearea.ctl->[FileArea]->DLPath
  1350.    faULPath     = filearea.ctl->[FileArea]->ULPath
  1351.    faFileList   = filearea.ctl->[FileArea]->FileList
  1352.  
  1353.    maAddress    = msgarea.ctl->[MsgArea]->UseAddress
  1354.    maOrigin     = msgarea.ctl->[MsgArea]->Origin
  1355.    maBase       = msgarea.ctl->[MsgArea]->BaseType
  1356.    maPath       = msgarea.ctl->[MsgArea]->BasePath
  1357.    maBoard      = msgarea.ctl->[MsgArea]->BoardNum
  1358.  
  1359.  8.3. Statements
  1360.  ───────────────
  1361.  
  1362.  All the statements can be divided in three groups:
  1363.  
  1364.      - conditional;
  1365.      - command aliasing;
  1366.      - screen input/output;
  1367.      - textfiles parsing;
  1368.      - fileareas commands;
  1369.      - message areas commands;
  1370.      - miscellaneous.
  1371.  
  1372.  All the statements of  the script  must be placed  into the statements
  1373.  sections. Each line  of the script  usually contains one statement. To
  1374.  put  more  than  one  statement in the line, the ";" separator must be
  1375.  used, for example:
  1376.  
  1377.  ---------------------------------------
  1378.  Program
  1379.    S = "test" ; WriteLn (S) ; Exit
  1380.  End
  1381.  ---------------------------------------
  1382.  
  1383.  Below is statements list grouped into three blocks mentioned above.
  1384.  
  1385.  CONDITIONALS
  1386.  ────────────
  1387.  
  1388.  IF
  1389.  
  1390.    Syntax:
  1391.      IF <expression>         IF <expression>
  1392.         <statement1>            <statement1>
  1393.             ...                     ...
  1394.         <statementN>            <statementN>
  1395.      ELSE                    END
  1396.         <Estatement1>
  1397.             ...
  1398.         <EstatementN>
  1399.      END
  1400.  
  1401.  If  the <expression> is  true, then  the <statement1> ... <statementN>
  1402.  block will be processed, otherwise the <Estatement1> ... <Estatement2>
  1403.  block will be activated. The ELSE block can be omitted (see second va-
  1404.  riant of syntax). In both cases the construction must be finished with
  1405.  'End' keyword. <expression> can be  logical  variable (also inverted):
  1406.  'If B' Or 'If Not B' or a result of the comparison operations. Variab-
  1407.  les  of String  type  can be  compared using "=" ("equal  to") or "<>"
  1408.  ("not equal to") operators: 'S = "a"' or 'S <> "a"'. Variables of Num-
  1409.  ber type  can also be  compared using these  operators, and some other
  1410.  operators  are applicable,  such  as ">" ("greater  than"), "<" ("less
  1411.  than") and combined ">=" ("greater  than or equal to") and "<=" ("less
  1412.  than or equal to") operators. All these operators  may be used to con-
  1413.  struct  rather complicated  expressions using brackets and logical AND
  1414.  and OR operators. Below are some examples of how does the IF statement
  1415.  works.
  1416.  
  1417.  ──────────────────────┬───────────────────────────┬─────────────────────
  1418.  IF B Or (S = "aaa")   │ IF Not B                  │ IF N >= 10
  1419.     WriteLn ("true")   │    WriteLn ("B is false") │    WriteLn ("N >= 10")
  1420.  ELSE                  │ ELSE                      │ ELSE
  1421.     WriteLn  ("false") │     WriteLn ("B is true") │    WriteLn ("N < 10")
  1422.  END                   │ END                       │ END
  1423.  ──────────────────────┴───────────────────────────┴─────────────────────
  1424.  
  1425.  
  1426.  COMMAND ALIASING
  1427.  ────────────────
  1428.  
  1429.    This useful  feature is  of xBase-like program  languages origin and
  1430.  means that any string variable can be  assigned a value being a built-
  1431.  -in language  statement, and be immediately  executed as a "real" sta-
  1432.  tement by adding "&" symbol before the variable. For example:
  1433.  
  1434.  -------------------------------------
  1435.  S = "UserInfo " + "("#34"Konst"#34")"
  1436.  &S
  1437.  -------------------------------------
  1438.    This will add 'UserInfo ("Konst")' statement  to the script. One can
  1439.  use immediate translating  of a string expression as a language state-
  1440.  ment, for example: &"UserInfo " + "("#34"Konst"#34")"
  1441.  
  1442.  SCREEN INPUT/OUTPUT
  1443.  ───────────────────
  1444.  
  1445.  Clear
  1446.    Clears the screen. No parameters.
  1447.  
  1448.  Write (parameter)
  1449.    Displays the <parameter>. The <parameter> can  be both value and ex-
  1450.    pression, it can contain macros and color sequences.
  1451.    Example: Write ("User Name: " + $NAME)
  1452.  
  1453.  WriteLn (parameter)
  1454.    The same as Write, but CR/LF are added.
  1455.  
  1456.  ReadVar (VarName, VarLength)
  1457.    Asks for entering a string of number from the keyboard. The value is
  1458.    assigned to <VarName> and can't be longer than <VarLength>.
  1459.    Example: ReadVar (S,20)
  1460.  
  1461.  KeyPressed (Condit)
  1462.    Checks whether  or not  the user  has pressed  any  key and sets the
  1463.    <Condit> parameter of Logical type to True or False respectively.
  1464.    Example: KeyPressed(B)
  1465.  
  1466.  ReadKey (StringVar)
  1467.    Waits for pressing any key and stores its code to the <StringVar> of
  1468.    String type. Example: ReadKey (S)
  1469.  
  1470.  KeyMacro (Parameter)
  1471.    Puts the <Parameter> string  into the  input buffer. For example, if
  1472.    "DIR" statement has  to be  executed  after the  DoorWay start, such
  1473.    pack of statements may be used:
  1474.    ---
  1475.    KeyMacro ("DIR" + #13)
  1476.    DoorWay
  1477.    ---
  1478.    which issue the DoorWay built-in "DIR" command after the DoorWay
  1479.    start.
  1480.  
  1481.  SetCursorCoord (Row, Col)
  1482.    Places cursor into the <col> column of the <row> line of the screen.
  1483.  
  1484.  GetCursorCoord (X, Y)
  1485.    Returns current cursor  position  coordinates  to be stored into the
  1486.    two parameters.
  1487.  
  1488.  SetColor (BgCol, FgCol)
  1489.    Sets color of the text to be  displayed by Write/WriteLn statements.
  1490.    The <BgCol> parameter  sets the background  color, while the <FgCol>
  1491.    parameter sets the foreground color. Possible color values are:
  1492.  
  1493.       0 - black       8 - bright black
  1494.       1 - blue        9 - bright blue
  1495.       2 - green      10 - bright green
  1496.       3 - cyan       11 - bright cyan
  1497.       4 - red        12 - bright red
  1498.       5 - magenta    13 - bright magenta
  1499.       6 - yellow     14 - bright yellow
  1500.       7 - white      15 - bright white
  1501.  
  1502.    Example: SetColor (0, 15)
  1503.  
  1504.  YesNo (LogicalVar)
  1505.    Waits for user to press "Y" or "N" key and sets  the variable of Lo-
  1506.    gical type given as parameter to True or False, respectively.
  1507.    Example: YesNo (B), where B is a variable of logical type.
  1508.  
  1509.  NoYes (LogicalVar)
  1510.    Same  as  YesNo  statement, but  with  default set  to "No" ([y/N]),
  1511.    rather than to "Yes".
  1512.  
  1513.  Message (MesgStr)
  1514.    Displays a message string of String  type given as <MesgStr> parame-
  1515.    ter, and waits for the user to press Enter.
  1516.  
  1517.  
  1518.  TEXTFILES PARSING
  1519.  ─────────────────
  1520.  
  1521.    It should  be mentioned that  any file to be processed by the script
  1522.  is assigned some  unique number. This number can be  assigned via put-
  1523.  ting it as the first parameter of the file open statement (see below).
  1524.  Any file must be referred to by its number to be treated. For example,
  1525.  the statements below
  1526.  
  1527.  ---------------------------------------
  1528.  FileOpen (1, "C:\autoexec.bat")
  1529.  FileReadString (1, S)
  1530.  FileClose (1)
  1531.  ---------------------------------------
  1532.  
  1533.  open the C:\AUTOEXEC.BAT file and assign number 1 to it, read a string
  1534.  from this file to the S variable and close the file. Note that all fi-
  1535.  le operations mentioned after file opening use file number rather than
  1536.  file name.
  1537.  
  1538.  FileCreate (fileID, "filename")
  1539.    Creates file named as <"filename"> and assigns <fileID> number to it.
  1540.    Example: FileCreate (1, "file.tst").
  1541.  
  1542.  FileAppend (fileID, "filename")
  1543.    Opens the <"filename"> file  to append  strings to the end of it. If
  1544.    the file doesn't exist, it is created.
  1545.    Example: FileAppend (1, "file.tst").
  1546.  
  1547.  FileOpen (fileID, "filename")
  1548.    Opens <"filename"> file to read from  and assigns <fileID> number to
  1549.    it. Example: FileOpen(1,"file.tst").
  1550.  
  1551.  FileWriteString (fileID, "string")
  1552.    Writes the <"string"> string to file opened/created by FileCreate or
  1553.    FileAppend statements. Example: FileWriteString (1, "test string").
  1554.  
  1555.  FileReadString (fileID, StrVar)
  1556.    Reads string from the file  opened by the FileOpen  statement to the
  1557.    <StrVar> variable. Example: FileReadString(1, S).
  1558.  
  1559.  FileGetEOF (fileID, BoolVar)
  1560.    Checks EOF of the <fileID>-numbered file to be  reached and sets the
  1561.    Logical-type <BoolVar> parameter to True or False.
  1562.    Example: FileGetEOF (1, B).
  1563.  
  1564.  FileClose (fileID)
  1565.    Closes file with <fileID> number.
  1566.  
  1567.  FileDelete ("fname")
  1568.    Deletes the <"fname"> file. Example: FileDelete ("c:\autoexec.bat")
  1569.  
  1570.  FileExists (FName, BoolVar)
  1571.    Checks the existence of  the file  mentioned in the <FName> variable
  1572.    and sets the Logical-type <BoolVar> variable to True or False
  1573.  
  1574.  FileSize (FName, NumVar)
  1575.    Returns the size  of the file  mentioned in  the <FName> variable in
  1576.    the numeric-type <NumVar> variable
  1577.  
  1578.  FileDisplay (<filename>)
  1579.    Displays an .A?? file of <filename> name. Note that all the .A??-fi-
  1580.    lenames creation rules are applicable here as well.
  1581.    Example: FileDisplay ("TXTFILE\logo")
  1582.  
  1583.  
  1584.  FILEAREAS COMMANDS
  1585.  ──────────────────
  1586.  
  1587.  AddToDownLoadList ("filename")
  1588.    Adds the <"filename"> file to the list of files to be downloaded.
  1589.    Example: AddToDownLoadList("C:\CONFIG.SYS")
  1590.  
  1591.  DownLoad ("filename")
  1592.    Similar to the corresponding menu command. Gets filename to download
  1593.    as parameter. The parameter may be omitted.
  1594.  
  1595.  UpLoad ("UpLoadDir")
  1596.    Similar to  the corresponding  menu  command. Gets name of directory
  1597.    files will be uploaded to as parameter. The parameter may be omitted.
  1598.  
  1599.  UpLoadPriv ("Receiver")
  1600.    Similar to the  corresponding menu command. The obligatory parameter
  1601.    specifies the receiving user name.
  1602.  
  1603.  ChangeFileArea
  1604.    Change file area. No parameters.
  1605.  
  1606.  ChangeFileGroup
  1607.    Change file group. No parameters.
  1608.  
  1609.  FileList
  1610.    Lists the filearea contain. No parameters.
  1611.  
  1612.  ShowRawDir
  1613.    Shows the list of file stored in the current file area without using
  1614.    the  FILES.BBS information. Similar as  DIR command  executed in the
  1615.    directory where the current file area's files are stored.
  1616.  
  1617.  GetFirstTagged (StrVar)
  1618.    Returns the name of the first file tagged by the user to download.
  1619.    The filename is stored in the string-type <StrVar> parameter.
  1620.  
  1621.  GetNextTagged (StrVar)
  1622.    Returns the name  of the next tagged  file. GetFirstTagged statement
  1623.    must be used prior  to GetNextTagged to  begin the  list processing.
  1624.    The filename  is stored  in the  string-type <StrVar>  parameter. If
  1625.    the  end of  the  list is  reached, the  parameter is  set  to empty
  1626.    string.
  1627.  
  1628.  GlobalSearch (wildcard)
  1629.    Same function as that of Global_Search menu item. The only parameter
  1630.    (can be omitted) specifies the wildcard of files to be searched for.
  1631.    If not specified or is empty, the user is asked for it.
  1632.  
  1633.  NewFilesSince (date)
  1634.    Searches for files which came to BBS after the <date> date. The <da-
  1635.    te> parameter format must follow the pattern specified in the torna-
  1636.    do.ctl->[System]->Date_Mask  variable. If the  parameter is omitted,
  1637.    the user is asked for it.
  1638.  
  1639.  NewFilesSinceLast
  1640.    Looks up files which came to BBS after the user last visit. Supplies
  1641.    no parameters.
  1642.  
  1643.  
  1644.  MESSAGE AREAS COMMANDS
  1645.  ──────────────────────
  1646.  
  1647.  ChangeMsgArea
  1648.    Change message area. No parameters.
  1649.  
  1650.  ChangeMsgGroup
  1651.    Change message group. No parameters.
  1652.  
  1653.  FilePost (FileName, From, To, Subj)
  1654.    Post the specified file to  the current  message area  as a standard
  1655.    message. Parameters:  filename, <from> field, <to> field> <subj> fi-
  1656.    eld. Example: FilePos ("C:\somefile.txt", "Konst", "All", "Tornado")
  1657.  
  1658.  WriteMsg (MsgAreaNum)
  1659.    Lets user write a  message to the  message area. The  area number is
  1660.    mentioned  in  the <MsgAreaNum> parameter. If  no number  specified,
  1661.    current message area is assumed.
  1662.  
  1663.  
  1664.  MISCELLANEOUS
  1665.  ─────────────
  1666.  
  1667.  GetArg (Str, Num)
  1668.    Returns to the  String-type <Str> parameter  value of the <Num> num-
  1669.    bered parameter of the script. The total number of  the script para-
  1670.    meters is store in ArgCount variable.
  1671.  
  1672.  GetStringLength (Str, Num)
  1673.    Stores  in the <Num> parameter of  the Number  type the  String-type
  1674.    <Str> parameter's length.
  1675.  
  1676.  SubString (StrIn, FromPos, Count, StrOut)
  1677.    Returns a substring selected from  String-type <StrIn> parameter, in
  1678.    the <StrOut> String-type parameter. Substring  is of <Count> symbols
  1679.    length, started with <FromPos>-numbered symbol of <StrIn> parameter.
  1680.  
  1681.  StrPos (Sub, Str, Pos)
  1682.    Returns the  position of the <Sub> substring  in the <Str> string to
  1683.    the number-type <Pos> parameter.
  1684.  
  1685.  Val (Str, Num)
  1686.    Converts  String-type <Str> parameter  into  the  Numeric-type <Num>
  1687.    one. Returns <Num> value as a result.
  1688.  
  1689.  Val (Str, Num)
  1690.    Puts ASCII code of the <Str> symbol into the <Num> parameter.
  1691.  
  1692.  Delay (n)
  1693.    Delays a script execution for n millisecons
  1694.  
  1695.  Random (Range, Out)
  1696.    Generates a random number within 0 to <Range> diapason and stores it
  1697.    in the number-type <Out> parameter.
  1698.  
  1699.  UserInfo ("UserName")
  1700.    Displays information about an user of "UserName" name.
  1701.  
  1702.  PageSysOp (Topic)
  1703.    Pages the Sysop to talk on the <Topic> problem. If no topic specifi-
  1704.    ed, user is asked for it.
  1705.  
  1706.  DoorWay
  1707.    Starts the built-in Doorway
  1708.  
  1709.  Call (script.TRS)
  1710.    Calls a .TRS script file from the script being executed.
  1711.  
  1712.  Log (String)
  1713.    Appends the <String> string to the logfile.
  1714.  
  1715.  News
  1716.    Invokes news system. No parameters supplied.
  1717.  
  1718.  GoTo Label
  1719.    Unconditional jump to the <label>. See also "Labels".
  1720.  
  1721.  HangUp
  1722.    Forces user to end session by breaking connect.
  1723.  
  1724.  Exec ("program [command-line]", N)
  1725.    Executes program, command-line parameters OK. Macros  similar to the
  1726.    'Exec' menu command are allowed. After executing the errorlevel will
  1727.    be stored to the Number-variable <N> which is optional.
  1728.    Example: Exec("vsys *P *B"")
  1729.  
  1730.  Exit
  1731.    Ends script.
  1732.  
  1733.  
  1734.  8.4. Labels
  1735.  ───────────
  1736.  
  1737.    Labels are intended to pass execution to some other part of script.
  1738.  The Tornado built-in script language assumes as label a string follow-
  1739.  ed by semicolon:
  1740.  
  1741.  Label1:
  1742.  
  1743.  The GoTo statement  with label name is  used to pass  execution to the
  1744.  statements  preceded by  the label  of that  name (see above about the
  1745.  GoTo statement syntax).
  1746.  
  1747.  8.5. Procedures
  1748.  ───────────────
  1749.  
  1750.    The built-in script language supports procedures. They are extremely
  1751.  useful if  some statements  sequence has to be re-used  several times.
  1752.  Procedures  are to  be described  before  the [Program] section of the
  1753.  script. The descriptions must look like the one below:
  1754.  
  1755.  Procedure <procedure_name>
  1756.    <statement1>
  1757.    <statement2>
  1758.        ...
  1759.    <statementN>
  1760.  End
  1761.  
  1762.  To call the procedure one just  has to  use the  procedure's name as a
  1763.  standard statement, for example:
  1764.  
  1765.  Program
  1766.     < ... >
  1767.     <Procedure_Name>
  1768.     < ... >
  1769.  End
  1770.  
  1771.  8.6. Reserved names of script files
  1772.  ───────────────────────────────────
  1773.  
  1774.    Below is list of files with .TRS (ToRnado Script) extensions) placed
  1775.  in  the  directory mentioned  in the [Files]->TxtFiles variable of the
  1776.  current .LNG-file. Case of its execution is also mentioned.
  1777.  
  1778.  ──────────┬───────────────────────────────────────────────────────────
  1779.   Filename │ Execution case
  1780.  ──────────┼───────────────────────────────────────────────────────────
  1781.   LOGO     │ Before displaying BBS logo
  1782.   WELCOME  │ Before asking for scanning mail and file areas
  1783.   START    │ Just before displaying the start menu
  1784.   LOGOFF   │ At the end of user session via choosing the corresponding
  1785.            │ menu option
  1786.   NEWUSER  │ If ask for beginning of the new user registration is
  1787.            │ answered positively
  1788.   REGEND   │ Just after ending of the new user registration
  1789.   BADUSER  │ At the enter of the badlisted user
  1790.   GOODUSR  │ At the enter of the goodlisted user
  1791.   UPLOAD   │ Just after uploading file(s) and description(s)
  1792.   DOWNLOAD │ Just after downloading file(s)
  1793.  ──────────┴───────────────────────────────────────────────────────────
  1794.  
  1795.  8.7. REXX support (OS/2 version only)
  1796.  ─────────────────────────────────────
  1797.  
  1798.    Tornado/2 makes it possible to create scripts using REXX language.
  1799.  Such functions are supported at the  moment for these scripts: Clear,
  1800.  Hangup, ChangeFileArea,  ChangeFileGroup, ChangeMsgArea, ChangeMsgGro-
  1801.  up, FileList, DoorWay, FileDisplay, Write, WriteLn, AddToDownLoadList,
  1802.  DownLoad, Upload, Message, UpLoadPriv, ShowRawDir, FilePost, WriteMsg,
  1803.  UserInfo, PageSysOp,  ReadVar,  KeyPressed,  ReadKey,  SetCursorCoord,
  1804.  SetColor  and  YesNo.  The  parameters for these functions are in most
  1805.  cases similar to those of the corresponding statements of the built-in
  1806.  script language (see  chapter 8.3 for further  information). Functions
  1807.  return '0' in case of succesful termination, or '-1' otherwise, except
  1808.  of KeyPressed, ReadKey and  YesNo functions which  return the real re-
  1809.  sult of their execution, rather than some pre-set one.
  1810.  
  1811.  WARNING: if the functions need  a variable to  store the execution re-
  1812.  sult, the variable must be used as the function's parameter and be en-
  1813.  closed in REXX-style single quote marks.
  1814.  
  1815.  To set and get macros values, such two functions are supported:
  1816.  
  1817.  SetMacro( <macro_name>, <value> );
  1818.    Sets value of the <macro_name> macro to the <value>, if changing  of
  1819.    the macro value is not prohibited; otherwise returns '-1'.
  1820.  
  1821.  GetMacro( <macro_name> );
  1822.    Returns value of the <macro_name> macro,  or '-1' if no <macro_name>
  1823.    macro is defined.
  1824.  
  1825.  The reserved names of the REXX prgrams  are  similar  to  the standard
  1826.  .TRS filenames (see Chapter 8.6 for  more information). The REXX prog-
  1827.  rams with the reserved filenames must have .TRX extension and be loca-
  1828.  ted in the directory specified in .LNG->[Files]->TxtFiles.
  1829.  
  1830.  
  1831.  9. Advanced features
  1832.  ════════════════════
  1833.  
  1834.    The Tornado has a plenty  of advanced (service) features  which make
  1835.  work with it more comfortable and easy.
  1836.  
  1837.  9.1. Built-in DoorWay
  1838.  ─────────────────────
  1839.  
  1840.    The Tornado implements  remote access of a user to the host computer
  1841.  file system. Entering the DoorWay is done via selecting "DoorWay" menu
  1842.  item.  In order to provide  secutity,  there used  thorough ranking of
  1843.  commands  availability according  to users' access level. The  DoorWay
  1844.  configuration file,  DOORWAY.CTL,  is commented in detail,  so you can
  1845.  refer to it for  further information.  You can get a list  of commands
  1846.  with brief  description by entering HELP command. To get available pa-
  1847.  rameters of a command, once just need to follow it by "/?" switch.
  1848.  
  1849.  9.2. ManualSend (tm)
  1850.  ────────────────────
  1851.  
  1852.    I often faced to  unconvenience of  sending to a user a file located
  1853.  not in any file area. So I decided to ease this task up.  Well, if the
  1854.  SysOp  was asked for a file and a user would get it immediately, SysOp
  1855.  doesn't  need  anymore  to  place the file into a file area and do the
  1856.  other not-so-funny things  making the user wait. The only thing needed
  1857.  is to press PgUp, to select a directory containing files to send, then
  1858.  to select files to send (INS key) and to press Enter. All is done!
  1859.  
  1860.  9.3. SaveTagList (tm)
  1861.  ─────────────────────
  1862.  
  1863.    Have you ever seen tortures of a poor user who have disconnected be-
  1864.  cause of noised line after  having selected files to download, and af-
  1865.  ter re-connection  had to re-select all the needed files? It's obvious
  1866.  that it'd be very comfortable to  save taglist so  that the user won't
  1867.  need to re-select files at re-entering, thus freeing the session time.
  1868.  Taglist saving mode  (SaveTagList) is  activated  by the tornado.ctl->
  1869.  [Miscellaneous]->Save_Tag_List  parameter. Catalog to store list files
  1870.  for each  user is set  by the tornado.ctl->[Files&Dirs]->Save_Tag_Path
  1871.  parameter. Name of these files is username's CRC32 in hexadecimal for-
  1872.  mat, the preset extension is .LST.
  1873.  
  1874.  9.4. The Tornado Upgrade Manager (tm)
  1875.  ─────────────────────────────────────
  1876.  
  1877.    The Tornado Upgrade  Manager changes users' access level on some no-
  1878.  table events  (10th or 100th call, someone's birthday, etc). The SysOp
  1879.  can define conditions for change  access level to take effect (to pre-
  1880.  vent "increase" from 10th level, manually assigned to the user, to the
  1881.  default 2nd level,  or other misunderstandings likewise). The user may
  1882.  be informed  about the change  either by message  from the SysOp or by
  1883.  displaying the  appropriate .ANS/.ASC/AVT file. The change will be ac-
  1884.  tual either while  the change day or  till other  changes. For further
  1885.  info on customizing the  Tornado  Upgrade Manager please refer to com-
  1886.  mented sample configuration file UPGRADER.CTL
  1887.  
  1888.  9.5. Registration Resume (tm)
  1889.  ─────────────────────────────
  1890.  
  1891.    If the registration process  has been terminated  because of discon-
  1892.  nect, user don't need to  restart it from the very  beginning anymore.
  1893.  Since the registration  process is rather long and boring, while phone
  1894.  lines often are  noised, the  re-registration process  may get  almost
  1895.  everlasting and  very  annoying. That's why the Registration Resume is
  1896.  of great  use. The  Registration  Resume is  activated by  the  TORNA-
  1897.  DO.CTL=>[NewUsers]->Reg_Resume parameter.
  1898.  
  1899.  9.6. Private Uploads (tm)
  1900.  ─────────────────────────
  1901.  
  1902.    This feature enables users to exchange with files using the BBS as a
  1903.  temporary  storage.  There  exist special catalog for such operations.
  1904.  It's specified by  the tornado.ctl->[Files&Dirs]->Priv_Uploads_Dir pa-
  1905.  rameter. The files to some user will only be downloaded by the addres-
  1906.  see user and  then will  be deleted. Filelists are  stored in the .LST
  1907.  files located in  the directory  specified in the tornado.ctl->[Files&
  1908.  Dirs]->Save_Tag_Path parameter. See also menu action Upload_Priv.
  1909.  
  1910.  
  1911.  10. Other info
  1912.  ══════════════
  1913.  
  1914.  10.1. Acknowledgements
  1915.  ──────────────────────
  1916.  
  1917.    The author would express a great gratitude to the all who helped de-
  1918.  veloping and testing the Tornado, noticed and informed the author abo-
  1919.  ut errors. Special thanks to:
  1920.  
  1921.  ■ Alex Radzishevskiy (2:461/113@fidonet.org) - one of my best  friends
  1922.    and  the  Tornado Team programmer. He has created the Tornado window
  1923.    interface,  the  DoorWay,  and other useful stuff. He was one of the
  1924.    founding fathers of the Tornado project, issued a lot of useful  no-
  1925.    tices. [Tornado Team].
  1926.  
  1927.  ■ Vlad Bakaev (2:461/76@fidonet.org, dandy@guru.cit-ua.net) - yet ano-
  1928.    ther my friend  and  programmer of the Tornado Team. He is author of
  1929.    the modules interfacing with the FILES.BBS file, parsing text confi-
  1930.    guration files, etc. [Tornado Team].
  1931.  
  1932.  ■ Maxim  Lyashenko (2:461/585@fidonet.org) - the  author of the  macro
  1933.    treating  module and some other string-related stuff. Active tester.
  1934.    [Tornado Team].
  1935.  
  1936.  ■ Maarten Bekers (2:285/233.5@fidonet.org, elevator@wxs.nl).  Autor of
  1937.    the EleBBS program. Issued  a  lot of useful recommendations  as  to
  1938.    Win95/98/NT version of Tornado.
  1939.  
  1940.  ■ Boris Loboda (2:461/256@fidonet.org, barry@audit.kharkov.com). Helped
  1941.    very much in creating Win95/98/NT version  of  Tornado  by  advices,
  1942.    pieces of source code, etc.
  1943.  
  1944.  ■ Jack Lensky (2:461/686@fidonet.org). Active tester. [Tornado Team].
  1945.  
  1946.  ■ Dima Orlov (2:461/27@fidonet.org, do@free.kpi.kharkov.ua)  -  he has
  1947.    been taking active part in developing the  project from the very be-
  1948.    ginning till now; besides, almost all the source code has been typed
  1949.    using really  perfect  DOS-shell CONNECT  (The IBM HandShaker), Dima
  1950.    being one of its authors.
  1951.  
  1952.  ■ Alex Shakhajlo (2:461/700@fidonet.org) - active  testing  since  the
  1953.    first versions, useful notes and advices.
  1954.  
  1955.  ■ Alexey Solomonov  (2:5030/142@fidonet.org) - kindly  offered  source
  1956.    code and  perfect mailer Sf-Mail, the Tornado interface being a pla-
  1957.    giate of the Sf-Mail one ;). [Santa Fox Team].
  1958.  
  1959.  ■ Anton the Deinow (2:5030/143@fidonet.org)  -  kindly offered  source
  1960.    code of his libraries, active testing and useful advices. [Santa Fox
  1961.    Team].
  1962.  
  1963.  ■ Vladimir Lazarenko (2:461/106@fidonet.org,vlad@sline.gtm.kharkov.ua)
  1964.    -  testing,  translation  of commentaries in the configuration files
  1965.    into English.
  1966.  
  1967.  ■ Oleg Deribas (2:461/13@fidonet.org) - active  testing  and  creative
  1968.    thoughts  about  new  features of the Tornado, helping the author to
  1969.    implement them; creating useful utilities.
  1970.  
  1971.  ■ Peter Suchkow (2:5030/51@fidonet.org) - the Tornado distribution wi-
  1972.    thin the frameworks of the  GSS project; he has taken active part in
  1973.    promoting the Tornado abroad exUSSR.
  1974.  
  1975.  ■ Vadim Vasilenko (2:461/79.44@fidonet.org) - translation of the docu-
  1976.    mentation into English; active user-side ;) testing.
  1977.  
  1978.  ■ Roman Rupp (2:246/6010, rrupp@karlsruhe.netsurf.de) - translation of
  1979.    the .LNG and .A?? files into German; active testing and useful advi-
  1980.    ces.
  1981.  
  1982.  ■ TurboPower SoftWare, Async stuff;
  1983.  
  1984.  ■ Mark May & Vadim Rumyantsev, library of messagebases treating;
  1985.  
  1986.  ■ Special great gratitude to the Borland  International Inc for excel-
  1987.    lent  development  tool  Borland  Pascel  7.0  and also superb, even
  1988.    though too slow on my computer, Delphi compiler;
  1989.  
  1990.  ■ Special great  thanks  to ex-compatriot  Vitaly Miryanov for perfect
  1991.    Virtual Pascal  compiler which  has been  used to assemble  the OS/2
  1992.    version of the Tornado;
  1993.  
  1994.  ■ Now, thanks to me :)
  1995.  
  1996.  10.2. Distribution and the author's responsibility
  1997.  ──────────────────────────────────────────────────
  1998.  
  1999.    This version of the Tornado is an unlimited shareware. See the major
  2000.  guidelines in the license file (LICENSE.DOC)
  2001.    The Tornado is distributet in the "AS IS" form, accordingly  to  the
  2002.  common international AS IS principle. This means that the author isn't
  2003.  responsible in any way for any damage or loss caused by using the Tor-
  2004.  nado. You are using it at your own risk.
  2005.  
  2006.  10.3. Support
  2007.  ─────────────
  2008.  
  2009.  The Tornado program is distributed within frameworks of the
  2010.  
  2011.  ─────────────────────────────────────■■■■■─────■■■■■────■■■■■──
  2012.  ──General───────────────────────────■─────────■────────■───────
  2013.  ──────────Software─────────────────■──■■■──────■■■──────■■■────
  2014.  ───────────────────Support────────■────■─────────■────────■────
  2015.  ──────────────────────────────────■■■■■─────■■■■■────■■■■■─────
  2016.  
  2017.  project.
  2018.  
  2019.  The most recent versions are available immediately at the author's bo-
  2020.  ard (main Tornado support board) Pulse BBS:
  2021.  
  2022.  Phone     : [0572] 47-4765
  2023.  Work Time : 23:00-07:00
  2024.  BBS       : present
  2025.  Freqs     : allowed
  2026.  FIDO      : 2:461/22
  2027.  
  2028.  NOTE: Work Time means Kiev time (UTC +3 in summer and +2 in winter).
  2029.  
  2030.  If You are FIDONet member,  you can FReq the  most recent beta-version
  2031.  using TORNADO (DOS version) or  TORNADO2 (OS/2 version) alias, as well
  2032.  as alpha-version - using ALPHA or ALPHA2 aliases respectively.
  2033.  
  2034.  Besides, there  is TORNADO fileecho used to distribure recent versions
  2035.  of the Tornado and various utilities for it.
  2036.  
  2037.  The Tornado is also supported within the TORNADO.SUPPORT echoconferen-
  2038.  ce of the FIDONet.
  2039.  
  2040.  If you are  provided with the  Internet connectivity, you can  FTP the
  2041.  most recent Tornado version at these FTP servers:
  2042.  
  2043.  ftp://quake.vostok.net/pub/tornado/
  2044.  ftp://rcat.com/bbs_software/tornado/
  2045.  
  2046.  or WWW-page:
  2047.  
  2048.  http://adel.telecom.nov.ru/konst/tornado.htm
  2049.  
  2050.  If You feel irresistible desire to thank the author for his work, just
  2051.  contact me, and I will appreciate it in any form with pleasure.
  2052.  
  2053.  10.4. The author
  2054.  ────────────────
  2055.  
  2056.  If You have any ideas, suggestions or business propositions concerning
  2057.  the Tornado, you can contact me is such ways:
  2058.  
  2059.  - call me by  voice phone  (380-572-474765) at a reasonable time (this
  2060.    is home phone) and ask Konstantin;
  2061.  
  2062.  - if You are  kharkovite or  plan to visit  Kharkov, you can visit so-
  2063.    called  "prooliovka" - weekly  party of the Kharkov FIDOnet members,
  2064.    that takes place at Tuesdays 18:00 in the  Gogol' St. (just in front
  2065.    of catholic church);
  2066.  
  2067.  - ICQ #17502151
  2068.  
  2069.  - mail me to such net addressess:
  2070.  
  2071.    2:461/22@fidonet.org
  2072.    81:461/22@os2net
  2073.  
  2074.    konst@quake.vostok.net
  2075.    konst@adel.telecom.nov.ru
  2076.    Konstantin.Klyagin%p0.f22.n461.z2@fidonet.org
  2077.  
  2078.  - mail to:
  2079.  
  2080.    Konstantin Klyagin,
  2081.    flat 11, Frunze 11,
  2082.    Kharkov, Ukraine
  2083.  
  2084.  10.5. Trademarks
  2085.  ────────────────
  2086.  
  2087.  Registered and unregistered trademarks:
  2088.  ─────────────────────┬───────────────────────────────────────────
  2089.   Tornado             │ Konstantin Klyagin & Tornado Team
  2090.   Upgrade manager     │ Konstantin Klyagin & Tornado Team
  2091.   SaveTagList         │ Konstantin Klyagin & Tornado Team
  2092.   ManualSend          │ Konstantin Klyagin & Tornado Team
  2093.   Registration Resume │ Konstantin Klyagin & Tornado Team
  2094.   RemoteAccess        │ Andrew Milner & Wantree Development Corp.
  2095.   Maximus             │ Scott Dudley
  2096.   Borland Pascal 7.0  │ Borland International, Inc.
  2097.   Sf-Mail             │ SantaFox Team
  2098.   T-Mail              │ Andy Elkin
  2099.   Fido, FidoNet       │ Tom Jennings and Fido Software
  2100.   OS/2                │ International Business Machines Corp.
  2101.   MS-DOS              │ MicroSoft Corp.
  2102.  ─────────────────────┴───────────────────────────────────────────