home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / w / wfs203.zip / WFSUGREF.DOC < prev    next >
Text File  |  1992-12-04  |  95KB  |  3,829 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.             Waffle File Server (WFS)
  18.  
  19.            A Mail Based Archive Server
  20.  
  21.               for MS-DOS Waffle BBS
  22.  
  23.  
  24.  
  25.             User Guide and Reference
  26.  
  27.                Release 2.0
  28.  
  29.  
  30.  
  31.              5 November 1992
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.                 Lawrence T. Hardiman
  44.  
  45.                 The Birdsong Company
  46.                 PO Box 2031
  47.                 Sunnyvale CA, 94087-2031
  48.  
  49.  
  50.                 larry@Birdsong.Suvl.CA.US
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73. Abstract:
  74.  
  75. Waffle File Server (WFS) is "Add-On" software for the MS-DOS
  76. version of Waffle BBS. WFS extends Waffle's capability by
  77. providing a Mail Based Archive Server (MBAS), an Automatic
  78. Mailing Server (AutoMail), a Remote Command Execution Facility,
  79. and a Mailing List Server.
  80.  
  81. This document provides a Waffle SysOp with information on how to
  82. install, customize and operate WFS.
  83.  
  84. WFS is ShareWare.
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123. _________________________________________________________________
  124.  Copyright 1992, The Birdsong Company, Sunnyvale California USA
  125.  
  126.                ALL RIGHTS RESERVED
  127.  
  128.  
  129.  
  130.                  - ii -
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.               Contents
  146.  
  147.  
  148.  
  149.      Chapter 1    What's New in This Release           6
  150.     1.1  Release 1.2.x . . . . . . . . . . . . . . . . 6
  151.     1.2  Release 1.3.x . . . . . . . . . . . . . . . . 7
  152.     1.3  Release 2.0.x . . . . . . . . . . . . . . . . 7
  153.  
  154.      Chapter 2    Introduction                   9
  155.     2.1  ShareWare . . . . . . . . . . . . . . . . . . 9
  156.     2.2  What is Waffle File Server  . . . . . . . . . 9
  157.        2.2.1  Overview . . . . . . . . . . . . . . . . 9
  158.        2.2.2  Mail Based Archive Server  . . . . . .  11
  159.        2.2.3  Automatic Mailing Facility . . . . . .  11
  160.        2.2.4  Remote Command Execution Facility  . .  11
  161.        2.2.5  Mailing List Server  . . . . . . . . .  12
  162.     2.3  Supported Environment . . . . . . . . . . .  12
  163.  
  164.      Chapter 3    Message Command Language          14
  165.     3.1  The HELP Command  . . . . . . . . . . . . .  15
  166.     3.2  The DIR Command . . . . . . . . . . . . . .  15
  167.     3.3  The NEWFILES Command  . . . . . . . . . . .  15
  168.     3.4  The GET Command . . . . . . . . . . . . . .  16
  169.     3.5  The PING Command  . . . . . . . . . . . . .  17
  170.     3.6  The QUIT Command  . . . . . . . . . . . . .  17
  171.     3.7  The PASSWORD Command  . . . . . . . . . . .  17
  172.     3.8  SysOp Defined Commands  . . . . . . . . . .  17
  173.     3.9  The JOIN Command  . . . . . . . . . . . . .  18
  174.     3.10  The UNJOIN Command . . . . . . . . . . . .  18
  175.     3.11  The ARCHIVE Command  . . . . . . . . . . .  18
  176.     3.12  The MEMBERS Command  . . . . . . . . . . .  19
  177.     3.13  The ADDMEMBER Command  . . . . . . . . . .  19
  178.     3.14  The DROPMEMBER Command . . . . . . . . . .  21
  179.  
  180.      Chapter 4    Installing WFS                  21
  181.     4.1  Planning your Configuration . . . . . . . .  21
  182.        4.1.1  Incoming User IDs  . . . . . . . . . .  22
  183.        4.1.2  Outbound User ID . . . . . . . . . . .  22
  184.        4.1.3  Disk Space . . . . . . . . . . . . . .  22
  185.     4.2  Installing the Programs . . . . . . . . . .  22
  186.        4.2.1  Configuring WFSREQST . . . . . . . . .  23
  187.        4.2.2  Configuring WFSSENDF . . . . . . . . .  23
  188.           4.2.2.1  Command Line Arguments  . . . . .  23
  189.  
  190.  
  191.  
  192.  
  193.                    iii
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.        4.2.3  Configuring an Authorization Exit
  209.           Program  . . . . . . . . . . . . . . .  25
  210.     4.3  Updating Waffle's STATIC File . . . . . . .  26
  211.     4.4  Other WFS Files . . . . . . . . . . . . . .  26
  212.     4.5  Converting From Earlier Releases of WFS . .  27
  213.  
  214.      Chapter 5    Configuring WFS Features          28
  215.     5.1  Configuring the Mail Based Archive Server .  28
  216.     5.2  Waffle's DIRS file  . . . . . . . . . . . .  28
  217.        5.2.1  /WFS.DENY  . . . . . . . . . . . . . .  28
  218.        5.2.2  /WFS.HIDE  . . . . . . . . . . . . . .  29
  219.        5.2.3  Configuring WFSFILES . . . . . . . . .  29
  220.     5.3  Automatic Mailing Facility  . . . . . . . .  30
  221.     5.4  Remote Command Execution Facility . . . . .  30
  222.        5.4.1  The Command Definition File  . . . . .  30
  223.           5.4.1.1  FileIdent . . . . . . . . . . . .  31
  224.           5.4.1.2  Command . . . . . . . . . . . . .  32
  225.           5.4.1.3  Password  . . . . . . . . . . . .  32
  226.           5.4.1.4  UserOperands  . . . . . . . . . .  33
  227.           5.4.1.5  MailResults . . . . . . . . . . .  33
  228.           5.4.1.6  RecordResults . . . . . . . . . .  33
  229.     5.5  Configuring Mailing Lists . . . . . . . . .  34
  230.        5.5.1  The Mailing List Configuration File  .  34
  231.           5.5.1.1  FileIdent . . . . . . . . . . . .  35
  232.           5.5.1.2  ListName  . . . . . . . . . . . .  35
  233.           5.5.1.3  Welcome . . . . . . . . . . . . .  35
  234.           5.5.1.4  MemberFile  . . . . . . . . . . .  35
  235.           5.5.1.5  ReplyTo . . . . . . . . . . . . .  36
  236.           5.5.1.6  MultiAddress  . . . . . . . . . .  36
  237.           5.5.1.7  MembersOnly . . . . . . . . . . .  37
  238.           5.5.1.8  NoEcho  . . . . . . . . . . . . .  37
  239.           5.5.1.9  AutoDelete  . . . . . . . . . . .  37
  240.           5.5.1.10    Password . . . . . . . . . . . .  38
  241.           5.5.1.11    Join . . . . . . . . . . . . . .  38
  242.           5.5.1.12    UnJoin . . . . . . . . . . . . .  38
  243.           5.5.1.13    Archive  . . . . . . . . . . . .  39
  244.           5.5.1.14    Members  . . . . . . . . . . . .  39
  245.           5.5.1.15    AddMember  . . . . . . . . . . .  39
  246.           5.5.1.16    DropMember . . . . . . . . . . .  39
  247.  
  248.      Chapter 6    Reference                  41
  249.     6.1  Waffle's Static File  . . . . . . . . . . .  41
  250.        6.1.1  Temporary  . . . . . . . . . . . . . .  41
  251.        6.1.2  Bin  . . . . . . . . . . . . . . . . .  42
  252.        6.1.3  Waffle . . . . . . . . . . . . . . . .  42
  253.        6.1.4  Node . . . . . . . . . . . . . . . . .  42
  254.        6.1.5  Uucpname . . . . . . . . . . . . . . .  42
  255.        6.1.6  wfs.sender . . . . . . . . . . . . . .  42
  256.  
  257.  
  258.  
  259.                    iv
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.        6.1.7  wfs.reply-to . . . . . . . . . . . . .  43
  275.        6.1.8  wfs.uuencode . . . . . . . . . . . . .  43
  276.        6.1.9  wfs.uuencode.ext . . . . . . . . . . .  43
  277.        6.1.10  wfs.ascii.size  . . . . . . . . . . .  44
  278.        6.1.11  wfs.ascii.lines . . . . . . . . . . .  44
  279.        6.1.12  wfs.uuencode.lines  . . . . . . . . .  44
  280.        6.1.13  wfs.help  . . . . . . . . . . . . . .  45
  281.        6.1.14  wfs.filelist  . . . . . . . . . . . .  45
  282.        6.1.15  wfs.transcript  . . . . . . . . . . .  45
  283.        6.1.16  wfs.notrans . . . . . . . . . . . . .  45
  284.        6.1.17  wfs.signature . . . . . . . . . . . .  45
  285.        6.1.18  wfs.errorlimit  . . . . . . . . . . .  46
  286.        6.1.19  wfs.msglimit  . . . . . . . . . . . .  46
  287.        6.1.20  wfs.daylimit  . . . . . . . . . . . .  46
  288.        6.1.21  wfs.quelimit  . . . . . . . . . . . .  47
  289.        6.1.22  wfs.enable.*  . . . . . . . . . . . .  47
  290.        6.1.23  wfs.authexit  . . . . . . . . . . . .  48
  291.        6.1.24  wfs.automail  . . . . . . . . . . . .  48
  292.        6.1.25  wfs.automail.immediate  . . . . . . .  49
  293.        6.1.26  wfs.command . . . . . . . . . . . . .  49
  294.        6.1.27  wfs.maillist  . . . . . . . . . . . .  50
  295.  
  296.      Chapter 7    A Few Hints                  52
  297.     7.1  Extended Logging  . . . . . . . . . . . . .  52
  298.     7.2  Testing WFS . . . . . . . . . . . . . . . .  52
  299.     7.3  Forging a Request . . . . . . . . . . . . .  53
  300.  
  301.      Chapter 8    Messages                  55
  302.  
  303.      Chapter 9    Software License              56
  304.  
  305.      Appendix A                                           57
  306.     A.1  Technical Support . . . . . . . . . . . . .  57
  307.     A.2  Future Direction  . . . . . . . . . . . . .  57
  308.     A.3  Bugs  . . . . . . . . . . . . . . . . . . .  57
  309.     A.4  Acknowledgments . . . . . . . . . . . . . .  57
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.                 v
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332. b i r d s o n g
  333.                      WFS User Guide and Reference
  334.  
  335.                        What's New in This Release
  336. _________________________________________________________________
  337.  
  338.  
  339.  
  340.  
  341.  
  342.  
  343.                 Chapter 1
  344.  
  345.            What's New in This Release
  346.  
  347.  
  348. Release 2.0.0 is a major update to WFS. If you are already a user
  349. of WFS, please read this entire chapter. If you are new to WFS,
  350. you may skip this chapter.
  351.  
  352.  
  353. 1.1  Release 1.2.x
  354.  
  355. New and improved License terms. See "Software License" on page
  356. 55. Full function is provided in this release. There is no
  357. "test-drive" version. Feature restrictions are removed for:
  358. wfs.deny; wfs.authexit; and the number of directories accessible
  359. via the DIRS file.
  360.  
  361. The "QUIT" command has been added. The QUIT command terminates
  362. input processing. The QUIT command may have SysOp specified
  363. aliases (wfs.alias.quit), like other user commands. See "QUIT
  364. Command" on page 17.
  365.  
  366. The STATIC file statement "wfs.uuencode.size" has been replaced.
  367. Ascii files are sent plaintext and are split at either of a
  368. character count limit; see "wfs.ascii.size" on page 43. or a line
  369. limit; see "wfs.ascii.lines" on page 43.
  370.  
  371. The "AutoMail" feature has been added. Mail addressed to an
  372. aliased address gets mailed a specific file. See "wfs.automail"
  373. on page 47. and "wfs.automail.immediate" on page 48.
  374.  
  375. The "NEWFILES" command in a message causes WFS to send a list of
  376. files newer than a date specified in the command. The "NEWFILES"
  377. command may have SysOp specified aliases (wfs.alias.newfiles),
  378. like the other user commands. See "The NEWFILES Command" on page
  379. 15.
  380.  
  381. A new command line option has been added for WFSFILES. The "-s"
  382. option now suppresses the "splash" from the stdout I/O stream;
  383. it's still written to the log. See "Configuring WFSFILES" on page
  384. 28.
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391. _________________________________________________________________
  392.                Release 2.0
  393.  
  394.                              page -6-
  395.  
  396.  
  397.  
  398. b i r d s o n g
  399.                      WFS User Guide and Reference
  400.  
  401.                        What's New in This Release
  402. _________________________________________________________________
  403.  
  404.  
  405.  
  406. Messages written to WFSLOG are now written to stderr (the
  407. console). The new feature provides visual progress of current
  408. operations.
  409.  
  410.  
  411. 1.2  Release 1.3.x
  412.  
  413. The format of the WFS control file (QCONTROL) and the work queue
  414. files (QDxxxxxx) have changed. These files MUST either be
  415. converted or deleted before using WFS 1.3.0. A program, WFSCONV2
  416. is provided for that conversion. See "Converting From Earlier
  417. Releases of WFS" on page 26.
  418.  
  419. The "wfs.automail.immediate" STATIC file statement has changed
  420. since its introduction in release 1.2.x. See
  421. "wfs.automail.immediate" on page 48.
  422.  
  423. The "wfs.notrans" STATIC file statement has changed. See
  424. "wfs.notrans" on page 44.
  425.  
  426. The "wfs.alias.*" STATIC file statements are obsolete. By
  427. default, WFS will not recognize any commands unless the SysOp
  428. enables a specific command via a "wfs.enable.*" command. See
  429. "wfs.enable.*" on page 46.
  430.  
  431. The "/wfs.acc" parameter in the DIRS file is obsolete. Beginning
  432. with this release, all directories in the DIRS file are
  433. accessable to WFS by default. The "/wfs.deny" parameter when
  434. coded on a DIRS file entry denies WFS access to that directory.
  435. This will make the DIRS file less cluttered, but will cause you
  436. some conversion work. Sorry. See "/WFS.DENY" on page 27.
  437.  
  438. The Remote Command Execution Facility has been added. The Remote
  439. Command Execution Facility is enabled via the "wfs.command"
  440. STATIC file statement. See "wfs.command" on page 48. The Command
  441. Execution Facility is described in detail in "Remote Command
  442. Execution Facility" on page 29.
  443.  
  444. The documentation for all the messages issued by WFS takes too
  445. much effort to maintain. I need a tech writer! I have deleted the
  446. detailed description of the messages.
  447.  
  448.  
  449. 1.3  Release 2.0.x
  450.  
  451. Release 2.0.0 adds the "Mailing List" feature. This feature
  452. provides the mail list management functions. Users may subscribe,
  453. unsubscribe, retrieve archived messages, retreive a list of
  454.  
  455.  
  456.  
  457. _________________________________________________________________
  458.                Release 2.0
  459.  
  460.                              page -7-
  461.  
  462.  
  463.  
  464. b i r d s o n g
  465.                      WFS User Guide and Reference
  466.  
  467.                        What's New in This Release
  468. _________________________________________________________________
  469.  
  470.  
  471.  
  472. members. Users may also send mail to the mail list's address;
  473. that mail is then forwarded to all subscribers to the mail list.
  474. The mail list features are described in "wfs.maillist" on page 49
  475. and in "Configuring Mailing Lists" on page 33.
  476.  
  477. The WFSSENDF program now takes command line arguments to limit
  478. the types of work queue files it processes. See "Configuring
  479. WFSSENDF" on page 23.
  480.  
  481. The program interface to the user authorization exit has changed.
  482. See "Configuring an Authorization Exit Program" on page 24.
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523. _________________________________________________________________
  524.                Release 2.0
  525.  
  526.                              page -8-
  527.  
  528.  
  529.  
  530. b i r d s o n g
  531.                      WFS User Guide and Reference
  532.  
  533.                              Introduction
  534. _________________________________________________________________
  535.  
  536.  
  537.  
  538.  
  539.  
  540.  
  541.                 Chapter 2
  542.  
  543.               Introduction
  544.  
  545.  
  546. 2.1  ShareWare
  547.  
  548. Waffle File Server (WFS) is SHAREWARE; WFS is not in the public
  549. domain. WFS is not FreeWare. WFS is a full function software
  550. product; no features are crippled, none hidden, none restricted;
  551. there is not even any nagware. License terms are generally
  552. liberal. You're in luck!
  553.  
  554. Terms of the software license are provided in Section "Software
  555. License" on page 55 of this document.
  556.  
  557. To register WFS, print the file LICENSE.FRM, included in this
  558. distribution, and mail it with your registration fee to The
  559. Birdsong Company at the address shown on the form.
  560.  
  561.  
  562. 2.2  What is Waffle File Server
  563.  
  564. WFS began its life as a simple Mail Based Archive Server. Since
  565. its first public release, WFS has been enhanced with a number of
  566. features. It is a misnomer to call it a "File Server" at this
  567. point, because of the addition of unrelated features, but its
  568. name will endure.
  569.  
  570. WFS provides the BBS operator with a set of add on features to
  571. Waffle BBS. These features are:
  572.  
  573. o   Mail Based Archiver Server (MBAS)
  574.  
  575. o   Automatic Mailing Facility (AutoMail)
  576.  
  577. o   Remote Command Execution Facility
  578.  
  579. o   Mailing List Server
  580.  
  581. 2.2.1  Overview
  582.  
  583. WFS is fully integrated with Waffle. WFS gets much of its
  584. configuration data from Waffle's STATIC file just as Waffle does.
  585. WFS also adds its own unique statements to Waffle's STATIC file.
  586.  
  587.  
  588.  
  589. _________________________________________________________________
  590.                Release 2.0
  591.  
  592.                              page -9-
  593.  
  594.  
  595.  
  596. b i r d s o n g
  597.                      WFS User Guide and Reference
  598.  
  599.                              Introduction
  600. _________________________________________________________________
  601.  
  602.  
  603.  
  604. These statements define configuration data, enable features, and
  605. customize the appearance of WFS to the SysOp and end users.
  606.  
  607. Waffle permits the routing of mail messages via the ALIASES file.
  608. That is: you can cause mail messages to be forwarded to a
  609. different user, posted to a newsgroup, or processed by a program.
  610. WFS is based on the principle that via the ALIASES file, mail
  611. messages can be processed by WFS when Waffle is processing mail.
  612. The incoming message is routed to the WFSREQST.
  613.  
  614. WFSREQST may handle a message in its entirety. That is, it may
  615. read and interpret the message and take some action itself,
  616. possibly sending mail to the originator of the incoming message.
  617. WFS may also interpret the incoming message and write data to a
  618. file for the WFSSENDF program to process at a later time: a Work
  619. Queue.
  620.  
  621. The WFSSENDF program processes the Work Queue. Each file in the
  622. work queue is processed on a First In First Out (FIFO) basis. The
  623. WFSSENDF program may be run each cycle of Waffle's RUN.BAT file
  624. or at specific times via Waffle's SCHEDULE file.
  625.  
  626. WFS is configurable so that high volumes of mail addressed to the
  627. server do not saturate the system. The number of bytes
  628. representing a response to a command can be limited on a per
  629. message basis, per day basis, and on work queue size.
  630.  
  631. The WFS rate limiting features provide a BBS operator with the
  632. ability to manage a varying traffic rate without constant
  633. intervention.
  634.  
  635. WFS's MBAS feature restricts access to files using Waffle's DIRS
  636. file. Only directories named in Waffle's DIRS file can be
  637. accessed by a mail request. A directory may be accessable by
  638. interactive users, but not via WFS; similarly, mail users may
  639. have access to directories not accessable to interactive users.
  640.  
  641. The SysOp may deny access to WFS features. WFS provides a simple
  642. "deny list" method for excluding UserIDs, sites, domains or other
  643. string data expressed in an incomming message's reply address.
  644. More sophisticated exclusion techniques are provided by an
  645. Autorization User Exit program; the SysOp is responsible for
  646. providing the Authorization exit program.
  647.  
  648. WFS supplements restrictive security with an audit trail. WFS
  649. programs write a log of all activity to the WFSLOG file in the
  650. Waffle ADMIN directory. The SysOp has good foot prints to track
  651. and resolve problems in the WFSLOG.
  652.  
  653.  
  654.  
  655. _________________________________________________________________
  656.                Release 2.0
  657.  
  658.                             page -10-
  659.  
  660.  
  661.  
  662. b i r d s o n g
  663.                      WFS User Guide and Reference
  664.  
  665.                              Introduction
  666. _________________________________________________________________
  667.  
  668.  
  669.  
  670. 2.2.2  Mail Based Archive Server
  671.  
  672. A mail based archive server permits an email message to act like
  673. an internet FTP. What's that?
  674.  
  675. From a remote computer, a "requestor" sends email to the UserID
  676. routed to WFSREQST. The message body contains commands
  677. representing requests to transmit a file, via email, to the
  678. requestor.
  679.  
  680. WFSREQST will queue the request for processing later by WFSSENDF.
  681.  
  682. Because binary data, such as .EXE, .ZIP, etc. files cannot be
  683. sent directly via email, WFSSENDF invokes the UUENCODE program to
  684. convert binary files to ASCII files that are acceptable to
  685. network mailers. The encoded files are then mailed by WFSSENDF by
  686. invoking Waffle's RMAIL program. ASCII files mail be sent without
  687. uuencoding.
  688.  
  689. A list of files available for MBAS retrieval is created by the
  690. WFSFILES program. This list is can be retrieved by a command.
  691.  
  692. 2.2.3  Automatic Mailing Facility
  693.  
  694. The AutoMail facility builds upon WFS's MBAS feature. Where the
  695. MBAS requires the email originator to explicitly name, in the
  696. message body, the file he wants sent, the AutoMail facility
  697. determines which file to send based on which UserID the email was
  698. addressed to.
  699.  
  700. The AutoMail facility provides for immediate responses, that is:
  701. WFS sends the requested file as soon as it interprets the
  702. incomming message.
  703.  
  704. The AutoMail facility also provides for queuing the request for
  705. later processing by WFSSENDF.
  706.  
  707. 2.2.4  Remote Command Execution Facility
  708.  
  709. The Remote Command Execution Facility permits the SysOp to define
  710. custom commands that may be invoked when the WFSREQST program
  711. interprets that command in the message body.
  712.  
  713. The command is executed by the WFSREQST program and the results
  714. can be mailed back to the message originator.
  715.  
  716. This facility is protected by a required password expressed in
  717. the message body: No correct password, no command execution.
  718.  
  719.  
  720.  
  721. _________________________________________________________________
  722.                Release 2.0
  723.  
  724.                             page -11-
  725.  
  726.  
  727.  
  728. b i r d s o n g
  729.                      WFS User Guide and Reference
  730.  
  731.                              Introduction
  732. _________________________________________________________________
  733.  
  734.  
  735.  
  736. 2.2.5  Mailing List Server
  737.  
  738. The principle of a mailing list is simple enough: Mail addressed
  739. to the mailing list's UserID is forwarded to all members of the
  740. mailing list.
  741.  
  742. Waffle, alone, provides basic mailing list features by way of its
  743. ALIASES file. The SysOp must manually create and maintain entries
  744. in the ALIASES file for each mailing list maintained on the
  745. system.
  746.  
  747. WFS's Mailing List Server requires only that the SysOp define the
  748. alias for the mailing list and identify it to WFS in Waffle's
  749. STATIC file and create a directory in Waffles USER directory
  750. hierarch for each mailing list. An interactive user, an ordinary
  751. UserID in Waffle's PASSWORD file, then controls the features of
  752. the mailing list itself.
  753.  
  754. People wanting to become members of the mailing list may "JOIN"
  755. the mailing list by sending email to the WFS server address.
  756. After joining the mailing list, the new member may send mail to
  757. all members of the mailing list by sending mail the the mailing
  758. list's UserID; the mailing list's UserID is different from the
  759. WFS command server.
  760.  
  761. A mailing list member may remove himself from the mailing list by
  762. sending email to the WFS command server with the command to
  763. "UNJOIN" the list.
  764.  
  765. Other commands permit a list member to obtain a list of members
  766. or to obtain all old (archived) messages maintained by the
  767. mailing list server.
  768.  
  769.  
  770. 2.3  Supported Environment
  771.  
  772. WFS operates on IBM PCs and compatible clones; it operates where
  773. you already run Waffle. WFS is designed to operate with MS-DOS
  774. 3.0 or higher. WFS has been tested with MS-DOS 3.1, 3.3 and 5.0.
  775.  
  776. This release of WFS supports Waffle Release 1.65. It is not
  777. likely to be downward compatible because of the changes to
  778. Waffle's Files sub-system.
  779.  
  780. Waffle and WFS have been successfully run together under Windows
  781. 3.0. and 3.1
  782.  
  783.  
  784.  
  785.  
  786.  
  787. _________________________________________________________________
  788.                Release 2.0
  789.  
  790.                             page -12-
  791.  
  792.  
  793.  
  794. b i r d s o n g
  795.                      WFS User Guide and Reference
  796.  
  797.                              Introduction
  798. _________________________________________________________________
  799.  
  800.  
  801.  
  802. WFS has been tested on a generic 8 MHz 80286 AT compatible
  803. machine and a generic 33 MHz 80386 AT compatible machine.
  804.  
  805.  
  806.  
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.  
  852.  
  853. _________________________________________________________________
  854.                Release 2.0
  855.  
  856.                             page -13-
  857.  
  858.  
  859.  
  860. b i r d s o n g
  861.                      WFS User Guide and Reference
  862.  
  863.                      Message Command Language
  864. _________________________________________________________________
  865.  
  866.  
  867.  
  868.  
  869.  
  870.  
  871.                 Chapter 3
  872.  
  873.             Message Command Language
  874.  
  875.  
  876. WFS implements a number of commands interpreted in an incomming
  877. mail message. Each of these commands is optional; the SysOp may
  878. selectively enable any, all or none of these commands via
  879. statements in the STATIC file. See "wfs.enable.*" on page 46 for
  880. directions to enable commands.
  881.  
  882. There are some general rules for commands:
  883.  
  884. o   Commands and operands are, in general, not case sensitive;
  885.     the operand of the "password" command is case sensitive.
  886.  
  887. o   Leading spaces are permitted before the command. Commands
  888.     must be the first token on a line.
  889.  
  890. o   A '#' character as the first character on a line is treated
  891.     as a comment. The line does not cause an error.
  892.  
  893. o   Blank lines are ignored.
  894.  
  895. o   A line beginning with the string "--" is treated as end of
  896.     input. The remainder of the message is ignored.
  897.  
  898. The built-in WFS commands are:
  899.  
  900.      HELP
  901.      DIR
  902.      NEWFILES
  903.      GET
  904.      QUIT
  905.      PING
  906.      PASSWORD
  907.      JOIN
  908.      UNJOIN
  909.      ARCHIVE
  910.      MEMBERS
  911.      ADDMEMBER
  912.      DROPMEMBER
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919. _________________________________________________________________
  920.                Release 2.0
  921.  
  922.                             page -14-
  923.  
  924.  
  925.  
  926. b i r d s o n g
  927.                      WFS User Guide and Reference
  928.  
  929.                      Message Command Language
  930. _________________________________________________________________
  931.  
  932.  
  933.  
  934. The SysOp may add site specific commands to the WFS built-in
  935. commands via the "Remote Command Execution Facility". See that
  936. topic later in this manual.
  937.  
  938.  
  939. 3.1  The HELP Command
  940.  
  941. The HELP command causes WFS to send the file identified via the
  942. "wfs.help" statement in Waffle's STATIC file. The file is
  943. included in the session transcript.
  944.  
  945. Anything after the HELP on the line is ignored.
  946.  
  947. The SysOp may selectively enable and optionally assign multiple
  948. aliases for the HELP command using the wfs.enable.help STATIC
  949. file statement.
  950.  
  951.  
  952. 3.2  The DIR Command
  953.  
  954. The DIR command causes WFS to send the file identified via the
  955. "wfs.filelist" statement in Waffle's STATIC file. The request for
  956. the directory is queued for later transmission.
  957.  
  958. Anything after the DIR on the line is ignored.
  959.  
  960. The SysOp may assign multiple names for the DIR command using the
  961. wfs.enable.dir STATIC file statement.
  962.  
  963.  
  964. 3.3  The NEWFILES Command
  965.  
  966. The NEWFILES command causes WFS to send a list of files newer
  967. that the user specified date. The request for NEWFILES is queued
  968. like a the DIR request.
  969.  
  970. The systax for the NEWFILES command is:
  971.  
  972.      NEWFILES <date>
  973.  
  974. <date> is required. <date> has the form of mm-dd-yy. WFS is
  975. strict about checking the form of <date>; if it does not look
  976. like it expects, the command will be rejected.
  977.  
  978. A valid specification for the NEWFILES command is:
  979.  
  980.      NEWFILES 02-15-92
  981.  
  982.  
  983.  
  984.  
  985. _________________________________________________________________
  986.                Release 2.0
  987.  
  988.                             page -15-
  989.  
  990.  
  991.  
  992. b i r d s o n g
  993.                      WFS User Guide and Reference
  994.  
  995.                      Message Command Language
  996. _________________________________________________________________
  997.  
  998.  
  999.  
  1000. The SysOp may selectively enable and optionally assign multiple
  1001. aliases for the NEWFILES command using the wfs.enable.newfiles
  1002. STATIC file statement.
  1003.  
  1004.  
  1005. 3.4  The GET Command
  1006.  
  1007. The GET command causes WFS to send a file to the requestor.
  1008.  
  1009. The syntax for the GET command is:
  1010.  
  1011.      GET <filespec> [uue[ncode] | xxe[ncode]]
  1012.  
  1013. <filespec> is required. <filespec> must specify a path, but
  1014. without a drive specification. The filespec is not relative to
  1015. any directory. Unlike interactive waffle, where the user is
  1016. placed in the directory defined by Waffle's "files" STATIC file
  1017. statement, WFS has no default starting directory.
  1018.  
  1019. uuencode or xxencode is optional and may be abreviated as "uue"
  1020. or "xxe", respectively. If neither are specified, the file is
  1021. sent according to the rules for sending files set by the system
  1022. administrator. That is: the system administrator may define a
  1023. list of file extensions that will always be uuencoded for
  1024. transmission.
  1025.  
  1026. If uuencode is specified, the file is sent uuencoded.
  1027.  
  1028. If xxencode is specified, the file is sent xxencoded.
  1029.  
  1030. For example:
  1031.  
  1032.      GET /public/wfs110.zip
  1033.      GET /public/waffle/waf165.zip
  1034.  
  1035. are syntactically correct.
  1036.  
  1037.      GET c:/autoexec.bat
  1038.      GET e:/wfs/src/wfsreqst.c
  1039.  
  1040. are not syntactically correct; both incorrect examples have a
  1041. drive specifier.
  1042.  
  1043.      GET autoexec.bat
  1044.      GET src/wfsreqst.c
  1045.  
  1046. are not correct. Both do not specify the leading slash.
  1047.  
  1048.  
  1049.  
  1050.  
  1051. _________________________________________________________________
  1052.                Release 2.0
  1053.  
  1054.                             page -16-
  1055.  
  1056.  
  1057.  
  1058. b i r d s o n g
  1059.                      WFS User Guide and Reference
  1060.  
  1061.                      Message Command Language
  1062. _________________________________________________________________
  1063.  
  1064.  
  1065.  
  1066. The SysOp may selectively enable and optionally assign multiple
  1067. aliases for the GET command using the wfs.enable.get STATIC file
  1068. statement.
  1069.  
  1070.  
  1071. 3.5  The PING Command
  1072.  
  1073. The PING command causes WFS make a simple reply, via the session
  1074. transcript, to the requestor. To test the path to a WFS at a
  1075. site, send the PING command.
  1076.  
  1077. The SysOp may selectively enable and optionally assign multiple
  1078. aliases for the PING command using the wfs.enable.ping STATIC
  1079. file statement.
  1080.  
  1081.  
  1082. 3.6  The QUIT Command
  1083.  
  1084. The word "quit" as the first token on a line causes WFS to quit
  1085. processing input as if end of input had occurred.
  1086.  
  1087. The SysOp may selectively enable and optionally assign multiple
  1088. aliases for the QUIT command using the wfs.enable.quit STATIC
  1089. file statement.
  1090.  
  1091.  
  1092. 3.7  The PASSWORD Command
  1093.  
  1094. Some commands require the user to specify a password in the
  1095. incomming message before invoking the SysOp defined command. The
  1096. syntax for the PASSWORD command is:
  1097.  
  1098.      password <string>
  1099.  
  1100. Where string is the password for the SysOp defined command that
  1101. will appear in the input stream. The operand of the PASSWORD
  1102. command is case sensitive.
  1103.  
  1104. The SysOp may selectively enable and optionally assign multiple
  1105. aliases for the PASSWORD command using the wfs.enable.password
  1106. STATIC file statement.
  1107.  
  1108.  
  1109. 3.8  SysOp Defined Commands
  1110.  
  1111. The SysOp may define commands unique to this site.
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117. _________________________________________________________________
  1118.                Release 2.0
  1119.  
  1120.                             page -17-
  1121.  
  1122.  
  1123.  
  1124. b i r d s o n g
  1125.                      WFS User Guide and Reference
  1126.  
  1127.                      Message Command Language
  1128. _________________________________________________________________
  1129.  
  1130.  
  1131.  
  1132. See "Remote Command Execution Facility" on page 29 for a
  1133. description of this feature.
  1134.  
  1135.  
  1136. 3.9  The JOIN Command
  1137.  
  1138. The JOIN command causes WFS to add the originator of the email to
  1139. a mailing list.
  1140.  
  1141. The join command is mailed to the command server address.
  1142.  
  1143. The syntax for the JOIN command is:
  1144.  
  1145.      join <listname>
  1146.  
  1147. Where <listname> is the name of the mailing list.
  1148.  
  1149. To subscribe to the mailing list, he would say:
  1150.  
  1151.      join test-list
  1152.  
  1153. If a subscriber wants to mail to all subscribers, then addresses
  1154. mail as:
  1155.  
  1156.      test-list@FroBaz.com
  1157.  
  1158. The syntax of the other mail list commands is similar.
  1159.  
  1160. The SysOp may selectively enable and optionally assign multiple
  1161. aliases for the JOIN command using the wfs.enable.join STATIC
  1162. file statement.
  1163.  
  1164.  
  1165. 3.10  The UNJOIN Command
  1166.  
  1167. The UNJOIN command causes WFS to remove the originator of the
  1168. email from a mailing list.
  1169.  
  1170. The syntax for the UNJOIN command is:
  1171.  
  1172.      unjoin <listname>
  1173.  
  1174. The SysOp may selectively enable and optionally assign multiple
  1175. aliases for the UNJOIN command using the wfs.enable.unjoin STATIC
  1176. file statement.
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183. _________________________________________________________________
  1184.                Release 2.0
  1185.  
  1186.                             page -18-
  1187.  
  1188.  
  1189.  
  1190. b i r d s o n g
  1191.                      WFS User Guide and Reference
  1192.  
  1193.                      Message Command Language
  1194. _________________________________________________________________
  1195.  
  1196.  
  1197.  
  1198. 3.11  The ARCHIVE Command
  1199.  
  1200. The ARCHIVE command causes WFS to send all archived messages for
  1201. the named mailing list to the requestor. The request is queued
  1202. for subsequent processing.
  1203.  
  1204. The syntax for the ARCHIVE command is:
  1205.  
  1206.      archive <listname>
  1207.  
  1208. The SysOp may selectively enable and optionally assign multiple
  1209. aliases for the ARCHIVE command using the wfs.enable.archive
  1210. STATIC file statement.
  1211.  
  1212.  
  1213. 3.12  The MEMBERS Command
  1214.  
  1215. The MEMBERS command causes WFS to send a list of all members
  1216. (subscribers) to the originator of this message.
  1217.  
  1218.      members <listname>
  1219.  
  1220. The SysOp may selectively enable and optionally assign multiple
  1221. aliases for the MEMBERS command using the wfs.enable.members
  1222. STATIC file statement.
  1223.  
  1224.  
  1225. 3.13  The ADDMEMBER Command
  1226.  
  1227. The ADDMEMBER command is used to add a member to a mailing list.
  1228. Use the ADDMEMBER, as compared with the JOIN command, to add a
  1229. member other than the originator of the message to a mailing
  1230. list. The syntax of the ADDMEMBER command is:
  1231.  
  1232.      addmember <listname> <member_address>
  1233.  
  1234. The ADDMEMBER command requires that a password be specified
  1235. before the ADDMEMBER command; see the PASSWORD command. The
  1236. password is checked, case significant, against the password for
  1237. the mailing list named in the command. An exact match is required
  1238. for the member_address to be added to the member list.
  1239.  
  1240. This command is intended for use where the mailing list is
  1241. configured with the JOIN command disabled for the list. A mailing
  1242. list owner can add a member to his mailing list using this
  1243. command. The following example demonstrates a password followed
  1244. by an ADDMEMBER:
  1245.  
  1246.  
  1247.  
  1248.  
  1249. _________________________________________________________________
  1250.                Release 2.0
  1251.  
  1252.                             page -19-
  1253.  
  1254.  
  1255.  
  1256. b i r d s o n g
  1257.                      WFS User Guide and Reference
  1258.  
  1259.                      Message Command Language
  1260. _________________________________________________________________
  1261.  
  1262.  
  1263.  
  1264.      password  TheList'sPassword
  1265.      addmember test-list frobaz@foo.bar.com
  1266.  
  1267. When using this command, the member_address must be specified
  1268. exactly as it would appear in the "From:" or "Reply-to:" message
  1269. header line. This is significant because some mailers re-write
  1270. addresses for reasons known only to the gods and perverse site
  1271. administrators.
  1272.  
  1273. The SysOp may selectively enable and optionally assign multiple
  1274. aliases for the ADDMEMBER command using the wfs.enable.addmember
  1275. STATIC file statement.
  1276.  
  1277.  
  1278. 3.14  The DROPMEMBER Command
  1279.  
  1280. The DROPMEMBER command is used to delete a member from a mailing
  1281. list. Use the DROPMEMBER command, as compared with the UNJOIN
  1282. command, to remove a member, other than the originator of the
  1283. message, from a mailing list. The syntax of the DROPMEMBER
  1284. command is:
  1285.  
  1286.      dropmember <listname> <member_address>
  1287.  
  1288. The DROPMEMBER command requires that a password be specified
  1289. before the DROPMEMBER command; see the PASSWORD command. The
  1290. password is checked, case significant, against the password for
  1291. the mailing list named in the command. An exact match is required
  1292. for the member_address to be dropped from the member list.
  1293.  
  1294. When using this command, the member_address must be specified
  1295. exactly as it appears in the member file for the named mailing
  1296. list.
  1297.  
  1298. The SysOp may selectively enable and optionally assign multiple
  1299. aliases for the DROPMEMBER command using the
  1300. wfs.enable.dropmember STATIC file statement.
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315. _________________________________________________________________
  1316.                Release 2.0
  1317.  
  1318.                             page -20-
  1319.  
  1320.  
  1321.  
  1322. b i r d s o n g
  1323.                      WFS User Guide and Reference
  1324.  
  1325.                            Installing WFS
  1326. _________________________________________________________________
  1327.  
  1328.  
  1329.  
  1330.  
  1331.  
  1332.  
  1333.                 Chapter 4
  1334.  
  1335.              Installing WFS
  1336.  
  1337.  
  1338. If you are updating to this release of WFS from a previous
  1339. release, see "Converting From Earlier Releases of WFS" on page
  1340. 26. If you are installing WFS for the first time, read this
  1341. section; you may skip the topic "Converting From Earlier Releases
  1342. of WFS".
  1343.  
  1344. Installing WFS is not hard, but it does presuppose a certain
  1345. level of skill with both MS-DOS, various utility programs, and
  1346. with Waffle. You should be experienced using MS-DOS. You should
  1347. know how to use PKUNZIP. You should also have experience as a
  1348. Waffle System Operator (SysOp). You will need to understand the
  1349. principle of Waffle's static file. Experience with making changes
  1350. to the static file is highly desirable. See the Waffle
  1351. documentation.
  1352.  
  1353. There are several steps to installing WFS.
  1354.  
  1355. o   Planning your configuration.
  1356.  
  1357. o   Installing the Programs.
  1358.  
  1359. o   Updating Waffle's STATIC file.
  1360.  
  1361. o   Configuring the Mail Based Archive Server.
  1362.  
  1363. o   Configuring AutoMail
  1364.  
  1365. o   Configuring the Remote Command Execution Facility
  1366.  
  1367. o   Configuring Mailing Lists
  1368.  
  1369.  
  1370. 4.1  Planning your Configuration
  1371.  
  1372. The planning issues for WFS are:
  1373.  
  1374. o   What user ID will receive incoming requests?
  1375.  
  1376. o   What user ID will mail responses to requests?
  1377.  
  1378.  
  1379.  
  1380.  
  1381. _________________________________________________________________
  1382.                Release 2.0
  1383.  
  1384.                             page -21-
  1385.  
  1386.  
  1387.  
  1388. b i r d s o n g
  1389.                      WFS User Guide and Reference
  1390.  
  1391.                            Installing WFS
  1392. _________________________________________________________________
  1393.  
  1394.  
  1395.  
  1396. o   Disk space for Waffle's spool and temporary directories.
  1397.  
  1398. 4.1.1  Incoming User IDs
  1399.  
  1400. Choose the user ID for WFS's incoming mail to reflect its use.
  1401. For example:
  1402.  
  1403.      File-Request
  1404.      Archive-Server
  1405.      listserv
  1406.  
  1407. The ID should be different from the ID that mails responses to
  1408. requests.
  1409.  
  1410. 4.1.2  Outbound User ID
  1411.  
  1412. The user ID for outbound requests should be different from the ID
  1413. that receives requests (How can I emphasize this enough!). Should
  1414. a response to a request bounce, it will be returned to this ID.
  1415.  
  1416. You will have to create a directory in Waffle's USER directory
  1417. for this ID. WFSREQST writes files representing queued requests
  1418. in this directory. WFSSENDF reads the queued requests from this
  1419. directory.
  1420.  
  1421. 4.1.3  Disk Space
  1422.  
  1423. WFS uses disk space in the Waffle USER directory to store queued
  1424. requests. The queue files are small, but there may be large
  1425. numbers of them, depending on how you set WFS's rate limiting
  1426. options. You may have to determine this disk usage requirement by
  1427. experiment.
  1428.  
  1429. Mailing files may use large amounts of space in the Waffle spool
  1430. directory. The drive containing the spool directory should have
  1431. enough space to accommodate the 2.5 times the number of bytes
  1432. specified in the wfs.daylimit configuration option.
  1433.  
  1434. When uuencoding files for mailing, WFS uses the directory
  1435. specified in Waffle's "temporary" static file statement. The
  1436. drive containing this directory should be 2.5times the size of
  1437. the largest file that could be mailed.
  1438.  
  1439.  
  1440.  
  1441.  
  1442.  
  1443.  
  1444.  
  1445.  
  1446.  
  1447. _________________________________________________________________
  1448.                Release 2.0
  1449.  
  1450.                             page -22-
  1451.  
  1452.  
  1453.  
  1454. b i r d s o n g
  1455.                      WFS User Guide and Reference
  1456.  
  1457.                            Installing WFS
  1458. _________________________________________________________________
  1459.  
  1460.  
  1461.  
  1462. 4.2  Installing the Programs
  1463.  
  1464. Copy the WFS*.EXE files into a directory reachable by the MS-DOS
  1465. PATH environment variable while Waffle is running. The WAFFLE/BIN
  1466. directory is suggested.
  1467.  
  1468. UnZip the file UUEXE515.ZIP. Copy the executable files into the
  1469. WAFFLE/BIN directory.
  1470.  
  1471. 4.2.1  Configuring WFSREQST
  1472.  
  1473. Edit Waffle's SYSTEM/ALIASES file. For the user ID you want to
  1474. receive mail on behalf of WFS, make an entry that redirects mail
  1475. for that ID into the program wfsreqst.exe. For example:
  1476.  
  1477.      file-request | f:/waffle/bin/wfsreqst
  1478.  
  1479. The user ID for the request program need not have a directory in
  1480. the WAFFLE/USER directory.
  1481.  
  1482. 4.2.2  Configuring WFSSENDF
  1483.  
  1484. Program WFSSENDF operates on queued requests to mail files to
  1485. requestors. WFSSENDF may be run from the Waffle RUN.BAT batch
  1486. file or it may be run from the Waffle SCHEDULE file.
  1487.  
  1488. If you choose to run it from the RUN.BAT batch file, you may want
  1489. to place it after execution of the UUXQT program. This will cause
  1490. newly processed requests to be responded to immediately.
  1491.  
  1492. If you choose to run it from the SCHEDULE file, you may want to
  1493. schedule it at a time of infrequent interactive use and at a time
  1494. when passing mail to other sites is cheapest. You may also want
  1495. to schedule it just before polling another site.
  1496.  
  1497. The user ID that will be the mailer needs a directory in the
  1498. WAFFLE/USER directory. You must create this directory; WFS will
  1499. not do it for you. For example, at Birdsong, the user ID that
  1500. mails files to requestors is called FILESERV. WFS will create and
  1501. delete files in this directory.
  1502.  
  1503.  
  1504. 4.2.2.1  Command Line Arguments
  1505.  
  1506. By default, WFSSENDF processes all work queue items in the work
  1507. queue each time it is run.
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513. _________________________________________________________________
  1514.                Release 2.0
  1515.  
  1516.                             page -23-
  1517.  
  1518.  
  1519.  
  1520. b i r d s o n g
  1521.                      WFS User Guide and Reference
  1522.  
  1523.                            Installing WFS
  1524. _________________________________________________________________
  1525.  
  1526.  
  1527.  
  1528. If you run WFSSENDF from the SCHEDULE file you may want to
  1529. process only certain types of work queue items depending on the
  1530. time of day. For example you may run WFSSENDF several times per
  1531. day, but during the daytime you do not want to process work queue
  1532. items for file requests to minimize telephone costs. Each work
  1533. queue type may be suppressed using a command line argument.
  1534.  
  1535. The syntax for these command line arguments is:
  1536.  
  1537. -A        Suppress AutoMail processing
  1538.  
  1539. -F        Suppress Files processing.
  1540.  
  1541. -D        Suppress Directory processing.
  1542.  
  1543. -N        Suppress NewFiles processing.
  1544.  
  1545. -M        Suppress Mailing List processing.
  1546.  
  1547. -R        Suppress Mailing List Archive processing.
  1548.  
  1549. For example, to prevent WFSSENDF from processing work queue items
  1550. for Files, Directories, and NewFiles:
  1551.  
  1552.      WFSSENDF -F -D -N
  1553.  
  1554. 4.2.3  Configuring an Authorization Exit Program
  1555.  
  1556. An optional authorization exit program may be used to further
  1557. enhance the security of WFS. The System Operator is responsible
  1558. for providing the authorization exit program.
  1559.  
  1560. The authorization exit is invoked after WFSREQST interprets the
  1561. message header in the incomming request. The program is invoked
  1562. with one "command line argument": the interpreted email address
  1563. of the requestor
  1564.  
  1565. The authroization exit will see "argv[0]" as the fully qualified
  1566. pathname of the authorization exit program; "argv[1]" is the
  1567. email address of the requestor; "argv[2]" is NULL. (This babble
  1568. should be meaningful to C language programmers).
  1569.  
  1570. The authorization exit program should return a zero (0) value to
  1571. tell WFSREQST to continue processing the request. A return value
  1572. of one (1) tells WFSREQST to reject the message. Other return
  1573. values are not defined and will cause WFSREQST to terminate
  1574. abnormally.
  1575.  
  1576.  
  1577.  
  1578.  
  1579. _________________________________________________________________
  1580.                Release 2.0
  1581.  
  1582.                             page -24-
  1583.  
  1584.  
  1585.  
  1586. b i r d s o n g
  1587.                      WFS User Guide and Reference
  1588.  
  1589.                            Installing WFS
  1590. _________________________________________________________________
  1591.  
  1592.  
  1593.  
  1594. When a command is rejected by the authorization exit, WFSREQST
  1595. writes a message to the WFSLOG file.
  1596.  
  1597. To enable use of the authorization exit, use the "wfs.authexit"
  1598. static file statement. WFS.AUTHEXIT should point to the fully
  1599. qualified pathname of the authorization exit program.
  1600.  
  1601. A sample source file, WFSAUTH.C, is provided for those users who
  1602. want to custom tailor the user authorization feature of WFS. The
  1603. authorization exit is not required to use WFS, but is provided
  1604. for users who want the additional control.
  1605.  
  1606. Compile the sample authorization exit using Microsoft C. You may
  1607. use any language, any compiler that accepts command line
  1608. arguments and that supports "return values" to write your own
  1609. authorization exit.
  1610.  
  1611.  
  1612. 4.3  Updating Waffle's STATIC File
  1613.  
  1614. See "Waffle's Static File" on page 40. This section describes all
  1615. the STATIC file variables used by WFS. A sample STATIC file,
  1616. "STATIC.SMP" is provided. you may customize this file to suit
  1617. your requirements.
  1618.  
  1619. Merge this file with your Waffle STATIC file.
  1620.  
  1621.  
  1622. 4.4  Other WFS Files
  1623.  
  1624. Sample message files, used by WFS, are provided for your
  1625. customization.
  1626.  
  1627. Install these files by copying them to the directory you have
  1628. selected for the user ID of the mailer. You may place these files
  1629. elsewhere, if you like; WFS's STATIC file statements determine
  1630. the path and filenames for these files.
  1631.  
  1632. o   WELCOME.TXT. WFS pre-pends this file to the session
  1633.     transcript. You will want to modify this file for your site.
  1634.  
  1635. o   SIGNATUR.TXT. WFS appends this file to the session
  1636.     transcript. You will want to modify this file for your site.
  1637.     You almost certainly will not like the contents of the the
  1638.     default file.
  1639.  
  1640. o   HELP.TXT WFS mails this file in response the HELP command.
  1641.     You will want to modify this file for your site.
  1642.  
  1643.  
  1644.  
  1645. _________________________________________________________________
  1646.                Release 2.0
  1647.  
  1648.                             page -25-
  1649.  
  1650.  
  1651.  
  1652. b i r d s o n g
  1653.                      WFS User Guide and Reference
  1654.  
  1655.                            Installing WFS
  1656. _________________________________________________________________
  1657.  
  1658.  
  1659.  
  1660. Additional files are provided as examples. These files are fully
  1661. annotated to aid you in configuring your system to your needs.
  1662.  
  1663. The sample files are co-ordinated, that is: they all work
  1664. together. For instance, if an entry is required in the STATIC
  1665. file and has a companion entry in the ALIASES file, then the
  1666. companion entry in the ALIASES file is provided.
  1667.  
  1668. o   STATIC.SMP. This is a sample STATIC file.
  1669.  
  1670. o   ALIASES.SMP This is a sample ALIASES file.
  1671.  
  1672. o   MAILLIST.CFG. This is a sample Mailing List configuration
  1673.     file.
  1674.  
  1675. o   WHATTIME.CDF. This is a sample Command Definition File.
  1676.  
  1677.  
  1678. 4.5  Converting From Earlier Releases of WFS
  1679.  
  1680. There are a number of new features and changes to familiar
  1681. features in this release of WFS. "" on page ??? describes these
  1682. changes.
  1683.  
  1684. The format of the WFS control file (QCONTROL) has changed for
  1685. this release. Also the format of the work queue files (QDxxxxxx)
  1686. files has changed. A program, WFSCONV2, will convert the WFS
  1687. control file and any work queue files.
  1688.  
  1689. You may convert the control file, or if you choose, delete it. If
  1690. you delete it, rate limiting data and the queue file sequence
  1691. number will be lost. A new control file, in the new format, will
  1692. be created by the new version WFS programs that need them. The
  1693. choice is yours.
  1694.  
  1695. If you convert the control file, the existing control file is not
  1696. deleted. After you are satisfied that the new release is to your
  1697. liking, you may delete the old file.
  1698.  
  1699. You may use old version of WFSSENDF to process, and delete, any
  1700. existing work queue files.
  1701.  
  1702. If you convert any work queue files, the old work queue files
  1703. remain. After the new WFS programs have processed the converted
  1704. work queue files, you may delete the old ones.
  1705.  
  1706.  
  1707.  
  1708.  
  1709.  
  1710.  
  1711. _________________________________________________________________
  1712.                Release 2.0
  1713.  
  1714.                             page -26-
  1715.  
  1716.  
  1717.  
  1718. b i r d s o n g
  1719.                      WFS User Guide and Reference
  1720.  
  1721.                            Installing WFS
  1722. _________________________________________________________________
  1723.  
  1724.  
  1725.  
  1726. To run the WFSCONV2 program, set the WAFFLE environment variable
  1727. to point to Waffles static file, then execute WFSCONV2. The
  1728. command takes no operands.
  1729.  
  1730. Should you have to fall back to a release of WFS prior to
  1731. WFS1.3.x, there is no reverse conversion facility. Sorry, if I
  1732. seem over confident here.
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738.  
  1739.  
  1740.  
  1741.  
  1742.  
  1743.  
  1744.  
  1745.  
  1746.  
  1747.  
  1748.  
  1749.  
  1750.  
  1751.  
  1752.  
  1753.  
  1754.  
  1755.  
  1756.  
  1757.  
  1758.  
  1759.  
  1760.  
  1761.  
  1762.  
  1763.  
  1764.  
  1765.  
  1766.  
  1767.  
  1768.  
  1769.  
  1770.  
  1771.  
  1772.  
  1773.  
  1774.  
  1775.  
  1776.  
  1777. _________________________________________________________________
  1778.                Release 2.0
  1779.  
  1780.                             page -27-
  1781.  
  1782.  
  1783.  
  1784. b i r d s o n g
  1785.                      WFS User Guide and Reference
  1786.  
  1787.                      Configuring WFS Features
  1788. _________________________________________________________________
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794.  
  1795.                 Chapter 5
  1796.  
  1797.             Configuring WFS Features
  1798.  
  1799.  
  1800. 5.1  Configuring the Mail Based Archive Server
  1801.  
  1802. The Mail Based Archive Server (MBAS) is WFS's original feature.
  1803. Configuring the MBAS requires a few steps.
  1804.  
  1805. o   Configure STATIC file statements that control WFS's
  1806.     operation. See the "Waffle's Static File" on page 40.
  1807.  
  1808. o   Configuring your SCHEDULE file or RUN.BAT to run the WFSFILES
  1809.     program; the WFSFILES program provides users with a list of
  1810.     files available via the MBAS feature.
  1811.  
  1812.  
  1813. 5.2  Waffle's DIRS file
  1814.  
  1815. WFS uses Waffle's DIRS file to identify directories accessable to
  1816. requestors. WFS uses the "filearea", "/dir=", "/info=" fields
  1817. from each DIRS file entry.
  1818.  
  1819. WFS also uses the tokens "/wfs.deny" and "/wfs.hide" to control
  1820. access and visibility to directories named in the DIRS file
  1821.  
  1822. 5.2.1  /WFS.DENY
  1823.  
  1824. By default, all directories identified by a DIRS file statement
  1825. are accessable to WFS. When WFS finds a DIRS file statement with
  1826. the "/wfs.deny" token, then access to that directory via WFS is
  1827. denied. In the following example:
  1828.  
  1829.      public /dir="f:/public"         /access=1
  1830.  
  1831.      waffle /dir="f:/public/waffle"  /access=1
  1832.  
  1833.      special /dir="f:/special"         /access=9 /wfs.deny
  1834.  
  1835. directories identified by the "public" and "waffle" statements
  1836. are accessable to WFS; the directory identified by the "special"
  1837. statement cannot be accessed by WFS.
  1838.  
  1839.  
  1840.  
  1841.  
  1842.  
  1843. _________________________________________________________________
  1844.                Release 2.0
  1845.  
  1846.                             page -28-
  1847.  
  1848.  
  1849.  
  1850. b i r d s o n g
  1851.                      WFS User Guide and Reference
  1852.  
  1853.                      Configuring WFS Features
  1854. _________________________________________________________________
  1855.  
  1856.  
  1857.  
  1858. DIRS file statements having the "/wfs.deny" parameter are not
  1859. listed by the WFSFILES program.
  1860.  
  1861. 5.2.2  /WFS.HIDE
  1862.  
  1863. The "/wfs.hide" token identifies the directory as "invisible" to
  1864. the WFSFILES program. The directory and files in the directory
  1865. are accessable to WFS, but the directory and its contents are not
  1866. shown in program WFSFILES output. Consider this example:
  1867.  
  1868.      public /dir="f:/public"         /access=1
  1869.  
  1870.      waffle /dir="f:/public/waffle"  /access=1
  1871.  
  1872.      special /dir="f:/special"         /access=9 /wfs.hide
  1873.  
  1874. The directory, "special", is now accessable via WFS. The WFSFILES
  1875. program does not show the directory in its output. Only users who
  1876. know of the directory's existence and the contents of the
  1877. directory may request files from this directory.
  1878.  
  1879. 5.2.3  Configuring WFSFILES
  1880.  
  1881. The WFSFILES program reads Waffle's DIRS file. For each entry in
  1882. the DIRS file not having either of "/wfs.deny" or "/wfs.hide"
  1883. token, WFSFILES lists files in this directory to stdout. Stdout
  1884. may be re-directed to a file. For example:
  1885.  
  1886.      WFSFILES >f:\user\fileserv\filelist.txt
  1887.  
  1888. You may want to run WFSFILES via the Waffle SCHEDULE file.
  1889.  
  1890. WFSFILES accepts command line arguments.
  1891.  
  1892.      WFSFILES [-a] [-b] [-s]
  1893.  
  1894. Where:
  1895.  
  1896. -a        Suppress the "File Area:" line on output.
  1897.  
  1898. -b        If a "@banner" file exists in the directory named by
  1899.         the /dirs= statement, print the file to stdout.
  1900.  
  1901. -s        Suppress the "splash" (program ID, date, time, etc.)
  1902.         from the stdout output.
  1903.  
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909. _________________________________________________________________
  1910.                Release 2.0
  1911.  
  1912.                             page -29-
  1913.  
  1914.  
  1915.  
  1916. b i r d s o n g
  1917.                      WFS User Guide and Reference
  1918.  
  1919.                      Configuring WFS Features
  1920. _________________________________________________________________
  1921.  
  1922.  
  1923.  
  1924. 5.3  Automatic Mailing Facility
  1925.  
  1926. The AutoMail facility is the easiest feature of WFS to configure.
  1927.  
  1928. Instructions for configuring the AutoMail facility are described
  1929. in the Chapter titled "Waffle's Static File". See "wfs.automail
  1930. on page 47 and in "wfs.automail.immediate on page 48
  1931.  
  1932. Other STATIC file statements related to uuencode apply to the
  1933. AutoMail facility.
  1934.  
  1935.  
  1936. 5.4  Remote Command Execution Facility
  1937.  
  1938. A few steps are required to create your own commands.
  1939.  
  1940. o   Place a "wfs.command" statement in Waffle's STATIC file.
  1941.  
  1942.     Instructions for coding the "wfs.command" statement are in
  1943.     "wfs.command" on page 48.
  1944.  
  1945. o   Create a "Command Definition File" in the USER directory
  1946.     named by the "wfs.sender" STATIC file statement.
  1947.  
  1948.     The function of the Command Definition File and its syntax is
  1949.     described in the next section.
  1950.  
  1951. o   Create a HELP topic in the "help" file, if you intend to make
  1952.     the command available to other users.
  1953.  
  1954. 5.4.1  The Command Definition File
  1955.  
  1956. The Remote Command Execution Facility, may be enabled by a
  1957. statement in Waffle's STATIC file; a wfs.command statement is
  1958. used to define a command that may be invoked via an incomming
  1959. message.
  1960.  
  1961. The CDF file has the file extension ".CDF"; all active .CDF files
  1962. are stored in the user directory named by the wfs.sender STATIC
  1963. file statement.
  1964.  
  1965. The .CDF file has the same general syntax as Waffle's STATIC
  1966. file:
  1967.  
  1968.      variablename : operand(s)
  1969.  
  1970.  
  1971.  
  1972.  
  1973.  
  1974.  
  1975. _________________________________________________________________
  1976.                Release 2.0
  1977.  
  1978.                             page -30-
  1979.  
  1980.  
  1981.  
  1982. b i r d s o n g
  1983.                      WFS User Guide and Reference
  1984.  
  1985.                      Configuring WFS Features
  1986. _________________________________________________________________
  1987.  
  1988.  
  1989.  
  1990. A keyword beginning in column one, followed by optional
  1991. whitespace, followed by the colon character (':'), followed by
  1992. optional whitespace, followed by one or more operands.
  1993.  
  1994. Blank lines are ignored. Lines beginning with '#' or ';' are
  1995. ignored.
  1996.  
  1997. CDF files have the following statements:
  1998.  
  1999. o   FileIdent
  2000.  
  2001. o   Command
  2002.  
  2003. o   Password
  2004.  
  2005. o   UserOperands
  2006.  
  2007. o   MailResults
  2008.  
  2009. o   RecordResults
  2010.  
  2011. The statement identifiers are all case insensitive: you may code
  2012. them in upper, lower or mixed case. Except where noted, the
  2013. operands of these commands are also case insensitive.
  2014.  
  2015. Where a statement is defined to take a "boolean" operator, any of
  2016. "yes", "true", "1" may be used to define the boolean equivalent.
  2017. Any of "no", "false", "0" may be used to define the boolean
  2018. equivalent.
  2019.  
  2020. A sample .CDF file (UDATE.CDF) is included in the distribution of
  2021. WFS. A program, WFSUDATE (executable and source in C), are also
  2022. included in the distribution. These samples can show the effects
  2023. of the Command Execution Facility. The WFSUDATE program is not
  2024. particularly meaningful; it just demonstrates the facility.
  2025.  
  2026. 5.4.1.1  FileIdent
  2027.  
  2028. The FileIdent statement is required. It's operand is the fixed
  2029. value "WFS2Command". The FileIdent statement is used by WFSREQST
  2030. to help identify the file as a WFS CDF file.
  2031.  
  2032. Specify this statement exactly as shown:
  2033.  
  2034.      FileIdent : WFS2Command
  2035.  
  2036.  
  2037.  
  2038.  
  2039.  
  2040.  
  2041. _________________________________________________________________
  2042.                Release 2.0
  2043.  
  2044.                             page -31-
  2045.  
  2046.  
  2047.  
  2048. b i r d s o n g
  2049.                      WFS User Guide and Reference
  2050.  
  2051.                      Configuring WFS Features
  2052. _________________________________________________________________
  2053.  
  2054.  
  2055.  
  2056. 5.4.1.2  Command
  2057.  
  2058. The command statement identifies the command to be executed via
  2059. the "system()" library call when this .CDF file is invoked.
  2060.  
  2061. Specify this exactly as you would a command line command. For
  2062. example, if you wanted to run the MS-DOS "DIR" command code the
  2063. command statement as:
  2064.  
  2065.      Command : dir
  2066.  
  2067. You may specify command arguments or input redirection on the
  2068. command statement. DO NOT specify I/O redirection for stdout! CDF
  2069. uses stdout redirection to capture program output when
  2070. MailResults or RecordResults are TRUE.
  2071.  
  2072. For example, you could code a complex command statment as:
  2073.  
  2074.      Command : doittoit -fgQRS -o thing <afile
  2075.  
  2076. ... But why?
  2077.  
  2078. 5.4.1.3  Password
  2079.  
  2080. All commands defined by a .CDF file are protected via password.
  2081. Each command has a separate password (there is a separate .CDF
  2082. file for each command).  For the user to be able to invoke a
  2083. command defined via a .CDF file, he must specify in his message a
  2084. password before the attempting to invoke a command.  For example
  2085. the incomming message should look like:
  2086.  
  2087.       ...
  2088.      password fooBarGorp
  2089.      do_what_i_mean_now
  2090.       ...
  2091.  
  2092. The password specified by the user is compared to the password
  2093. specified in the .CDF file for the "do_what_i_mean_now" command.
  2094. This comparison is CASE SENSITIVE!
  2095.  
  2096. If the comparison is not equal, the command is not executed.
  2097.  
  2098. Note: Take care in selecting passwords. Make them long and
  2099. obscure, especially for commands you define that update or delete
  2100. files. Change passwords often. Don't come hollering at me if your
  2101. system is compromised. I just provided the facility, you do not
  2102. have to use it!
  2103.  
  2104.  
  2105.  
  2106.  
  2107. _________________________________________________________________
  2108.                Release 2.0
  2109.  
  2110.                             page -32-
  2111.  
  2112.  
  2113.  
  2114. b i r d s o n g
  2115.                      WFS User Guide and Reference
  2116.  
  2117.                      Configuring WFS Features
  2118. _________________________________________________________________
  2119.  
  2120.  
  2121.  
  2122. Note: should you define your own commands, make sure your users
  2123. have appropriate HELP facilities to remind them to specify
  2124. passwords before invoking the commands.
  2125.  
  2126. 5.4.1.4  UserOperands
  2127.  
  2128. The UserOperands statement takes a boolean operator. Its default
  2129. is NO.
  2130.  
  2131. When the UserOperands value is FALSE, the command defined by the
  2132. command statement is executed exactly "as is". Any operands
  2133. specified by the user are stripped. For example, if the user
  2134. said:
  2135.  
  2136.      ...
  2137.      do_what_i_mean_now dog gone you, I said right now!
  2138.  
  2139. then the nothing beyond the "do_what_i_mean_now" is appended to
  2140. "command" when it is invoked.
  2141.  
  2142. If the UserOperands value is TRUE, then the operands are appended
  2143. to the "command". Using the example where the
  2144. "do_what_i_mean_now" user command is associated with the "DIR"
  2145. command via the command statement, then the command line would
  2146. be:
  2147.  
  2148.      ...
  2149.      dir dog gone you, I said right now!
  2150.  
  2151. Commands longer than 127 characters are not executed.
  2152.  
  2153. 5.4.1.5  MailResults
  2154.  
  2155. The MailResults statement takes a boolean operator. Its default
  2156. is NO.
  2157.  
  2158. When the MailResults value is FALSE, the "stdout" generated by
  2159. the command is not included in the message transcript.
  2160.  
  2161. When the MailResults value is TRUE, the "stdout" generated by the
  2162. command is included in the message transcript.
  2163.  
  2164. 5.4.1.6  RecordResults
  2165.  
  2166. The RecordResults statement takes a boolean operator. Its default
  2167. is NO.
  2168.  
  2169.  
  2170.  
  2171.  
  2172.  
  2173. _________________________________________________________________
  2174.                Release 2.0
  2175.  
  2176.                             page -33-
  2177.  
  2178.  
  2179.  
  2180. b i r d s o n g
  2181.                      WFS User Guide and Reference
  2182.  
  2183.                      Configuring WFS Features
  2184. _________________________________________________________________
  2185.  
  2186.  
  2187.  
  2188. When the RecordResults value is FALSE, the "stdout" generated by
  2189. the command is not written to the WFSLOG file.
  2190.  
  2191. When the RecordResults value is TRUE, the "stdout" generated by
  2192. the command is written to the WFSLOG file.
  2193.  
  2194. Take care when using this. You can quickly fill up a hard disk
  2195. with command output. On the other hand, you may need it.
  2196. TAANSTAFL.
  2197.  
  2198.  
  2199. 5.5  Configuring Mailing Lists
  2200.  
  2201. Configuring the Mailing List Server requires a few steps.
  2202.  
  2203. 1.  A directory in Waffle's USER directory tree is required for
  2204.     each mailing list. You may also want to create a regular
  2205.     Waffle UserID for each mailing list; this aids a mailing list
  2206.     administrator in managing the mailing list's files.
  2207.  
  2208. 2.  Waffle's STATIC file requires a "wfs.maillist" statement for
  2209.     each mailing list. See "wfs.maillist" on page 49.
  2210.  
  2211.     You may configure multiple mailing lists. Each mailing list
  2212.     requires a "wfs.maillist" statement in the STATIC file.
  2213.  
  2214. 3.  Add an entry in Waffle's ALIASES file for each mailing list.
  2215.     This is also described in "wfs.maillist".
  2216.  
  2217.     The alias assigned to the mailing list should be different
  2218.     from the UserID associated with the mailing list. This
  2219.     prevents a bounced message from being propogated to all
  2220.     members of the mailing list should one of the mailing list's
  2221.     members become unreachable.
  2222.  
  2223. 4.  Create the "MAILLIST.CFG" file for each mailing list in the
  2224.     USER directory for that mailing list. The format of the
  2225.     MAILLIST.CFG file is described in "The Mailing List
  2226.     Configuration File".
  2227.  
  2228. 5.5.1  The Mailing List Configuration File
  2229.  
  2230. The "maillist.cfg" file has the same syntax as Waffle's STATIC
  2231. file: a keyword, optional whitespace, a colon (':') character,
  2232. optional whitespace, and an operand. For example:
  2233.  
  2234.      keyword : operand
  2235.  
  2236.  
  2237.  
  2238.  
  2239. _________________________________________________________________
  2240.                Release 2.0
  2241.  
  2242.                             page -34-
  2243.  
  2244.  
  2245.  
  2246. b i r d s o n g
  2247.                      WFS User Guide and Reference
  2248.  
  2249.                      Configuring WFS Features
  2250. _________________________________________________________________
  2251.  
  2252.  
  2253.  
  2254. The following keywords are defined for a "maillist.cfg" file.
  2255.  
  2256. 5.5.1.1  FileIdent
  2257.  
  2258. Code the "FileIdent" statement exactly as shown:
  2259.  
  2260.      FileIdent    :  MailList2
  2261.  
  2262. WFS uses this statement to verify that it has the correct file.
  2263.  
  2264. 5.5.1.2  ListName
  2265.  
  2266. ListName is a string; a short description of the mailing list.
  2267. For example:
  2268.  
  2269.      ListName  :  A Test Mailing List as a Demonstration
  2270.  
  2271.  
  2272. 5.5.1.3  Welcome
  2273.  
  2274. Welcome names a file, within the same directory, that will be
  2275. mailed to all new subscribers for this list. For example:
  2276.  
  2277.      Welcome  :  welcome.msg
  2278.  
  2279. The welcome file is optional, but suggested.
  2280.  
  2281. Use the file defined in the "Welcome" statement to describe
  2282. List's purpose and charter. Also, include instructions for
  2283. unsubscribing to the list.
  2284.  
  2285. 5.5.1.4  MemberFile
  2286.  
  2287. MemberFile names a file, within the same directory, that contains
  2288. the membership list. For example:
  2289.  
  2290.      MemberFile  :  members.mbr
  2291.  
  2292. The SUBSCRIBE and UNSUBSCRIBE user commands manipulate this file.
  2293. The MEMBERS user command causes WFS to mail this file to the
  2294. requestor.
  2295.  
  2296. The format of the MemberFile is simple:
  2297.  
  2298. o   An email address per line.
  2299.  
  2300. o   Each address begins in column one.
  2301.  
  2302.  
  2303.  
  2304.  
  2305. _________________________________________________________________
  2306.                Release 2.0
  2307.  
  2308.                             page -35-
  2309.  
  2310.  
  2311.  
  2312. b i r d s o n g
  2313.                      WFS User Guide and Reference
  2314.  
  2315.                      Configuring WFS Features
  2316. _________________________________________________________________
  2317.  
  2318.  
  2319.  
  2320. o   No extraneous text on the line.
  2321.  
  2322. o   Lines beginning with the hash character ('#') are not
  2323.     processed.
  2324.  
  2325. o   Blank lines are ignored.
  2326.  
  2327. Note that the UNSUBSCRIBE command replaces the first character of
  2328. an entry with a hash character.
  2329.  
  2330. The SUBSCRIBE command appends new members to the end of the
  2331. MemberFile. After a while, you may have to manually edit this
  2332. file to remove former members: i.e. those entries having the hash
  2333. character at the beginning of the statement.
  2334.  
  2335. You do not have to create this file. WFS will create it the first
  2336. time it processes a SUBSCRIBE command.
  2337.  
  2338. 5.5.1.5  ReplyTo
  2339.  
  2340. ReplyTo specifies the value of the "Reply-To:" header for
  2341. messages propogated to members of the mailing list.
  2342.  
  2343. The ReplyTo statement is optional in the mailing list
  2344. configuration file. In general, you should not need to specify
  2345. the ReplyTo statement. Be careful if you specify it;
  2346. inappropriate specification of this statement may cause
  2347. unpredictable results. If not specified, the value of this
  2348. operand is:
  2349.  
  2350.    list-name@node
  2351.  
  2352. Where:
  2353.  
  2354. list-name   is the value of the first operand on the "maillist"
  2355.         static file statement for this mailing list; it is
  2356.         not the user directory name associated with the
  2357.         mailing list.
  2358.  
  2359. node        is the value of the "node" static file statement
  2360.  
  2361.  
  2362. 5.5.1.6  MultiAddress
  2363.  
  2364. MultiAddress causes WFSSENDF to invoke the RMAIL program with
  2365. multiple addressees on the command line. This minimizes the
  2366. number of spool files created, hence reduces the number of files
  2367. sent to the smarthost.
  2368.  
  2369.  
  2370.  
  2371. _________________________________________________________________
  2372.                Release 2.0
  2373.  
  2374.                             page -36-
  2375.  
  2376.  
  2377.  
  2378. b i r d s o n g
  2379.                      WFS User Guide and Reference
  2380.  
  2381.                      Configuring WFS Features
  2382. _________________________________________________________________
  2383.  
  2384.  
  2385.  
  2386. The operand of the MultiAddress statment is a boolean name. Any
  2387. of "Yes", "True", "1" may be used for enable this feature, You
  2388. may code any of "No", "False", "0" to disable this feature. It's
  2389. case insensitive. When it is not specified, it defaults to
  2390. "False". For example, to enable the feature:
  2391.  
  2392.      MultiAddress  :  yes
  2393.  
  2394. Some mailers have problems with mail prepared this way. See the
  2395. RMAIL.DOC in the Waffle documentation. WFS respects the rr.len
  2396. STATIC file statement, if present, otherwise WFS uses the defined
  2397. default of 100.
  2398.  
  2399. If you have trouble using MultiAddress, disable it.
  2400.  
  2401. 5.5.1.7  MembersOnly
  2402.  
  2403. MembersOnly causes WFSREQST to check the membership file before
  2404. adding the message to the message archive and causing it to be
  2405. sent to all of the mailing list's subscribers.
  2406.  
  2407. If not specified, the default is "No"; anyone, member or not may
  2408. post to the list.
  2409.  
  2410. Specify MembersOnly as a boolean term. For example:
  2411.  
  2412.      MembersOnly  :  yes
  2413.  
  2414.  
  2415. 5.5.1.8  NoEcho
  2416.  
  2417. NoEcho determines whether a message will be sent to the
  2418. originator of the message. When TRUE, messages sent to the
  2419. mailing list will not be echoed to the originator of the message.
  2420.  
  2421. If not specified, the default is "No"; the post will be sent to
  2422. the originator of the message.
  2423.  
  2424. Specify NoEcho as a boolean term. For example:
  2425.  
  2426.      NoEcho  :    True
  2427.  
  2428.  
  2429. 5.5.1.9  AutoDelete
  2430.  
  2431. AutoDelete causes WFSSENDF to delete the current minus one
  2432. Article in the mailing list after mailing the current article to
  2433. mailing list members. This feature keeps the archive of articles
  2434.  
  2435.  
  2436.  
  2437. _________________________________________________________________
  2438.                Release 2.0
  2439.  
  2440.                             page -37-
  2441.  
  2442.  
  2443.  
  2444. b i r d s o n g
  2445.                      WFS User Guide and Reference
  2446.  
  2447.                      Configuring WFS Features
  2448. _________________________________________________________________
  2449.  
  2450.  
  2451.  
  2452. at exactly one article. The feature is provided for SysOps or
  2453. mailing list owners who do not want expire articles using other
  2454. techniques.
  2455.  
  2456. If not specified, the default is "No"; Articles will not be
  2457. automatically deleted from the Archive.
  2458.  
  2459. Specify AutoDelete as a boolean term. For example:
  2460.  
  2461.      AutoDelete  :  True
  2462.  
  2463. Be careful if you use this feature not to manually mess with the
  2464. work queue: do not add, delete or modify work queue files without
  2465. understanding the implications of the AutoDelete feature. The
  2466. results may be unpredictable.
  2467.  
  2468. 5.5.1.10  Password
  2469.  
  2470. Password assigns a password for the mailing list. The password is
  2471. required for some user commands. Specify Password as a string.
  2472.  
  2473. Note: password comparisons are case sensitive.
  2474.  
  2475.      Password  :  ThePassword
  2476.  
  2477.  
  2478. 5.5.1.11  Join
  2479.  
  2480. Join enables or disables the Join user command for this mailing
  2481. list. By default, the Join command is enabled if the STATIC file
  2482. statement "wfs.enable.join" has been specified.
  2483.  
  2484. Specify the Join statement as a boolean term. For example, to
  2485. disable the Join command for this mailing list, specify the Join
  2486. statement as:
  2487.  
  2488.      Join  :  No
  2489.  
  2490.  
  2491. 5.5.1.12  UnJoin
  2492.  
  2493. UnJoin enables or disables the UnJoin user command for this
  2494. mailing list. By default, the UnJoin command is enabled if the
  2495. STATIC file statement "wfs.enable.unjoin" has been specified.
  2496.  
  2497. Specify the UnJoin statement as a boolean term. For example, to
  2498. disable the UnJoin command for this mailing list, specify the
  2499. UnJoin statement as:
  2500.  
  2501.  
  2502.  
  2503. _________________________________________________________________
  2504.                Release 2.0
  2505.  
  2506.                             page -38-
  2507.  
  2508.  
  2509.  
  2510. b i r d s o n g
  2511.                      WFS User Guide and Reference
  2512.  
  2513.                      Configuring WFS Features
  2514. _________________________________________________________________
  2515.  
  2516.  
  2517.  
  2518.      UnJoin  :    No
  2519.  
  2520.  
  2521. 5.5.1.13  Archive
  2522.  
  2523. Archive enables or disables the Archive user command for this
  2524. mailing list. By default, the Archive command is enabled if the
  2525. STATIC file statement "wfs.enable.archive" has been specified.
  2526.  
  2527. Specify the Archive statement as a boolean term. For example, to
  2528. disable the Archive command for this mailing list, specify the
  2529. Archive statement as:
  2530.  
  2531.      Archive  :  No
  2532.  
  2533.  
  2534. 5.5.1.14  Members
  2535.  
  2536. Members enables or disables the Members user command for this
  2537. mailing list. By default, the Members command is enabled if the
  2538. STATIC file statement "wfs.enable.members" has been specified.
  2539.  
  2540. Specify the Members statement as a boolean term. For example, to
  2541. disable the Members command for this mailing list, specify the
  2542. Members statement as:
  2543.  
  2544.      Members  :  No
  2545.  
  2546.  
  2547. 5.5.1.15  AddMember
  2548.  
  2549. AddMember enables or disables the ADDMEMBER command for this
  2550. mailing list. By default, the ADDMEMBER command is enabled if the
  2551. STATIC file statement "wfs.enable.addmember" has been specified.
  2552.  
  2553. Specify the AddMember statement as a boolean term. For example,
  2554. to disable the ADDMEMBER command for this mailing list, specify
  2555. the AddMember statement as:
  2556.  
  2557.      AddMember    :  No
  2558.  
  2559.  
  2560. 5.5.1.16  DropMember
  2561.  
  2562. DropMember enables or disables the DROPMEMBER command for this
  2563. mailing list. By default, the ADDMEMBER command is enabled if the
  2564. STATIC file statement "wfs.enable.dropmember" has been specified.
  2565.  
  2566.  
  2567.  
  2568.  
  2569. _________________________________________________________________
  2570.                Release 2.0
  2571.  
  2572.                             page -39-
  2573.  
  2574.  
  2575.  
  2576. b i r d s o n g
  2577.                      WFS User Guide and Reference
  2578.  
  2579.                      Configuring WFS Features
  2580. _________________________________________________________________
  2581.  
  2582.  
  2583.  
  2584. Specify the DropMember statement as a boolean term. For example
  2585. to disable the DROPMEMBER command for this mailing list, specify
  2586. the DropMember statement as:
  2587.  
  2588.      DropMember  :  No
  2589.  
  2590.  
  2591.  
  2592.  
  2593.  
  2594.  
  2595.  
  2596.  
  2597.  
  2598.  
  2599.  
  2600.  
  2601.  
  2602.  
  2603.  
  2604.  
  2605.  
  2606.  
  2607.  
  2608.  
  2609.  
  2610.  
  2611.  
  2612.  
  2613.  
  2614.  
  2615.  
  2616.  
  2617.  
  2618.  
  2619.  
  2620.  
  2621.  
  2622.  
  2623.  
  2624.  
  2625.  
  2626.  
  2627.  
  2628.  
  2629.  
  2630.  
  2631.  
  2632.  
  2633.  
  2634.  
  2635. _________________________________________________________________
  2636.                Release 2.0
  2637.  
  2638.                             page -40-
  2639.  
  2640.  
  2641.  
  2642. b i r d s o n g
  2643.                      WFS User Guide and Reference
  2644.  
  2645.                             Reference
  2646. _________________________________________________________________
  2647.  
  2648.  
  2649.  
  2650.  
  2651.  
  2652.  
  2653.                 Chapter 6
  2654.  
  2655.                 Reference
  2656.  
  2657.  
  2658. 6.1  Waffle's Static File
  2659.  
  2660. WFS depends on statements declared in the Waffle STATIC file.
  2661. These are Waffle's. Normally you will have no need to change the
  2662. settings of these statements.
  2663.  
  2664. WFS also requires his own statements in the STATIC file. WFS's
  2665. STATIC file statements conform to the same general syntactic
  2666. rules as the Waffle statements. You will configure the following
  2667. WFS STATIC file statements:
  2668.  
  2669.      wfs.sender
  2670.      wfs.reply-to
  2671.      wfs.uuencode
  2672.      wfs.uuencode.ext
  2673.      wfs.uuencode.lines
  2674.      wfs.ascii.size
  2675.      wfs.ascii.lines
  2676.      wfs.help
  2677.      wfs.filelist
  2678.      wfs.transcript
  2679.      wfs.notrans
  2680.      wfs.signature
  2681.      wfs.errorlimit
  2682.      wfs.msglimit
  2683.      wfs.daylimit
  2684.      wfs.quelimit
  2685.      wfs.enable.*
  2686.      wfs.deny
  2687.      wfs.authexit
  2688.      wfs.automail
  2689.      wfs.automail.immediate
  2690.      wfs.command
  2691.      wfs.maillist
  2692.  
  2693. The file "STATIC.smp", contains sample specifications for all the
  2694. WFS STATIC file statements. Use this file as a base for
  2695. customizing WFS at your site. Append the file into your normal
  2696. waffle STATIC file, then modify the statements to suit your site.
  2697.  
  2698.  
  2699.  
  2700.  
  2701. _________________________________________________________________
  2702.                Release 2.0
  2703.  
  2704.                             page -41-
  2705.  
  2706.  
  2707.  
  2708. b i r d s o n g
  2709.                      WFS User Guide and Reference
  2710.  
  2711.                             Reference
  2712. _________________________________________________________________
  2713.  
  2714.  
  2715.  
  2716. 6.1.1  Temporary
  2717.  
  2718. WFS uses the directory named by the Waffle temporary statement as
  2719. a place to construct the session transcript when he processes a
  2720. user request. This file is usually small; WFS deletes it after he
  2721. mails it to the requestor.
  2722.  
  2723. WFS uses the temporary directory as a workarea to uuencode files
  2724. that are to be mailed uuencoded. The drive containing this
  2725. directory must have enough space to contain all the parts of the
  2726. uuencoded file. The file to be uuencoded is not copied to this
  2727. directory before it is uuencoded. WFS deletes the uuencode parts
  2728. after mailing them to the requestor.
  2729.  
  2730. 6.1.2  Bin
  2731.  
  2732. WFS invokes RMAIL.EXE using the "bin" STATIC statement as the
  2733. pathname to the executable.
  2734.  
  2735. 6.1.3  Waffle
  2736.  
  2737. WFS uses the "Waffle" STATIC file statement to locate the ADMIN
  2738. directory. WFS places the WFSLOG file in the ADMIN directory.
  2739. WFSLOG contains a log of all incoming and outgoing requests,
  2740. information and error messages.
  2741.  
  2742. WFS uses the "Waffle" STATIC file statement to locate the DIRS
  2743. file.
  2744.  
  2745. 6.1.4  Node
  2746.  
  2747. WFS uses the "node" STATIC file statement to construct the mail
  2748. header for both the session transcript and the mailed files.
  2749.  
  2750. 6.1.5  Uucpname
  2751.  
  2752. WFS uses the "uucpname" STATIC file statement to construct the
  2753. mail header for both the session transcript and the mailed files.
  2754.  
  2755. 6.1.6  wfs.sender
  2756.  
  2757. WFS uses the wfs.sender STATIC file statement to identify the
  2758. user ID that responds to mailed requests. It is important to
  2759. specify a different user ID from the user ID specified in the
  2760. aliases file as the receiver of mailed requests. The different
  2761. specification prevents bounce loops.
  2762.  
  2763.  
  2764.  
  2765.  
  2766.  
  2767. _________________________________________________________________
  2768.                Release 2.0
  2769.  
  2770.                             page -42-
  2771.  
  2772.  
  2773.  
  2774. b i r d s o n g
  2775.                      WFS User Guide and Reference
  2776.  
  2777.                             Reference
  2778. _________________________________________________________________
  2779.  
  2780.  
  2781.  
  2782. For example, the request processor specified in the aliases file
  2783. could be "file-request" and the wfs.sender STATIC file statement
  2784. could be "fileserv".
  2785.  
  2786. WFS forms a directory path to the user directory wfs.sender. WFS
  2787. places files named "QDxxxxxx" (where: xxxxxx is a decimal number;
  2788. for example: QD000233) in this directory. Each queue file
  2789. represents a request for a single file.
  2790.  
  2791. The file QCONTROL is also placed in this directory. QCONTROL
  2792. contains data used by WFS's rate limiting features.
  2793.  
  2794. 6.1.7  wfs.reply-to
  2795.  
  2796. WFS uses the wfs.reply-to STATIC file statement to construct the
  2797. mail header for both the session transcript and for mailed files.
  2798. WFS emits a "Reply-to:" line in the mail header using the data
  2799. specified by this statement. You must specify a fully qualified
  2800. path name, not just a user ID. This flexibility gives you the
  2801. ability to have a a reply go to a different site and ID than the
  2802. one serving as the file server.
  2803.  
  2804. For example:
  2805.  
  2806.      wfs.reply-to : Customer-Service@Foo.Bar.Com
  2807.  
  2808. The specification of this statement is optional.
  2809.  
  2810. 6.1.8  wfs.uuencode
  2811.  
  2812. WFS uses the wfs.uuencode STATIC file statement as the executable
  2813. name for the uuencode program. This should be the fully qualified
  2814. pathname of the uuencode program provided with the WFS
  2815. distribution. For example:
  2816.  
  2817.      wfs.uuencode : c:/util/uuencode
  2818.  
  2819. WFS uuencodes files at the time the file is mailed.
  2820.  
  2821. 6.1.9  wfs.uuencode.ext
  2822.  
  2823. The wfs.uuencode.ext STATIC file statement specifies a list of
  2824. file extensions that are always to be uuencoded by WFS for
  2825. sending these files.
  2826.  
  2827. For example, a reasonable specification for wfs.uuencode.ext
  2828. might be:
  2829.  
  2830.  
  2831.  
  2832.  
  2833. _________________________________________________________________
  2834.                Release 2.0
  2835.  
  2836.                             page -43-
  2837.  
  2838.  
  2839.  
  2840. b i r d s o n g
  2841.                      WFS User Guide and Reference
  2842.  
  2843.                             Reference
  2844. _________________________________________________________________
  2845.  
  2846.  
  2847.  
  2848.      wfs.uuencode.ext : com exe pak zip arc arj gif lzh lha
  2849.  
  2850. If you have a very long list of file extensions you want
  2851. uuencoded, you may have multiple wfs.uuencode.ext statements in
  2852. the STATIC file. Additional statements add to the list of file
  2853. extensions to be uuencoded for transmission.
  2854.  
  2855. To cause uuencoding of files with no file extension, specify
  2856. "NULL" on the wfs.uuencode.ext statement. For example:
  2857.  
  2858.      wfs.uuencode.ext : zip zoo pak lzh NULL
  2859.  
  2860. If a /GET command in the message has coded uuencode or xxencode
  2861. on a file request, the user's specification takes precedence.
  2862.  
  2863. 6.1.10    wfs.ascii.size
  2864.  
  2865. The wfs.ascii.size STATIC file statement specifies the number of
  2866. bytes an ascii file will be split into for mailing. Files larger
  2867. than this number will be split at the first new line character
  2868. following this number of bytes.
  2869.  
  2870.      wfs.ascii.size : 33000
  2871.  
  2872. 6.1.11    wfs.ascii.lines
  2873.  
  2874. The wfs.ascii.lines STATIC file statement specifies the number of
  2875. lines an ascii file will be split into for mailing. Files larger
  2876. than this number will be split at the first line following this
  2877. number of lines.
  2878.  
  2879.      wfs.asciilines : 475
  2880.  
  2881. 6.1.12    wfs.uuencode.lines
  2882.  
  2883. The wfs.uuencode.lines STATIC file statement specifies the number
  2884. of lines that uuencoded parts will be broken into.
  2885.  
  2886. This feature is provided because some mailers choke on files over
  2887. some arbitrary limit set by local system administrators.
  2888.  
  2889. The default number of lines for each part made by Richard Marks'
  2890. uuencode is 950 lines. This makes file parts about 60K. You may
  2891. have to experiment to get a file size that suits you.
  2892.  
  2893.  
  2894.  
  2895.  
  2896.  
  2897.  
  2898.  
  2899. _________________________________________________________________
  2900.                Release 2.0
  2901.  
  2902.                             page -44-
  2903.  
  2904.  
  2905.  
  2906. b i r d s o n g
  2907.                      WFS User Guide and Reference
  2908.  
  2909.                             Reference
  2910. _________________________________________________________________
  2911.  
  2912.  
  2913.  
  2914. 6.1.13    wfs.help
  2915.  
  2916. WFS uses the wfs.help STATIC file statement to locate the file it
  2917. mails in response to the HELP command. Specify a fully qualified
  2918. pathname. For example:
  2919.  
  2920.      wfs.help      : f:/waffle/user/fileserv/wfshelp.txt
  2921.  
  2922. 6.1.14    wfs.filelist
  2923.  
  2924. WFS uses the wfs.filelist STATIC file statement to locate the
  2925. file it mails in response to the /DIR command. Specify a fully
  2926. qualified pathname. For example:
  2927.  
  2928.      wfs.filelist : f:/public/filelist.txt
  2929.  
  2930. 6.1.15    wfs.transcript
  2931.  
  2932. WFS uses the wfs.transcript STATIC file statement to locate the
  2933. file with which it begins the session transcript. The
  2934. "transcript" file is pre-pended to the session transcript.
  2935. Specify a fully qualified pathname. For example:
  2936.  
  2937.      wfs.transcript : f:/waffle/user/fileserv/welcome.txt
  2938.  
  2939. 6.1.16    wfs.notrans
  2940.  
  2941. If wfs.notrans is specified in the STATIC file, WFS will not mail
  2942. a session transcript to the requestor.
  2943.  
  2944. wfs.notrans has no options. For example:
  2945.  
  2946.      wfs.notrans
  2947.  
  2948. If the requestor's message contains an error that causes the help
  2949. file to be included in the session transcript, the transcript is
  2950. mailed to the requestor, regardless of the wfs.notrans statement.
  2951.  
  2952. 6.1.17    wfs.signature
  2953.  
  2954. WFS uses the wfs.signature STATIC file statement to locate the
  2955. file with which it ends the session transcript. The "signature"
  2956. file is appended to the session transcript. Specify a fully
  2957. qualified pathname. For example:
  2958.  
  2959.      wfs.signature : f:/waffle/user/fileserv/signatur.txt
  2960.  
  2961.  
  2962.  
  2963.  
  2964.  
  2965. _________________________________________________________________
  2966.                Release 2.0
  2967.  
  2968.                             page -45-
  2969.  
  2970.  
  2971.  
  2972. b i r d s o n g
  2973.                      WFS User Guide and Reference
  2974.  
  2975.                             Reference
  2976. _________________________________________________________________
  2977.  
  2978.  
  2979.  
  2980. 6.1.18    wfs.errorlimit
  2981.  
  2982. wfs.errorlimit is the number of errors detected by WFSREQST in
  2983. the incomming message before he quits processing the message.
  2984. After wfs.errorlimit errors have been detected, the remainder of
  2985. the incomming message is flushed. For example:
  2986.  
  2987.      wfs.errorlimit : 5
  2988.  
  2989. 6.1.19    wfs.msglimit
  2990.  
  2991. The wfs.msglimit STATIC file statement specifies the number of
  2992. bytes of files that a mailed request may retrieve in a single
  2993. mail message. The specification is in thousands of bytes. For
  2994. example to limit a single mailed request to 600,000 bytes of
  2995. files, specify wfs.msglimit as:
  2996.  
  2997.      wfs.msglimit : 600
  2998.  
  2999. If you do not specify the wfs.msglimit statement, WFS sets a
  3000. default of 500,000 bytes.
  3001.  
  3002. WFS keeps track of the number of bytes represented by each file
  3003. named (or implied) in a command in body of a message. He queues
  3004. each request until the limit is exceeded. For example, with the
  3005. limit set to 500,000 bytes, if previous commands total 380,000
  3006. bytes and the next command specifies a file 300,000 bytes long,
  3007. the request will be accepted.
  3008.  
  3009. 6.1.20    wfs.daylimit
  3010.  
  3011. The wfs.daylimit STATIC file statement specifies the number bytes
  3012. of files that WFSSENDF will mail in response to queued requests
  3013. on a given date. The specification is in thousands of bytes. For
  3014. example: to limit the number of bytes mailed in response to
  3015. queued requests to 3 MBytes per day, specify the wfs.daylimit
  3016. statement as:
  3017.  
  3018.      wfs.daylimit : 3000
  3019.  
  3020. If you do not specify the wfs.daylimit statement, WFS sets a
  3021. default of ten (10) times the value of the wfs.msglimit
  3022. statement.
  3023.  
  3024. WFS keeps track (in the QCONTROL file) of the number of bytes it
  3025. has mailed in response to requests for a given date.
  3026.  
  3027.  
  3028.  
  3029.  
  3030.  
  3031. _________________________________________________________________
  3032.                Release 2.0
  3033.  
  3034.                             page -46-
  3035.  
  3036.  
  3037.  
  3038. b i r d s o n g
  3039.                      WFS User Guide and Reference
  3040.  
  3041.                             Reference
  3042. _________________________________________________________________
  3043.  
  3044.  
  3045.  
  3046. 6.1.21    wfs.quelimit
  3047.  
  3048. The wfs.quelimit STATIC file statement specifies the number of
  3049. bytes represented by requests that WFS will accept. The
  3050. specification is in thousands of bytes. For example, to limit the
  3051. total of queued requests to 20 MBytes, specify wfs.quelimit as:
  3052.  
  3053.      wfs.quelimit : 20000
  3054.  
  3055. If you do not specify the wfs.quelimit statement, WFS sets a
  3056. default of ten (10) times the value of the wfs.daylimit
  3057. statement.
  3058.  
  3059. When wfs.quelimit bytes of requests are already queued for
  3060. processing, and additional requests arrive, WFSREQST will reject
  3061. the request with an appropriate message.
  3062.  
  3063. 6.1.22    wfs.enable.*
  3064.  
  3065. The wfs.enable.* STATIC file statement specifies a list of names
  3066. for built-in commands. By default, no WFS commands are recognized
  3067. in an incomming message unless the command is enabled and
  3068. assigned a name. For example, to enable all commands using its
  3069. base name code the following in your STATIC file:
  3070.  
  3071.      wfs.enable.ping         : ping
  3072.      wfs.enable.help         : help
  3073.      wfs.enable.get         : get
  3074.      wfs.enable.dir         : dir
  3075.      wfs.enable.newfiles     : newfiles
  3076.      wfs.enable.password     : password
  3077.      wfs.enable.join         : join
  3078.      wfs.enable.unjoin         : unjoin
  3079.      wfs.enable.archive      : archive
  3080.      wfs.enable.members      : members
  3081.      wfs.enable.addmember    : addmember
  3082.      wfs.enable.dropmember   : dropmember
  3083.  
  3084. You may assign any name you wish for the command; the name need
  3085. not be the same as the base name for the command. You may also
  3086. assign more than one name for a command. For example to enable
  3087. the help command and assign multiple names to it, none of them
  3088. "help", code the following in your STATIC file:
  3089.  
  3090.      wfs.enable.help : info information huh huh? what whazzat
  3091.  
  3092.  
  3093.  
  3094.  
  3095.  
  3096.  
  3097. _________________________________________________________________
  3098.                Release 2.0
  3099.  
  3100.                             page -47-
  3101.  
  3102.  
  3103.  
  3104. b i r d s o n g
  3105.                      WFS User Guide and Reference
  3106.  
  3107.                             Reference
  3108. _________________________________________________________________
  3109.  
  3110.  
  3111.  
  3112. Should you want many names for the command, you may have multiple
  3113. wfs.enable.* statements for the same command. Continuing the
  3114. previous example:
  3115.  
  3116.      wfs.enable.help : info information huh huh? what whazzat
  3117.      wfs.enable.help : ? ?? ??? ???? duh duh? how how?
  3118.  
  3119. 6.1.23    wfs.authexit
  3120.  
  3121. The wfs.authexit STATIC file statement specifies the fully
  3122. qualified pathname to a user supplied executable program. The
  3123. following example shows a specification for wfs.authexit.
  3124.  
  3125.      wfs.authexit : c:\waffle\bin\authexit
  3126.  
  3127. See "Configuring an Authorization Exit Program" for a discussion
  3128. of how to configure an authorization exit program.
  3129.  
  3130. Both wfs.deny and wfs.authexit may be active at the same time.
  3131.  
  3132. 6.1.24    wfs.automail
  3133.  
  3134. The wfs.automail STATIC file statement specifies a binding of a
  3135. user ID, aliased in Waffles ALIASES file to the WFSREQST program,
  3136. and a file to send when mail arrives at that address.
  3137.  
  3138. In addition to specifying wfs.automail in the STATIC file, a
  3139. statement must be placed in Waffle's ALIASES file to direct mail
  3140. to the WFSREQST program.
  3141.  
  3142. You may have as many different wfs.automail and ALIASES file
  3143. statements as you want, limited only be the available memory, and
  3144. Waffle's own limitations. Each pair (wfs.automail and alias) may
  3145. specify a different file to be sent.
  3146.  
  3147. There are two operands to the wfs.automail statement; syntax is:
  3148.  
  3149.      wfs.automail : <aliasname> <filespec>
  3150.  
  3151. Where:
  3152.  
  3153. o   <aliasname> is the alias statement in Waffle's ALIASES file,
  3154.  
  3155. o   <filespec> is the fully qualified file specification of the
  3156.     file to be sent when mail arrives at this alias.
  3157.  
  3158. For example, to configure both the aliases file and the STATIC
  3159. file to send the file "e\user\sendfile\wfsinfo.txt" to the sender
  3160.  
  3161.  
  3162.  
  3163. _________________________________________________________________
  3164.                Release 2.0
  3165.  
  3166.                             page -48-
  3167.  
  3168.  
  3169.  
  3170. b i r d s o n g
  3171.                      WFS User Guide and Reference
  3172.  
  3173.                             Reference
  3174. _________________________________________________________________
  3175.  
  3176.  
  3177.  
  3178. when mail arrives for "WFS-Info-Request" at your site, first add
  3179. a statement to the ALIASES file as:
  3180.  
  3181.      WFS-Info-Request | WFSREQST
  3182.  
  3183. Then add a statement to the STATIC file as:
  3184.  
  3185.      wfs.automail : WFS-Info-Request e:\user\sendfile\wfsinfo.txt
  3186.  
  3187. The file "ALIASES.SMP", provided in the WFS package as a sample
  3188. ALIASES file, shows techniques for specifying aliases. See also:
  3189. "Extended Logging" on page 51; this topic describes some other
  3190. techniques for using aliases.
  3191.  
  3192. Requests received via this technique are queued for processing by
  3193. WFSSENDF.
  3194.  
  3195. 6.1.25    wfs.automail.immediate
  3196.  
  3197. The "wfs.automail.immediate" STATIC file statement is similar to
  3198. the wfs.automail statement.
  3199.  
  3200. It differs in that the response (the requested file) is sent
  3201. immediately to the requestor.
  3202.  
  3203. Note that the rate limiting controls do not apply for mail
  3204. addressed to the address specified via the wfs.automail.immediate
  3205. statement.
  3206.  
  3207. 6.1.26    wfs.command
  3208.  
  3209. The "wfs.command" STATIC file statement may be used by the SysOp
  3210. to create commands unique to that site. When the command is
  3211. detected in an input message, An associated command definition
  3212. file is used to control the execution of the command.
  3213.  
  3214. The operand of the wfs.command statement identifies first the
  3215. command name, second the associated command definition file. The
  3216. syntax for the wfs.command STATIC file statement is:
  3217.  
  3218.      wfs.command : <commandname> <filename>
  3219.  
  3220. Commandname may be any string without embedded blanks, tabs or
  3221. newlines.
  3222.  
  3223. Filename should be filename only: no file extension, no path
  3224. specification. An file extension of .CDF is implied. For example:
  3225.  
  3226.  
  3227.  
  3228.  
  3229. _________________________________________________________________
  3230.                Release 2.0
  3231.  
  3232.                             page -49-
  3233.  
  3234.  
  3235.  
  3236. b i r d s o n g
  3237.                      WFS User Guide and Reference
  3238.  
  3239.                             Reference
  3240. _________________________________________________________________
  3241.  
  3242.  
  3243.  
  3244.      wfs.command : Do_What_I_Mean_Now  dowhim
  3245.  
  3246. When the string "Do_What_I_Mean_Now" appears as the first token
  3247. on a line in the body of an incomming message, WFS will attempt
  3248. to execute the program or batch file defined in in the file
  3249. "dowhim.cdf" in the user directory defined for wfs.sender.
  3250.  
  3251. You may define as many wfs.command statements in your STATIC file
  3252. as available memory permits; each statement uses 16 bytes plus
  3253. the length of each operand. The file referenced is not
  3254. internalized until the named command is detected in an incomming
  3255. message.
  3256.  
  3257. For the fomat of the Command Execution Facility files and a
  3258. discussion of its use, see: "Remote Command Execution Facility"
  3259. on page 30.
  3260.  
  3261. 6.1.27    wfs.maillist
  3262.  
  3263. The wfs.maillist STATIC file statement specifies a binding of a
  3264. user ID, aliased in Waffles ALIASES file to the WFSREQST program,
  3265. and a Mail List configuration. The syntax for the wfs.maillist
  3266. statement is:
  3267.  
  3268.      wfs.maillist : <listname> <directory>
  3269.  
  3270. Where:
  3271.  
  3272. <listname>  Is the name specified in Waffle's ALIASES file for
  3273.         the Mailing List.
  3274.  
  3275. <directory> Is the name of a directory, under Waffle's USER
  3276.         directory, containing the Mailing List's
  3277.         configuration files.
  3278.  
  3279. For example, to define a mailing list named "test-list", Three
  3280. steps are required.
  3281.  
  3282. 1.  Define the wfs.maillist statement in Waffle's STATIC file as:
  3283.  
  3284.      wfs.maillist  :  test-list  testlist
  3285.  
  3286. 2.  Alias the Mailing List's name to the WFSREQST program; place
  3287.     a statement in Waffle's ALIASES file like:
  3288.  
  3289.      test-list     | wfsreqst
  3290.  
  3291.  
  3292.  
  3293.  
  3294.  
  3295. _________________________________________________________________
  3296.                Release 2.0
  3297.  
  3298.                             page -50-
  3299.  
  3300.  
  3301.  
  3302. b i r d s o n g
  3303.                      WFS User Guide and Reference
  3304.  
  3305.                             Reference
  3306. _________________________________________________________________
  3307.  
  3308.  
  3309.  
  3310. 3.  Create a directory in Waffle's USER directory tree named
  3311.     "testlist".
  3312.  
  3313.     In this directory you will need to create a file,
  3314.     "maillist.cfg". The syntax for statements in this file are
  3315.     described in "Configuring Mailing Lists" on page 34.
  3316.  
  3317. You may have as many "wfs.maillist" statements as available
  3318. memory will support.
  3319.  
  3320.  
  3321.  
  3322.  
  3323.  
  3324.  
  3325.  
  3326.  
  3327.  
  3328.  
  3329.  
  3330.  
  3331.  
  3332.  
  3333.  
  3334.  
  3335.  
  3336.  
  3337.  
  3338.  
  3339.  
  3340.  
  3341.  
  3342.  
  3343.  
  3344.  
  3345.  
  3346.  
  3347.  
  3348.  
  3349.  
  3350.  
  3351.  
  3352.  
  3353.  
  3354.  
  3355.  
  3356.  
  3357.  
  3358.  
  3359.  
  3360.  
  3361. _________________________________________________________________
  3362.                Release 2.0
  3363.  
  3364.                             page -51-
  3365.  
  3366.  
  3367.  
  3368. b i r d s o n g
  3369.                      WFS User Guide and Reference
  3370.  
  3371.                               A Few Hints
  3372. _________________________________________________________________
  3373.  
  3374.  
  3375.  
  3376.  
  3377.  
  3378.  
  3379.                 Chapter 7
  3380.  
  3381.                A Few Hints
  3382.  
  3383.  
  3384. This chapter focuses on a few hints to extend the capabilities
  3385. for WFS.
  3386.  
  3387.  
  3388. 7.1  Extended Logging
  3389.  
  3390. The WFSLOG file in Waffle's ADMIN directory contains a history of
  3391. every transaction handled by the WFS programs. The records in
  3392. WFSLOG are terse by design. Should you have a requirement to log
  3393. ABSOLUTELY EVERYTHING. Then the following method is offered.
  3394.  
  3395. 1.  Create a local newsgroup with an access level higher than can
  3396.     be seen by normal users; you may also use group access to
  3397.     restrict access to WFS administrators only. For example,
  3398.     create the local newsgroup "WFSHistory"
  3399.  
  3400. 2.  In the system alias file create an entry that is the target
  3401.     for incomming mail addressed to WFS. Alias this ID to two
  3402.     target IDs; like so:
  3403.  
  3404.      archive-server  WFS$Post WFS$SERVER
  3405.  
  3406.      WFS$Post     | post WFSHistory
  3407.      WFS$SERVER     | WFSREQST
  3408.  
  3409. Now all mail addressed to the ID "archive-server" will be posted
  3410. to the WFSHistory newsgroup, and will be read by the WFSREQST
  3411. program.
  3412.  
  3413.  
  3414. 7.2  Testing WFS
  3415.  
  3416. When bringing up WFS for the first time, you will have to test
  3417. it. Since the program WFSREQST reads from stdin, you can
  3418. construct a mail message and feed it to WFSREQST from the MS-DOS
  3419. command line by re-directing the test message to stdin. For
  3420. example, create the file "testmsg". The minimum statements
  3421. required for a test message are:
  3422.  
  3423.  
  3424.  
  3425.  
  3426.  
  3427. _________________________________________________________________
  3428.                Release 2.0
  3429.  
  3430.                             page -52-
  3431.  
  3432.  
  3433.  
  3434. b i r d s o n g
  3435.                      WFS User Guide and Reference
  3436.  
  3437.                               A Few Hints
  3438. _________________________________________________________________
  3439.  
  3440.  
  3441.  
  3442.      From: user@site
  3443.      To: server@right.here
  3444.  
  3445.      <some wfs command>
  3446.  
  3447. To feed this test message to WFSREQST from the MS-DOS command
  3448. line, Establish Waffle's environment (set the WAFFLE environment
  3449. variable and include Waffle's bin directory in the PATH) and
  3450. issue the command:
  3451.  
  3452.      WFSREQST <testmsg
  3453.  
  3454. To evaluate the output, look in the spool directory, in the sub-
  3455. directory for the site that would act as smarthost for the reply
  3456. address to the mail. The response to the request should be there.
  3457. If no mail is sent, check the WFSLOG file in the ADMIN directory.
  3458. There should be some messages indicating the source of the error.
  3459.  
  3460.  
  3461. 7.3  Forging a Request
  3462.  
  3463. It happens to me all the time. Someone says, "How do I get file
  3464. QRZ.ZIP?"
  3465.  
  3466. Well, I know I have it. Instead of saying, "Send a request to my
  3467. archive-server,... blah blah blah."
  3468.  
  3469. I say, "I'll send it to you via email, uuencoded."
  3470.  
  3471. What I do is forge a piece of mail containing the request and
  3472. manually feed it to WFSREQST. Instead of editing a forged message
  3473. manually, I have a small batch file that does it all. The
  3474. following example contains its own documentation and should be
  3475. obvious. Use it as an example:
  3476.  
  3477.  
  3478.  
  3479.  
  3480.  
  3481.  
  3482.  
  3483.  
  3484.  
  3485.  
  3486.  
  3487.  
  3488.  
  3489.  
  3490.  
  3491.  
  3492.  
  3493. _________________________________________________________________
  3494.                Release 2.0
  3495.  
  3496.                             page -53-
  3497.  
  3498.  
  3499.  
  3500. b i r d s o n g
  3501.                      WFS User Guide and Reference
  3502.  
  3503.                               A Few Hints
  3504. _________________________________________________________________
  3505.  
  3506.  
  3507.  
  3508.      @echo on
  3509.      :
  3510.      : forge mail for wfs
  3511.      :
  3512.      : syntax: wfsforge <user> <file> [uue | xxe]
  3513.      :
  3514.      : --- validate input ---
  3515.      if "%1" == "" goto syntax
  3516.      if "%2" == "" goto syntax
  3517.      :
  3518.      : --- create forged message ---
  3519.      :
  3520.      echo From: %1 >f:\waffle\wfsforge.msg
  3521.      echo To: archive-server@foo.bar.com >>f:\waffle\wfsforge.msg
  3522.      echo Subject: The file you asked me for >>f:\waffle\wfsforge.msg
  3523.      type c:\etc\blankln >>f:\waffle\wfsforge.msg
  3524.      echo /get %2 %3 >>f:\waffle\wfsforge.msg
  3525.      echo -- >>f:\waffle\wfsforge.msg
  3526.      :
  3527.      : --- mail it ---
  3528.      :
  3529.      wfsreqst <wfsforge.msg
  3530.      goto done
  3531.      :
  3532.      : syntax error
  3533.      :
  3534.      :syntax
  3535.      echo syntax error:
  3536.      echo usage is: wfsforge user file [uue | xxe]
  3537.      :done
  3538.  
  3539. Note: the file "c:\etc\blankln" contains a blank line.
  3540.  
  3541.  
  3542.  
  3543.  
  3544.  
  3545.  
  3546.  
  3547.  
  3548.  
  3549.  
  3550.  
  3551.  
  3552.  
  3553.  
  3554.  
  3555.  
  3556.  
  3557.  
  3558.  
  3559. _________________________________________________________________
  3560.                Release 2.0
  3561.  
  3562.                             page -54-
  3563.  
  3564.  
  3565.  
  3566. b i r d s o n g
  3567.                      WFS User Guide and Reference
  3568.  
  3569.                              Messages
  3570. _________________________________________________________________
  3571.  
  3572.  
  3573.  
  3574.  
  3575.  
  3576.  
  3577.                 Chapter 8
  3578.  
  3579.                 Messages
  3580.  
  3581.  
  3582. WFS records his activity in the WFSLOG file in Waffle's ADMIN
  3583. directory. These messages represent normal activity, errors and
  3584. exceptions noted while doing his job.
  3585.  
  3586. Messages begin with a "seriousness" indication.
  3587.  
  3588. o   Panic: alerts the system operator of a condition that has
  3589.     caused a WFS program to abnormally terminate. This is bad
  3590.     news. The current operation (mail message or queue file) may
  3591.     have been lost or data corrupted. This needs immediate
  3592.     attention.
  3593.  
  3594. o   Error: alerts the system operator of some condition that
  3595.     needs immediate attention.
  3596.  
  3597. o   Warning: alerts the system operator of some condition that
  3598.     may warrant attention.
  3599.  
  3600. o   Info: is an information message.
  3601.  
  3602. o   debug: are debug messages. These messages will appear only
  3603.     when debug options are specified.
  3604.  
  3605.  
  3606.  
  3607.  
  3608.  
  3609.  
  3610.  
  3611.  
  3612.  
  3613.  
  3614.  
  3615.  
  3616.  
  3617.  
  3618.  
  3619.  
  3620.  
  3621.  
  3622.  
  3623.  
  3624.  
  3625. _________________________________________________________________
  3626.                Release 2.0
  3627.  
  3628.                             page -55-
  3629.  
  3630.  
  3631.  
  3632. b i r d s o n g
  3633.                      WFS User Guide and Reference
  3634.  
  3635.                          Software License
  3636. _________________________________________________________________
  3637.  
  3638.  
  3639.  
  3640.  
  3641.  
  3642.  
  3643.                 Chapter 9
  3644.  
  3645.             Software License
  3646.  
  3647.  
  3648. WFS is not in the public domain. WFS is property of The Birdsong
  3649. Company. WFS is shareware.
  3650.  
  3651. Individuals and "Small Business" may install and try WFS for up
  3652. to 30 days. If you intend to use WFS beyond the trial period, you
  3653. must license it. Your cost is $17.00 US, for each machine on
  3654. which WFS is run.
  3655.  
  3656. "Big Business", Not-for-profit enterprise, educational
  3657. institutions, and and government agencies may try WFS for up to
  3658. 30 days. Beyond the trial period, you must be licensed to use it.
  3659. To get a quote for your use, send a Request for Quotation on your
  3660. company letterhead.
  3661.  
  3662. The Birdsong Company will determine if you are a "Small" or "Big"
  3663. business.
  3664.  
  3665. Payment should be via check, in US Dollars, drawn on a US branch
  3666. of a US bank.
  3667.  
  3668. The file LICENSE.FRM (a License Form), included in the WFS
  3669. distribution, is the standard license agreement.
  3670.  
  3671.  
  3672.  
  3673.  
  3674.  
  3675.  
  3676.  
  3677.  
  3678.  
  3679.  
  3680.  
  3681.  
  3682.  
  3683.  
  3684.  
  3685.  
  3686.  
  3687.  
  3688.  
  3689.  
  3690.  
  3691. _________________________________________________________________
  3692.                Release 2.0
  3693.  
  3694.                             page -56-
  3695.  
  3696.  
  3697.  
  3698.  
  3699. b i r d s o n g
  3700.                      WFS User Guide and Reference
  3701.  
  3702. _________________________________________________________________
  3703.  
  3704.  
  3705.  
  3706.  
  3707.  
  3708.  
  3709.                Appendix A
  3710.  
  3711.  
  3712. A.1  Technical Support
  3713.  
  3714. I have made a good faith effort to produce a quality piece of
  3715. software. I am also not perfect. There may be bugs, oversights,
  3716. what not... in WFS that I did not forsee. You may not like the
  3717. way I did it either. That stuff just happens.
  3718.  
  3719. If you discover a bug or you don't like the way in which some
  3720. feature works, please contact me. I will make a good faith
  3721. attempt to make it right.
  3722.  
  3723. Technical support is available via electronic mail and US mail.
  3724. Your comments and suggestions are very welcome.
  3725.  
  3726. Via US Mail, write to:
  3727.  
  3728.      WFS Tech Support
  3729.      The Birdsong Company
  3730.      PO Box 2031
  3731.      Sunnyvale, CA 94087-2031
  3732.  
  3733. Via internet and UUCP, write to:
  3734.  
  3735.      tech-support@Birdsong.Suvl.CA.US
  3736.  
  3737.  
  3738. A.2  Future Direction
  3739.  
  3740. Nothing Planned.
  3741.  
  3742. Gimme a hint!
  3743.  
  3744.  
  3745. A.3  Bugs
  3746.  
  3747. A list of known bugs in this and some previous releases of WFS
  3748. can be retrieved by sending email to:
  3749.  
  3750.      WFS-buglist@Birdsong.Suvl.CA.US
  3751.  
  3752.  
  3753.  
  3754.  
  3755.  
  3756.  
  3757. _________________________________________________________________
  3758.                Release 2.0
  3759.  
  3760.                             page -57-
  3761.  
  3762.  
  3763.  
  3764.  
  3765. b i r d s o n g
  3766.                      WFS User Guide and Reference
  3767.  
  3768. _________________________________________________________________
  3769.  
  3770.  
  3771.  
  3772. A.4  Acknowledgments
  3773.  
  3774. Waffle BBS is a product by Thomas E. Dell and Darkside
  3775. International.
  3776.  
  3777. Contact:
  3778.  
  3779.      Thomas E. Dell
  3780.      Darkside International
  3781.      PO Box 4436
  3782.      Mountain View, CA 94949-0436
  3783.  
  3784.      via email:  dell@vox.darkside.com
  3785.  
  3786.  
  3787. UUencode, is a product by Richard E. Marks.
  3788.  
  3789. Contact:
  3790.  
  3791.      Richard Marks
  3792.      931 Sulgrave Lane
  3793.      Bryn Mawr, PA 19010
  3794.  
  3795.  
  3796.  
  3797.  
  3798.  
  3799.  
  3800.  
  3801.  
  3802.  
  3803.  
  3804.  
  3805.  
  3806.  
  3807.  
  3808.  
  3809.  
  3810.  
  3811.  
  3812.  
  3813.  
  3814.  
  3815.  
  3816.  
  3817.  
  3818.  
  3819.  
  3820.  
  3821.  
  3822.  
  3823. _________________________________________________________________
  3824.                Release 2.0
  3825.  
  3826.                             page -58-
  3827.  
  3828.  
  3829.