@DATABASE "changes.guide"
@NODE "MAIN" "CNet Changes/Readme"
@TOC "MAIN"

         @{b}-= CNET AMIGA PROFESSIONAL BULLETIN BOARD SYSTEM V4.X =-@{ub}

         Continued development by @{" Ray Akey " LINK "RAY1"} and @{" Todd H. Knight " LINK "TODD1").

          Now coded by Ray Akey under the auspices of @{" ZenMetal " LINK "ZENMETAL"}.

                   @{" Introduction                 " LINK         "INTRO"}

   @{" Changes v4.1                 " LINK    "CHANGES41A"}        @{" Changes v4.11                " LINK   "CHANGES411B"}
   @{" Changes v4.12a               " LINK   "CHANGES412A"}        @{" Changes v4.12c               " LINK   "CHANGES412C"}
   @{" Changes v4.12d               " LINK   "CHANGES412D"}        @{" Changes v4.13                " LINK    "CHANGES413"}
   @{" Changes v4.13b               " LINK   "CHANGES413B"}        @{" Changes v4.20                " LINK    "CHANGES420"}
   @{" Changes v4.21                " LINK    "CHANGES421"}        @{" Changes v4.22                " LINK    "CHANGES422"}
   @{" Changes v4.23                " LINK    "CHANGES423"}        @{" Changes v4.24                " LINK    "CHANGES424"}
   @{" Changes v4.24a               " LINK   "CHANGES424a"}        @{" Changes v4.24d               " LINK   "CHANGES424d"}
   @{" Changes v4.24e               " LINK   "CHANGES424e"}        @{" Changes v4.24f               " LINK   "CHANGES424f"}
   @{" Changes v4.24g               " LINK   "CHANGES424g"}        @{" Changes v4.24h               " LINK   "CHANGES424h"}
   @{" Changes v4.25                " LINK    "CHANGES425"}        @{" Changes v4.25a               " LINK   "CHANGES425a"}
   @{" Changes v4.26a               " LINK   "CHANGES426a"}        @{" Changes v4.26b               " LINK   "CHANGES426b"}
   @{" Changes v4.26c               " LINK   "CHANGES426c"}        @{" Changes v4.26d               " LINK   "CHANGES426d"}
   @{" Changes v4.26dR2             " LINK "CHANGES426dR2"}        @{" Changes v4.26eR1             " LINK "CHANGES426eR1"}
   @{" Changes v4.26f               " LINK   "CHANGES426f"}        @{" Changes v4.26g               " LINK   "CHANGES426g"}
   @{" Changes v4.26h               " LINK   "CHANGES426h"}        @{" Changes v4.26i               " LINK   "CHANGES426i"}
   @{" Changes v4.26j               " LINK   "CHANGES426j"}        @{" Changes v4.26k               " LINK   "CHANGES426k"}
   @{" Changes v4.27                " LINK    "CHANGES427"}        @{" Changes v4.27a               " LINK   "CHANGES427a"}
   @{" Changes v4.27b               " LINK   "CHANGES427b"}        @{" Changes v4.28                " LINK    "CHANGES428"}
   @{" Changes v4.28a/b             " LINK   "CHANGES428b"}        @{" Changes v4.28c/d             " LINK   "CHANGES428d"}

   @{" Future Notes                 " LINK        "FUTURE"}        @{" Important Addresses/Numbers  " LINK     "ADDRESSES"}

@{b}---@{ub}
Amiga, C=, Commodore and Amiga Technologies are trademarks of Gateway 2000.
SAS/C is Copyright © 1988-1995 SAS Institute, Inc.
StormWizard is © Haage & Partner.
CNet Amiga is trademark and © ZenMetal Software.

-- All CNet changes/documentation written and updated by Ray A. Akey

@ENDNODE

@NODE "INTRO" "Introduction"

                      @{b}INTRODUCTION TO CNET AMIGA V4.X@{ub}

   First, let me give a gracious and heart-felt thanks to Ken Pletzer for
making CNet Amiga what it was when ZenMetal Software resumed development,
and for giving Todd and myself the opportunity to continue CNet's development
in the same direction as planned by himself but with an expanded outlook.  Under
our wing, CNet will also have a new outlook towards even more network integration
and Internet connectivity. Also planned under the ZenMetal moniker is multi-tier
support, from the current Fidonet and C-Link connections to "Zen/Metal internet
support" and worldwide dealer support.

   Also, please allow me to thank all those who have remained patient with
Escom/Amiga Technologies, Viscorp, the new GATEWAY 2000 Amiga acquisition
and the Amiga when others were jumping ship - developers and users alike.
Also to those who stuck by CNet when Ken had no time for support in the same
magnitude to which you/we had become accustomed.  Those who know me, know of my
unwavering dedication to development for the Amiga and CNet Amiga in specific.
This very premise will not change for quite a long time to come.

...to quote a line from one of my favorite movies, "They're heeeeeeeeeere!"

Ray.

(Now, on to the meat of things..)

@ENDNODE


@NODE "CHANGES428d" "4.28c/d Changes"

@{b}Changes/fixes for v4.28c@{ub}
-----------------------------------
1.  Bug fixed where BBSList produced garbage characters in last entry and
    caused enforcer hits.

2.  Change to line 336 of !bbstext_stock.

3.  Fixed unlock which was ot flushing it's output before printing input
    prompts; making unlock appear to be locked up.

4.  Broken "AREA: <area name>" logging in BAD_MSGS reinstated in Toss import
    routines.

5.  Toss altered to handle non-standard/munged packets a bit better.

6.  BGUI Config completed.  wizard.library is no longer required by CNet Amiga.

7.  Fix for bug that allows user to choose who to send mail to if "feedback @login"
    is allowed and "feedback goes to mail #1" is enabled.

8.  Multi-Mail (MM) reinstated.  Changes to bbstext lines 2127-2130 and 2301.

    If mail is sent to a RANGE of users using, for example, the command "MS 1-",
    then the user will be prompted YES/NO for each and every user in the range
    specified.  However, if "MS 1-!" is used, then a global "YES" is assumed.

9.  Also, range mail has been changed and the Multi-Mail flag is applied to any
    mail sent using a range of account numbers or users.  If a user attempts to send
    to more than 1 user per email and the MultiMail proviledge flag is not enabled,
    MailSend is aborted.

10. It is now possible to mail users belonging to a specific access group or
    range of access groups.  To specify an access group or range of access
    groups rather that a user account, the arithmetic plus (+) character is
    added before the access group number.

       eg. MS +31

       The above example would mail all users in access group 31, interactively
       asking the sender if he/she wishes to include each user.

       eg. MS +31!

       This example is the same as the above example except that there is no
       interactive query; ALL users belonging to access group 31 are included.

    other examples:

       MS +1-4
       mail users belonging to access groups 1 through 4.

       MS +1-2,6
       mail users belonging to access groups 1,2 and 6.

       MS +1-2,6;Heavy Metal
       mail users belonging to access groups 1,2 and 6 and also the user with
       the handle "Heavy Metal"

       MS +1-2,6;Electropig;rakey@netrover,com
       mail users belonging to access groups 1, 2, 6, the user with the handle
       "Electropig" and the internet account belonging to "rakey@netrover.com"

    Changes to BBSTEXT line 1522-1523.

11. IMP section of config is now more intelligent.

    If Control is running, instead of requiring that you enter the exact
    GO KEYWORD of the subboard to be associated with the mailing list gate,
    all configured mailing list subboards are listed in a cycle gadget for you
    to choose from.  This cycle gadget is updated dynamically so, if you find
    that you haven't created the mailing list subboard yet: create it and then
    click on ANY entry in the IMP list of Config and the cycle gadget will be
    updated to contain the newly added mailing list subboard go keyword.

    If Control is not running, you MUST enter the full text GO KEYWORD of the
    mailing list subboard, as before.  For absolute error-free GO KEY choice,
    we recommend that you have Control running while setting up your IMP
    mailing list gate(s).

    NOTE: After changing IMP config, you must (still) quit and reload Control
          for your IMP changes to take effect.  this limitation WILL be removed
          soon.

12. New sysop GUI "UserEdit" added to ease local console editing of users!
    If a port is selected, and the UserEd button of Control is clicked,
    the selected port user is auto-selected in UserEd's list.  The UserEd
    GUI is similar to the online "EL" VDE (Visual Data Editor).
    
    UserEd buttons/Gadgets:

       USERS:
       A list of existing BBS users.  Select a username to view
       and that user's account attributes are displayed in the
       initially locked gadgets.  Note that if a user is in LOCK/EDIT
       mode, clicking on any user in this list will cause your changes
       to be abandoned.

       LOCK/EDIT:
       Use this button to LOCK the currently selected user and begin
       making changes to account attributes.
       
       UNLOCK/SAVE:
       Use this button to commit/save any changes made to an account
       since the LOCK/EDIT button was pressed.

       REFRESH:
       Refreshes the UserEd user list and the current user.  Note that
       if you use refresh while a user is locked/edited, you will lose
       any changes made to that user.

       All other buttons, tabs and other gadgets are exactly like their
       online "EL" VDE version in name and attribute.  See your CNet manual
       if you need information on any of these attributes and their
       purpose.

13. (coders) Mailboxes now require locking a semaphore before accessing
    _mhead/_mtext.  The semaphores associated with mailboxes range from
    0 to myp->Nums[0] and are located in a dynamic array of SignalSemaphores
    in myp->MPE->MailSem[x] where x=Account_Number-1.

    Try not to keep these semaphores locked for too long as users logging
    on may need to access their mailboxes and if you have an outstanding
    lock on their mailbox.  eg. lock mailbox, read/write/copy data, unlock
    mailbox.

    See control.h and the MainPortExtension structure for more info.  

14. New function GetRFCDate() added to cnet.library for support of
    internet RFC format dates.  Note that CNet uses locale.library to get
    GMT offset information.  You should set your system timezone using the LOCALE
    preferences editor found in sys:prefs.

    example for coders:

       void main(void)
          {
          char datebuffer[40];
          struct Library *CNetBase;

          if(CNetBase = OpenLibrary("cnet.library", 4L))
             {
             GetRFCDate(datebuffer);
             Printf("RFC date is: %s\n", datebuffer);
             CloseLibrary(CNetBase);
             }
          return;
          }

15. #?-task buffer refresh now more efficient when de-menufiying and de-iconifying.

16. Setting was not being saved for "Command" string gadget of Config/IMP when
    process-type "AmigaDOS/RX script" is used.


@{b}Changes/fixes for v4.28d@{ub}
-----------------------------------
1.  SMTP daemon (cnsmtpd) now included with CNet.  This daemon is one that
    should be run AFTER both your TCP/IP stack AND Control are running.  It
    will accept a maximum of 32 simultaneous SMTP connections. It is also an
    AmigaDOS executable that should be run in any AmigaDOS Shell.

         eg.  run cnet:cnsmtpd

2.  SMTPd section added to Config.  There are currently two lists on this page:

         LOCAL HOSTNAME/ALIASES
         
           This is a list of hostnames/aliases that your system is known as.
           For example, your system may have multiple domain names.  Enter
           all names/aliases that your system is known as in this list.
         
            eg. metalshoppe.dyn.ml.org
                metalshoppe.com
              
                (note that the above examples are not really existant. They are
                 for purposes of illustration only)

           NOTE: An entry for "LOCALHOST" must exist so be sure to add this alias.


         SPAM HOSTS/IPs
         
           This is a list of sites, hostnames and IPs that should be ignored.
           If a system in this list attempts to hit your system via SMTP
           it will be ignored.

            eg. make.money.fast.com
                spam.com

                (note that the above examples are not really existant. They are
                 for purposes of illustration only)

3.  CNetIRC EDIT SERVER fixed.  It was previously possible to specify a server
    number higher than that of the number of servers configured.

4.  TimeZone setting added to Config/defaults.  Please set this attribute
    to the three letter abbreviation of your timezone (eg. CST, EST, etc.)

5.  Control received a new menuitem titled "cnsmtpd" under the menu "Internet"
    When selected, this menuitem will run the cnsmtpd task.

    NOTE:  This menuitem requires that cnsmtpd be located in your CNET: directory.

6.  Added S=RUNSMTPD arg to Control.  To have Control run cnSMTPd when it boots
    use the S arg as follows:

       run <>NIL: Control s

7.  Host Filter editing added to cnSMTPd.  "SPAM" hosts can be added while
    sessions are in progress.  Changes are saved to disk when the Host Filter
    window of cnSMTPd is closed.  cnSMTPd doesn't apply the changes to sessions
    until they are saved to disk.

8.  CNetIRC now allows local "Everywhere" commands to be used.

        eg.  /WHO

9.  CNetIRC status bar fixed in many key locations where it was not refreshing.

10. CNetIRC now displays OLMs when received by the user's port rather than after
    quitting IRC.

11. Amaint enforcer hit removed.

@ENDNODE

@NODE "CHANGES428b" "4.28a/b Changes"

@{b}Changes/fixes for v4.28b@{ub}
------------------------
1.  All task GUIs converted to BGUI layout.  One difference from the
    StormWizard task GUIs is that to save the mail-task window position,
    you must use the menu "MAIL-TASK" menu and select SNAPSHOT WINDOW to save
    window size/position.  Control's Mail, Files, Yanks and News popup menu
    buttons also received a new menuitem, "Snapshot Position" for extended
    control.

2.  Fixed IMP Mailing List Gate bug where only replies were being sent to the
    mailing list address; posts were posted using the regular subboard posting
    mechanism.

3.  Fixed global FTN post/reply bug which caused posts/replies to be sent to
    the wrong network.

4.  All CNet GUIs now have public screen support.  If you run control using
    the PUBSCREENNAME=<screen name> arg, all CNet tasks (eg. mail-task,
    file-task, etc.) will open their windows on the public screen specified
    when spawned by Control - whether at startup or when you use the popup
    menu task buttons.  Each task also has it's own PUBSCREENNAME argument
    that can be added if you choose to run the task(s) via script or by hand.

    PLEASE NOTE that Control does not (yet) open the public screen for you. You
    must use a utility such as ScreenWizard, ScreenManager, Pubby or some other
    public screen utility to initially open the public screen that you want
    CNet to use.

Note: The StormWizard layout library (wizard.library) is still used for CNet's
      "Config" program which will be re-written to use the faster BGUI layout
      engine in a later release.  The Config GUI re-code will take approx. 2
      days to complete.  Therefore, some previously reported bugs must be
      fixed in the meantime.  Please have patience with the current
      StormWizard Config program.  It will be much faster and less buggy once
      converted to BGUI. Once Config is re-written, the buggy StormWizard - as
      far as CNet development goes - will be scrapped.


@{b}Changes/fixes for v4.28a@{ub}
------------------------
1.  Fixed "**NULL POINTER**" that was appearing in mail subject of some mails.

2.  Fix for the amaint bug that results in the user being put in a different
    subboard after completion.

3.  Alternate Control BGUI created using the BGUI.library BOOPSI GUI layout
    library. BGUI may end up taking over since StormWizard could not function
    propely.  You do not have to rename the BGUIControl as Control but you
    may if you like.  BGUIControl, of course, accepts the same CLI args
    that the StormWizard Control did/does.

4.  For the BGUI Control GUI, you can now define which system stats are
    displayed.  The default of "Sysop Mail, Mail1, Calls Logged, Total Calls,
    Current NUsers, Users, Posts Now, Resps Now" can be changed.
    
    To change the items displayed, edit BBSTEXT line 2335.  Each %X represents
    one item on the Control panel stats display. eg. %g represents "Sysop Mail".
    Also, it is critical to note that the order that you put these in is not
    important but there is an order in the layout process.  Each %X is laid out
    as follows:

                    1  3  5  7   9   11
                    2  4  6  8  10   12

    So, "%g%i%q%r%n%s%j%k" is laid out as so:

      Sysop Mail: xxx  Calls Logged: xxx  Current NUsers: xxx  Posts Now: xxx
           Mail1: xxx   Total Calls: xxx           Users: xxx  Resps Now: xxx

    Example 2: "%1%i%q%r%n%s%j%k" is laid out as so:

     Total Sysop: xxx  Calls Logged: xxx  Current NUsers: xxx  Posts Now: xxx
           Mail1: xxx   Total Calls: xxx           Users: xxx  Resps Now: xxx

    NOTE that the difference in example 2 is the change of the first sequence
    from %g to %1 which changed "Sysop Mail:" to "Total Sysop:"

    Here is the list of available variable placeholders for Control's status
    "bevel box" area:

       %1   =   Total FBack            %2   =   Total Mail
       %3   =   Total Mail1            %4   =   Total Posts
       %5   =   Total Responses        %6   =   Total ReadText
       %7   =   Total Doors used       %8   =   Total Newusers & Guest
       %9   =   Total Upload Files     %a   =   Total Upload K
       %b   =   Total Download files   %c   =   Total download K
       %d   =   Total Minutes USE      %e   =   Total Minutes IDLE
       %f   =   Total Charges          %g   =   Current FBack
       %h   =   Current Mail           %i   =   Current Mail1
       %j   =   Current Posts          %k   =   Current Responses
       %l   =   Current ReadText       %m   =   Current Doors used
       %n   =   Current Newusers       %o   =   Current files online
       %p   =   Current files K online %q   =   Calls logged
       %r   =   Total Calls            %s   =   Total users

    NOTE that after changing the Stats lines in bbstext, you must use the
    Control RELOAD TEXT/MENU menuitem and then close (iconify) and reopen
    the BGUIControl window to see your changes.

@ENDNODE


@NODE "CHANGES428" "4.28 Changes"

1.  Config listview problems fixed in Logs, Modems, etc where double-clicking
    on a list item caused an alert.

2.  Config was now allows the addition of a "modem" with no device.name to
    be used as a local port.

3.  One can no longer run Config if the Control panel is locked.  Remember, after
    you select "Lock and Write Setup" in Control's menu, you must use the command
    CNET:UNLOCK to unlock the Control panel.

4.  One can no longer run CRON if the Control panel is locked.  Remember, after
    you select "Lock and Write Setup" in Control's menu, you must use the command
    CNET:UNLOCK to unlock the Control panel.

5.  Fixed File-Task Appicon which was not being properly saved in
    Config/Display/File-Task Appicon.

6.  InterceptMailProcess (IMP) added to CNet.  IMP is destined to be one of the
    most powerful concepts of the CNet mail sub-system. Using the Config/IMP
    section, you can now have CNet look for messages addressed TO or FROM users
    and have that mail processed one of 2 CURRENT ways (may be expanded in the
    future):

           1) by a DOS script specified in the IMP section of config.
           2) by redirecting to a CNet subboard as a mailing list gate
              also configured in Config/IMP.

    Config's IMP attributes will change depending on the type of processing
    is to be done for the TO or FROM address given.

    The "Apparent Recipient" is any string of alpha-numberic characters
    currently matching one of the following: (full AmigaDOS pattern matching is
    supported here).

           1) The "TO:" of an RFC-822 compliant Internet E-Mail.
           2) a FTN (FidoNet) email's TO address.

    The "Apparent Sender" is any string of characters (with full AmigaDOS
    pattern matching) matched in any combination of the following fields/formats:

           1) The "Reply-To:" or "From:" of an RFC-822 compliant Internet E-Mail.
           2) a FTN (FidoNet) email's FROM address.

    Toss, mail-task and iuumail have been altered to support the IMP system.
    As with any new concept or feature, there may be minor bugs. Please
    report any bugs ASAP.

    IMPORTANT IMP EXAMPLE:
    
           The Apparent Sender/Recipient field should COMPLETELY match the
           attribute it is being compared against.  Thus, if one wanted
           to gate the cnet mailing-list to a subboard with a "GO keyword"
           of mailinglist_cnet, look at the "Reply-To:" header of the email
           and find the following:

                 Reply-To: cnet@megalith.dade.fl.us (MailingList 'cnet')

           To successfully gate all mail with a Reply-To like this, you would have
           to use one of the following examples as the "Name/Pattern" of your IMP
           filter:

                 cnet@megalith.dade.fl.us (MailingList 'cnet')
                 #?cnet@megalith.dade.fl.us#?
                 #?MailingList 'cnet'#?

           or any variation thereof. Note that the first possible name/pattern
           is not a "wildcard" pattern and is a COMPLETE match for the whole
           Reply-To.  However, the other name/pattern examples all contain the
           AmigaDOS wildcard pattern (#?).  WildStar (*) support is possible
           if you have enabled Wildstar via a Commodities exchange program (AKA
           commodity).

6.  Mailing List support (gating in/out) added to CNet subboards. To make a CNet
    subboard a mailing list gate:

           1) use the EL command and set the subboard's NETWORK setting to
              "Mailing List".  
           2) Set the "Process Method" in Config/IMP to "Mailing List Gate".
           3) Set the Detect Type to "Apparent Sender" and be sure that the
              Name/Pattern matches or partially matches the "Reply-To"
              address of the mailing list.
           4) Set the "List Address" to the e-mail address of the mailing list.

7.  Change to BBSTEXT lines 1666 and 1867-1870 for mailing list support.

8.  Added help file systext:help/mailinglist.

9   Final fix of the "missing short description" bug when files are moved.

10. Fixed problem that some sysops were experiencing which caused crashes when using
    shortcut keys (eg. Right Amiga '-').

11. Of interest to door coders, more functions appear in cnet.library:

       ------------------------
       Name     : NumFromUnique
       Prototype: short NumFromUnique(char *gokeyword);
       Purpose  : Allows one to find the physical subboard number of the
                  subboard having a go keyword of <gokeyword>.  The physical
                  subboard number is the one used to access the given subboard
                  in the global subboard list.
       Returns  : Physical subboard number pertaining to the given go keyword or
                  -1 if not found.
       Bugs     : None

       EXAMPLE:

               short PhysNum;

               PhysNum=NumFromUnique("FILES");
               if(PhysNum > -1)
                  {
                  sprintf(z->ABuffer, "GO keyword FILES pertains to subboard %s\\n",
                                      myp->Subboard[PhysNum].Title);
                  PutA();
                  }
               else
                  PutText("No subboard found with a go keyword of FILES\\n");


       ------------------------
       Name     : FindOrdinal
       Prototype: struct Node *FindOrdinal(struct List *list, short n);
       Purpose  : Finds the list node pertaining to a given node number.
       Returns  : Pointer to the Exec node pertaining to <n> or NULL (0L)
                  if not found.
       Bugs     : None

       EXAMPLE:

               struct Node *nodeptr;
               struct Node addnode;
               char nodename[10]; // 9 chars max nodename + 1 char for NULL ('\\0') byte
               struct List mylist;

               // list setup
               NewList(&mylist);
               strcpy(nodename, "dummynode");
               addnode.ln_Name = &nodename[0];
               AddTail(&mylist, &addnode); // could have also used AddHead()..

               // FindOrdinal usage..
               nodeptr=FindOrdinal(&mylist, 0);
               if(nodeptr != &addnode)
                  Printf("Error finding node %d\\n", n);
               else
                  Printf("Node %d found; name: %s\\n", n, nodeptr->ln_Name);


       ------------------------
       Name     : InStr
       Prototype: short InStr( char *string, char *isin );
       Purpose  : case insensitive check to see if <isin> is a substring of <string>
       Returns  : 0 if <isin> is NOT a substring of <string>, starting position
                  of match otherwise.
       Bugs     : None

       EXAMPLES:

               if((InStr("Reply-To: rakey@netrover.com", "reply-to: ") == 1)
                  {
                  printf("This is a valid Reply-To line.\\n");
                  }

               if((InStr("Rly-To: rakey@netrover.com", "reply-to: ") == 0)
                  {
                  printf("This is not a valid Reply-To line.\\n");
                  }


       ------------------------
       Name     : AllDigits
       Prototype: short AllDigits( char *string);
       Purpose  : check to see if <string> contains only ASCII digits
       Returns  : TRUE (1) if string is all digits, FALSE (0) otherwise.
       Bugs     : None

       EXAMPLES:

               if(AllDigits("12345678901234567890"))
                  printf("All digits!\\n");
               if(AllDigits("1a3b5c7d9e1f3g5h7i9j"))
                  printf("Oops! Some non-numeric characters present!\\n");


       ------------------------
       Name     : CopyFilterText
       Prototype: CopyFilterText(char *dest, char *source);
       Purpose  : Copies source to destination, removing MCI, carriage returns
                  linefeeds and converting TABS to 3 spaces in the process.
                  This is the function used to prepare text to be displayed in CNet
                  GUI buffers.
       Returns  : None
       Bugs     : None

       EXAMPLES:

                  // print a known BBSTEXT line that has MCI in it
                  PutText(bm[44]);

                  // now Copy/Filter the same line to z->ABuffer and print it
                  // using PutA()
                  // the second printed version will be stripped of MCI and the
                  // control characters mentioned previously.
                  CopyFilterText(z->ABuffer, bm[44]);
                  PutA();

@ENDNODE

@NODE "CHANGES427b" "4.27b Changes"

1.  Re-instated BBSTEXT line 1124 to allow MCI to be executed at the END of
    the new user process.

2.  All background task GUI (mail-task, file-task, etc.) buffers now
    scroll so that the last action performed is visible in the scrollback
    display at all times.

3.  Added Yank-task GUI, very much similar to mail-task, news-task and
    file-task GUIs.

4.  Added window menus for clipboard support to mail-task, file-task, yank-task
    and news-task GUIs to allow buffer contents to be copied to clipboard unit 0.

5.  Added the ability to save all "task" GUI buffers to a file.  This is also
    in a window menu as "Save buffer as.."

6.  Added clipboard support to CNet's Visual editor (VisEd), finally!  Each port
    uses one of 100 separate units of the Amiga clipboard.device.

       eg. BBS port 0 uses clipboard.device unit 1
           BBS port 1 uses clipboard.device unit 2

    this is intenational so that online users do not disturb the contents
    of unit 0 which is used by many other Amiga application programs.

    Some editors, such as CygnusEd allow you to select a clipboard unit to paste
    from.  The sysop may, for example, on port 3 copy a region of text in
    his VisualEditor to the clipboard (using the VisEd REGION MARK and then REGION
    COPY commands) and then, in CygnusEd, select clipboard unit 4 and paste
    from that unit, to insert his VisEd text into CygnusEd.

7.  Config/tasks section added for configuration of mail, news. file and yank
    task.

8.  Added max buffer sizes for all tasks in Config/tasks.  These settings are
    the maximum number of LINES to be buffered in the "status listview" at the
    bottom of each #?-task GUI.  Anything past the number of lines specified
    will result in a first-in/first-out replacement of buffer lines.  A setting of
    0 means that you do not want the task buffers to be trimmed.

@ENDNODE


@NODE "CHANGES427a" "4.27a Changes"

1.  The EnterPassword() function now supports case-sensitive password entry.
    Use the following function or a snippet of this code in your doors, to support
    case sensitivity in passwords:

       void MyGetPassword( void )
          {
          // retain old input case setting
          UBYTE OldCaseFlag=z->NoCaseConvert;

          // set input routine flag to NOT convert password to uppercase
          // this same flag affects the case setting of the OneKey()
          // function also
          z->NoCaseConvert=1;
          EnterPassword();
          
          // restore old input case setting
          z->NoCaseConvert=OldCaseFlag;
          }

    NOTE: the password received by EnterPassword() and, hence, the password
          received by the MyGetPassword() function above is always retained
          in z->InBuffer after calling EnterPassword(). Also note that
          if z->NoCaseConvert is set to 0 (the default) instead of 1, the returned
          password is all uppercase.

2.  DOS arg support added to transpose for use in BBSMENU commands AND CNetC
    Cron events. Tranpose now accepts two DOS arguments; a user account number and
    an access group number to do auto-transpose.

      eg. {CNET:DOORS/transpose 1 31}

    The above would assign account number 1 to access group 31.

    With auto-transpose, the only "priviledge flag" not lost is the
    "SuperUser" flag.  All other flags, limits and priviledges are set to the
    newly assigned access group defaults.

    NOTE: both arguments must be specified and must be NUMERIC.  No
    handle/name parsing is performed for auto-transpose.

3.  The Control panel's Mail, File and News task buttons are now multi-
    function pop up menu buttons that have different functions depending
    on whether the tasks are absent, running, iconified or menufied.

4.  Controversial password echoing removed.  No longer does CNet echo
    a user's password back to them after the newuser process is complete nor
    does CNEt display the user's password as it is entered.  A second password
    prompt now serves as verification that the user entered the intended
    password.

    Changes to BBSTEXT lines 168-170 and 1124-1129 inclusive.

5.  Both iuumail and mail-task's internet email import was ignoring mail files
    that had messages containing \\t (tab) in the "from: " field. Fixed!

6.  Mail-task was not sending spooled email unless an email was written while
    the system was connected to the internet.  mail-task now checks for a valid
    internet connection (via bsdsocket.library) every x seconds in order to
    send spooled internet mail.  The spool-send-timeout is configurable in
    the defaults page of Config as "Mail Timeout (secs).  If there is no spooled
    mail, the connection check is not performed.

7.  File-task has received a GUI much like mail-task and news-task GUIs so that
    it is easier to visualize file-task's test and transform processes.
    Don't forget to copy (or create your own) sysdata:file-task.info if you
    want file-task to be capable of being iconified.

@ENDNODE

@NODE "CHANGES427" "4.27 Changes"

1.  Fixed CNetIRC enforcer hits that occured when no TCP stack was running
    and a user runs CNetIRC.

2.  Mail-task is now capable of posting internet mail directly to a SMTP
    mail server.
    
    The following config settings have been added to CNet config, to
    support SMTP posting:
    
     DEFAULTS:  Mail Server
     OPTIONS:   Send Mail - options: "using external sendmail"
                                     "using internal SMTP"

@ENDNODE

@NODE "CHANGES426k" "4.26k Changes"

1.  Bug fixed in which expire mail caused mail counts to be improperly
    represented.
2.  Fixed Control "stats" display bug which consumed CPU bandwidth.
3.  Added "Posts" and "Responses" statistics display to Control.
4.  Fixed Config bug in which Export-To areas and nodes were flagged
    incorrectly.  Exported areas were denoted with no "+" and non-exported
    nodes were denoted by a "+".

@ENDNODE


@NODE "CHANGES426j" "4.26j Changes"

(This was just a quick bug-fix release consisting of mail-task, news-task
and Config and their associated #?.wizard and #?.cd files.)

1.  Fixed some minor case inconsistencies in Config GUI.
2.  Mail-task and news-task GUIs reworked slightly to allow the windows to
    be compacted even more.
3.  Fixed a major Config ScreenMode bug that was causing TWO Config windows to
    open leaving one window open when Config was closed.

@ENDNODE

@NODE "CHANGES426i" "4.26i Changes"

1.  BBSList and associated amaint bbslist maintenance code re-written.

2.  CBase.library is no longer required for CNet/4.  You may delete
    libs:cbase.library once you are satisfied that you will not be
    regressing to a version of CNet previous to v4.26i.

    Also note that because cbase is no longer used for amaint or bbslist,
    cbase.library is now obsolete.

3.  Fixed cnet.library's HNameToUUCP() bug which caused netmail/email to
    "sysop" to be bounced.

4.  Various Control Panel GUI fixes to optimize speed and correct visible
    quirks due to Control panel window sizing.

5.  CNet's Config GUI received a brand new look designed to enhance
    user-friendliness!  Like all other CNet executables that are GUI-based,
    you must issue the command CD CNET: before running the new config.
    A new "Config" button has been added to the CNet Control panel to allow easy
    Config execution.

@ENDNODE

@NODE "CHANGES426h" "4.26h Changes"

1.  Fixed CNET:CLOSE command and added a new "ALL" argument.

       CLOSE ALL will close all ports one at a time when users logoff.
       CLOSE ALL HANGUP will close all ports and dump users immediately.

2.  Fixed Z search lockups when a file with > 8 line short file description is
    displayed.

3.  Various new Control GUI fixes.  Please notify ZenMetal if there are any
    remaining quirks apparent.

    KNOWN BUG: sometimes, when Control is resized, a few gadgets are not
    refreshed. This includes the window SIZE gadget itself.  The gadgets ARE still
    attached.  Resizing the window again will make the gadget(s) re-appear.
    This is a StormWizard SCROLLER gadget bug which has been reported to HAAGE &
    PARTNER and will be fixed as soon as possible.

4.  Fixed cnfingerd.

@ENDNODE

@NODE "CHANGES426g" "4.26g Changes"

1.  Control Panel, mail-task and news-task all received a new look.  CNet sysop
    GUIs are now created using HAAGE & PARNER's StormWizard 2.0.  You'll notice
    a nicer flow to CNet GUIs and also more Intuition Style Guide compliance.
    The next release, Config and Cron will also receive the new GUI treament
    as well as more bug-fixes reported throughout the v4.26f release.


@ENDNODE

@NODE "CHANGES426f" "4.26f Changes"

1.  Mail filtering at both user-level and sysop-level added.

2.  sysdata:sys.MailKill added.  Use "MK" to edit this file.

    The MailKill file essentially functions as an incoming GLOBAL mail filter.  What
    makes it global is that no matter WHO the incoming mail was addressed to, it
    will never be imported/delivered to anyone on your system.

    You may put handles, real names, network addresses or partial matches for any of
    the aforementioned in the mailkill file.  Mail kill patterns/names
    are entered one pattern per line.  Be VERY careful with auto-killing internet
    mail.  You may essentially short out your complete internet mailing system.
    Be sure to use the proper filter pattern forthe intended mailkill entry.
    
    Each user will also have his own private mail kill capabilities, known as
    a "twit filter".  This is edited by the user using the "MF" (MailFilter)
    command. (but not yet implemented as of CNet v4.26f)

    Kill filters use the familiar AmigaDOS pattern parsing/matching system so,
    if you have a wildstar (*) commodity installed, * may be used in place of #?
    in patterns.  Also the special characters ~()? may be used.  The character
    '?', when used in a pattern represents any character. "#?" represents
    a whole substring of characters. See your AmigaDOS manual for more
    information on AmigaDOS file patterns.

    Changes to BBSTEXT line 1200.

    Example MailKills
    -----------------

    eg. Internet filters:

        single user:                    username@somedomain.ext
        whole domain:                   #?@somedomain.ext
        .org domains:                   #?@#?.org
        .com domains:                   #?@#?.com

        ISP specific kills

        all users at netrover's
        Windsor providership:           #?@windsor#?.netrover.com

        all users at AOL:               #?@aol.com
                           
        psuedo-Class C internet filter: #?@ipbits1.ipbits2.ipbits3.#?
        psuedo-Class B internet filter: #?@ipbits1.ipbits2.#?.#?
        pseudo-Class A internet filter: #?@ipbits1.#?.#?.#?

        NOTE: although Class A, B and C internet IPs have ranges
        of bits for true class A, B and C qualification, ranges are currently not
        allowed in mail filters.

        Ranges WILL be added in the future.


    eg. FTN (Fidonet) filters

        single user:                    username@zone:net/node.point
        user@subnet:                    Spammer@1:246/#?.#?
        whole subnet (all nodes):       #?@1:246/#?.#?
        whole zone:                     #?@1:#?/#?.#?

    eg. Local user filters

        single user real name:          Ray Akey
        single user handle:             Heavy Metal
        single user account:            1
        multiple user account:          1-20
        all local users:                #?

    eg. Short circuit ALL mail on your system (requires 4 patterns)

        #?*#?:#?/#?.#?
        #?@#?:#?/#?
        #?@#?
        #?

    Again, be very careful adding MailKill entries as a few mis-keyed entries
    could result in short-circuiting the ENTIRE mail system on your BBS or,
    at least short-circuiting any one of local, fidonet or internet mail.


3.  Mail-task received additional log window output to support MailKills.
    If a global mailkill has been effected, you will see the message,
    "Global MailKill: <username>" in the Mail-task window.  Additionally,
    you will see information on who the sender was sending the mail to
    immediately under a mailkill message as: Intended recipient: <username>

4.  Implementation of personal user mail filters.  Users use the MAIL;FILTER
    command to edit their personal mail filter list.

    The SYSOP (or any user with the SYSOP MAINTENANCE priviledge flag) may
    edit the filter lists of other users by supplying an additional
    argument (handle, real name, account) to the FILter command.

       eg. MAIL;FILTER Heavy Metal

    Changes to BBSMENU section "17; Mail".  Note the addition of the "FILter"
    command.

    Changes to menu file systext:menu/mail

    Mail filters are entered one per line.
    Mail filters can be an account number or a partial or full user/network
    address.

       examples: Ray Akey@1:246/74          <- single user REAL name
                 Heavy Metal@1:246/74       <- alternate (handle) method for the same user
                 rakey@netrover.com         <- internet address
                 #?@netrover.com            <- all users at ISP netrover
                 1                          <- local account #1 (sysop)
                 Heavy Metal                <- local user

5.  Personal user mail filters added for subject filtering. Additional
    Changes to BBSTEXT lines 278 and 2261-2264.

    The sysop (or any user with FULL maint) can edit user mail filters
    by entering the POST OFFICE FILTER SETTINGS (MAIL;FIL) and then Nx or Sx,
    where x is the user's account number, handle or real name.

    Please note that subject filters can be a specific topic, or may contain
    pattern matching characters (?, #?, *, etc.)

    Any incoming personal mail that has a topic matching any of the patterns
    specified in the recipient's subject mail filters will be ignored by
    CNet.

6.  Added section "43;Mail filters" to BBSMENU (see !bbsmenu_stock).

7.  Added menu file systext:menu/mailfilter.


@ENDNODE

@NODE "CHANGES426eR1" "4.26eR1 Changes"

                          @{b}CHANGES/FIXES FOR V4.26eR1@{ub}

1.  Short descriptions (most importantly, FILE_ID.DIZ) were not being trimmed
    properly after searching for FILE_ID.DIZ or FILES.BBS. Fixed.

2.  Fixed improperly diagnosed disk free-space displays that have been wrong
    since CNet/3 days.

@ENDNODE


@NODE "CHANGES426dR2" "4.26dR2 Changes"

                          @{b}CHANGES/FIXES FOR V4.26dR2@{ub}

1.  Logging of "ABuffer munged" to sysdata:log/execute whenever the BBS
    detects that an external door has corrupted z->ABuffer.

2.  ABuffer munge check now corrects ABuffer in an attempt to reduce system
    crashes.  Sysops should still reboot or reload the troubled port ASAP
    if they see "ABuffer munged but temporarily corrected" in the log
    sysdata:log/execute.  Be sure to check that log 408 exists in the LOGS
    section of CNet Config.  Log 408 should be named "Execute"

3.  Added ANSI detect @ login. Changes in lines 672, 673 and 674 of bbstext.
    Be sure to remove any previously installed ANSI detection doors from BBSTEXT
    line 22.

4.  When moving file items (the MO command), it is now possible to REPLACE an
    existing file of the same name.  Change to BBSTEXT line 1779.

@ENDNODE


@NODE "CHANGES426d" "4.26d Changes"

                          @{b}CHANGES/FIXES FOR V4.26d@{ub}

1.  Logging of "ABuffer munged" to sysdata:log/execute whenever the BBS
    detects that an external door has corrupted z->ABuffer.

2.  ABuffer munge check now corrects ABuffer in an attempt to reduce system
    crashes.  Sysops should still reboot or reload the troubled port ASAP
    if they see "ABuffer munged but temporarily corrected" in the log
    sysdata:log/execute.  Be sure to check that log 408 exists in the LOGS
    section of CNet Config.  Log 408 should be named "Execute"

3.  Added ANSI detect @ login. Changes in lines 672, 673 and 674 of bbstext.
    Be sure to remove any previously installed ANSI detection doors from BBSTEXT
    line 22.

4.  When moving file items (the MO command), it is now possible to REPLACE an
    existing file of the same name.  Change to BBSTEXT line 1779.

@ENDNODE


@NODE "CHANGES426d" "4.26d Changes"

                          @{b}CHANGES/FIXES FOR V4.26d@{ub}

1.  Implemented Personal user configuration in CNetIRC.  Changes to bbstext
    lines 2292-2334.

2.  Fixed bug where invalid fidonet mail addresses were being incorrectly
    interpreted and sent as internet email.

3.  Nodelist searching (COMMAND: mail;nodelist) fixed for Traplist.library
    v5.2 and below.  The newer traplist.library v5.4 NLEnumNode() function
    is broken and cannot be fixed until I receive a new developer package 
    from the Trapdoor people (request in progress).

4.  News-Task is now started by Control.  To stop Control from running this
    task, add the "W" switch to your Control args in CNet-Startup as follows:
    
       run >NIL: <NIL: Control W

                OR

       run >NIL: <NIL: Control NONEWSTASK

5.  SOME **CNETC** DOORS MAY NEED TO BE RECOMPILED/UPDATED.  PLEASE READ THE
    FOLLOWING IN ENTIRETY TO AVOID PROBLEMS.

    The largest BBSTEXT line length restriction has been removed!  The size
    (length) of the internal ABuffer is now (somewhat) dynamically configurable.
    The sysop sets the MAX size of ABuffer in Config/Limits now, in the
    "Output Buffer (ABuffer) size" attribute.

    If you forget to set this in Config/Limits, the BBS will use a value of 256
    by default.

    The value of "ABufferSize" can be anywhere between 256 and 9999 inclusive.
    These limits are enforced by Config/Limits.

    Please be aware that, after making a change to Config/Limits/ABuffer size,
    Control MUST be restarted before the change will take effect.

    As a side note, contrary to what some sysops believe, there is only ONE
    copy of bbstext in memory at any given moment.  CNet does NOT load a
    separate copy of bbstext for each and every port.  If you increase your
    bbstext by 100 characters, it will only take up approx 100 bytes of memory.

    The only exception to the "one bbstext in memory at a time" rule is
    if you are using "forced" or "port specific" bbstexts for different ports,
    or if you are using more than a single "text translation" (eg.
    bbstexts in two languages)

    Another consideration is to be careful not to set ABufferSize TOO large
    as you lose (number_of_ports_loaded * size_of_ABuffer) bytes when ABuffer
    is increased.  CNet previously used 256 bytes.  A value of 1024 is now 
    recommended.  But, by all means, if you have the memory to spare, feel
    free to make it larger.  You are the one who will benefit by the increased
    size by being able to expand bbstext line lengths that much more.

    C CODERS NOTE #1: please note that ABuffer is now a POINTER variable.  That is,
    the memory set aside for ABuffer can now reside anywhere in memory.  Do not
    count on ABuffer being "in" PortData memory space anymore.  It
    is allocated when each port loads.  z->ABuffer now points to the location
    where the buffer was actually allocated.

    C CODERS NOTE #2: Any door(s) you have written, that use z->ABuffer, MUST be
    recompiled.  SOME older doors may work ok as long as they do not use PutA()
    or otherwise access z->ABuffer.  AmigaDOS doors are not affected by this change
    if they do not access z->ABuffer or myp->PortZ[x]->ABuffer.
    A general rule is to check the WHO command after running a door.  If the actual
    port text is not shown, z->ABuffer has been corrupted and the door you ran last
    needs to be updated.  Another symptom that z->ABuffer has been corrupted is that
    the HEADER (eg. Name, date) of mails and posts/responses will not appear but the
    body text of the message will be printed unscathed.

    AREXX CODERS: If your code uses z->ABuffer directly, you will need to
    alter your door so that it gets the 4 BYTE (32-bit) ADDRESS of the ABuffer
    from z->ABuffer and use THAT address to access ABuffer.  The 4-byte address
    that z->ABuffer points to is the start of the actual memory block that
    where ABuffer space begins.  For example, If the number in z->ABuffer is
    1135a278 Hex, and ABufferSize is 1000, then the actual buffer starts at
    1135a278 Hex and ends at 1135a660 Hex.

    ALL CODERS: The sysop-defined ABuffer LENGTH is stored in myp->gc.ABufferSize
                The address of the START of allocated ABuffer memory is stored in
                the pointer z->ABuffer

6.  CNet no longer prompts you to "Enter an OPTIONAL long description" if "AO!" is
    used to adopt files.

7.  System "NEWS" path (eg. news users see at login) is now configurable in
    the PATHS section of CNet Config.  If you have a subboard set up for users
    to read system news, make sure the "data path" of the subboard and the path
    in "Config/Paths/News Path" are the same.

8.  OLMs are now time-stamped (coders: see olms.h for type).  When an OLM is
    displayed by CNet, it will print the elapsed time (mins:secs format) since the
    OLM was received from the sender.

    Changes to BBSTEXT lines 893, 898 and 920.

9.  It is now possible to specify whether specific ports are shown on the WHO
    display whether idle or not.  This is set in CNet Config, in the "modems"
    section, for each port.

    To toggle whether a port is to be shown on the WHO display, select the modem
    number in Config/Modems and click on the list item "Show Port on WHO display."
    To effect this change, all ports must be reloaded (eg. close port and reload -
    Control does NOT have to be restarted!!).


@ENDNODE


@NODE "CHANGES426c" "4.26c Changes"

                          @{b}CHANGES/FIXES FOR V4.26c@{ub}

If you are running a version previous to 4.26a, please see the note in the
changes for 4.26b section - corrupt userdata may ensue if you to not read
that section

Also: install ALL files and libraries present in this package.  Failure to do
so may result in corrupted userdata.


1.  Fixed Edit Mail Alias (MA) Address field to allow longer for internet
    addresses.

2.  CNetIRC completed.  CNetIRC is a complete IRC solution for your users to
    chat using the Internet Relay Chat protocol.  CNetIRC, like other internet
    clients, requires that you have a TCP/IP stack running.  ZenMetal Software
    recommends Miami which is much easier than AmiTCP for sysops to install.
    The Miami demo can be acquired from the ZenMetal support BBS(es) and aminet
    sites worldwide. The Miami demo has a 30 minute connection limit which is
    generally enough time to test a functional setup.  At the time of writing
    Miami's registration fee is $35.00 U.S.

    CNetIRC setup:
   
        1) copy CNetIRC to cnet:doors/internet_support
        2) add cnet:doors/internet_support/CNetIRC as a CNetC door either in BBSMENU or
           as a regular door.

           To add as a menu command:

            - edit cnet:bbsmenu
            - add the following to the END of section 1;Everywhere commands
              remember: the curly brace "{" is actually CTRL-Q
              the x in the command below is an access group number; the minimum
              access required to use the command "IRC"

               IRC `x | {cnet:doors/internet_support/cnetirc}

        3) login and run your CNetIRC door.
        4) Choose the appropriate CNetIRC main menu command.  An explanation
           of the menu sections follows:
           
              1. Terminal Preferences

                 these are the ANSI emulation options.
                 
                    ANSI scrolling
                    uses ANSI scrolling sequences (works well with most terminals.

                    ANSI locking
                    for CNet LOCAL console only.  This emulation requires a
                    terminal that supports the ANSI locking code (ANSI 't')
                    and most PC/Amiga terminals do not.  CNet Amiga, however,
                    does.

                    Simple ANSI
                    a simplified scrolling using minimal ANSI. this is the fastest
                    display setting useful for busy channels.

              2. Add/edit server

                 this is where users configure their "preset" channels.  Users
                 may specify a default channel to join for each and every
                 configured IRC server.

                 some popular IRC servers/channels are:

                 SERVER:PORT                CHANNEL   DESCRIPTION
                 ========================== ========= ========================
                 irc2.magic.ca:6667         #amiga    Amiga users unite
                 babylon.beyondirc.net:6667 #cnet     CNet sysops/CNet support
                 irc.primary.net:6667       #cnet     CNet sysops/CNet support
                 irc.texas.net:6667         #amiga    Amiga users unite
                 irc1.cerf.net:6667         #amiga    Amiga users unite

              3. Delete server

                 use this option to delete a "preset" server that is not
                 needed anymore.

              4. Personal configuration

                 Select this option to change your "identity" in the channels
                 you join.  You may edit Real name and nickname here.

              5. Quit

                 Select this option to Quit CNetIRC.

              6. Sysop configuration

                 Various sysop configuration items.  (not yet implemented)

        5) To login to an IRC server, press ENTER at the main CNetIRC menu prompt.

3.  identd added for internet user identification.  This is required by many
    IRC servers as, if identd were not supported, each user would appear to look
    the same to the remote server. This can lead to many effects, some of which
    are entire domains being K-lined (removed from access to a server) and
    single user bans.  The bottom line is, if you are going to allow your users
    to access IRC, make sure you have an identd server running.  CNet's identd
    has been coded to allow multiple users to use CNetIRC on different ports
    without consequence.

    To configure identd in your TCP stack configuration:

      MIAMI USERS
      -----------
      select, in your miami window, DATABASE and then choose INETD in the
      cycle button. Add the following entry to the list of inetd services:

          Service : auth
          Socket  : stream
          Protocol: tcp
          Wait    : nowait
          User    : nobody
          Server  : cnet:doors/internet_support/identd

      AMITCP USERS
      ------------
      edit/create the file amitcp:db/inetd.conf and add the following entry:

          auth stream tcp nowait nobody cnet:doors/internet_support/identd

    if an AUTH entry already exists, alter it so that it appears as noted
    above.

    Note: identd does not have to be in the CNET: directory.  You may
    put the identd server anywhere you like but be sure to alter the path in
    your TCP stack's database (the configuration lines above) to reflect the
    true path of the identd program.

4.  Added bbstext lines 2292-2330.

5.  Fixed the bug where CNet was reporting UUCP/Mail ID in use when the "used"
    mail id belonged to a killed user. 

6.  Fixed visual editor bug that caused a guru if the title header
    (eg. "On xxx, xxx wrote:") wrapped to two lines.

7.  Added small header to ReadLog text, printed before the log is displayed.
    Change to bbstext line 2283.

8.  Fixed bug where invalid fidonet mail address was being incorrectly
    interpreted and sent as internet email.

9.  Nodelist searching (command: mail;nodelist) fixed for Traplist.library
    v5.2 and below.  The newer traplist.library v5.4 NLEnumNode() function
    is broken.

@ENDNODE

@NODE "CHANGES426b" "4.26b Changes"

                          @{b}CHANGES/FIXES FOR V4.26b@{ub}

CRITICAL NOTE FOR SYSOPS RUNNING 4.26a:

               YOU MUST RUN THE 426B SHELL EXECUTABLE FOUND IN THE UPDATES
               DRAWER OF THIS UPDATE AFTER INSTALLATION!

IF YOU ARE RUNNING 4.25a/4.26 OR PREVIOUS:

               ** DO NOT ** RUN THE 426B SHELL EXECUTABLE FOUND IN THE
                            UPDATE DRAWER
               COPY or MOVE CNET:BBSCONFIG4 to CNET:CONFIGS/BBSCONFIG4
               COPY or RENAME SYSDATA:BBS.UDATA as SYSDATA:BBS.UDATA4


1. Mail ReplyTo preferences moved to mail:users/xxx/prefs/MAIL

   Programmers wishing to read the user's ReplyTo preferences, must read
   this file; it is NOT kept in memory.  The data is saved in ASCII format
   so AmigaDOS FGets() and ANSI fgets() (and other string-oriented file input
   functions) can be used to read the data effortlessly.

2. GETUSER shift experienced with v4.26a reverted back to v4.26 (CNet/3
   compatible) state.

3. !BBSTEXT_STOCK line 2122 inserted and one of the sets of curly brackets
   {} below line 2122 was removed.
   

@ENDNODE

@NODE "CHANGES426a" "4.26a Changes"

                          @{b}CHANGES/FIXES FOR V4.26a@{ub}

CRITICAL NOTE: YOU MUST RUN THE 426A SHELL EXECUTABLE FOUND IN THE UPDATES
               DRAWER OF THIS UPDATE AFTER INSTALLATION!

1.  Version bumped to 4.26a because the CNET_VERSION string for v4.25a was
    prematurely defined as "$VER: CNet PRO 4.26".

2.  Users can now use [W]rite to edit file short descriptions without the sysop
    being forced to enable "Diz Edit before save".

3.  When a port cannot open the required device, The specified port in
    Control's display is no longer locked in its "Loading.." state.

4.  Changes to lines 2141-2142 and 2162-2163 of BBSTEXT for more verbose
    output of FILE_ID.DIZ processing.

5.  New configuration item in Config/Modems: Idle WHO User

    This is the string that will be displayed in each port's "Name/Handle"
    area in the WHO display when no one is logged in to the port.  If no string
    is set here, the text on BBSTEXT line 903 will be displayed as it was in 
    previous CNet versions.

    A good use of this field is to put the phone number for the port in it, or
    perhaps make note that the port is a telnet line or something along
    those lines.


    To accomplish setting this field on local ports which could previously
    not have a "Modems" configuration, CNet will now allow you to create a
    "modem" with its DEVICE name left BLANK.  If the device name is left blank,
    CNet assumes that the port is a LOCAL PORT.

    eg. you can create a dummy port 0 in modems with no device name specified
        and set an "Idle WHO User" string of "Sysop Port 0".

6.  Furthered completion of DIZ processor.  Any text in a description that
    matches COMPLETELY the contents of any line in sysdata:DizStripText
    is removed from the short description.

      eg.  if a FILE_ID.DIZ contained the following:

              ---------------------------------------
              A great new software release!
              We have pirated it so often that no
              one is PAYING for it! Therefore, we
              are morons. --------- A KuElLe GrOuP!
              ---------------------------------------

           ..and DizStripText contained the following lines to be stripped:

              some line
              another line
              /*|------------|*\\
              --------- A KuElLe GrOuP!
              -

           ..the following would be the short description after stripping:

              A great new software release!
              We have pirated it so often that no
              one is PAYING for it! Therefore, we
              are morons.

7.  Addition to line 2282 of BBSTEXT.

8.  Added "Reformat DIZ" option to subboard EL in Diz Options.  This setting,
    when enabled strips successive spaces, tabs and newlines to make the
    final stripped description look "prettier".  It is really only of
    use if the "Use Strip Text" option is enabled.  It CAN be used to
    clean up sloppy DIZ files though, if enabled.

        eg. if the stripped DIZ looked as follows:



              A great new software release!


              We have pirated         it so often that no


              one is PAYING      for it! Therefore, we
              are morons.



            By enabling REFORMAT DIZ, it would clean up the description to
            look like the one below:

              A great new software release!
              We have pirated it so often that no
              one is PAYING for it! Therefore, we
              are morons.

9.  CNet now checks MailBoxClosed status before carbon copying message base
    posts/responses/echomail to users' mailboxes.  If the mailbox is closed,
    the item is not sent to mail-task for carbon mailing.

10. IUUMail is no longer required for CNet/4.  Mail-task now does the job
    that IUUMail previously assumed.  It is all automatic, so no longer
    do you have to create cron events to get iuumail to run.

    To enable mail-task to recognize and import new internet mail, you must set
    TWO CNet attributes in CNet/Config:

       1. Config/Options:  Be sure "Monitor Internet mail" is enabled.

       2. Config/Paths:    Be sure to put here the path to your user internet
                           mail directory (eg. where your mail retrieval
                           software creates the "username" files - usually
                           UUMAIL: 

                           This was made configurable for future expansion.

                           NOTE: Be sure the path that you put here exists.  If
                                 it does not, mail-task will not create it for
                                 you and if it does not exist mail-task will
                                 ignore your "Monitor Internet mail" setting.

    NOTE: iuumail will continue to be distributed with CNet for the next few
    maintenance upgrades, until we get initial reports of any bugs with
    mail-task importing of internet mail. Thereafter, IUUMAIL will be obsolete.

11. Another small internal bug with mail-task GUI and text containing tabs has
    been found and fixed. This should finally end any CPU contention caused by
    an endless loop.

12. CNet will now create the user Web directory mail:users/<MailID>/Web, if
    enabled in Config/Options.  To enable this, go to the Options editor
    of CNet Config and enable "Create user WEB  directory".

    Mike Meyer, The author of Amiga Web Server (AWS), has released a beta
    version of cnetdir.library. For AWS to recognize CNet user web pages, this
    option MUST be enabled in Config/Options.

13. CNet no longer auto-scans for new mail in mail-read. While this was a nice
    idea, it caused too many problems and confusion for the user.  The new
    user-friendly way to FORCE a rescan while in mailread is for the user to
    issue the command "RESCAN" if he/she sees that new mail is received while
    in mailread.

    See the end of !bbsmenu_stock section "7; Read Mail" for changes/additions.

    Changes to lines 2160-2161 and 219 of !bbstext_stock.

    Changes to systext:menu/Mail-Read.

14. Fixed the "New" button in Config/Modems.

15. Minor fixes to Subboard VDE.  Please run the "CNET:VDE" program in an
    AmigaDOS Shell.

16. IUUMAIL/Mail-task received extended parsing to support POP3 imported mail
    batches.

17. Fixed bug that caused port lockup if the username in MailSend (MS) was preceded
    only by a semi-colon.  eg. "MS ;sysop"

18. News-task added.  News-task is a background Usenet news posting daemon
    that is activated when a user posts or replies in an NNTP "usenet news"
    subboard.  Please note that news-task only posts to an NNTP news server.
    If you do not know the NNTP server name of your ISP (Internet Service
    Provider), please contact your provider's technical support person to attain
    this information.

    To activate news-task posting, you must run CNet Config and go to the
    Options editor and make sure that "News-task post" is enabled.  You must
    also configure the NNTP news server name in CNet's Config/Defaults
    section under the item "NNTP news server".

    If news-task posting is not enabled in CNet Config/Options, CNet will use
    "Postnews" as configured on line 2151 of BBSTEXT.

    A description of line 2151 follows:

      POSTNEWS <%s -f %s -r "%s"

      where:

         POSTNEWS - the name of the external command used to post news via UUCP
                    or NNTP or whatever protocol/mechanism your system needs
                    to use to post Usenet news.

                    If you use INetUtils, you can rename NNTPPost as PostNews
                    and place it in your C: directory or any other path'ed
                    directory.  if you do not do this, you must replace
                    the POSTNEWS text with the full path and filename of the posting
                    program (eg. UUCP:C/POSTNEWS)

                    It is understood, from the PostNews author's documentation,
                    that NNTPPost uses the same command line arguments as PostNews
                    so that NNTPPost can be used as a direct replacement for the
                    UUCP PostNews command.

         <%s      - is replaced by the text to be posted.

         -f %s    - specifies the username (eg. UUCP/Mail ID) that the user is known
                    by on your system.  The %s is replaced internally, by CNet,
                    with the user's UUCP/Mail ID (eg. rakey)

         -r "%s"  - specifies the user's REAL NAME.  The "%s" is replaced
                    internally by the user's real name (eg. "Ray Akey")

19. Added "Reply-To" string/variable to each user account.  When the 426a upgrade
    program is executed, this field is filled in automatically as the user's
    mail id (formerly UUCP ID) plus your systems domain name as configured
    in the main window of CNet's Config GUI.  For example, a user residing
    on the system with an Inet Hostname of "tggh.net" and a user name of "rakey"
    would have a "reply-to" default of:
    
       rakey@tggh.net
    
    Your users may wish to change their Reply-To so that CNet uses their "usual"
    email address.  For example, I would change my Reply-To address on tggh.net
    from:

       rakey@tggh.net

    to my real email address:

       rakey@netrover.com

    The user edits his Reply-To in the new MAIL PREFERENCES editor by using
    the command "MAIL;PREFS" at any CNet prompt.

    The user's Reply-To information is currently only used when "news-task post"
    is enabled and when outgoing posts/responses are made in NNTP (Usenet)
    subboard(s).

    When SMTP/SMTPd is integrated into CNet Amiga, this field will also be
    used in outgoing internet email.

20. Getuser offset type 4 added for direct access to MainPort->MPE.  See
    the included control.h for information and variables contained in
    struct MainPortExtension.

21. Added BBSTEXT lines 2283-2291 for mail preferences support/expansion.

22. Added text file systext:new/replyto

@ENDNODE

@NODE "CHANGES425a" "4.25a Changes"

                          @{b}CHANGES/FIXES FOR V4.25a@{ub}

1.  Mail-task AppIcon problems fixed.  Config no longer locks mail-task in
    iconified state.

2.  Mail-task menufy problems fixed.  Config no longer forces mail-task
    to create an AppIcon if mail-task is not already iconified.

3.  Changes to lines 1646-1647 of BBSTEXT.

4.  SubDirName/GO keyword dupe checking now performed when adding
    a new list object (AL).

5.  Repair_Sub was crashing and writing invalid filenotes/short descriptions.
    Should be fixed now.

6.  ReadLog (RL) now shows all available logs if no argument is given.
    BBSTEXT lines 2273-2278 added. Menu systext:menu/log-read added.

7.  CNet now tries 3 times to send a file to file-task for test/txform.
    If it fails the first time, it will try twice more before processing in
    the foreground.  file-task may not be ready for a TE/TR request if it
    is currently scanning newly queued requests.

8.  Fixed a bug in file-task that caused some items to be tested/transformed
    immediately instead of in the background.

9.  Fixed ARexx SAVESCRATCH command which was not saving account/user changes
    properly.

10. Change to bbstext line 521.

11. Fixed bug that caused MailRead to clear the list of mail items if the user
    was already in mail and used the MR command again.

12. Each subboard now has a "Where/Doing" string that allows the sysop/subop
    to set what is shown in the "Where" field in Control and WHO displays.
    The maximum length of this string is 16 characters.
    (programmers: see SubboardType4.SubDoing)

    Note: Be careful using "EL 1-" and setting the "Where/Doing" string as
          it is possible to clear this setting for all subboards object types
          on the current list.  This may be desirable in some cases so it is
          not ghosted in the "EL x-x1" VDE scenario.

13. Small mail-task bug fixed which caused AreaFix messages to be bounced
    back to their origin even though a successful AreaFix request was
    processed and sent to the requesting system.

14. Re-implemented capability of using EL within subboards.  Currently, EL
    may be used only in message/file/subdirectory subboard (object) types.

15. ML (Move List) can now be used to move a subboard object ANYWHERE in your
    Base.  ML can still be used as before, if two list numbers are supplied,
    to swap two subboard on the current list.  However, if only one subboard
    number (on the current list) is passed (eg. ML12), you will be lead
    through the list of subboards and can choose an appropriate place to insert
    the subboard object.  This applies to all subboard object types. whether a
    subdirectory or regular base (eg. file, message, door, executable) subboard.

    Changes to line 1780 of BBSTEXT.

@ENDNODE


@NODE "CHANGES425" "4.25 Changes"

                          @{b}CHANGES/FIXES FOR V4.25@{ub}

1.  MailSend has received extended handling of closed mailboxes. If a user's
    mailbox is closed and he tries to send mail, he/she is led through a
    series of prompts which accomplish any one of the following options,
    in the order listed:

      - Abort the MailSend
      - Set a forwarding account to receive his/her mail.
      - Open his/her mailbox.

2.  Repair_Mail (RRM) can be used by users to repair the mail in their
    own mail folder(s) only.

3.  More mail-task fixes to prevent lock ups.

4.  NNTP/DIZ VDE options are now properly ghosted for non-message/file
    subboard objects.

5.  Access slider in Config/accounting fixed to properly update the Access
    level and Charge/units/value list.

6.  Yank-task fixed so it cannot be ran again if already running.

7.  OLMs that cannot be saved (ie. if user logs off before OLM could be sent)
    now return a prompt asking the sending user if he/she would like to save
    the OLM to the recipient's mailbox.

    This is only done for SINGLE recipient OLMs.  This feature does not apply
    to *BROADCAST* OLMs.

8.  SPECIAL NEW FUNCTIONS FOR CODERS!

        BYTE InputSignalInit(char *portname);
        void InputSignalDispose( void );

    Valuable new support for CNetC doors to receive exec Messages when user
    keyboard input is available.

    One area where CNet has been lacking in the past is for CNetC doors
    to be able to use Wait() and/or WaitSelect() to wait for signals
    from exec and TCP/IP sockets and other exec message layers.  In the past,
    door coders have had to rely on a system of "timeouts" where user input
    is checked after the timeout or "service timer" has expired.  This is very
    inefficent, thus the InputSignalInit() / InputSignalDispose() pair are
    born.

    With this method of "notifying" CNet that a MsgPort exists, both
    regular CNetC doors and CNetC door using their own MsgPorts can
    get the quickest response from user input events.

    The following steps should be taken before calling InputSignalInit():

        1. Create a public MsgPort that CNet will signal when user keyboard
           input is queued.

               struct MsgPort ioport; // this should be a GLOBAL variable

               // port initialization code..
               ioport.mp_Node.ln_Name = "MyPortName";
               ioport.mp_Node.ln_Pri  = 0;
               ioport.mp_Node.ln_Type = NT_MSGPORT;
               ioport.mp_Flags        = PA_SIGNAL;
               ioport.mp_SigTask      = FindTask(NULL);
               if( (ioport.mp_SigBit  = AllocSignal( -1 )) < 0 )
                 {
                 // port could not be created - DO NOT call InputSignalInit()
                 // you may want to exit (as done below) when port creation
                 // fails.
                 GetOut();
                 }
               AddPort( (struct MsgPort *)&ioport );

        2. If the port was created successfully, call InputSignalInit()
           as follows:

               InputSignalInit(ioport.mp_Node.ln_Name); // the same portname
                                                        // used above

        3. Wait for signals from CNet and other exec message layers as
           follows:

               unsigned long signals=0; // declare signal mask that Wait() returns.
                               // this variable can be global but should be
                               // local for improved efficiency and debugging.

               // The following should be part of your exec message
               // handling code..
               signals = Wait(1L << myport.mp_SigBit); // wait for an exec signal

               if(signals & (1L << myport.mp_SigBit)) // is this a signal from CNet to our ioport?
                  {
                  struct CMessage *BBSMessage;

                  // Get waiting message.
                  while(BBSMessage = (struct CMessage *)GetMsg(myport))
                      {
                      // is it the proper message for a CNet user input event?
                      if(BBSMessage->command == CN_USERINPUT)
                          {
                          // char key;

                          // CNet generated keyboard event
                          // you should now get keyboard
                          // input from user, using
                          // key=OneKey();

                          // OR

                          // CNet's EnterLine() function.
                          }
                      ReplyMsg((struct Message *)BBSMessage);
                      }
                  }

        4. Before your door exits, call the function InputSignalDispose()
           as follows:

              InputSignalDispose();

           this function cleans up the internal port used for communication
           with your door.  IF IT IS NOT CALLED, YOU MAY LOCK UP CNET PORTS.
           It is SAFE to call InputSignalDispose() even if InputSignalInit()
           is not called or fails.

    See CNetDoorInput.c for a complete (but simple) example of waiting
    for keyboard input using this new method.  The above code is NOT
    tested so compile errors may be present.  The above examples are
    for illustration purposes only.

    Look in the SDK example_source directory for a sample program
    which uses Wait() within a CNet door.

9.  "MS <notexistant_user>!" no longer goes into an endless loop.

10. Subboard-object-type now checked before yank-task attempts to "lock"
    the path.

11. Updated and expanded commenting in empty.c.

12. Added double-click capability to the main list of configurable
    options.  You can now double-click on Accounting, Archivers, etc,
    rather than clicking and then hitting "edit".

13. Finally, a way to turn off file-task OLMs/mail in Config/Options.
    The only messages you can turn off are the "ok" notifications.  If you
    disable this option, the user will only receive OLMs/mail if there
    was a problem with test or transform.

14. File TEst buffers extended to 255 characters per line.  Tests with
    output lines that wrap due to long path/file names are no longer a
    problem.

15. New license required for CNet.  Contact ZenMetal for your new license.

16. File-task is now passed the physical subboard number to reduce
    the chance of possible error in finding the file to be tested/transformed.



@ENDNODE


@NODE "CHANGES424h" "4.24h Changes"

                          @{b}CHANGES/FIXES FOR V4.24h@{ub}

1.  Fixed shifted GETUSER values back to pre-v4.24g state.  Old doors will
    now work without changes to GETUSER values.
2.  Completed AppIcon and AppMenu support for mail-task.
3.  Mailboxes now default to open for NEWUSERS.  You may have to use
    "EA1-" and change your current users' "Mailbox Open" VDE setting to YES.

@ENDNODE


@NODE "CHANGES424g" "4.24g Changes"

                          @{b}CHANGES/FIXES FOR V4.24g@{ub}

NOTE: CNET:BBSPORT#? files altered and moved to CNET:CONFIGS/BBSPORT#?
      You CANNOT simply move the files. You MUST run the upgrade program
      "424g" from any AmigaDOS Shell before running this version of CNet
      Amiga!

      Be sure to also install the newer libraries before running this
      upgrade executable.

      The upgrade executable can be found in the "UPDATES" drawer of this
      CNet maintenance release.


1.  Mailscan at login now only looks in INBOX to speed up the login process.
2.  Fixed the lost/hidden mail bug.
3.  Mail sorting options implemented in Edit preferences (EP).  Two new
    systexts were added:

       systext:new/mailsort
       systext:help/mailsort

    The available options are:

       Newest last
       Newest first
       Handle/name
       Subject

    Please see the mailsort HELP text for more information about these
    options.

    Added bbstext lines 2250-2256.

4.  Mail is now bounced if the recipient's mailbox is closed.

    ONE case overrides this action.  If the sender and recipient have the
    same account number (eg. mail to self), then the mail CANNOT be
    bounced and therefore is saved to the user's inbox.

5.  Checking of selected file(s). If selection is not found (eg. moved or
    deleted) when SS or DS command is used, the user is informed of this.

    Change in bbstext line 381 to implement the extended verbosity.

6.  Subboard sorting via "EL/Other Flags/Item sort" and the OR command
    should now be working 100%.

7.  Various changes to the Config GUI to fix improperly offset checkbox
    gadgets in Protocols and Archivers windows.

8.  Repair_Sub now BLANKS the Title and SubDirName (aka GO ARG) of subboards
    that are killed as it repairs your subboard structure.

9.  KL command now BLANKS the Title and SubDirName (aka GO ARG) of subboards
    that are killed.

10. Added three new CallHost()'s to empty.c:

       WriteUKeys() - write the Cnet myp->Key structure to disk.
                      See empty.c for a description of this function.
       prototype    - void WriteUKeys( void )
       returns      - none
       example:     - WriteUKeys();
       ---------------------------------------------------------------
       DoANSI()     - Send ANSI codes to the CNet port and remote user.
       protoype:    - void DoANSI(UBYTE n, UBYTE a, UBYTE b)
                         n=the type of ANSI code to be sent. eg. 'H'
                         a=the first argument to the ANSI sequence
                         b=the second argument to the ANSI sequence.
       returns:     - none
       example:     - DoANSI('H', 1, 4);
                      the above call would use the ANSI cursor position
                      code to position the cursor at line 1, column 4.
       ----------------------------------------------------------------
       DoANSIOut()  - Send single ANSI control code to the CNet port and remote.
       protoype:    - void DoANSIOut(UBYTE n, UBYTE a, UBYTE b)
                         n=the type of ANSI code to be sent. eg. 'K'
       returns:     - none
       example:     - DoANSIOut('K');
                      the above call would use the ANSI end-of-line
                      delete code to delete the current line including
                      the character under the cursor.

11. Added feedback/newuser mail check at login for users with sysop
    maint.  Changes to bbstext lines 225-228 and new lines 2257-2260.

12. Return-receipt mail fixed.

13. Fixed a memory leak in mail-task that caused partial mail messages to be
    displayed in mail-task GUI.

14. Device field in Config/Modems extended from 21 characters max to a
    maximum of 40 characters to support longer device names such as
    squirrelserial.device.

15. (repeat of the note at the top of this changes section)
    CNET:BBSPORT#? files changed and moved to CNET:CONFIGS/BBSPORT#?
    You CAN NOT simply move the files. You MUST run the upgrade program
    "424g" from any AmigaDOS Shell before running this version of CNet Amiga! 

    The upgrade executable can be found in the "UPDATES" drawer of this
    CNet maintenance release.

@ENDNODE


@NODE "CHANGES424f" "4.24f Changes"

                          @{b}CHANGES/FIXES FOR V4.24f@{ub}

1.  NOGMT arg added to NNTPGet to prevent NNTPGet from using the GMT
    keyword with servers that may not support it.

        eg.  NNTPGet NEW NOGMT

2.  Internet email addresses with a numeric digit in them are no longer
    treated as an invalid address.

3.  Local echo support added to cTelNet.  Use "mode ECHO" within cTelNet
    to toggle local echo on/off.

4.  A completely re-written Configuration editor (Config) and GUIs. Multiple
    windows can be open in the same instant.  Many windows are now sizable
    and font adaptive.  ARexx control will be added to Config in the future.
    The new Config has been written in a way to allow easy future expansion
    of CNet configuratio items.

5.  Fixed yank-task bug that caused no messages to be yanked.

6.  Fixed RexxLoadEditor bug.

@ENDNODE

@NODE "CHANGES424e" "4.24e (First ZenMetal Commercial Release) Changes"

                          @{b}CHANGES/FIXES FOR V4.24e@{ub}

1.  CopySelf mail no longer generates two copies in SENTMAIL.

2.  Moving files around in BaseX: partitions is now smarter.  The "Move to
    which partition?" prompt now defaults to the base partition with the most
    free bytes.

3.  Duplicate/identical GO keywords are now filtered out for GO arg display
    when "GO <non-existent go key>" is used.

4.  Related to number (3) above, the subboard number for the
    "List, :, /, or Subboard#:" prompt default to the current sub.  That
    is, the one you are moving files in.  Fixes (3) and (4) allow for easier
    cross-partition file relocation in the same subboard.

5.  Door/list type subboards now fixed.  Sysop maint users can see ALL items.
    Regular users see a list only of items they can access in a sequentially
    numbered list, with no "skips" in between numbering.

6.  Transpose is now a BBSMENU command in "1; Maintenance Menu" and also now
    accepts two arguments, a user account number and an access group number
    to do auto-transpose.

      eg. TRANSpose 1 31

    The above would assign account number 1 to access group 31.

    With auto-transpose, the only "priviledge flag" not lost is the
    "SuperUser" flag.  All other flags, limits and priviledges are set to the
    newly assigned access group defaults.

    If no arguments are specified, then the normal transpose is initiated.

    NOTE: both arguments must be specified and MUST be numeric.  No
    handle/name parsing is performed for auto-transpose.

7.  Mail-task GUI no longer flashes uncontrollably when minimized.

8.  Menu added to mail-task window to allow quitting of mail-task using
    Mail-Task/Quit menu.

9.  Mail-task menu added to allow selection of a custom font for mail-task's
    GUI display.

10. Change in BBSTEXT line 802. (see !bbstext_stock)

11. Added snapshot window position to mail-task menu.

12. Fixed "Originally to:" line in FOrward Mail.

13. System OLMs from mail-task now use the user's time form (eg. AM/PM or
    24 hour) for OLM sending on receipt of new mail.  Changes in bbstext
    lines 193, 200, 2136, 2137, 2152, 

14. User logon/logoff broadcast OLMs now use the user's time form also.  Changes
    in BBSTEXT lines 83 and 153.

15. User logon/logoff broadcast OLMs are now NOT sent to the port belonging to
    the user logging off.

@ENDNODE


@NODE "CHANGES424d" "4.24d (beta - all v4.x sysop release) Changes"

                          @{b}CHANGES/FIXES FOR V4.24d@{ub}

NOTE: v4.24(b-c) were versions tested by a limited "pre-beta" group on the
      internet.  The changes for those are included in both the (a) and (d)
      sections of this guide.

1.  Added text/menu reload from remote (RT) to maintenance section of BBSMENU
    Changes in BBSTEXT lines 1762-1764.

2.  GUI display added to mail-task.  Arguments to mail-task are as follows:

    I=ICONIFY/S,N=NOGUI/S

       I/ICONIFY = tell mail-task to run with it's GUI in "menufied" mode.
                   That is, the "tools" menu of Workbench will have a
                   file-task menu and, when activated, mail-task will open it's
                   GUI. (may not yet be implemented)

       N/NOGUI   = Tell mail task not to use a GUI interface.  All text to
                   be output will be sent to the current output stream (ie.
                   the current CLI/Shell). (may not yet be implemented)

    There are 6 items of information displayed:
    
       TOTAL:   this is the number of total mails processed since mail-task
                was started.

       BOUNCED: the number of mails that were bounced back to the sender
                for various reasons, detailed in the return report. In future,
                the bounced mail report will also be "carboned" to the sysop
                so that he/she is aware of any problems that might be
                immediately repairable.
                
       LOCAL:   the number of mails saved to local users since mail-task has
                been running.

       NET:     the number of combined netmail and internet email sent since
                mail-task has been running.

       STATUS:  the current status of mail-task, whether idle, or processing.

       There is also a buffer window/listview to allow the sysop to scroll
       back and view the activities carried out my mail-task.

    BUTTONS:

       RESET DISPLAY   Clears the buffer window and all mail-task mail counters.

       MENUFY          (may not yet be implemented) allows you to (iconify) the
                       GUI a "Menufied" state.

       Quit            closes down mail-task.  Please note that your system
                       will not process any mail if mail-task is not running!

       CLOSE WINDOW    (may not be implemented yet) allows you to iconify
       GADGET          the mail-task GUI to an AppIcon state.


3.  MailForward fixed and now does not let the user edit an item as it is
    forwarded.

4.  Added ARexx command "reloadtext" to CNet Arexx ports CNETREXXp to allow
    Rexx scripts to force Control to reload bbstext/menu/charges, where
    "p" is the portnumber.

5.  Various fixes to ARexx commands that were holding a lock on files.
    (ie. RexxLoadEditor, RexxSaveEditor, RexxCallEditor, etc,.)

6.  New cnetgui.library added.  This library will expand to contain the
    functions necessary to create the CNet graphical user interfaces.
    Currently, as of v4.24d, this library contains only the function
    CNGTextWidth() which, given a string and a TextAttr structure, returns
    the width of the text string in pixels.  See cnetgui_pragmas.h and
    cnetgui.h for the function prototype(s).

@ENDNODE

@NODE "CHANGES424a" "4.24a (beta - all v4.x sysop release) Changes"

                          @{b}CHANGES/FIXES FOR V4.24a@{ub}

NOTE: It is unclear to some so please note that both NNTPGet and
      CtelNet have been tested and work fine with the two most often used
      Amiga TCP/IP stacks, Miami and AmiTCP.  Some sysops assumed that these
      clients would only work with AmiTCP.  This is not so.  They work with
      any TCP/IP stack that creates a "bsdsocket.library".  Note also that
      bsdsocket.library is not a physical library. That is, it does NOT exist
      on your hard disk.  It is a logical library that is created by your
      TCP stack.

ALSO: If you have already added pre-defined hosts to CtelNet (ie. using "AH"),
      you must run the update program called CTNCONVERT1 which is located in
      the UPDATE drawer of this distribution.

1.  Added some loggable lines from NNTPGet to BBSTEXT lines 2231-2236 so
    that sysops may customize MCI/ANSI colors in output/logs..

2.  Added KillHost (KH) to CtelNet - change in line 2221 of BBSTEXT.
    Also run the CTLConvert1 program found in the internet_support
    directory of DOORS.  CTelNet1 is a DOS executable that is ran from any
    CLI/Shell.

3.  Added expansion lines 2222-2230 to bbstext.

4.  Added some lines of NNTPGet to bbstext lines 2231-2236.

5.  Line 2237 of bbstext contains the path/filename that the list of active
    newsgroups are saved to when you use the GETACTIVE switch of NNTPGet.
    Change this path/filename to change the location that the active
    newsgroup list is saved to. (default = UUNEWS:ACTIVE)

5.  RUN command prompt extended to allow a command length of 60 characters.

6.  Control now requires that **AT LEAST** CNET:BBSTEXT and CNET:BBSMENU exist.
    If either do not exist, control does not run.

7.  Line 2238 added to bbstext to allow users with sysop maint to override
    return-receipt mail.  NOTE that due to the way that mail is handled in
    CNet/4, it is not possible to make this option a "command" as it was in
    CNet/3. If a user has asked for a return-receipt, you will be prompted
    whether to override the return-receipt via a yes/no "override
    return-receipt," prompt.  This also allow allows sysops to enable
    ALWAYS override without prompt by replacing bbstext line 2238 with the
    following text/MCI:

      n1User has requested a return-receipt - auto-override enabled.=1}

8.  NNTPGet code altered so that it will run without a TCP/IP stack running
    but will notify/log that no stack is running and then exit.  This change
    was made to prevent NNTPGet from displaying a system requester stating
    that "AmiTCP vx.xx must be started first."

9.  Fixed arg parsing for "everywhere commands" in CtelNet.

10. Added MODE command to CtelNet to allow instant mode switching. To
    support this command, BBSMENU received another new section (41).
    Please see !bbsmenu_stock and add this required menu to your
    modified/current bbsmenu.

    Supported modes are listed in systext:menu/ctelnet_modes and the menu
    is available at the mode prompt if "?" is entered.  The user can switch
    modes as follows:

      Telnet> MODE
      Enter MODE command (? for help): Bin
      Negotiating binary mode with remote host.

    (OR)

      Telnet> MODE Bin
      Negotiating binary mode with remote host.

11. NNTPGet modified to notify/log why a NNTP subboard was skipped during
    news transfer. (ie. SUSPENDED status set, etc,..)

12. Predefined hosts are now alphabetized as they are added to CtelNet and
    are displayed in alpha order as well.

13. Changes in BBSTEXT lines 753, 1144, 1145, 1174, 1198 and 1199 to correct
    improper network terminology.  "UUCP" id is now termed "MAIL-ID".

14. Change bbstext line 1672 from "UUCP" to "Usenet News" for proper display
    of the old "UUCP" network affiliation in EL.

15. Control display fixed to show the previously known "feedback" as "Sysop/FB"
    (ie. feedback and msgs-to-sysop are counted as "Sysop/FB mail".  The
    "mail" display of control also changed to appropriately specify "#1 mail".

16. Invalid GO argument operation changed.  If a user enters a non-existant
    GO arg, the current go arguments will be parsed and any that partially
    match the user's entered GO argument will be displayed in alphabetic
    order. The user can then choose one of those, enter a NEW GO arg or press
    enter to continue where they were before entering the GO command.

17. Single byte getuser shift fixed.

@ENDNODE

@NODE "CHANGES424" "4.24 (beta - all v4.x sysop release) Changes"

                          @{b}CHANGES/FIXES FOR V4.24@{ub}

NOTE:  Since the inception of CNet/4, a change was made to log IDs, which
       Ken pletzer did not make us (sysops & ZenMetal alike) aware of.
       Log IDs above 407 were no longer used.  Log ID 408 was previously the
       ReadGFile log ID.  No longer, ReadGFile was grouped into log ID
       405 (ReadText).  Shortly after we (ZenMetal) acquired CNet Amiga,
       I added an "Execute" log to CNet which was given the previously
       unused log ID of 408.  This execute log will contain information
       about any DOS activity which is performed by the AmigaDOS command
       executor (for developers, the Execute() function).  This is the reason
       your old ReadGFile log contains what would seem to be extraneous
       information.  So, please change log ID 408 to "Execute" and note that
       log ID 405 is used for GFile/Text reads.

1.  3.X_to_4.X was not resetting the "magic" value for mail when converting.

2.  "Short Description" lines text was being partially rendered into
    the left hand border of the Config window in Limits.

3.  MailVerify was still sending receipts (RPT:) when items were viewed.

4.  Invalid characters ("?#/" etc.) were being allowed for handle/real
    name.

5.  Version strings are now updated for bugfixed executables and partial
    releases.

6.  Mail is now sorted so that new mail is at the TOP of the list during
    mailread.

7.  First version of the CNetC Telnet client "CtelNet".  Requires
    additions to BBSTEXT lines 2196-

    CtelNet may be added to BBSMENU (as is shown in !bbsmenu_stock)
    and may also be added to text/door lists and others.

    Remember that CtelNet is a CNETC door. You must use MCI door type 2
    (ie. {#4cnet:doors/internet_support/ctelnet}) or choose CNetC door
    type when adding as an online door.

    Text/Doors:  You may specify two args here.  HOSTNAME/IP and/or PORT

         ie.  title: Telnet to The Gnomes Guest House
              filename: cnet:doors/internet_support/ctelnet
              args: gnomes.org 23

         when the user entered the number for this door item, he/she
         would telnet to gnomes.org (The Gnomes Guest House).

         note that the port number is OPTIONAL even if a host is specified.
         CtelNet uses port 23 as default telnet port.

    BBSMENU:  Args may also be specified here (everywhere command section
              example shown).

         ie.  TVRB       |{#2cnet:doors/internet_support/ctelnet vrb.com 23}

         if the user entered TVRB at any CNet prompt, he would telnet
         to vrb.com (Virtual Reality BBS).

         note that the port number is OPTIONAL even if a host is specified.
         CtelNet uses port 23 as default telnet port so if you are required
         to use a port number other than 23, you MUST specify the required
         telnet host port number.

    "RUN" command:

         You may run CtelNet from the CNet RUN command.  You can use any of
         the following commands..

         run;cnet:doors/internet_support/ctelnet
         run;cnet:doors/internet_support/ctelnet HOSTNAME
         run;cnet:doors/internet_support/ctelnet HOSTNAME PORT

         Once ctelnet is running (a TCP/IP stack must be running),
         use "?" to get a menu of the available options/commands.

         Here are the menu commands in a short summary, as seen in the
         systext:menu/ctelnet file:

            Quit       Close current connection if connected, and exit telnet
            Open       Connect to a remote site
            List       List of popular/pre-configured telnet sites
            Close/Bye  Close site currently connected to
            STATus     Current status of telnet environment
            Display    display operating parameters
            ?          This menu file

            Other BBS Commands such as WHO, CHAT, FEEDBACK, MAIL etc, are also available.

            MAINTENANCE COMMANDS
            AH         Add a new host to the telnet host list
            EH         Edit a currently existing host
            NT         Set/enable NetTrace file for debug output


8.  Users who did not have access could see the titles of items within "List"
    type subboards.

9.  New PortData extension (z->PDE) added to prevent GETUSER values
    in PortData/MainPort from shifting as new variables/structures are added.  This new structure
    will be mainly used for internet features/structures but may also be of
    use for other new/internal BBS features.  MainPort may get a similar
    extension at a later date.  Some minor getuser shifting MAY be apparent
    in this release.

    Note that to access this new extension, the FIRST getuser digit must be
    "3".
    
    ie.  1=PortData (struct PortData in ports.h)
         2=MainPort (struct MainPort in ports.h)
         3=PortData extension (struct PortDataExtension in ports.h)

    The first feature to benefit from this new data structure is the newly
    completed CNetC telnet client..  Please see ports.h and telnet.h for more
    info.

@ENDNODE


@NODE "CHANGES423" "4.23 (beta - all v4.x sysop release) Changes"

                          @{b}CHANGES/FIXES FOR V4.23@{ub}

    I have been notified that the "Interface Type" Setting may appear
    to have a bug but it really does not.  When a user first uses EP
    to set the interface type, a garbage value may exist in that variable
    and some invalid text may appear in that setting.  Once the user sets,
    his interface type this garbage will not appear again.  Please have your
    users (even the ones who like the "new way" of CNet/4) set their Interface
    Type to clear any garbage that may exist in this variable.


1.  NEW MESSAGE pointers are now being saved properly (fixed bbs executable
    previously released seperately).

2.  Return receipt mail now does not return a receipt when in VERIFY mode.

3.  Fixed cnfingerd bug where if "skip idle ports on WHO display" was
    selected, cnfingerd did not exit and used excessive CPU cycles.

4.  Fixed FILE_ID.DIZ bug that caused previous description to be imported on
    other files/items that do not contain a FILE_ID.DIZ.

5.  Fixed SUPERUSER display in WHO, both in CNet and cnfingerd.

6.  Fixed various _plan, _plan_sq and _select3 saving to incorrect location.

7.  File SHORT descriptions are now stripped of trailing newlines before
    saving (no more blank lines between items during browse/scan).

8.  Optimized mail-task saving of new mails to reduce "MailCheck" wait at
    login and speed up mail header initialization of saved mail items during
    Mail Read. (sorting planned for next release)

9.  First incarnation of REPAIR_MAIL, a utility similar to REPAIR_SUB
    but this one repairs user mailboxes.  This utility is to be ran during
    maint hours, or any time you (the Sysop) wish, that recovers mail from
    corrupted mailboxes/folders and packs mailfiiles to reduce user wait-time
    during mail header initialization.  ie. during MailRead and "Scanning for
    new/old mail at login."  New command "RRM" added to the end of stock
    BBSMENU section "1; Maintenance Commands."

10. When sending feedback, users are no longer allowed to set mail flags
    (ie. Freq, Copyself, etc,..) just before entering the editor.

11. NNTP Options screen added to subboard VDE to allow configuration of NNTP
    variables.

12. NNTP Subboard Type setting added to NNTP options in subboard VDE.  Don't
    forget to run the executable "VDE" in any CLI/Shell to update your system
    VDE files. Current settings for NNTP Type are:

     SUSPEND:     Causes NNTPGet to skip the subboard and not scan or import
                  new news from your NNTP host.

     FULL IMPORT: NNTPGet imports article headers and message body to your
                  system.

     Future Types: Connect for Body, Connect for Header/Body and
                   Mailing-List.  More on these types when they are
                   implemented.

12. NNTP Max Dupes setting added to NNTP options in subboard VDE.
    NNTP Max Dupes is the number of NNTP IDs to buffer for NNTP duplicate
    message checking.  If you set this value to 200 dupes, then 200 IDs will
    be buffered.  IDs may be up to 256 characters in length so please use a
    reasonable value for Max Dupes.  Only one dupetable will be loaded at any
    instant so you don't have to worry about each dupetable taking up RAM.  A
    simple calculation:

        MAX RAM FOR DUPETABLE = 256*MAXDUPES

    Therefore, if you set 200 as a value for maxdupes, 51200 bytes (51.2k)
    of memory MAXIMUM will be used WHILE IMPORTING NNTP messages, if the
    dupetable is full.  The buffered IDs are variable length so the dupetable
    may vary smaller in size but they will not exceed the guidlines set out
    in the MAX RAM calculation given above.

12. Enforcer hit removed from NNTPGet startup.

13. Changes to BBSText lines 2191-2195 for NNTP VDE support. Curly braces
    {} on lines 2193-2195 are required for future expansion of NNTP Type.

14. Carrier check added to "TO:" and "CC:" prompt of mailsend.

15. Feedback at login no longer allows a return receipt to be requested.

16. CNet/3 to CNet/4 all-in-one conversion program completed.  Users upgrading
    from CNet/3 (3.05c or higher) only have to run ONE executable to upgrade
    to CNet v4.22.

17. Completed CNet Install script (initially for CNet/3 by Bob Maple with
    previous changes by Jim Selleck) to be used with CNet/4. The script should
    work for update versions also..

18. Edit Mail now saves changes.

19. Mail Forward Alias re-implemented.  A single mail alias of "+" allows
    your incoming mail to be CARBON COPIED to another user or network
    address.  Note that you are currently allowed only one mail forward
    alias.  If you specify more than one, the first instance will be used.
    This will change later to allow multiple mail forward aliases.

    Mail Forward Alias Examples

      ALIAS        NAME         ADDRESS
      ============ ============ =================
      +            Ray Akey     @1:246/74

   ...the above alias will cause your received mail to be also sent to
   "Ray Akey@1:246/74"

      ALIAS        NAME         ADDRESS
      ============ ============ =================
      +            rakey        @netrover.com

   ...the above alias will cause your received mail to be also sent to
   "rakey@netrover.com"

      ALIAS        NAME         ADDRESS
      ============ ============ =================
      +            125

   ...the above alias will cause your received mail to be also sent to
   the local user with account number 125.

20. File/Byte credits are no longer added or subtracted if a user has
    unlimited file/byte credits priviledges. (set unlimited setting in Edit
    Account "PRIVILEDGES" VDE).

21. READ MESS TO Handle/Name fixed to include searching in network messages.

22. PowerQuote feature of mail quoting does not munge message anymore.

23. mail alias bbstext change in line 2139.

24. A yank-task bug that arose first in Perspective's CNet v4.0, which
    caused some or all subboards to NOT be yanked was found and fixed (thanks
    to Neil Palumbo for sitting on a dial-in port until 5am with me to hash
    the problem over. :). This bug may or may not have fixed the problem some
    sysops are having with yank CRASHING.  Please let me know if this does
    or does not remedy yank crashing problems.

    Also, to aid in future yank-task debugging/inspection, yank-task
    is now capable of being executed in a CLI/Shell and displays verbose
    information about the current yank job.  If you find yank is giving you
    a problem, "break" the currently running yank-task from any CLI/Shell and
    then run yank in a CLI/shell and observe/report it's output.

       ie. yank-task

    for extended verbosity, use:

       yank-task 1


    3rd party door coders:  DO NOT assume that physical subboard 0
    is the ROOT (ie. main) subboard parent.  To find the root subboard Scan
    the subboard list by accessing myp->Subboard[x].  The root subboard/object
    is designated by bit 64 of the Marker variable being SET.  ie:

         if(myp->Subboard[x].Marker & 64)
            {
            /* first subboard in root/main list found */
            printf("Found first object in main list: %s\\n", myp->Subboard[x].Title);
            }

25. cnfingerd was not creating directory systext:cnfingerd if it did not
    exist.

26. File-task crashing problem should be fixed now.

@ENDNODE

@NODE "CHANGES422" "4.22 (beta - all v4.x sysop release) Changes"

                          @{b}CHANGES/FIXES FOR V4.22@{ub}

   NOTE: You ** MUST RUN UUCPREPAIR ** before using this version of CNet
         Amiga.  Most people having problems with mail receipt is due to the
         UUCP ID being one character too long and UUCPRepair has been designed
         to trap and repair this case.  You, the sysop, will be prompted to
         verify the new UUCP ID to be used.  Many users may not have this
         problem but those with long names (last names) will most certainly
         be affected.  You can either run UUCPRepair before installing
         this version or you may run it after installiation, as long as it
         is ran ASAP.  UUCPRepair can be used at any time and will not
         cause any problems if ran more than once.  If fact, we recommend
         that it be used MONTHLY to check and repair any invalid UUCP IDs.

 Coders: There exists a small mismatch in the headers for NewMailFolder
         (in mail.h) and KeyElement4 (in users.h) where the lengths
         are 10 and 11 respectively.  Please assume a length of **10**
         for NewMailFolder.OwnerID and UserData.UUCP where the actual
         UUCP ID is 9 bytes in length terminated with a single NULL (\\0)
         byte.


1.  vde files are no longer included in the CNet distributions.  From now on,
    you must use the AmigaDOS executable called "VDE" to create your system
    VDE files.

    Simply enter the command CNET:VDE in any CLI/Shell to have your VDE files
    created.  Make sure you first copy the "VDE" command from this distribution
    archive to your CNET: directory!

2.  Fixed bug in ranges using MESS BY "<name or handle>" where only messages
    written by LOCAL users were recognized even if network messages contained
    a user named <name or handle>.

3.  Arj fingerprint in Toss changed to 60 ea 2c 00 1e as the old fingerprint
    wasn't recognizing all arj archives.

4.  ARexx SETMAILSUBJECT is once again working.

5.  The user subboard/message Interface is now configurable between the old
    3.x style and new 4.x style in Edit Preferences (EP).

    If CNet/3 type is chosen, CNet acts like 3.x in that entering a number X
    while in a subboard causes the user to be placed in subboard X in the
    current tree/level.  Users must use Rx (where x is an item number) to read
    a post/item.

    if CNet/4 type is chosen, CNet uses the new format in that by entering
    a number X, CNet will display to the user item X in the current subboard.
    Users will be required to use /x (where x is a subboard number in the
    current subboard tree/level) to move to a new/different subboard.

    To add this capability, changes have also been made to BBSTEXT lines 1173,
    1175, 1184, 1187-1189, 1192 and 1202.  No BBSMENU changes are required.
    See the included !bbstext_stock for an example of the new/changed lines.
    The file systext:new/interface is a file containing an explanation of
    this feature of CNet.

    NOTE: If the file SYSTEXT:NEW/INTERFACE does not exist, the user will not
          be asked for an interface preference and your system will not
          sport a 3.x emulation mode.  All users will be forced to use the 4.x
          style message/subboard interface.

6.  Fixed "Reply to <handle/name>?" in netmail carbon copied from the base.

7.  Added "PowerQuote" to mail quoting.  If a user selects "QUOTE=YES" in
    the mail flags just before entering the editor to reply to a mail
    item, PowerQuoting is used.

    CNet's PowerQuoting features a "smart" quoting system which will NOT
    prepend XX> to already quoted lines.  Therefore, you don't end up with a
    bunch of XX> XX> XX> or XX>XX>XX> text filling up the editor.  Only
    previously unquoted lines will receive the "quote specifiers" which
    are made up of either the first two letters of a user's name/handle
    or the first initial of the user's first and last name in his
    handle or real name.

    PowerQuoting does word wrapping before adding the "quote specifiers"
    therefore reducing text fragmentation.

    PowerQuoting will also be added to CNet's regular Line/VisEd quoting
    (.Q and CTRL-X Q respectively) at a later date.

8.  "Superuser" flag was not being shown properly in the WHO display.

9.  A finger daemon is now included with CNet Amiga.  To use this finger
    daemon, you must configure your inetd to spawn the CNet finger daemon.
    We have not yet looked at Miami but for AmiTCP, you need only do the
    following:
   
    - edit amitcp:db/inetd.conf
    - Delete the current "finger" line from that file.
    - replace it with the following finger daemon command:
    
       finger    stream tcp dos bin - CNet:cnfingerd

    If you don't keep your internet doors/support files in CNET:,
    please remember to change the "CNET:" path, in the cnfingerd
    command above, to the proper path where your cnfingerd resides.

    Miami and other TCP/IP stack users, please consult the related
    documentation, for the software you are using to connect to your
    ISP, for the proper inetd configuration details.

10. BBSTEXT changes: lines 2166-2189 added

11. Bug where CNet "lost" a user when his access was changed due to low
    balance fixed.


@ENDNODE


@NODE "CHANGES421" "4.21 (beta - all v4.x sysop release) Changes"

                          @{b}CHANGES/FIXES FOR V4.21@{ub}

***** You must run the maintenance upgrade program "421" in any DOS CLI/Shell.
      This must be done with CNet completely shut down!  421 is a
      fix to upgrade some mail header variables which needed expansion
      when the subboard structures were changes but didn't get this attention
      at that time.  (3rd party coders: the "UniqueBase" variable of
      MailHeader4 has changed from 21 bytes to 75 bytes in length)

1.  New CNetC door "UUCPRepair" for checking if any UUCP IDs are out of spec.
    When ran as a CNetC Door, will scan your users' UUCP IDs and generate
    error information about the invalid UUCP id and then prompt you for a new
    UUCP id for each user with an invalid UUCP id.

    Invalid UUCP ids can result in failure to receive mail and other system
    messages so, be sure to run this door.

2.  Transpose not saving changes made to user accounts during transpose fixed.

3.  Using ranges when using SCAN (ie. S2-) during mail read was not working
    properly.  Fixed.

4.  MailRead now should not produce "item corrupted" messages unless a mail
    item is truly corrupt.

5.  "GO MAIN" and using a colon (:) to go to main menu from within subboards
    now work correctly.

6.  CNet now has a dedicated background process for testing and transforming
    files immediately after users upload files.  In EL, under "File Testing"
    and "File transform" there is now a "Background" setting in addition
    to the previous, AMaint, Immediate, and None settings.  If you get
    garbage and not "BackGround" in your VDE display, then make sure you
    have updated your BBSTEXT to include the new text in the newest
    !stock_bbstext..  When someone uploads files to your system, the
    background test transform will occur immediately without prompt, if you
    have set the subboard for background test/transform.  If someone enters
    "TE" or "TR" and have access to those commands, they will be given a
    choice whether test/transform is done by the background file-server
    (file-task) or to perform and output test/transform results immediately.

    file-task should be located in or copied to your root CNET: directory.

    NOTE: even if you do not wish to have background processing of tests and
          transforms, you should EL all subboards and verify that your
          File test and file transform settings are correct.  Todd (Electropig)
          and I noticed that some of our Aminet mirror subboards were being
          transformed/tested even though they were set to NONE. The values
          have shifted slightly internally so unless you want subboards,
          that were not supposed to have test/transform enabled, to be
          tested/tx'd at amaint, be sure to EL all subboards.  Don't forget
          that you can mass EL by using EL x-y to edit groups of subboards..

7.  Mail-read expanded to notify the user and re-read the list of mail items
    when new mails are received if the user is currently reading his mail.
    Be aware that this won't happen if they are sitting at the mail-read
    prompt but if they SCAN, read, edit or perform any command, their mail
    item list will be updated.  This is checked before AND after the mail-read
    prompt is displayed.  Later, it will be expanded to update even if the user
    is sitting at the prompt, with no activity..

8.  Fixed bugs where ports were not closing if a user was dumped while
    "close port?" was set and, closing a port while a user was online
    dumped the user but the port did not close.

9.  Mail-bouncing re-implemented in mail-task. If a mail cannot be delivered,
    the originating user's message will be returned with an explanation as to
    why the message could not be delivered.

10. DIZ ADD now implemented.  The format for DIZ extraction and ADD is as
    follows:

    THE DIZ EXTRACT COMMAND
    =======================
      an example for LHA:

         lha x %s %s

      for programs capable of displaying FILE_ID.DIZ to an amigados shell:

         DIZ_utility >FILE_ID.DIZ %s

      In the above (and in ALL diz extract commands in config/archivers),

      - the first %s is replaced by the full path/filename of the file
        that was uploaded or adopted.
      - the second %s is replaced by the actual text "FILE_ID.DIZ"
      - all extraction/processing occurs in a dtempX directory in the
        directory specified in the "Arc Examine Temp" path in config/paths.
        That is, CNet will change directory (CD) to the dtempX directory
        before executing your extract command.  The 'X' in dtempX is replaced
        by the current port number.  ie. If RAM: is set as your arc examine
        temp and you have just uploaded a file on port 1, DIZ processing will
        occur in "ram:dtemp1/".
      - For DIZ processing utilities that are capable of redirecting their
        output directly to an amigados shell/cli, you can use the command
        "DIZ_EXTRACT_PROGRAM >FILE_ID.DIZ %s" where DIZ_EXTRACT_PROGRAM
        is the actual path/filename of the DIZ extract utility. In this case,
        the second %s, as noted above, can be left out.

    THE DIZ ADD FORMAT
    ==================
    In config/archivers is a DIZ ADD command string.  In this string you
    place the command used to add a FILE_ID.DIZ description to the archive
    being described.  By definition, this is where you put the command used
    to add a FILE_ID.DIZ to the file currently being described.

    An example for LHA (others are similar and the %s's mean the same thing)

    DIZ ADD FORMAT
    ==============
      dh0:c/lha r %s %s

    OR

      dh0:c/lha r %s FILE_ID.DIZ

    The FIRST %s is replaced by the full path and filename of the file
    that a FILE_ID.DIZ is being added to.

    The SECOND %s is replaced internally with the text FILE_ID.DIZ and may
    be ignored if you use the second example.

11. Mail that was/is marked as URGENT/HIGHPRI is now reset to regular priority
    when it has been read.

12. Mail-task has been updated to use true file-notification.  Instead of
    checking to see if mail has been filed every 10 seconds, it only scans
    mail:cnetoutbox when a new item has been filed.  This does 2 things:

     1) reduces CPU time during idle periods where no mail whatsoever
        is received.  There no need for file-system activity during these
        periods.
     2) provides IMMEDIATE delivery of mail when received.

13. Some minor code fixes in mail-task that may have caused mail, addressed
    to "SYSOP", meant for the msgs-to-sysop folder to be saved to the sysop
    feedback folder instead.  Don't forget the command "VS" to view messages
    addressed to "SYSOP."  The VS command is the only SYSOP mail command that
    doesn't exit if the msgs-to-sysop folder is empty.  This allows you to
    change folders and view newuser and feedback folders interactively.

@ENDNODE




@NODE "CHANGES420" "4.20 (beta - all v4.x sysop release) Changes"

                          @{b}CHANGES/FIXES FOR V4.20@{ub}

1.  Copies of mail placed in SENTMAIL are no longer flagged as "new" mail.

2.  An invalid GO argument now displays the text in "systext:menu/go" and
    prompts CNet to ask the user if they would like to see a list of valid GO
    arguments for objects/areas that they have access to (changes to BBSTEXT
    lines 336 and 339)

3.  ReadArgs template to toss was missing /S so PKTONLY arg returned "bad
    arguments.  Fixed.

4.  Short description lines expanded to 2 characters in config/limits.
    Note the max of 16 lines.  Be aware that most file_id.diz processors
    only support 12 lines.
5.  DRop/JOin outside of subboards fixed.

6.  Cron bug fixed where the invoke type (ie. Immedite-UDump etc,.) could
    not be changed after an event was added/saved.  Requires the newer
    cnet.library included in this beta package.

7.  Killing of CopySelf mail (saved from the date of this beta install forward)
    will no longer be deducted from the System Activity Monitor (SAM).  Please
    note that CURRENTLY saved SentMail is not affected by this fix so your mail
    counts may be slightly wrong until all previous items in user "sentmail"
    folders are killed.  That is, copyself mail saved previous to your
    installing of this beta will still be deducted from the SAM.  Please
    consider running the COUNT maintenance door when you run amaint to correct
    the SAM variable(s) until you are fairly sure all old sentmail is killed.

8.  Upload resume fixed.

9.  Subboard VDE problem with "Other defaults" fixed.

10. FIRST INCARNATION OF "NNTPGET", the new direct NNTP usenet news
    import utility for CNet/4.  Please note that for this first release
    if you do not use the "NEW" argument, NNTPGet WILL NOT get any news
    from your ISP.  The NEW argument is, for the time being, REQUIRED.
    When the SINCE argument is implemented, one of NEW, SINCE or GETACTIVE
    will be required, but not all at the same time.  Please read the following
    IN ENTIRETY to avoid configuration problems.

    NNTPGet currently requires AmiTCP/IP.  It may also work with Miami and/or
    MultiLink but this has not been verified.  If someone would please let
    me know about the latter two, it would be much appreciated and if it
    does not work with those, I will look into adding support for those
    TCP stacks..

    NNTPGet is designed to directly import usenet news items directly
    into your CNet message base, from your Internet Service Provider.

    Before you run NNTPGet, there are a few things to note:

    i)  The "Go Keyword/Arg" for the usenet/UUCP newsgroup in your
        subboard EL must be the exact name of the newsgroup as found
        in the list of newsgroups supplied by your ISP.  This list can be
        retrived by NNTPGet and will be explained later.

    ii) The "Part0/CD/Net" has a few restrictions if you are using
        NNTPPost (which will later be replaced with another ZenMetal
        CNet support utility).  If you are going to use NNTPPost
        to post usenet news from your system, you will need to create an
        assign of UUNEWS: which will be the base path that articles will
        be placed when they are received.

    EXAMPLE:

        NEWSGROUP NAME AS FOUND IN THE ACTIVE NEWSGROUPS LIST:

                  comp.sys.amiga.programmer

        IN CNET SUBBOARD EL:

                  TITLE: csa.programmer (you can use anything you want here)

          DATA DIR PATH: Base0:csa.programmer (again, use any path you
                                               need for the cnet data files)

           PART0/CD/NET: uunews:comp/sys/amiga/programmer

        GO KEYWORD/ARG : comp.sys.amiga.programmer

                               ****OR****

                         comp/sys/amiga/programmer

                NETWORK: UUCP

        ... all other subboard VDE option are at your discretion.

    NNTPGet accepts some command line arguments when it is ran:

           N=NNTPSERVER/K,P=NNTPPORT/K,N=NEW/S,I=SINCE/K,A=GETACTIVE/S

    Explanation of arguments (all optional):

           NNTPSERVER:  This is the name of the NNTP server for your ISP.
                        for example, my ISP has a domain of netrover.com
                        and their NNTP server has a hostname of
                        NEWS.NETROVER.COM.
                        In this case, I use:  nntpget n=news.netrover.com
                        Please contact your ISP to find out it's news
                        server's hostname.

            NNTPPORT:   Defaults to 119 which is the usual NNTP news port
                        but may be used if your ISP uses another port number
                        for security reasons.


                 NEW:   switch to tell NNTPGet to get only new news since
                        your last session.  If you have not ever done a news
                        import using NNTPGet, it will get all new news since
                        the last 30 days.

               SINCE:   (not yet implemented) specify a date string and
                        NNTPGet will get only the news posted since that date.

           GETACTIVE:   tells NNTPGet to receive the list of currently
                        available newsgroups from your ISP.  It is stored
                        as UUNEWS:ACTIVE so be sure to assign UUNEWS:
                        somewhere on your system.  Most UUCP/NNTP utilities
                        use this directory to save news in a heirarchical
                        format (aka NESTED DIRECTORIES - each directory
                        used as a newsgroup with news items within) for
                        incoming news. The ACTIVE file is in ASCII format and
                        can be read with any text reader or editor.

    If you do not specify an NNTPSERVER, NNTPGet will look for the environment
    variable NNTPSERVER.  So you may set this to assure that NNTPGet uses
    this as a default by entering "SETENV NNTPSERVER <NNTP_SERVER_NAME>"
    and then "copy env:NNTPSERVER ENVARC:" to assure that it is saved
    and set when your system is reset/rebooted.

@ENDNODE




@NODE "CHANGES413B" "4.13b (beta - all v4.x sysop release) Changes"

                          @{b}CHANGES/FIXES FOR V4.13b@{ub}

1. SENTMAIL folder and "CopySelf" are now re-implemented.  mail-task will
   generate a "copy" of the sent email/netmail in the user's SENTMAIL
   folder if the CopySelf flag is enabled when writing a new mail.
2. "Last Msg Serial" in subboard VDE expanded to allow 9 digits.
3. various fixes for UUNEWS and Toss/ifido importing of items with long
   area/newsgroup subdirnames.
4. The entry in the Logs section of Config,  titled "MaintLog" was changed to
   "ReadLog".  Still retains a log ID of 216.
5. New "RL" (ReadLog) menu command added to the maintenance menu section of
   BBSMENU.  This allows you to create/alias your own unique LOG reading
   commands of simply enter "RL" and you are prompted for a log name to read.
   Note that the path to the log is not entered, only the actual filename
   of the log.  CNet assumes a path of "sysdata:log/".

   An example of creating a log alias has already been provided in BBSMENU.
   Look for the alias "LA" in !BBSMENU_STOCK which is defined as follows:

      LA~RL amaint

6. Toss, IFido and the mail server now filter MCI from Subject and From/To
   fields.

7. Last Message Serial number in "EL" VDE is no longer a large 9 digit
   number (time stamp).  QWK requires that this number be 8 digits or less.
   (this is the reason QWK replies were being filed as posts)  To avoid
   QWK/YANK problems in the future, please do a GLOBAL "EL" and set this
   number to some median number such as 4000 or thereabouts for all
   subboards.  Do not be concerned if there is currently a 9 digit number
   in that field, reset it to some 4 digit number anyways.  CNet message
   filing wil set the "Message ID" to be this number +1 and then increment
   it each time a message is saved.  If you delete all items in a subboard,
   reset this Last Message Serial to 0 and CNet will begin message numbering
   according to that number.  Be aware that QWK uses the Message ID number 
   when filing responses, so try not to change it often or at all
   once reset, or posts/responses may not get linked properly.

8. Repair_sub is now working again and must be located in your cnet:doors/
   directory.

9. Cron now has an option to run and/or close the port, that an event is
   destined to execute on, at the time of event execution.

   There are three options:

      IGNORE:    If the port is loaded already, the event runs as scheduled.
                 If the port is not loaded, the event is skipped,

      RUN:       If the port is loaded, the event runs as scheduled.
                 If the port is not loaded, control loads the port, the event
                 is executed and on completion of the event, the port remains
                 loaded.

      RUN/CLOSE: If the port is loaded, the event runs as scheduled.
                 If the port is not loaded, control loads the port, the event
                 is executed and on completion of the event, the port is
                 closed.

      **NOTE**:  If RUN/CLOSE is enabled and the port is already loaded
                 at the time of event execution, the port  will still be closed
                 after the event executes.

10. Changed minutes.tenths-of-minutes display of next pending event (in
    SYSINFO window of control) to hours, minutes display.

11. Repair_sub now allows a "renumber" argument to force mandatory renumbering
    of MessageIDs.  Try this method if your yanks/QWKs are failing (ie. no
    messages yanked) and you know there are new messages.  Also, please do
    not use the "renumber" argument too often as messages from old QWK packets
    that users have yanked previously to your renumbering may not get filed
    properly and could be filed as new posts rather than responses.  This
    argument should be used only as a last resort (ie. if your
    "LasMessageSerial" for any subboard exceeds 8 digits).

12. mail-aliased "account ranges" no longer include deleted accounts
    (which were denoted by a Handle/RealName of '!')

13. mail-alias [K]ill command was TOO powerful.  Prompts for Name and
    address added to Kill Alias command.  Alias killing is based only on the
    "filled-in" prompts.  That is, if you leave one or two of the prompts
    blank, only aliases with fields matching the remaining information
    are killed.  You can still mass kill aliases by entering only the 
    "Alias" part of the mail-alias.  If all three are left blank, NO
    mail-aliases are killed.

14. PKTONLY argument added to toss which can be used to quickly process
    netmail and areafix requests only.  This can be used to quickly respond
    to areafix requests from remote systems by using the syntax
    
       TOSS PKTONLY

    in your TURNAROUND command for trapdoor and other mailers that support
    this style of quick answering of areafix and netmail messages while the
    remote system is still connected.  There would be no need to wait for
    callback to get replies to your areafix request as they can be now
    processed and answered immediately.

15. Fingerprint added to Toss for decompression of packets compressed
    with ARJ.

    Don't forget to add .ARJ to your ARCHIVERS section of config if you wish
    to support ARJ.  Be sure to use "ARJ e %s" for the Extract Format.

    NOTE: a future beta/release of CNet will have the capability for you to
         define your own archiver "fingerprints" in CONFIG/ARCHIVERS so you
         don't have to wait for new versions of CNet to support newer/popular
         compression formats..

16. AMaint sports four new arguments/options that are specified on the command
    line of cron, in your BBSMENU or wherever amaint is executed from:

    NOUSERPURGE:   tells amaint not to do a user purge

    NOBASEPURGE:   tells amaint not to do a message/file area purge nor
                   adopt orphans (if configured to adopt orphans at maint)

    NOBBSPURGE:    tells amaint not to weed old items in the BBSLIST.

    CURRENTDATE:   tells amaint to use the CURRENT DATE and TIME for the
                   "Post Date" of newly adopted items.  If this option is not
                   present, amaint uses the AmigaDOS date of the file being
                   adopted.

    To set an amaint event using any of these, use the following example
    as a guide for the COMMAND in your CRON configuration for amaint:

                 cnet:doors/amaint nouserpurge nobbspurge

    NOTE: These args cannot be specified at CNET prompts.  They must be
          added in the CRON/BBSMENU command.

17. AMaint now looks for descriptions in the files.bbs file specified on line
    634 of BBSTEXT when a new file is adopted by amaint. If there is a
    %s in line 634, AMaint will (as usual) look in the current subboard
    for the specified files.bbs file or, if there is no %s in line 634,
    AMaint will use the discrete path specified (ie. "DOWNS:files.bbs"
    rather than "%sfiles.bbs") for those who like to keep their files.bbs
    descriptions in a single location/file.

18. AMaint now searches newly adopted files for an existent FILE_ID.DIZ and
    uses that description, rather than the files.bbs description, if present.

19. FILE_ID.DIZ processing is *partially* functioning as of this beta.
    Only the EXTRACTION of DIZ descriptions is functioning at this time.

    Other options are in progress but many people have voiced their concerns
    about getting fixes for current bugs so I felt that at least having the
    extraction of DIZ working at this point, will suffice until the next beta.

    Please make sure you have a valid command configured for your "DIZ
    Extract" command in config/archivers.

      an example for LHA:

         lha x %s %s

      for programs capable of displaying FILE_ID.DIZ to an amigados shell:

         DIZ_utility >FILE_ID.DIZ %s

      In the above (and in ALL diz extract commands in config/archivers),

      - the first %s is replaced by the full path/filename of the file
        that was uploaded or adopted.
      - the second %s is replaced by the actual text "FILE_ID.DIZ"
      - all extraction/processing occurs in a dtempX directory in the
        directory specified in the "Arc Examine Temp" path in config/paths.
        That is, CNet will change directory (CD) to the dtempX directory
        before executing your extract command.  The 'X' in dtempX is replaced
        by the current port number.  ie. If RAM: is set as your arc examine
        temp and you have just uploaded a file on port 1, DIZ processing will
        occur in "ram:dtemp1/".
      - For DIZ processing utilities that are capable of redirecting their
        output directly to an amigados shell/cli, you can use the command
        "DIZ_EXTRACT_PROGRAM >FILE_ID.DIZ %s" where DIZ_EXTRACT_PROGRAM
        is the actual path/filename of the DIZ extract utility. In this case,
        the second %s, as noted above, can be left out.

20. Transpose bug fixed where new privs were not binding after a transpose.

21. BBSTEXT line 2143 is now used to set file patterns for files that are
    NOT to be auto-adopted at maint. The pattern is any AmigaDOS wildcard
    pattern.  Each pattern must be separated by SPACES.  TABs are not
    allowed on this line, nor is MCI.

      EXAMPLE AMIGADOS FILE PATTERNS:

      #?.readme              means not to adopt files with an extension of
                             ".readme"
      file.bbs               means not to adopt any file called "files.bbs"
      (#?.lha|#?.zip)        means NOT to adopt lha and zip files
      ~(#?.lha|#?.zip)       means to only adopt lha and zip files


      The default in v4.13b's bbstext is as follows:

         #?.readme #?.ads files.bbs

      using the default noted above keeps amaint from auto-adopting .readme,
      .ads and files.bbs files.

@ENDNODE

@NODE "CHANGES413" "4.13 (beta - all v4.x sysop release) Changes"

                          @{b}CHANGES/FIXES FOR V4.13@{ub}

NOTE: You must be sure that all ports & control are not running and then
      run the maintenance program "413" before using this version.  The
      413 upgrade executable will convert your sysdata:subboards3 to the new
      sysdata:subboards4 format.  Your subboards3 file will not be deleted
      so that you may still run older CNet releases if you need to.

      Also note that some BBSTEXT/MENU changes were made for this release.
      Be sure to use a text-changer or text "diffing" program to find
      and change/update your bbstext/menu.

1.  Mail Aliases are once again implemented.
    Multiple mail aliases are possible for a single "Alias" to support
    "group mail" so you may define a single alias for many users by
    entering their names one at a time, but using the same "alias" when
    prompted for an alias.  Also, you may use aliases for local (ie. belonging
    to the same system) users as well as network addresses by simply NOT
    specifying an "address" but only the user Name and Alias.  Note that
    ALL aliases still pass through access filters so, just because a user has
    a "network address" defined in one of his/her aliases does not mean that
    the mail will be sent.  If the user does not have network access, then
    the user's network mail alias will not be valid.

2.  Only "Immediate-NoDump" events were working in v4.12d.  Fixed.  All types
    should now work and the "Next Event" field of Control's System Info
    screen should display the time of the next valid event.

3.  OLM's to maint users stating feedback was received, were actually New user
    applications and vice versa. Fixed.

4.  NMAIL to new users sometimes went to NEWUSER (VN) and the new user
    application was lost.  Fixed.

5.  MailSend (MS) now accepts a valid CNet RANGE of accounts.  For example,
    Entering "MS 1-50,75" now allows sending mail to accounts 1 through 50
    including account 75. NOTE that you cannot mix and match account ranges
    with network addresses and user handles/names.  For account ranges to
    work, you must use only valid NUMERICAL account ranges.

6.  Related to number (5.) above, local Account ranges are now allowed in mail
    aliases.  To define a local group of users in a mail alias, simply set your
    alias up similar to the following example: 

      ALIAS        NAME         ADDRESS
      ============ ============ =============
      Range1       1-50,75      [leave blank]

   Therefore, entering "MS range1" would send mail to accounts 1 through 50,
   while including account 75.

7.  Subboard Unique Dirname and paths have been expanded to 3x the previous
    length, with unique dirname having a new maximum of 75 characters rather
    than the previous 21 characters.  Data path has been expanded to 95
    characters from it's previous 40 character limit.

8.  Added "VS" command to View Sysop Mail which are mail items in the
    Msgs-To-Sysop folder of the SYSOP mail directory)  The Msgs-To-Sysop
    folder contains messages that are simply addressed to "SYSOP".  These
    SYSOP messages are usually carbon copied from network echos when unsavvy
    users address their messages to "SYSOP".  They are placed in Msgs-To-Sysop
    to reduce mailbox clutter in your (sysops) real mail folders. However, CNet
    DOES support LOCAL mailing to "SYSOP" and these mails are also placed in
    Msgs-To-Sysop.
   
    NOTE: Items in the msgs-to-sysop folder are counted as FEEDBACK so if your
          "VF" (View Feedback) command returns empty and you still have a
          non-zero feedback counter, check mail-to-sysop using your "VS"
          command before reporting this as a bug.

9.  IUUMAIL bug fixed, where imported mail was directed to the wrong mailbox.

10. The same bug that plagued IUUMAIL was found in TOSS and IFIDO.  All
    fixed.

11. Fixed "checkable" control menuitems (no new users, sysop is in, etc..)

12. Fixed amaint problem of deleting the same users over and over again.

13. systext:vde/subboard has been altered, the subboard VDE has been
    reorg'd and the following new FILE_ID.DIZ processing configuration
    variables exist for EACH subboard:

        DizTypes:  Archive types to allow diz processing on. 0-31 are allowed
                   and match the type in the "Archivers" section of config.
                      ie flag 0 = the first archiver,
                         flag 2 = the second archiver
                         etc,.

        DizSave:   settings: 1 = Save Edited Diz = save/replace edited diz to archive
                             0 = Don't Save Diz  = don't save/replace diz to archive
        UseSentBy: settings: 1 = Add sent-bys    = add sent-bys to description/diz
                             0 = Ignore sent-bys = don't add sent-bys to diz/description
        DizEdit:   settings: 1 = Diz Edit = allow DIZ editing by user
                             0 = No edits = no user diz edits

NOTE: Due to my having to release this beta prematurely, the DIZ processor
      is not yet functional.  I will address the significance of the DIZ
      settings and provide example DIZ strings for config when the DIZ
      functions are implemented, most likely in one of the next two beta
      releases.

@ENDNODE


@NODE "CHANGES412D" "4.12d (beta - all v4.x sysop release) Changes"

                          @{b}CHANGES/FIXES FOR V4.12d@{ub}

pre-notes: please be patient with these things.  The mail system re-write
           was a large undertaking and these things are bound to pop up in
           something so diverse as the new mail system.  The new system is
           ultimately more powerful than the old one and allows easy internal
           feature expansion. Once fixed, these bugs should not ever resurface.
           I am attacking them as fast and furious as possible.  Please let
           me know if there are any more residual mail bugs ASAP.

           Also this release was much delayed so as to assure that events are
           100% bug-free.  There were many problems with the way Perspective's
           CNet AMIGA v4.0 handled events and these did not become apparent
           until 4.11 when I had events working "in principle" although they
           were very buggy because of the time handling code (ie. the many many
           ChangeDirs to your CNet partition and "env:".  You may still see the
           odd CD to env: but that activity has been reduced by over 800%.

1.  This is once again a full package as the libraries have changed and
    version/revision numbers for the libraries have changed.
    cnet.library and cnet4.library are now correctly numbered (v4.3).
    From this point on, any changes that do not require a complete distribution
    archive will be placed online (at The Metal Shoppe first) as single
    executables to save LD sysops phone charges.
2.  mail-task problem caused lockups.  Fixed.
3.  Added "send mail to ... Is this correct?" prompt after TO and CC
    filled in.
4.  Related to above, FTN (fidonet) netmail "TOs" and "CC's" are now
    expanded to the full remote user and system name for verification by user.
5.  UUCP/FIDO mailsend access was not being checked before allowing mailsends
    to network addresses.
6.  Toss/XFido problem that added some extraneous characters to outgoing msg
    headers fixed.
7.  Toss problem that duped addresses on replies, fixed.
    (ie. Ray Akey@1:246/74@1:246/74)  Old mail may stil "look" broken
    when you reply but new mail is imported fine.
8.  Online maint users now receive notification (System OLM) when feedback or
    new user applications are received/filed.
9.  Quoted text (via the flags you set before entering the editor) during
    mail reply appeared below the user's signature.  Fixed.  It now appears
    above the user's signature.
10. Cron has been updated to include settings for a "start date and time"
    which now gives the capability of "postdating" events to start sometime
    in the future.
11. Cron received "repeat" settings for Days, Hours and Minutes.  These
    settings are use, for example, to cause and event to be repeated every
    x days, y hours and z minutes.
    
      Examples: DAYS=0, HOURS=1, MINUTES=0 to have an event repeat every
                hour.

                DAYS=1, HOURS=0, MINUTES=0 to have an event repeat every
                24 hours.

                DAYS=0, HOURS=1, MINUTES=30 to have an event repeat once
                every hour and 1/2.

                DAYS=1, HOURS=6, MINUTES=0 to have an event repeat every
                day and 1/2.


            Alternatively, you can specify, for example, 48 repeat HOURS
            and Cron will adjust the days, hours and minutes accordingly...

            You can also specify a "start date" as some date in the past
            and Cron/Control will bring the date up to the current date
            (if the event is a "repeat event") automatically, assuring
            that the "repeat time" is strictly followed.

            If you specify a date in the past (ie. 08-Jan-78) for an event
            that is not repeated (ie. no repeat days, hours or minutes set)
            the event will simply be deleted. Please keep this in mind when
            adding "predated" events.

12. Added sysdata:log/events log to allow sysops easy verification that
    events have or have not been executed.



coming: Mail-Aliases (as a few have noticed) are not yet re-implemented but
        should be for the next beta.  They will be more powerful than the
        previous aliases used in versions 4.0-4.10 and will allow full
        editing, deletion and addition.  Aliases will be allowed for ANY
        mail address..   Local, Fidonet, internet etc,..  These also
        will pass through the "Access filter" to be sure a user cannot, for
        example, send fido alias mail if he/she does not have fido mail
        access. I had intended to have Mail-aliases in this release but
        let's face it, you guys needed a fix for your lockup problems
        before Mail aliases were resumed.  Mail-aliases will FOR SURE
        be back in for the next beta (v4.12e).

        FILE_ID.DIZ support.  v4.13 or v414 should have DIZ support fully
        implemented (or at least functional anyways).    I'm sure more
        diz options/features will be added over time.

        The old subboard name restrictions are being lengthened (someday
        REMOVED altogether, but not yet) to allow longer Usenet newsgroup
        names to be used.

        The subboard conversion program is already written and tested but I
        have some work to do in converting existing code to allow/use the
        longer names and also adding/altering the VDE for the new DIZ options.
        If you have suggestions for the DIZ processor, please get them in NOW
        if you want to see them in the first DIZ beta release.

@ENDNODE



@NODE "CHANGES412C" "4.12c (beta - all v4.x sysop release) Changes"

                          @{b}CHANGES/FIXES FOR V4.12c@{ub}

1.  Getuser offsets had inadvertently shifted in v4.12b.  They are now
    back to normal and are once again compatible with getusers previously
    used in MCI and ARexx doors.   Some getusers may change in the future
    but not nearly as drastically as they mistakenly did in v4.12(a).
2.  Code added to prevent CNet from popping up "please insert volume xxx"
    system requesters when a file/directory cannot be found.
3.  "move read items to trashcan" prompt only appears when there is already
    read items in inbox, feedback or newuser boxes.
4.  "empty trashcan?" prompt only appears when there are messages in trashcan.
5.  User login macros are now all executed BEFORE the "main menu" appears.
6.  The "412" upgrade executable in v4.12b did not work properly on systems
    that used a small stack size as it was created using some previous
    Perspective Software wrapper code. This has changed and stack size is no
    longer a factor for the 412 upgrade executable.
7.  The license window is no longer "activated" when it opens.
8.  Count was not counting any of the mail, feedback or newuser applications.
    Fixed.  When count is processing mail directories, an asterisk is printed
    when a FOLDER is found, and a period is printed when an actual mail/feedback
    or newuser application is found.
9.  Ifido bug fixed where many posts/responses were chained to the end of
    other messages.
10. OLM save to mail was broken.  Fixed.
11. Added "NET" command to mail read, to display information about the
    system from which netmail was sent. NET command added to the end of BBSMENU
    section "7; Mail Read" to enable this command.  Also added display lines to
    the end of bbstext for this feature.

@ENDNODE

@NODE "CHANGES412A" "4.12A (beta - limited release) Changes"

                          @{b}CHANGES/FIXES FOR V4.12A@{ub}

REMEMBER: This IS a limited (4.x registered users only!) beta.  If you aren't
          up for a little bit of testing and a few possible bugs here and
          there, then please do not install this beta until initial reports
          are in from those who are willing/able to beta this release.


   A QUICK NOTE on some things that didn't make it into the code or things
   that I thought may be "fuzzy" to some sysops:

   1. run the executable "412" to update your system to upgrade your
      bbsconfig3 to the new BBSCONFIG4 that v4.12 Control requires.
      If you are running CNet for the first time, or have no users yet
      you do not need to run "412".
   2. Use the included event editor "CRON" to add/edit/remove your
      Events.  You no longer have to shut down control to change your
      events.  The Events section of CNet's "Config" program no longer exists.


CHANGES
-------
1. A completely new/re-written event scheduler!

   Gone is the CBase event-scheduler previously introduced in the 4.x series
   by Perspective Software.

   The command CRON is now used to schedule your CNet events.  It is very
   simple to use and features a font-sensitive interface.  Please be
   aware that some large fonts may corrupt the display.  ZenMetal recommends
   a size 16 or less font for your Workbench SCREEN font.  This is the font
   that CNet/CRON uses for it's interface.  In the future, if problems arise
   for some sysops, if a font larger than size 15 is used for your WB screen
   font, Cron will default to using an 8 point CNet font.  Please let me
   know if the current CRON gives you any display problems.  This is CNet's
   first font-sensitive configuration editor and, if it goes over well, all
   other local GUI editors will be converted to a font sensitive interface.

   The only field/attribute that may seem cryptic about the new cron (and the
   old config event scheduler) is the "valid" setting.  This field holds the
   amount of time (HH:MM) that the event will remain valid, past the "start
   time" of the event.  That is, if the current time is greater than the
   start time PLUS the valid time, the event will be skipped.  If the current
   time is greater than the start time (but less than the start time PLUS the
   valid time) the event will be executed.  Once executed, the event should
   not be executed again until the next day set (via the DAYS checkboxes).
   if anyone comes across any problem where a single event is being executed
   more than once per day (if enabled every day), please notify ZenMetal ASAP.

   Note that the "Name" of the Event is an identifier.  that is, CNet really
   does not use this field.  It is for your recognition only, but each event
   MUST have a Name unique from other Events. You cannot have two events
   named AMAINT, for example.  If you need amaint to run twice a day, call one
   "Amaint1" and the other "Amaint2".

2. A bug crept in v4.11 in which the "W" command did not work properly in
   File bases.  It did not allow editing of short file descriptions.  This
   has been fixed.

3. The mail subsystem has a new filing system.  It looks almost like the
   old 4.x system from the user/sysop point of view but it is much more
   efficient and unlike the CMail-based mail system, the new one does
   not "grow" in size, never to be reduced.  As soon as a mail item is
   killed, you relinquish almost all hard drive space that was allocated
   for that item.  There will soon be a "Repair_Mail" utility to do much
   the same as the Repair_Sub utility does for your message/file bases.
   It will clean up old text and headers that, for some reason, didn't get
   deleted.

   There are some subtle visual changes that you'll notice as time passes.

   Also, Feedback and Newuser mail goes to mail:users/SYSOP/FOLDERS/#?.
   This allows you and your CoSysops to switch between reading feedback and
   newuser mail by simply changing folders.

   Multiple TO's and CC's are now 100% implemented and, when you enter the
   editor, after selecting the appropriate flags for your mail item, the
   FIRST recipient recieves name/handle expansion, in that his is the name
   listed in the "To:" line at the top of Vis-Ed and the line editor. The
   other recipients are still valid but are not expanded.  It would not be
   worth the trouble to lose a line of Vis-Ed display just to print the names
   of ALL the recipients.  Especially when CNet now allows up to 200
   characters for "TO:" and 200 characters for "CC:".  I think the list of
   expanded names would get rather large, even larger than Chesty Morgan. ;)

   Mail is now "distributed" rather than simply saved.  That is, upon saving
   an item, you will be notified that CNet is "dispatching" a copy of the
   mail to each user who was listed in the "TO" and "CC" fields that you
   specified.   At this point, all users' names will be expanded to their
   name, handle, or network address, whichever applies to the type of mail
   being sent.

   Currently (as a holdover from Perspective's v4.0-v4.08), mail-task
   searches for pending mail-requests every 10 seconds.  You will
   (if you use Eddy Carrol's SnoopDOS or some other system activity monitor)
   notice CNet looking for something called ENV:TZ..  This is something that
   SAS/C uses to dicern your timezone.  The timezone setting is the number of
   hours from Greenwich Mean Time (GMT).  Do not concern yourself with this
   as I have not altered any of the time functions and Ken (Pletzer of course)
   did not take this into account when coding CNet's time functions.  If you
   set a time zone for your system, CNet will most likely calculate your
   local time incorrectly...unless you are living 0 hours from GMT :)
   These things will be changed in the future.  In the future, when mail is
   saved, mail task will be notified that there are pending items waiting to
   be processed so that they may be processed as quickly as possible.

   Known mail/folder bug(s): When mail-task files a new item in a folder
   while you are reading/scanning mail items in that folder, CNet does not
   update the mail listing until you quit mail-read and re-enter <<OR>>
   change folders and then change folders AGAIN to go back to your inbox.
   The item is SAVED but it just doesn't appear in your "header listing"
   until you quit mailread or change folders.  This will be fixed for v4.12c.
   I wanted to get this release out to put an end to the "lost mail" problem
   so I felt that this is only a small oversight rather than a "bug" in the
   true sense of the word.

4. Much other internal optimization of code to speed up Toss and other
   areas of CNet.  The event scheduler is going to receive still more
   optimization for the next release.  I mainly rushed this out the door
   before further optimization so as to give Sysops a chance to get their
   events running again.  Also, the new event system does not currently have
   a "repeat" attribute.  That is, events that must run many times during
   the day will either have to be entered more than once (ie. for network
   mail polling, you may want to set up events to poll every hour.. For this,
   you will be required to set up 24 seperate events).  This is only a
   temporary problem as "repeat" hours and minutes will be re-implemented
   in an upcoming release.

5. MCI code ; has been added to allow comments in MCI scripts and BBSTEXT.
   Note that some BBSTEXT lines still do not allow MCI.  Generally, the ones
   that already have MCI in them are safe.  Please netmail/email me if you
   are unsure about certain lines.  Some of the new changes are already
   commented using the format:

     {; this is a comment}

     ^
     |
     CTRL-Q


 Special Notes: For the v4.12b release ONLY, Mail-Aliases have not yet been
 coded back in.  It's an easy thing to insert into the code but I just
 want to get the initial beta of the new mail filing system tested and
 completely up to snuff.  Mail-Aliases will return in v4.12c.  Also, the
 newer quoting style (you know..the quoted text UNDER your reply?) is gone
 but the former 3.x quoting method is still completely active (CTRL-Q in
 Vis-Ed and .Q or /Q in Line-Ed. If any of you want it back, this is also
 simple to add back in.  Just let me know if you want it.  I chose to
 remove it temporarily as many of you (and myself also) didn't like it.  But
 if you want it back in..


3rd Party Developers
--------------------
A CNet Developer's Kit will be released in the hopefully near future.  The
Subboard structures need some attention before I can/will release any of the
header files.  Also, SOME getusers have changed.  If any of your getusers no
longer work, don't panic, just let me know in either the fidonet CNET_BBS,
C-Link CLINKCNETAMIGA, any of the ATechNet CNet echos or by EMail/netmail
and I will reply with the correct getusers to use for this version.
(I expect Dotoran will be the first to contact me :)


...anyways, much, much, MUCH more to come!  We still have some bugs to swat
now that the events and Mail are "seemingly" settled.  Let me know ASAP if you
have any bugs that weren't yet reported, especially those relating to the
new mail-filing system or the new "CRON" event editor or events that won't
run, etc,.  Now that the really major things are fixed, the small bugs (ie
IFido etc) can be tended to and then on to NEW FEATURES that I've been talking
about here and there..


Until the next release..  ENJOY!
-Ray


@ENDNODE


@NODE "CHANGES411B" "4.11 (beta) Changes"

                          @{b}CHANGES/FIXES FOR V4.11b@{ub}

1. Control now boasts a PUBSCREEN argument to allow you to open your control
   panel on an **already opened** public screen.  There are a host of
   utilities out there, some on aminet, to facilitate the opening (and
   closing) of public screens.  CNet Screens (when "Workbench" mode is
   selected) will use the same public screen that control uses.
   
      Syntax:  run >NIL: <NIL: control pubscreen=MYPUBSCREEN




@ENDNODE

@NODE "CHANGES411A" "4.11 (alpha) Changes"

                          @{b}CHANGES/FIXES FOR V4.11@{ub}

Please be aware that this release does NOT fix many of the bugs reported
thus far.  This release is mainly to give you a stable 4.11 so that you
can at least have an operational system up and running.  The next release
will fix many more bugs reported since ZenMetal acquired CNet AMIGA.  Changes
and fixes are outlined below.


NOTE: YOU MUST FIRST INSTALL THE NEW LIBRARIES FOUND IN THE "SYS" SECTION
      OF THIS DISTRIBUTION AND THEN RUN THE 411 EXECUTABLE CONVERSION
      PROGRAM BEFORE RUNNING VERSION 4.11.

      "411" is an AmigaDOS executable that you must run from a Shell or
      CLI process.

      ** ALSO, IMMEDIATELY AFTER YOU RUN 411, YOU MUST LOGON TO YOUR BBS
         AND IMEDIATELY RUN THE CNet/C DOOR "BASE0:DOORS/POINTERS" so that
         your users' handle/UUCP/phone pointers are updated.  If you get
         the message "could not open mailbox (-1)" before running pointers
         do not be alarmed as "pointers" will cure that.

      Be aware that the SYSOP's UUCP id will be altered also.  If
      you wish to change it, please do so after running pointers. 



1. IFIdo/XFido now have their own logs in sysdata:log rather than logging
   their activity to sysdata:log/maint.
2. bbstext lines 781 & 782 changed to allow insertion of mail processing
   programs such as SuperTags to work on the _EdBuff file before it is
   saved.
3. Functions added to CNet.library:
      short   FileExists(char *filename);   /* checks if file exists */
      void   CreateMailDir(char *uucpid);   /* creates user's mail directory if non-existant */

4. User mail directory names are once again the same as their UUCP id.
5. UUCP ID can now only be changed by the SYSOP via "EA" to avoid user abuse.
   Please note that users wityh "full remote maint" can change their own UUCP
   ID.

   CNet sets new users' mailbox names according to the following
   algorithm (UUCP ID is limited to 8 characters MAXIMUM):

   first character   = first initial of FIRST name
   next 7 characters = first 7 letters of LAST name, or less if last name is
                       shorter than 7 characters.

   the string is converted to LOWER case as the UUCP ID is created.

   So, CNet would set UUCP IDs as the following examples show:
   
      First Name            : Ray
      Last Name             : Akey
      resultant CNet UUCP ID: rakey

      First Name            : Todd
      Last Name             : Knight
      resultant CNet UUCP ID: tknight

      First Name            : Jack
      Last Name             : Nicholson
      resultant CNet UUCP ID: jnichols

   The name is then checked with all other UUCP ID's currently in use and
   if a duplicate is found, the LAST character is replaced with a numeric
   digit of ascending order.

6. BMaint altered so that it will create "nested" or hierarchical
   directory structures.  To do this, the "unique subboard name" prompt
   now allows the forward slash (/)

      ie. To create an aminet/biz/misc mirror, simply use the following
          information.

          Title to appear on list:     Miscellaneous Business Soft.
          Name Used On Disk (unique):  aminet/biz/misc
          Path to subboard data files: base0:aminet/biz/misc/

   This also allows your users to enter "GO aminet/biz/misc" to get
   to that subboard.

7. Began removing CNet's dependancy on AmigaDOS commands (ie. delete,
   makedir, etc..)  All base directory structures are now created using pure
   C function calls.
8. Added check for lost QWK/Yank packets when users login.  Previously,
   packets may have been lost in the event of software failures etc,..
9. "_atemp" file is no longer getting packed into yanked email QWK packets.


@ENDNODE

@NODE "CHANGES41A" "4.1 (alpha) Changes"

                          @{b}CHANGES/FIXES FOR V4.1@{ub}

1. CNet/Control now has possible two iconified states.  If Workbench is
   loaded, Control iconifies to an AppIcon.  If the AppIcon cannot be opened,
   the old "Perspective C" window will be used.
2. Related to the above, the default AppIcon imagery is the "Perspective C"
   image.  You can have your own icon imagery used for the AppIcon if you
   create and save your icon as CNET:AppIcon.info. Included in this
   distribution is a file called CNetAppIcon.info.  Copy it to CNET: as
   AppIcon.info to use it.  It is a nice 3d-looking AppIcon image for CNet.
3. Added appicon position setting to Config's "Display" settings.  Click
   on the "Appicon" cycle gadget to open a small "Move me!" window.  Place
   the window where you want your CNet/Control Appicon to appear when
   iconified and then click again on the same button (now having the text
   "Close position window") to save your icon position.  The appicon is
   immediately notified of your changes and moves to it's new location.
4. CNet/Control menus were altered slightly to allow for easier future
   expansion.  The changes are mostly in the visual ordering of the menu
   items.  Please be aware that some menu items received new Amiga-key
   equivalents/short-cuts.
5. Fixed bug in "Missing" that popped up "please insert volume udbasex:".
   This was a hold-over from the days when CNet used a UDBaseX: assignment.
   (addendum: this problem was also simultaneously corrected by Mr. Pletzer
    in the v4.08 public release)
6. Missing no longer attempts to check non-file/message list objects.
   (addendum: this problem was also simultaneously corrected by Mr. Pletzer
    in the v4.08 public release)
7. GO argument is now displayed when a user enters a subboard.
8. Fixed bug that caused problems when attempting to run a port while that
   port is already running. (ie. "run bbs port 3" while port 3 is already
   loaded).
9. CNet no longer pops up requesters when moving files from subboard to
   subboard and the destination partition becomes full.  CNet simply
   states that the file could not be moved.

@ENDNODE


@NODE "FUTURE" "Future Notes"

                 @{b}SOME THINGS TO BE AWARE OF FOR THE FUTURE@{ub}

Note: 4.0x-registered sysops that registered with PERSPECTIVE Software will
      be charged a small transfer fee ($50 US dollars) when v4.5 is released.
      V4.5 will have different keyfiles as well so, once again, you will have
      to contact us for your key.  We'll give details on that in a future
      release.

      A CNet demo will be made available although, technically, the current
      release should function as a demo without the keyfile.

      There is an official support network set up between each of the support
      BBS' mentioned below.  You may make bug reports, suggestions, get
      current pricing information and make constructive complaints about/for
      CNet Development in the "ATechNet" subboards located in the CNet
      Support area of those bulletin board systems.  We are, however, still
      monitoring Fidonet CNET_BBS, C-Link CLINKCNETBBS and the internet
      CNet Mailing List.

      To get on the internet CNet Mailing List, send internet (or gated
      fidonet) email to cnet-request@megalith.miami.fl.us and place the text
      "SUBSCRIBE" (without the quotes) in the body of the message.

      If you have any immediate concerns or complaints, please netmail your
      query to one of the following network addresses or contact one of the
      support systems mentioned in the "Bug Reports/Support" section and we'll
      get back to you ASAP:

          Ray Akey@1:246/74.0
          rakey@netrover.com

          Todd H. Knight@1:246/90.0
          thknight@netrover.com
@ENDNODE


@NODE "ADDRESSES" "Important Addresses & Numbers"

       @{b}DEVELOPMENT/SALES/BUG REPORTS/SUPPORT/SUGGESTIONS/KEY-REGISTRATION@{ub}

Metal Software/The Metal Shoppe BBS
Attn: Ray Akey
411 Bridge Ave.
Windsor, ON
Canada  N9B 2M3

Bus: 519-256-4014
Fax: 519-256-4014 (to send a fax press *51 after my answering machine beeps)
BBS: 519-256-0278 (9600-33600 BPS)
     519-255-7378 (2400-19200 BPS)

Fidonet:  Ray Akey@1:246/74
Internet: rakey@netrover.com


                   @{b}SALES/SUPPORT/SUGGESTIONS/BUG REPORTS@{ub}

Zen Computing/FreeSpace:Negative BBS
Attn: Todd Knight
100 Erie St.S.
Leamington, ON
Canada  N8H 3B3
Fax: 519-322-5893 (to send a fax, press *51 after the answering machine beeps)
Bus: 519-322-5893
BBS: 519-322-0450 (2400-33600 BPS)

Fidonet:  Todd Knight@1:246/90
Internet: thknight@netrover.com

             @{b}AUXILIARY (U.S.) SALES/SUPPORT/NETWORK BUG REPORTS@{ub}

TJ's Unlimited/The Rat's Edge BBS
Attn: Neil Palumbo
P.O. Box #354
North Greece, NY 14515-0354
Business: 716-663-6570
BBS: 716-663-2927 (300-33600bps)
     716-663-0651 (300-14400bps)

Fidonet:  Neil Palumbo@1:2613/323
Internet: npalumbo@frontiernet.net


                         @{b}INTERNET MAILING LIST@{ub}

To get on the CNet Amiga mailing list, which is in no way directly affiliated
with ZenMetal Software, send internet email to the following address:

        address  :  cnet-request@megalith.miami.fl.us
        subject  :  subscribe
        body text:  subscribe your_email_address


@ENDNODE


@NODE "RAY1" "A little about Ray"

                          @{b}A few words about Ray@{ub}

Hey there,

   Ray Akey is the programming force behind Metal Software and does all coding.
license registration and maintenance of CNet AMIGA and is half of ZenMetal
Software.

   Many of you know Ray as he has been coding CNet PFiles (now called DOORS)
for the past 5 years.  Well, what a way to put an end to that, eh?
(oops, some Canadian showing through) ;-)  From here on in, CNet is Ray's only
project.  Development will continue and many things are planned for the
future of CNet.  I hope you all stick around to reap the rewards that
CNet brings to the SysOp community.


Cheers,

Ray.

@ENDNODE

@NODE "TODD1" "A little about Todd"

                          @{b}A few words about Todd@{ub}

   Todd is the second (or first, I'm not picky) half of ZenMetal. Todd is
owner of Zen Computing, an Amiga dealer on the official SMG dealer list.
Some of Todd's work is widely know as the "Pakistani chat guy" who did the
"EP-Chat Sounds" for your enjoyment.

   If you don't have a dealer close to you, give Todd a shout, he'll give
you the best deal he can.

@ENDNODE


@NODE "ZENMETAL" "Introduction to ZenMetal"

                     @{b}An Introduction To ZenMetal@{ub}

   ZenMetal is a partnership formed by Todd Knight and Ray Akey in a joint
venture aimed at continuing the development of CNet AMIGA.  This was and is
the main reason that ZenMetal exists.  We are here to encourage CNet SysOps
to stick with CNet AMIGA and to assure that a quality product such as Cnet
AMIGA exists for the Amiga line of computers.

   I must give a "BIG THANKS" to Neil Palumbo (aka Dark Rat) for letting
me know that CNet was "sort of" available for purchase and that a little
picking and prodding would allow us to take CNet off of Ken's hands. Thanks
to my partner Todd for jumping in with his monetary backing when I asked.

   Ken has, in the past, done a fine job with CNet in general and this
will continue into the future.  The only difference is that ZenMetal has
major plans for better and more support channels and a yearning to make
CNet more connective in the network arena.

...we hope you all remain a part of the CNet vision.

@ENDNODE
