Telegard Bulletin Board Software, v3.10 Revision History Documentation Copyright (C) 1997 by Tim Strike All Rights Reserved. 3.09 Gamma 1 - November 16, 1997 INSTALLATION NOTES Please completely read INSTALL.DOC. Follow the installation instructions to the number, otherwise you will find that your system has not been completely or correctly updated, and this is likely to cause you many problems and frustrations. RELEASE NOTES 1) You must install the new HARDWARE.DAT. Also of note, the entries in HISTORY.DAT have been changed for baud level support. Some utilities use this information in a hardcoded manner, some provide enough flexibility that it shouldn't matter. At any rate, note the following changes: 38400 -> 31200 { array entry 16 } 57600 -> 33600 { array entry 17 } 64000 -> 38400 { array entry 18 } 115200 -> 57600 { array entry 19 } 31200 -> 64000 { array entry 20 *internal* } 33600 -> 115200 { array entry 21 *internal* } Please also double check your modem settings after the conversion to ensure that it properly updated the modem connect string entries. | 2) Some debug code crept into 3.09.g1 -- you must answer YES | to the question "Test local uploads with upload processor" | otherwise your uploaded files will have no descriptions. LANGUAGES * Review LANGUAGE.310 for updates to your language file, and instructions on how to merge the language files to speed up the update of your languages. + Languages are now fully 'paged' (ala memory management lingo). Your language file is divided into pages (sections) of up to 8K in size, with a maximum of 16 of these pages. Telegard can store up to 8 pages in memory; as it needs a page it will load that page into memory. Pages that are used often are kept in memory, and those pages which are infrequently used will be loaded and discarded as necessary. I'm using some classic OS algorithms which are well proven for OS, and should do nicely for Telegard. NOTE 1: YOU MUST REMAKE YOUR LANGUAGES WITH THE NEW MAKELANG! NOTE 2: Yes, this means the 64K limit on these files is broken. Infact, it's raised to 128K now, and theoretically can go to whatever size I want (performance would take a hit, but this new paged method is extendable to 2048K, or 2 megs of languages... like we'll *ever* need that!). UTILITIES + MAKELANG v2.00 - Reports duplicate text lines with both the text ID, and the first two duplicate line #'s (if there are others, subsequent passes will find them!). In addition, reports the net space usage for the new language (i.e. does it take up more or less space than the previous version -- and how much!). Also creates the new paged language files. In addition, invalid lines will not cause problems with the text parser, and report duplicate items (when there are none). A copy of MAKELANG v1.15 was included (ML115.EXE) for use with TCR 2.00 (which does not use paged languages (yet)). + INDEX v2.00 - Creates scan indexes, new file section indexes. Includes LIMITS RESIZE which allows more message/file area additions, and more . . . Before using the LIMITS RESIZE feature, you should backup your *.DAT files in your /data/ folder. INDEX LIMITS RESIZE will backup the files as it deems necessary, but it's important to have a failsafe just in case . . . + UNPACK v2.00 - For existing files, lists current (C=xx) and new (N=xx) file dates for comparison. If the file dates are different, then the line is highlighted in YELLOW. If you say YES to overwrite the file, the NEW file (the one in the .TWS archive) will be extracted over the current file. NOTE: The file in the archive is not necessarily newer then the file on disk. Files which have not changed from 3.02 are listed with a file time of 3:02a. AREAS + The scan records are now stored in files FSCAN.DAT and MSCAN.DAT instead of a separate file for each area. This makes things infinitely faster in terms of file/message area scanning (especially when many areas are not in the users scan). It's also faster for toggling areas--and I think in general the speed increase is a pleasant change. The files should also be smaller than the *.FSI/*.MSI files --instead of 3 bytes per area, per user, the algorithm now looks something like (round(msgareas/8) + round(fileareas/8)) * # users plus whatever extra space you have (couple of bytes per user), all stored in two files only. Imagine 50 file areas, 100 message areas and 300 users. The optimum space usage under the old system compared with the new system is: Message+File New 2048 BLK 204800 + 102400 ~10000 4096 BLK 409600 + 204800 ~10000 8192 BLK 819200 + 409600 ~16000 The new system has several disadvantages as well: 1) special routines to insert and delete from the users' selection tables. 2) insert/delete/position can no longer be done with other active nodes since the selection tables are stored in memory instead of on disk for those nodes. I have provided solutions that should work for 99.9% of the systems and purposes with respect to these two issues. 1) my routines are in BITPLANE.PAS for modifying the bitplanes. I haven't provided too much detail, if you want help . . . ask. Included in TGDEV309 kit. 2) see notes below IMPORTANT NOTE (#1): In order to ensure that nodes won't be actively reading and misusings flags that aren't updated yet, I made it so that the system recognizes the file TGLOCK.* in the /semaphore/ path as a lockout file. If node 1 created the lockout file, it will be called TGLOCK.1, if node 2 created it, TGLOCK.2, etc. If Telegard sees these lock files (either when attempting to logon to the system, or when attempting to enter the WFC quick-access menus), then access will be denied and the message TGLOCK.TXT will be sent (note extension). Telegard will delete lock files that are older than 4 hours old -- thus, if a node for whatever reason does not remove the lock file after it's done -- the system will detect that after 4 hours and remove the file. To either add (copy), delete or resposition file or message areas the node will need to ensure the file TGLOCK.n exists. If it does, then that node can modify the data files. If it does not, and no other TGLOCK.* files exist, the lock file can be created and the node can continue. I'll put this bluntly. It is *not* elegant. Infact, it's downright crude. But I *think* it'll work and avoid all of the problems with this new scan format. If someone can think of a better way of handling this, then by all means please tell me. Other systems get around this by making the area numbers static -- i.e. you can add areas to the end, or if you delete an area, it stays there (you can replace it or leave it 'deleted'). I like the simplicity of programming that type of setup, I'm just not sure I like using it. So please, if you have comments or suggestions, talk to me. I don't know everything (although I admit to this being the one problem that has held this release back--I've thought of many things and many ways and this was the method that caused the least problems thus far). | IMPORTANT NOTE (#2): | | Was just for previous beta versions -- does not apply to | the gamma 1 version. INDEX RESIZE has been completed. INFORMATION NOTE (#3): I have decided to merge the QWK and online message area selections for various reasons. While I realize this is not ideal for some systems, it is ideal for most (since most use QWK functions from TGWave, which is more functional than the internal QWK (and faster!)--or don't use QWK at all). *.FSI and *.MSI files can be removed once you are satisfied that none of your third party utilities use them (they are in the backup you made--right?). + Both the File & Message Quick-Access menus are now powered by the menu kernel. Thus, the two new menus WFCQFILE and WFCQMSG have been included. The menus work properly as they are currently defined, and just use the commands which were previously automatically called by the quick-access menus. Other menu items & commands *might* work. The only reminder is that commands which expect an online user fill find user id #1 online (record 0). Since the default items on both these menus were previously used, they are well tested--other menu commands are not, and using them may or may not cause system problems. You can call other menus from these menus, but the same caveat remainds (I got lost in my main menu at one point because there was no menu stack). The menu command needed to quit these menus are any of the hangup routines (although I'm *not* sure what else that will cause on the system), or the new command -Z which is used to quit from the WFC menus or to save the new user information from the NEWUSERV menu (see later). + A second group set has been added (so you can now keep your file/msg groups separate if you so desire). The group sets are now governed as follows: Set 1 - Main Groups Set 2 - File Groups File GROUPx File FGROUPx MCI ~CC (desc), MCI ~CH (desc), ~CG (tag) ~CK (tag) ACS Cx ACS Dx Change OR Change OQ Setup *G Setup *G Note that some utilities will produce FALSE if you use the Dx ACS--so separate your groups only if your utilities will still work. The naming convention Msg/File is completely ambiguous (Telegard does *not* care what you limit in each group--internally they are Set 1 and Set 2--the naming convention is just for convenience!). ** Your old group configuration will work without change ** + Area compression is now separate b/w files and messages (i.e. you can disable either one or both). The option has moved from the SystemConfig.BBSConfig.AreaCompression to SystemConfig.XYSystem.AreaCompression where XY is either File or Message. The option is X on the FileSystem menu, and T on the MessageSystem menu. Option M from the BBSConfig menu is now used for log style. MESSAGES + Major modifications to the message area. The changes were to integrate the MSGREAD menu, which is called wherever the old message reading prompt would have been called. A default menu has been included which closely mimics the previous reading. The commands for use on this menu are the new R? series of commands: R! Edit user account of message author R# Jump to specific message number from prompt R$ Toggle received/read status R& Toggle sent status R* Edit current message header R= Continuous read mode RA Reread current message RB Skip to next message area RD Delete current message RI Ignore remaining messages RK Toggle kludge line viewing RL Set lastread pointer to current message RM Move current message C Copy message (identical message, do not delete original) F Forward message (new destination, do not delete original) Default Move message (identical message, delete original) RN Move to next message RP Move to previous message RQ Quit reading/scanning messages S Quit reading & quit scan Default Quit reading area (skip to next) RR Reply to current message N Reply via Netmail O Reply to orig author (from name) Default Reply to author (to name) RS Save/Transfer message text RT List next menu titles RU Undelete current message RX Extract current message to a file RZ Toggle current area from zscan R[ Follow message thread (prev message) R] Follow message thread (next message) These were the only commands specifically designed for this menu. Other commands *might* be safe/work, but *please* keep in mind that the more you imbed menus, the more potential problems you may encounter. The only way to exit the menu is via the Ignore Remaining (RI) or Read Quit (RQ) commands, or by using Message Next (MN) past the last message. *HOWEVER*, with that said, please *safely* experiment to your hearts desire, the new commands and the MSGREAD menu provides a lot of power to your system. Some side effects of all these changes: (1) Title scanning is available in all reading modes, including toUser/fromUser/personal/subject/text modes. (2) Jumping around to non-scanned messages (i.e. those which don't match the scan criteria) is now allowed in all modes except waiting/emailscan. (3) toUser and fromUser scans now also accept an optional name to scan for -- (blank for users personal mail will match either the users alias or realname). It should be a helpful feature. + Message header editing was completed. It's available for all Message SubOps or SysOps (depending on how you do the access). NOTE: If the user does *not* meet SubOp or SysOp access, the option will *not* come up even if the menu item is selected (safety feature). The new option on the MSGREAD menu is "*", and is powered by the R* menu command. + Telegard will now use REPLYADDR from Internet Email if it exists (the user will be given the option of which address to use . . ., the FROM or REPLYADDR). + New toggle for message received status. The new option on the MSGREAD menu is "$", and is powered by the R$ menu command. NOTE: If you are the recipient of the message, the bit will toggle OFF--however, if you re-read the message (i.e. using "A"gain, or return to the message latter, the received status will be set again). Once set, it is not unset (except by this toggle). + Message threading was added for reply chains. I don't pretend to fully understand how the chains are linked for messages from remote systems (some is done by MSGID, others on subject, etc.) -- Telegard simply follows the Reply1st and ReplyTo fields that any message has. The two new commands on the MSGREAD menu are [,] and are powered by the menu commands R[ and R]. [,] follow the chain -- the next regular message movement (previous, next message, continuous, etc.) will start with the message where you entered the thread. (i.e. reading 1648, thread previous replies to 1245, then hit enter for next message -- you will get 1649). The one exception is jumping to a message #, in which case the threading is terminated and you goto the message you requested. + New anonymous toggle: Realname or Handle, allowing the choice at the time of posting for the user. NOTE: This method uses the 'None' tracking mode so that ^aREALNAME and (an####) tags are not created -- the Handle/Realname are both unique on the originating system, and thus, it really *isn't* needed. This toggle is even available on Netmail areas (where other anonymous toggles are not permitted). + Message area opening code is now much smarter: if an area can not be opened, a polite message should be returned rather than a hard runtime error message. + Some new kludge line features have been added: 1) If ShowKludgeLines is toggled ON, then both "Transfer Message" and "Extract Message" features will grab the kludge lines, which are saved with leading "@" characters in order that they can be imported into messages without affecting other software. 2) If ShowKludgeLines is toggled ON, then the message quoting file will also grab the kludge lines; the lines are prefaced with the quote str ("nn> "), and are truncated at the maxmimum line length. NOTE: It is recommended that the kludge line toggle feature be limited to Co-SysOp or SysOp ACS only (controlled via MSGREAD menu). Kludge lines should not be available for general public access. + Anonymous messages have a new tracking mode. Previously, all 'anonymous' message types were posted with a ^aREALNAME kludge (even in echomail areas). However, three new tracking methods are now available-- Name, UserID, and None. The three modes operate as follows: Storage of Export From field Original User Name Restore Name Anonymous types ^aREALNAME kludge YES*1 YES UserID Anonymous types #### in from NO*2 NO*3 + (an####) field is userID None Anonymous types NONE*4 NO NO *1: The ^aREALNAME kludge is exported. Ideally, other systems will not show kludge lines to general users, but this is not always the case. *2: UserID is exported, which is unique to the local system, and only visible by the current user (from info screens) or from the user editor (SysOps/etc). If you have utilities which print the private UserID of a user for public consumption, this method is not anonymous either! *3: Since UserID's can change (user is deleted, new user logs on), the original name of the poster will not be restored. *4: Logs will contain message posting information; which is only available for as long as the logs are kept. + Added quote warnings, and quote maximum for messages posted within the line editor (this feature will *not* enforce the messages posted via a FSE!). There are two settings, which you can set as you please: 1) Quote warnings: The user will still be able to save the message. Use 0 to disable warnings. 2) Quote maximum: The user will not be able to save the message if they exceed this % limit. Use 0 to disable the maximum. So you have several combinations: 1) Disable both: Acts like Telegard 3.02 2) Enable Warning: All messages will still be saved, but messages exceeding the limit will be warned and given the option to re-edit. 3) Enable Maximum: No warnings, but messages with too much content will not be saved--no questions. 4) Enable both: Messages lower than the warning level will save normally, messages between the warning level and the maximum level will receive a warning, and messages above will be denied. The default "Save anyway?" answer should work as follows: If quote warnings are OFF, the save should default to YES. If quote warnings are ON, it defaults to YES only if the user is below the quote warning level--otherwise it defaults to NO (so the user changes the message by default). For Co-SysOps and SysOps, both the QuoteWarning and QuoteOverThreshold warnings default to yes. + Local messages now also get MSGID fields (using default netmail address (address 1)). These can be used for reply linking in local areas. + Added extra MCI codes for lines 1119 and 1120 (see LANGUAGE.310 for the information). Version 7 nodelists use uppercase only--if you use Version 7, and want proper cased entries, you'll have to use the ~En formatting codes. + Added toggle for appending "Re:" to the reply subjects. + Added auto-signature support for messages posted (again) within the line editor (FSE support is *not* going to be made available for this feature). The signature appended, short or long, will depend on the message base setting. If the area is set to SHORT, then the short signature will be sent which consists of one line up to 75 characters of text. If the area is set to LONG, then the long signature (240 chars max, or 4 lines) will be sent -- if not set, the short will be sent, if set. If the area is toggled to 'NoSigs', then no signatures will be appended. In addition, any name, anonymous or dear abby messages will not have a signature automatically added. * Patched up Squish deletion adjustment so that messages are not skipped. Hopefully that is the last of such adjustments that will be required--I thought I'd already done this, but it apparently didn't work. * Patched quoting so that when you wish to quote further text, it starts where you last left off instead of starting from the top of the quoted text. * SmartQuote DISABLED should now be a little smarter (less of a dumb-quote)--it'll now properly truncate lines; the logic was right, except it was erroneously keeping the "excess" text in the wrap field; it'll now only do this if the excess text exceeds 10 characters in length. * Netmail addresses were designed to be automatically filled with values if the whole address was not provided; however, the code was not working for node numbers, and also not working for netmail areas defined as "Match AKA". Fixed. * Anonymous names should now work properly for Echomail & Netmail areas (the items were previously not properly saved for non-local areas). * Repaired some JAM code which would sometimes lead to MBUTIL reporting invalid JAM msg-id's (this resulted when changing the size of the subfields, and improperly resaving the OLD index--which while not used, would cause said warning). * Copying/forwarding/moving a message should dynamically pack the current area as well as the area the message was copied to (for Squish areas only, obviously!). It will now also update the write logs, create the necessary semaphores, and write the information to the SysOp logs. When copying/moving messages, the REPLY: kludge lines and reply linking will also be removed. * Forwarding/Crossposting a message should now check for write acs for the particular message area the message is being forwarded/crossposted to. * Crossposted messages will create the semaphore files (they will also now receive log lines following the original posted message statistics). * Deleting a message to a user will properly mark the userCRC in the *.JDX files as zero -- this will effectively uncouple the messages relation with the user (thus, things like the MW;P or MW;L option will not count those deleted messages). Undeleting a message will restore the userCRC field to the CRC-32 of the lowercased destinee (which should restore the original value). NOTE: This is only useful if other JAM utilities do this. * Fixed up file attaches such that the parameters passed to the protocol use the proper format (no filename for batch protocols, which is often why attaches via Zmodem, etc. would report errors when used with DSZ/GSZ). * CTRL-P, T will now use /T: instead of the erroneous /C: as the feature indicator in the line editor. * Message start number input will accept up to 999,999 as the valid input now. If you have more messages than this--TOUGH! (renumber them! . . . I thought 32,000 was enough ). * Squish areas should not skip the 'next' message when posting a message forces dynamic packing--I thought this would be an elaborate fix which is why it wasn't done for 3.01/3.02-- However, it appears I outsmarted myself and added the code when I first added Squish--I just used the wrong variable name when I later called the MsgSave() routine! Fixed. * Version 7 nodelist searching has been completed. Version 7 nodelist browsing has not been completed yet (it will have to wait until after the other features are finished). * New message areas now use the default address properly-- Echomail & Newsgroup toggles were previous changing the default address to the first address. Netmail & Internet Email bases will continue to switch to AKA matching for intuitive reasons. * SysOp logs contain the From: name for posted messages if the base allows anonymous types (even if the message is not anonymous). This is for tracking purposes. * Squish bases with unlimited messages were marked with max messages == 65535 rather than the Squish standard == 0. * Processing messages > 32K should _not_ have worked because of some filtering variables if either mbfilter or mbstripcolour was turned on. It did infact work on occasion, but it shouldn't have. Fixed--hopefully this fixes importation of large files (.ANS/etc) over 32K. * Fixed posting statistics for message replies. These were not being correctly counted in either the system statistics, or in the user statistics. * Telegard will remove all trailing blank lines from a message before saving it. This makes things look cleaner (and was implemented to pave the way for the next item...) * After a message is deleted, it will attempt to move forward, *then* backward. It makes no difference if users must delete messages, but apparently this is what was wanted... * File attaches allowed attaching directories as exist() returned true for directories--I've changed the exist() so that it does not recognize directories. * MSGID fields should now be unique for multiple msgs/s, even when posted via the QWK internal mail scan. If you were previously having problems, please let me know... * Replying to a message in netmail/another area after reading several -new- messages, will now retain the lastread information (i.e. where you've read to) instead of restoring it to the previous value. * Import filenames are persistent across the same message area session (i.e. if you enter an input filename; it will store that filename and used it until you leave and enter a different message area). * Fixed up file attaches so files can be removed with the R:eset command. * All file attaches now have the file attach path stored; this makes outbound file attaches possible (Telegard would always find the file because it checked the attach directory, which the external programs could not do). * Fixed up Squish deletion coding, which would skip messages if at the very last message. Should work well now. * Messaging importing should now properly work with Unix text files (LF instead of CR/LF). If Telegard finds a LF without a leading CR, then it translates that LF into a CR/LF (new line). Telegard used to ignore LF's entirely, so this should not introduce any other incompatabilities. * Updated code so that it was smarter when encountering message area errors; such as long Squish index files. I'm not sure if it's Telegard's problem, or otherwise, but Telegard should be a lot more friendly in that respect. * Updated file attach download code so that it properly parses the input. It was using an invalid string and occasionally rejecting input (based on the contents of that invalid string). Fixed. * Fixed problems with Squish hash routines, affecting MW L, P and G options (MW itself was okay, since it uses a string search rather than an index hash search). NOTE: Messages internally posted with the OLD hash routines will no longer be found with the NEW hash routines. If this is a huge problem, let me know and I'll whip up (hopefully) a program to update the hash values to their proper values . . . * Fixed last-read pointer reseting so that the pointer is more accurate (by one message), and also does not produce invalid ranges. The code should be more friendly to errors. * Increased sized of import and export filepath fields. * Fixed up file attaches so files can be removed with the R:eset command. * All file attaches now have the file attach path stored; this makes outbound file attaches possible (Telegard would always find the file because it checked the attach directory, which the external programs could not do). FILES + New file section--the description files are now 'flat access' which means that to get the file description, you seek to the description offset, read the description ID (should be the matching filename--13 bytes in length), then the description of fbrec.desclength size. No more pointers to maintain besides the offset = easier to use/maintain file section. The new structure use NEW files (i.e. utilities which use the old filenames will not load the new structure and crash). External utilities have been included for support with other utilities which make use of the old structures. For utilities which only _read_ the file areas (file listers, etc.) or utilities which update things which may not be too important during this beta stage (download counters, whatever): FA2FB /* generates old files from current structure files */ ...utilities here... For utilities which update the file areas: FA2FB /* generate old files... */ ...utilities here... FB2FA /* convert old files back to new FA files */ I have included several switches with the utilities so that you can obtain optimum performance with these conversions: -NOCD /* do not process CD-ROM areas */ -DATE /* only process if dates on files are different */ Assuming that the utilities, when they change the file, also change the file date, the -DATE option will ensure that you only update files which have _indeed_ been changed (which will save going through all your file areas = faster update). In addition, since utilities like ALLFIX do not update CD-ROM areas, the -NOCD switch does not process those areas either. The new files are slightly smaller than the previous files; it is more noticable on the first coversion because the file descriptions are packed and wasted space is removed--thus, the following results were obtained: Old files (w/wasted space) 810,843 Old files (w/o wasted space) 309,950 New files (w/o wasted space) 226,462 The new files are easier to pack and remove the wasted space, so I'll write a packer shortly (actually, I'll build it into the INDEX utility). * I recoded some of the core file section routines to improve on overall system speed -- the following items have been affected by these changes: 1) All *.FA/*.FAD files are kept open while the user is actively listing files. The files are only closed when neccessary -- this reduces file open/close time (which makes the system feel *real* sluggish). I don't think it'll cause problems unless files are deleted while the file is open -- to prevent this, packing utilities must be able to open the file in fmReadWrite+fmDenyAll mode -- if they can not (the file is presently open), then the utility must wait before deleting the file. 2) Upload queues are no longer used. Uploading will start the protocols immediately, after the upload, the file_id.diz will be checked, and if missing a description prompted for. No filenames or descriptions will be entered before the transfer starts. Bidirectional uploads use the file area precedence of current -> UploadArea -> SysOpULArea (latter both as setup in SystemConfig.FileSection). The only exception to this rule is single file transfer protocols, which require a filename before transfer -- these will be input as required. 3) Download queue was resized to 50 files. This should be more adequate with today's transfer speeds (it's 2 1/2 times the previous limit). 4) Duplicate filenames are allowed, except that any given directory can only have ONE file of any given filename (pretty obvious). Otherwise, you should now have free reign on the file section! 5) Archive conversion now checks for a duplicate of the new filename (which it always SHOULD have, but never did). Note: It does an index check, not a physical file check! (if there is no index entry for that area, but the file exists, the conversion *should* catch it later...) 6) Downloads, Tagging, etc. will cycle through all areas if globaldownload is ON, otherwise it'll only check the current area. Of note: Specifying a wildcard (* or ?) will cause Telegard to search all areas -- specifying a full filename will cause Telegard to search the INDEX instead and only prompt for found files -- this is muchos faster!! (Telegard previously did this, but I think in this incarnation it is *much* better). 7) Files of the same name from different areas can now be tagged for download. Of note however -- the users terminal had better be able to handle that (by renaming the second file to something else). It's not a Telegard restriction anymore . . . 8) Telegard does not care what format the descriptions are stored in the flat description file. However, Telegard will continue to obey the Reformat option when displaying the loaded descriptions. The description format (stored by a third party utility) will not be updated automatically. DEVELOPERS NOTE: Please format your descriptions in 45 character lines, per the proper FILE_ID.DIZ description. 9) Reworked the editing code so that it's a bit smarter; it'll now move backwards and forwards through edit list looking for matching file specs (or filenames). It should also be smarter with respect to saving only edited files, and was designed to be integrated with the file tagging prompt . . . It DID take major modifications though, so please let me know of any problems. + Major modifications to the file area listing/scanning. The changes were to integrate the FILETAGP menu, which is called wherever the old file tagging prompt would have been called. A default menu has been included which closely mimics the previous tagging. The commands for use on this menu are the new S? series of commands: SC Continue with listing SE Edit file (delete/move/etc.) - by number SF File operations V View files - by number/filename Default Tag files - by number/filename SQ Scan quit S Quit current area & quit scan Default Quit current area (skip to next) ST Tagged queue editing L List tagged files only E Edit tagged files Default Tagged queue statistics SZ Toggle current area from zscan These were the only commands specifically designed for this menu. Other commands *might* be safe/work, but *please* keep in mind that the more you imbed menus, the more potential problems you may encounter. The only way to exit the menu is via the Scan Quit (SQ) commands, or by using Scan Continue (SC) past the last file. *HOWEVER*, with that said, please *safely* experiment to your hearts desire, the new commands and the FILETAGP menu provides a lot of power to your system. + Added secondary sort option (for options other than Filename sort--which allows only one file of identical name in any given area anyways)--the secondary sort is used when the primary sort criteria for two files is equal (i.e. upload dates are the same, then sort by filename). + Added configurable sort criteria--defined for each file area-- used for area sorting (unless overridden with a different sort criteria). + Added command line file sorting. The command line is -FS and it invokes a global sort based on the sort criteria for each area (i.e. you can not select the criteria). Areas with out a primary criteria are not sorted. + Telegard now has the ability to change the file path dynamically based on the CD-ROM label. Thus, if you have multiple CD-ROM drives and flip the disks (or they're on a CD-ROM changer which automatically flips the disks), Telegard can update the file path so that it's appropriate for the CD-ROM labels in the drives. How does this feature work? Several things have to happen before it'll successfully work: 1) Global toggle must be enabled 2) File area toggle must be enabled 3) File area must have CD-ROM label defined 4) CD-ROM table update must be enabled and set to a reasonable update time. When the CD-ROM table is updated, Telegard will go through each file area. If the file area has drive letter updating enabled, then Telegard will check the label of the current CD for the current drive; if it does not match, then Telegard will step through each drive (from the table) attempting to match the CD label to the predefined label. If the label is found, the file area path is automatically adjusted to the correct drive letter. If the label is -not- found, then Telegard will not update the area--in this case, when a user attempts to download from the area, they will receive a message stating that the CD-ROM labels do not match (and that the CD-ROM for this area is hence unavailable), which is how the original CD-ROM label checking worked (without drive path updating). The checks are only done when the CD-ROM table is updated, and only during startup. Doing the checks on the fly would eat too much overhead. This is a very nifty CD-sharing idea that I hope will come in handy; just keep in mind that there is -some- overhead involved with the checks that it does . . . + Telegard now has a list 'failed' file ACS; if a user does not meet this ACS restriction, they will not be allowed to list 'failed' files. Toggle option SystemConfig.FileSystem. AccessControl. The other options were moved down to accomodate. + For some failed download requests, Telegard will now log those requests; for - Missing, Offline, Failed, Unvalidated files - Failed passwords - Unmatched CDROM labels (i.e. all the ones that SysOps might be interested in) + When deleting files, and selecting not to remove the area record (i.e. only physically delete the file), an option for toggling the offline status flag will now be given. + Option to remove high-bit from imported descriptions (toggle from Systemconfig.Filesystem.(H)8-bit_FILE_ID). + Preliminary support for PNG (Portable Network Graphics) format added. * The validate files maintenance option is now powered by the same update engine as most of the other maintenance items. * 'Next Area' should now work properly -- i.e. it will skip the rest of the file being displayed and will avoid any further pausing for the skipped area. The big problem was when the 'Pause After List' option was enabled (Next Area was not cancelling this forced pausing prompt -- it does now!) * Offline files will no longer receive a duplicate file tagging number (offline files should receive NO file tagging number at all). * Graphic Specification (GifSpec=NNNxNNN,NNNc,type) is now represented as (xSpec=NNNxNNN,NNNc,type) instead. * The search engine for the file section has been updated to reflect the new structure--it's using the QuickSearch now instead of the much slower POS(), and was noticably faster on my machine (perhaps not on yours . . . ) * FILES.1 file listing & description file (for downloads) was missing the second line of the description. Fixed. * Uploader names > 36 characters were truncated to 20 characters during editing; names longer than 20 characters after input would crash the system. Fixed. * File Passwords will not be prompted if the user has failed any of the download ACS criteria. The file password will still be prompted for valid ACS users, before time & byte checks are done. * Description importing will remove empty (or blanked) trailing lines from the descriptions. * Fixed up local download code -- if the local download it aborted, the file counter will not be incorrectly update. * When moving files, conferences are now ignored automatically. This -could- be accomplished locally before by just hitting the IGNORE CONFERENCE SysOp key, but this makes it automatic, so you can move files across conference boundaries. DOORS * The DOOR.SYS file (Menu DG) has been updated to reflect the *correct* format of the DOOR.SYS file created by GAP. This means that the REAL NAME of the user is *always* sent instead of the realname/alias toggle we previously used, and in addition, the handle is sent later in the DOOR.SYS file. If you use doors which use the DOOR.SYS and also keep user information, the new format will cause those doors not to recognize the users as active players/etc. If this is the case you have two options--update the 'player name' id entries in your DOOR.SYS to use the real name instead of the handle, or use the OLDDOORS.SCR file to create an old DOOR.SYS compatible drop file. I honestly suggest a slow progression to the new, and proper, drop file format. SysOps who use R; (real name force) in their DOOR.SYS drop file commands should have no problems--the file is of compatible format. * A proper DOORFILE.SCR was included which has the new REAL NAME line for the DOORFILE.SR generation. This is used for duplicate checking for the Solar Realm games. Please use it. MENUS * Major overhaul to the internal menu routines -- this was done not only for optimization purposes, but also to support the new specialized menus (see AREAS, MESSGAES, FILES and this section for details). This is the core of the BBS system, so please let me know of any difficulties. + The New User Information Verification code is now handled via a specialized menu called NEWUSERV.MNU. This menu just makes calls to the OP menu commands to update the user information. A new menu command, -Z, will exit from this menu loop, save the user information and continue with the new user process (dupe phone # checks, etc...). Several things should be noted: * The OP menu commands operate in 'NewUser' mode -- i.e. the same as the old methods. Thus, if you toggle items ON/OFF via SystemConfig.NewUser, then those items will work as expected (off, forced value, etc). This works for all OP commands 1-25, & 80. Thus, if you disable the date of birth field, even if you call OP 9 the date of birth will not be prompted for. * Menu changes, sub menus, etc. should work just *fine*. Just remember that the user has *not* been saved yet, and calls to other menu functions that expect the user has been saved may, or may not, work. This is most esp. true for door calls, file transfers, message reading, etc. which expect the user is a valid, logged on user. There is an alternative -- to automatically save the user and assign a user-ID, and then load the menu. However, if the user does an ALT-H at this point, their account has already been saved, and they will avoid all of the duplicate number checking, and the newuser script. I did not take this alternative -- if people have comments, suggestions, etc., please let me know! * Hangup commands will function as normal (log the user off) -- the records will *not* be saved. The only way to exit this menu set, and save the user record is to use the -Z command. I have included the menu template NEWUSERV.MSG, which is displayed by the NEWUSERV.MNU instead of the generic menus. You can use generic menus for this display, but the display file provides easier manipulation of the fields. While I don't insist you stick with the default NEWUSERV.MNU that comes with Telegard, I do urge that you heavily test any changes that you make. + New menu command OK which adjusts user statistics; it is a compound command, which handles the adjustment of: Timebank, Netmail Debits, Netmail Credits, Filepoints and online Time. See the MENUS.REF file for more information on the command. Some examples: +B25 ; adjust timebank by 25 minutes -B5+T5 ; adjust timebank by -5 minutes, add 5 minutes to online time +P250 ; adjust filepoints by +250 -P250 ; adjust filepoints by -250 =D0=C1000 ; set netmail debits to zero, set netmail credits to 1000 +C500 ; adjust credits by +500 I guess this is also a good time to mention how Telegard handles netmail crediting and debiting. Essentially a user is given NN Netmail *Credits* to start off with. The user is allowed to continue sending netmail until the users Netmail *Debits* exceeds the NN Netmail Credits. At this point, you can do one of two things -- Increase the available Netmail Credits (and the user can use netmail until their debits >= credits again), or you can set the Debits back to zero. + Two new default menu handling help levels have been defined for menu input. The help levels work as follows: User Settings } Starts at Expert or Normal level (depending on the user eXpert setting) ?:Help goes to the next level. Forced Expert Forced Normal } ?:Help does nothing, always forced Forced Extended Default Expert Defaults Normal } Override user settings for this menu, but still allow ?:Help to goto next help level. The help level progression is Expert -> Normal -> Extended. Thus, with the forced levels, the user will always be at that help level for that menu. With the default levels, the users will act like their setting has been temporarily overridden, but the ?:Help key still progresses to the next level. NOTE: Default Normal with Extended Help = &OFF is like being in Forced Normal mode (the user can't go to Expert, and can't go to Extended either). + Menu editor now contains a (R)ename menu function, and a (C)opy menu command function. * Telegard allowed *OFF* in the extended menu filename to disable extended menus (allowing only expert and normal). Due to my oversight, the filename input routine would not allow the * character -- even though *OFF* was expected. The new designation is &OFF -- please update any menus you may have had left over from previous versions of TG (which could be used, but not changed). + New menu flag -- no CR after prompt -- Telegard normally puts a after the input, to start the cursor on a new line. With the flag enabled, the cursor remains where it was. This is especially helpful for the FILETAGP menu, which will erase the prompt if it can. * MCI codes are translated for file display (-F through -I) commands. This is useful for displaying node dependent, area dependent, etc. information. * Menu command NW will no longer run on single node systems (no errors this way either). OTHER * User-ID *text* was changed from ##-#### to #### format (leaving off the leading two zero's since it is unlikely any system will ever have more than 1.6 million users). The userid is *still* a longint, and all your users *still* have the same userid. The only thing that has changed is the way that the numeric number is represented as text. Thus, things to note: (1) I##-#### ACS is now I#### -- change your menus or the ACS will always fail (even for | (OR) alternatives since the string is the wrong size). (2) If you use doors that use the old ##-####, or if you pass the MCI code to batch files for semaphore files amung other things, you should put a leading "00-" infront of the ~UU MCI code. This will mean all your old doors will work. I suggest switching semaphore files etc. to the newer format. (3) Separate SysOp Logs are now SLOG####.LOG instead of ##-####.LOG as they were previously. This is better I think (matches the CHAT#### and TRAP#### logs better too). + SysOp logging format was changed. Telegard now uses either FrontDoor or Binkley style logging (default: FrontDoor). The logs should integrate better with your other utilities, and also provide timing critical information. + Added Duplicate Phone Number 'Email-To-SysOp' option. The option SystemConfig.NewUser.DuplicatePhoneScan now has three levels - No, Log Only, and Email SysOp. If the latter is chosen, an email will be sent to the sysop with DUPTEL.TXT as the header (from your default text path, NOT the language text path) and a list of all the users (handle & realname) which duplicate the new user's telephone numbers. + Added ACS XZ, which is TRUE for users w/ CoSysOp ACS and FALSE otherwise (this was needed for the new MSGREAD menu!) + If deleting a protected user and the online user has SysOp ACS, an override protection prompt is now used. + The local input routines accept left and right arrows to move up and down the input line, and the insert key to toggle b/w insert and overwrite mode. NOTE: Input fields which accept pictures (i.e. phone, postal codes, dates) and colour codes will -not- allow arrow keys. Please test this area extensively, and let me know if things mess up to any significant degree. + Added drive table listing and update facility from SystemConfig.Hardware. This will allow the table to be updated if there are problems with detected media. + Added security level upgrade and downgrade notices to the validation system. If the users' SL goes up or stays the same, they will receive the upgrade notice, and otherwise they will be sent the downgrade notice. The upgrade and downgrade notices can be configured for each level. The notices must have a .TXT extension, and must exist in the textfile paths (similar to WATCHPW, etc.). NOTE: The upgrade/downgrade notices are sent from their NEW level, not from their OLD level. So if they change from level A to level B, they will be sent the appropriate upgrade or downgrade notice from level B. + User accounts can now be toggled with 'No Password Alert' status, which means they won't receive a hack warning request. This can be helpful for guest & other temporary accounts. + Added -OFS and -OMC command lines, to override the detection of SHARE and MSCDEX respectively. If your system is SHARE compatible, but SHARE can not be detected, use -OFS. If your system is MSCDEX compatible, but MSCDEX can not be detected, use -OMC. CAUTION: USE WITH CARE. IF YOUR SYSTEM IS NOT COMPATIBLE TELEGARD WILL MAKE CALLS TO THESE DEVICES AND MAY RTE IF IT CAN NOT GET WHAT IT IS LOOKING FOR. * Patched up multinode network (SHARE) code so that if a file encounters an error, it doesn't loop with that error even if the file is subsequently made available. Most notable in RTE 5 loops, followed by a RTE 103 or otherwise. * Updated handling of multinode INODE*.DAT files in an attempt to reduce errors. * Languages which don't exist on login will be replaced by the default language (which must exist, otherwise the user would never have gotten that far!) * The TRASHPHN.TXT file will now be used to deny BBS list numbers as well. I thought of using a separate listing, but if you don't want the numbers in your user list, you don't want them in your BBS list, and vice versa. * The TRASHPHN.TXT file which Telegard parsers to deny phone numbers now accepts ? as well as * as wildcards. ? will allow any character only in that position, while * indicates the rest of the phone number. I.e. 111-* means deny anything that starts with "111", while 1??-* means deny anything the starts with "1". In the latter example, it is important to note that 1* would not be appropriate, as this would cancel international numbers, etc. Putting in at least one formatting code is a good idea (in this case "-"). * Fixed up internode messages so that long messages with lots of colour codes in the pre-text (1931/1932) are still sent intact. Additionally, added support for @/$filename from the 1931/1932 prompts (they are sent separately -- without a CR -- that is the only thing to note). * Fixed up some event code which would cause any of the following symptoms: (a) Slow event display at WFC screen (b) System instability at WFC / logon process (esp. under multitasking systems -- Jeff, this *could* have been what caused your other windows to close down when you shut down Telegard -- unlikely, but *could*) (c) Nothing at all (it was erratic!) * The vote mangling from deleted users was definately Telegard -- although I don't quite understand why. The code was all correct, so who knows. When Telegard deletes users, it no longer touches the voting data. Since Telegard keeps a tally with each question, the questions now have the effect of keeping a running total (for active & deleted users) until the next vote reset. I think this is appropriate anyway. * Deleting a user will now only open the message base if it is Squish format -- JAM does not need the lastread pointers updated, so it's not done (and thus will be faster). * Field input should not be so sluggish if not checking for any pre-formatting (i.e. not formatting phone numbers, postal codes, dates and times). * IEMSI phone numbers should parse a little more cleanly (i.e. (905) 820-7273 -> 905-820-7273 (905) 820 7273 -> 905-820-7273 905 820 7273 -> 905-820-7273 ...etc...) ~ IEMSI code in relation to carrier drops; there is no easy way to recognize the dropped carrier during the IEMSI sequence -- Telegard will timeout after 15 or 20 seconds, and at that point Telegard will check. Unfortunately, at this time that's the best the code is going to get. * Fixed a number of cosmetic errors (override delete, colour for deletion prompts, too many nl before errors, etc). Please let me know if you find/see other 'funny' things. * File I/O routines trap RT 5 as a file-sharing error now as well (instead of just 162). I also repaired some of the I/O error handling -- file sharing/locking should be more reliable. User side output will strip the file path (which never should have been sent), and additional information is now sent to the local screen only. * Original bet will be adjusted if maximum bet < 5. * Fixed internal YY/MM/DD conversion problem that WOULD under certain circumstances crash the system (reseting last read pointers with this date format, for instance). * Fixed OP53 toggle (it would increment well past the limit of 3 date fields--creating unknown formats for the dates (Telegard would at least translate to MM/DD/YY in this case)). * Date separator will now be used for all date input and other date fields displays (date format for instance). DEVELOPERS NOTE: All internal date fields (string) use '/' as the separator, and MM/DD/YY as the format. * The time separator will now be used throughout the system. Of note, the time & date separators (and the thousands and decimals separators) are single characters only (i.e. NO COLOUR CODES--SORRY!). * I think I fixed (for the final time) the logon bps restrictions for both general logons, and for node specific logons. I moved the code to an ENTIRELY different library, and that should fix the problem (I believe it was setting hangup, and then incorrectly unsetting hangup in a subsequent area of code, allowing the user to logon . . .) * Fixed language selection problem -- occured if there was only one available language that the user had access too. * Telegard will attempt to strip colours from user names when completing a user name during a lookup (for sequential searches *only* (i.e. mail and user list/editor)). * Fixed sysop window spacing--also did a number of other changes to the sysop window code. Please let me know if there are any problems. * Forced password changes will no longer permit the current user password to be input -- somewhere this logic was killed. * Time adjustment commands have been changed to CTRL-PGUP and CTRL-PGDN which add and subtract 1 minute respectively. PAGE UP and PAGE DOWN now move between your SysOp Windows, and LEFT, RIGHT, UP and DOWN are now processed in input routines (and eventually, menus). * The default exit levels for Telegard have changed; errorlevel 0 is the default exit level (no errors), and errorlevel 1 is the default error level (w/errors). This is changed *from* 255 and 254 respectively. You can still override with the -EN, -EE command line options. * Random files should be more evenly distributed between .ANS, .AN1, etc... under the old system, it would choose the .ANS file by FLUKE... (i.e. rarely). * Input routines that don't accept colour by default will print out the string in it's full form; backspacing over visible colour codes will not affect the display. * Changing the SL of the user while in ALT-E edit user denies all further access to the account (edit lockout). Fixed. * ALT-P to PRN, LPT1 or LPT2 will not ask if you want to append/ overwrite, etc. It will just do it... * Drive detection code was updated; the first two drives (A: and B:) are never checked (always assumed to be Floppy drives). In addition, Networked drives now return type Network instead of type CDROM (this returns the detection to the previous setup I originally started and somehow fumbled . . . ). * User editor via ALT-E/ALT-U has been updated so you can modify all entries; it was designed previously to lockout changes to online user records from the online user... * MCI Code translation has been moved from level 2 to level 1 (i.e. it'll only process an MCI substitution once, instead of going over the string twice--doing it twice allowed for strings which weren't automatically substituted with MCI codes to be reprocessed and substituted). The two level substitution caused a lot of problems; this should remove all problems associated with ~ from Win 95/Linux long file names, etc... etc... etc... * Chat logging is now set for a particular session; if you use ALT-F to change the chat logging DURING a chat, it won't change the format of the current recording (i.e. if it's not recording, it won't record, if it is, it will). I realize this is problematic, but I'm afraid it's stuck that way for now . . . if you want to record a chat you're already in, hit ALT-F, setup the chat recording, and exit and re-enter chat. | * Date format in New User Application now preceeds Birthday selection. * Languages which don't exist on login will be replaced by the default language (which must exist, otherwise the user would never have gotten that far!)