Upgrading TNOS to release 2.02 http://www.lantz.com/Update2.02.html TNOS 2.02 will be the next release of TNOS, to be released sometime before the formation of the United Federation of Planets. Hopefully, this list of changes will give you an idea of the scope of work that has occurred between versions. Of course, it may be faster just to re-read the docs when the next version is released. This document is divided into: * Bug Fixes * Improvements * Minor Changes * Known Bugs * To-Do List !!! NOTE !!! As mentioned later in this document, the TNOS file structure has been cleaned up, and many of the files and directories have been moved. Moved from root to spool: netrom.sav and domain.txt Moved from root to etc (new directory): popusers ftpusers alias groups net.rc GPSFILE Moved from spool to etc: menus help areas areas.sys motd motd.sys ftpmotd newuser quotes rewrite askhome.dat catalog.cat expire.dat userhold.dat wordhold.dat mbfilter.dat forward.bbs translat Moved from spool to spool/log (new directory): mail.log ftp.log mbox.log reqsvr.log ------------------------------------------------------------ Bug Fixes: The following bugs have been squashed. * GCC without TUTOR buglet in mailbox2.c, BBS help function, fixed * Corrected a few bell characters in the catalog.dat file (\007 -> ^G) * A few Sun-specific tweeks from Bob Smith * Fixed double TNOS process buglet At times there would be two TNOS's in place, instead of one. This was caused by the an exit routine that would at times do a restart of TNOS, creating a new process, different from the one that 'init' was monitoring, causing 'init' to start a second process. This is now fixed. * Fixed problem in finger server in calling QRZ/SAMCALLB Now, the callbook routine lookup (if compiled in) is only called if the callbook is active. * Fixed conditionals in fingerd.c around the 'done' label * Fixed AXUI buglet where UI frames destined for use, weren't received From Jnos 110L: Joe K5JB sent along a fix for handling datagram-mode IP packets while an axui session was active. ax_recv() in ax25.c was changed to test if we were being addressed before assuming an unproto packet should go to the axui session. * Fixed buglet in bootp which truncated the IP address From Jnos 110L: Andrzej Szczerba sent along a fix for a truncation problem in bootp_rx() of bootp.c, when setting the local IP address. * Write errors during the Command session COPY command now handled From Jnos 110L: Applied Andrew G8FSL's fix to docopy() in main.c to detect errors during a file copy. * Better handling of too many messages per FBB-style forwardng Since some BBSs insist on NOT paying attention to the FBB protocol which LIMITS the number of messages per proposal to 5 MAXIMUM, this error situation is now better handled. * Fixed minor bug in forward.c- makecl() * Added some conditionals for WPAGES in mailbox.c * Fixed FBB forwarding checksum errors if fwd > 5 msgs in an area * Fixed gateway timeout bug * TCPGATE buglets fixed These included not allowing multiple simultaneous connects, lingering zombie sockets if multiple connects attempted, and not properly sensing when a TCPGATEd system disconnected. * Added a fix that COULD eliminate the crashes when resetting null sockets * Fixed typos on the word 'translate' This occured in domain.c. * NULL sockets bug in Netrom (Unix release, only) found * Increased (once again) the size of usvprintf() buffers Discovered the CONVERS would occasionally want more than 1024, so if either of the POP servers or CONVERS are defined, then we allow 2048 byte buffers, otherwise 1024 byte buffers. * Fixed a TUTOR buglet that didn't always sense an unexpected disconnection * Another NULL socket fix, this one in the gateway code. Fixed? * Fixed a bug where the BBS 'MW' command created a ".ctl" file * Fixed a UNIX-specific buglet with the 'dir/ls' commands Would only display files matching "*.*" instead of "*". * Changed three catalog string names in nntpserv.c which caused errors Also cleaned up compiler warnings in here. * Fixed a buglet with FBB forwarding if the remote defers a msg Now will let one negotiation go past it, before attempting again, allowing the session to complete when the remote has no more traffic. * Fix for FBB compression using LF instead of CR * MAJOR rewrite of the forward.c sendmsg() function The order of lines sent during PBBS forwarding could be RADICALLY wrong, if the 'smtp headers' were on, or if a RETURNRECEIPT was requested. During other times, it simply lacked a NL after the R: lines. All better, now! * Unix flow-controlled session w/statline proper num lines for 'more' Previously, the flow control 'more' (not to be confuzed with the BBS 'morelines') did not account for the 1 or 2 lines used if statline was on for that session. * Added code to ignore improperly routed ARP requests *from* us One user had experienced troubles when he misconfigured a TheNet node where all ARP requests FROM TNOS would be routed back TO TNOS. If this happens now, the packet is quietly discarded, rather than exploding in a puff of smoke, like it did. * CNAMEs no longer need to be fully qualified Not a bug, a feature ;-) Since day one, CNAME were required to be fully-qualified in xNOS, though the RFCs do not require this. No longer limited in this manner. * Fixed an NNTP server buglet that crashed if history file got corrupted * Added fix to prevent crashes if SMTP tries to process a empty file * Added fix to prevent crashes if SMTP file doesn't end w/a CR It seems that this code was letting SOME files improperly end a SMTP file, making the client wait, while the server is waiting for the client to end the transfer properly. * Fixed a long-standing xNOS domain.txt bug, involving $origin An '$origin' did not get properly rewritten back, if using 'domain update on'. Also affected the newly added '$include'. * Added a possible early termination of message buglet in SMTP While the possibility was rare, it is now plugged. Thank to Andrew Benham for pointing this one out.... * Added code to adjust the statusline to > 80 char screens * Added patch to the QRZ server for long entries The QRZ server prior to 2.02 would sometimes not read enough data to properly display some calls. * Fixed a misplaced '#endif' that required STATS_TFC in stats.c ------------------------------------------------------------ Improvements: The following optimizations and improvements have occurred. * Added a command line parameter for # of netrom open circuits This number defaults to 20, but some sites need more than this. Use a "-r xxx' command line parameter to set the number of open Netrom circuits to 'xxx'. * Accomodate "LIST " as "LIST" in pop3server. * Disconnect smtp client after inactivity, per T4 timer. From Jnos 110L: Demetrios SV1UY pointed out a problem with the SMTP client not disconnecting after inactivity, contrary to how the smtp T4 timer is documented. James fixed it by changing getresp() in smtpcli.c to set an alarm timer before reading. * Added missing FREE's in mailcli From Jnos 110L: mailcli.c had several calls to domainsuffix() but few calls to free the string that this routine allocated. * Log and display time delta when changing system time From Jnos 110L: Added a display of the amount of time change due to running rdate to the log message and screen display. * Routing to loopback now serves as a bit-bucket From Jnos 110L: Barry K2MF sent a mod to rt_lookup() in iproute.c that detects an attempt to route a packet to the loopback interface, and returns instead a nil route. This is to allow using loopback as a bitbucket interface, ie, 'route add problem-addr loopback' acts to drop any packets sent to problem-addr, returning a host-unreachable error. * TNOS on an HP95, anyone!?!? From Jnos 110L: Ron WA7TAS sent a fix for a uart problem in the HP95 palmtop! To compile for the HP95, add #define HP95 to config.h and trim down config.h to just the essentials! * More flexible, TNC-like, connect statements accepted Also from Jnos 110L, with changes: Joe K5JB sent along a single routine to parse digipeater strings, that consolidates four separate but identical pieces of code. This saves code space and now allows optional commas and the via keyword, for compatibility with (some) other software. Digis are now allowed in the axui command after the target unproto call. The 'ax25 rosecall'-style syntax is ALSO still accepted. Samples: c ax1 info @ 813046 /* rose-style connect */ c ax2 ko4ks via digi1,digi2 c ax1 gatway v digi1 * Can now trace the non-master port on multi-port kiss interfaces From Jnos 110L: Joe K5JB sent a fix to allow tracing a particular kiss-attached port on a multi-drop kiss interface. * Dialer changes from Jnos 110L Fixed dialer.c to not wait forever while processing wait's speed keyword. Also eliminated the logging of each dialer command, unless DIALDEBUG is defined at compile time. However, if failmode is off, a failed command and its line number are logged. * Added a BBS script hook for users changing areas The script hook file 'area.sys' is attempted to be executed for each area change by a user, with a parameter of 'area xxxx', where 'xxxx' is the area name. This allows you to send special messages to users about certain areas, or to use it for logging user area changes, etc. * Added code for easy access of associative arrays Associative arrays are what are used for aliases. They are mini-databases, which are accessed by the label they are associated with. * Changed 'mbox cmd' code to use associative array code * Added a Command Session 'alias' command, using associative arrays This allows you to define ANY command aliases you wish, available from the Command session, and as remote SYSOP. * Added Command Session 'set' and 'unset' commands, with associative arrays This allows command line substitution of $varname anywhere in a command line to be replaced with the value of the variable named 'varname'. The convention of ${varname} is also allowed, for those times when what you are substituting is NOT followed by white space. Also, a literal '$' is obtained with a '$$'. * Added a 'conv unlink' command You can unlink by hostname, ip address, or convers hostname. This only applies to those hosts that you have 'conv link'ed to. * Added a 'conv drop' command This command can disconnect a convers user or linked convers host by name. * Added a Command session 'incr [offset]' command Interprets the value of variable 'variable', and adds the value of 'offset' to it (defaults to offset of 1). If 'variable' is undefined, then it is first created with a value of zero, then the offset is added to it. * Added a Command session 'decr [offset]' command Interprets the value of variable 'variable', and subtracts the value of 'offset' to it (defaults to offset of 1). If 'variable' is undefined, then it is first created with a value of zero, then the offset is subtracted from it. * Added a Command session 'goto []' command This allows you to skip past sections of input (keyboard or script file) until a proper label of 'labelname' is seen. If the 'labelname' parameter is not given, then the current goto label (if active) is displayed. * Added a Command session 'label [] command This is used to define labels in sections of input (keyboard or script file) for use with the 'goto' command. If the 'labelname' parameter is not given, then the current 'goto' is cleared. * Added the ability for multiple commands on a command line, using ';' This is possible in the Command session, as remote sysop, or during the BBS. To use a literal ';', you must have the parameter in question surrounded in either double quotes or braces. * Placed several commands, some new, some old, under a new conditional flag A new config.h flag, 'SCRIPTING' selectively adds the following commands, related to scripting from the command session: alias, decr, echo, gone, goto, here, incr, label, pause, set, sleep, and unset. Others WILL be added to this conditional flag soon. * Added a Command Session 'if' command, with many subcommands This allows conditional execution of commands. The many different forms are: if defined "cmd" if notdefine "cmd" if zero "cmd" if notzero "cmd" if equal "cmd" if notequal "cmd" if strequal "cmd" if notstrequal "cmd" For each of these, 'cmd' can be any single or compound command, but it must be surrounded in double quotes or braces, if it contains any blanks or ';'s. The 'variable' parameters are the name of any variable defined with the 'set' command. Any of the 'string' parameters can be a simple string, or one using command variable substitution (i.e. $varname). The '[not]defined' commands test for a variables existence. The '[not]zero' commands test for the string evaluating to a value of zero. The '[not]equal' commands test two strings numerically for equality. The '[not]strequal' test two strings alphanumerically for equality. * Added ability to uses braces like double quotes in command lines The only difference is that data within braces does NOT have variable expansion take place. * Added a 'foreach "list" "cmd" Commands Session cmd This allows you to iterate a list of names/values, applying a command string to each value. For example: foreach ifc "ax1 ax2 test" "ifc $ifc ax25 t4 1800" This sets the variable 'ifc' to the three different interfaces named in the list "ax1 ax2 test", and sets their t4 timers. * For consistency, added an 'unalias' command * Added an 'else "cmd"' command * Added a 'while' command, with same variations as the 'if' cmd * Added an 'until' command, with same variations as the 'if' cmd * Removed 'zero' and 'notzero' conditions for if/while/until Not needed since you can to a 'equal/notequal' comparison to zero. * Removed 'defined' and 'notdefined' conditions for if/while/until This become the new 'ifdef' and 'ifndef' commands. * Changed remaining if/while/until conditions from names to symbols And swapped the order of the parameters to make it more like other scripting languages. The many different forms are now: if|while|until string == string2 {cmd} if|while|until string >= string2 {cmd} if|while|until string > string2 {cmd} if|while|until string <= string2 {cmd} if|while|until string < string2 {cmd} if|while|until string != string2 {cmd} if|while|until string eq string2 {cmd} if|while|until string !eq string2 {cmd} The '==' and '!=' commands test two strings numerically for equality. The 'eq' and '!eq' commands test two strings alphanumerically for equality. * Added command line parameter of '-D var[=value]' This allows you to define TNOS environment variables from the command line. * Added command line parameter of '-E' for importing environment variables This pre-defines all environment variables from the calling program, either COMMAND.COM under DOS, or the appropriate shell under Unix. * Added variable expansion to parsing of autoexec.nos and source command * Added an optional portnumber for 'start convers' command * Added an optional portnumber for 'conv link' command The syntax of this *USED* to be 'conv link hostname [confname]' and is not 'conv link hostname [port [confname]]'. Both the 'port' and 'confname' parameters are optional, but if you wish to specify the conference hostname, then you MUST specify the port number (which is 3600, usually). * Added a 'sounds' command for UNIX version This allows you to define UNIX commands to execute in which to play some kind of a sound file when requested. The pre-defined sound for 'chat' will be played (if defined) when an incoming chat session occurs. At the present, this is the only 'special', pre-defined sound. Rather than requiring you to have a specific sound-generating program, this allows you to use what you have or wish to use. The sound command is executed in the background, so it does not have to be short in duration. The different 'sounds' commands are: sounds delete soundname sounds define soundname [["soundcommand"] ["sounddescription"]] sounds list sounds play soundname The delete subcommand removes a defined sound by name. The list subcommand lists all defined sounds. The play subcommand plays the defined sound. The define subcommand will list the predefined sound if the "soundcommand" and "sounddescription" are missing. * Added in several mail-related patches from Andrew Benham While I was there, I made a few modifications and cleanups. As for Andrew's mods, here's what he says: I've been having problems with SMTP and POP3 in TNOS 2.01, and have come up with the following patches. Problem 1. In common with most flavours of NOS, the handling of lines beginning with a dot ('.') is not performed as per section 4.5.2 of RFC821. Worse still, the POP3 client and server don't use a consistent method. Problem 2. Mail arriving from a POP server is placed in the outbound SMTP queue. The addressee is taken from the "To:" header in the message. There is no guarantee that the "To:" header specifies the real recipient - for example consider the TNOS digest, which has a header which reads: To: tnos-topics-digest@lantz.com Much of the mail I pop from my local POP3 server (gb7ing.ampr.org) has the header To: g8fsl@gb7ing.ampr.org so this gets sent back by SMTP to gb7ing.ampr.org, who puts it back in my mailbox to be popped off, ..... Fix 1. Lines beginning with a dot ('.') are handled as per RFC821 and RFC1725. Fix 2. The "mailbox" field from the "popmail attach" command is used as the address to queue the SMTP mail resulting from the POP poll. If the mailbox has no "@" symbol in it, "@" is added. This allows mail popped by TNOS to be sent to the Linux kernel, by specifying the mailbox as "user@". Fix 3. A cosmetic fix to the message reporting the arrival of POP mail, distinguishing it from SMTP arrivals so as to avoid confusion. The RFC '.' buglet has been around forever! * Added in UNIX permissions checking to FTP server This was a potential problem with restricted files not being restricted. * Added (in UNIX version) security 'ftpgid' and 'ftpuid' subcommands These define the group and user defined for all users using the FTP server, that do NOT have sysop permissions. Prior to opening/creating a file, the real user/group ids are changed, and an attempt is made to 'open' the selected file. If the secured user is not allowed, he gets a permission error message. * Reorganized the file structure!! NOTE: THIS WILL cause you a problem upgrading if you ignore it! Breaking the historic precedence of placing all files in 'spool' (whether they are of a spooling nature or not), many files were moved to a new 'etc' directory. The files you need to move are: areas, areas.sys, ftpmotd, motd, motd.sys, newuser, quotes, rewrite, askhome.dat, catalog.cat, expire.dat, userhold.dat, wordhold.dat, mbfilter.dat, translat, and forward.bbs. The following files move from the root TNOS directory to the 'etc' directory: popusers, ftpusers, alias, groups, net.rc, and GPSfile. The following files move from the root TNOS directory to the 'spool' directory: netrom.sav, and domain.txt. The following directories need to be moved from 'spool' to 'etc': menus, and help. The following files were moved from 'spool' to 'spool/log': mail.log, ftp.log, mbox.log, and reqsvr.log. * Added an Xwindows server! Just 'start x' and 'xwindows hosts ', and connect using the supplied dpwish (tcl-dp) scripts. The dpwish scripts read site-specific configuration from a etc/xdefaults file. The 'xwindows' Command Session command has 'hosts' and 'connected' as subcommands. *NO* site that is missing from the 'x hosts' list will be able to connect to the XSERVER. The XSERVER defaults to port 7388, but can be changed by giving a port number on the 'start x' line. While this was written to allow X applications to receive status info, and enter in commands, this CAN be used by normal telnet applications to remotely maintain the system. The XSERVER can be run on a TNOS/DOS system, as well, though the X would have to come from another system. The required dpwish application will be available when this feature is available. * Enhanced the 'mb mailfor' command, adding new features NOTE: the "mbox mailfor 'timeinseconds'" command is changed to "mbox mailfor timer 'timeinseconds'"! Added a 'mb mailfor alert' command to allow monitoring of selected areas for incoming mail and notifying when this occurs. There are five sub-commands, "mbox ['area' ...]" to define the area(s) to be monitored, "clear" to clear the indication of new mail, "status" to remotely read the new mail status, "mode 'on|off'" and "sound 'soundname'" (if SOUNDS are compiled in - UNIX only). Added a 'mb mailfor hold' command to notify when incoming mail is queued as 'HELD'. and notifying when this occurs. There are four sub-commands, "mode 'on|off'", "clear" to clear the indication of held mail, "status" to remotely read the new mail status, and "sound 'soundname'" (if SOUNDS are compiled in - UNIX only). If messages are being held, the status line will have a '!' to the left of the date, and there will be a '@' if alert monitored mail is waiting. If using TNOS/X, you get a dialog box to indicate these events. Each of the status line indicators is cleared with the 'clear' subcommands, and from TNOS/X by pressing the "OK" button to dismiss the dialog box. * Added a 'sreset' command to reset (kill) a lingering socket Since NULL sockets STILL are around (and probably always WILL be, at this rate), this command will reset (close) a socket, whether null or not. I was really surprised that I hadn't already added a command to do this ;-) It took me longer to double check to see if I *HAD* than it took to code the command ;-) * Added a way to 'screen' ttylink attempts NOTE: The "attended 'on|off'" command is now changed to "chat attended 'on|off'" and the "chat 'bbsuser'" command is now the "chat with 'bbsuser'" command There is now a new mode to incoming chat (ttylink) requests. The 'chat attended' command turn on/off incoming requests, as before. Then there is the 'chat screening on|off' command that turns on a screening mode to incoming requests. The user gets a message saying that it is Paging the sysop, and a message is sent to the Console (and an X dialog box comes up, with TNOS/X). If you have a 'chat screensound' defined, then that sound is played (Unix, only). You can then to a 'chat accept' or a 'chat deny'. If you deny it, then the user will either get a default 'sorry' message, or (if defined) they will get the message from the 'chat denystr' command. If you accept it, then the ttylink session is started, and the 'chat connectsound' is played, if defined (Unix only). The user remains waiting for the sysop to answer for 'chat retries' seconds, which defaults to 60 seconds. * Added a CRON daemon and command While this could have ALWAYS been useful, I was further encouraged to add this by the discovery that you can only do an 'at' command for 24 days or less in advance. To start the cron process, you do a 'start cron'. This will read the 'spool/crontab' file for cron entries. Each entry is of the form: min hour day month dayofweek command The fields 'min', 'hour', 'day', 'month', and 'dayofweek' can be in several forms. A range of numbers (from 1 to 6) can be specified as '1-6'. A list of numbers (1, 5 and 9) can be specified as '1,5,9'. Lists and ranges can be combined, so '1-5,9' is the same as '1,2,3,4,5,9'. Ranges can be followed with a '/xxx' to specify an increment to use other than 1. For example, a field of '0-12/2' would be the same as '0,2,4,6,8,10,12'. Minutes can be 0-59, hours can be 0-23, days can be 1-31, months can be 1-12, and dayofweek can be 0-6 (0=Sun). Additional, the 'months' and 'dayofweek' fields can be specified using the first three characters of their names ('Sun', 'Sep', 'Dec', 'Thu', etc.). These can be combined with ranges and lists, as 'Dec,2-4,July' or '2-12/2,Jan'. As with most all of the TNOS config files, comments can be included in the crontab file, by starting a line with a '#', or by using a blank line. Example: '0 5 * * * expire now' will run the 'expire now' command at 5:00 a.m. everyday. The 'cron' Command Session command has several subcommands: 'add', 'delete', 'clear', 'list' and 'load'. You can use the 'load' command to re-load a crontab on demand when you have made changes or to load an additional file, if given an optional filename. If none is given, it loads the 'spool/crontab' file. You use the 'add' command to add individual entries manually. The 'list' command show you what cron is analyzing. The 'delete' command allows you to remove an entry manually. The 'clear' removes ALL entries. Once started, it will do a 'clear', a 'load', and then parse the queued entries, executing any that meet the criteria. Then the CRON server will goto sleep for 1 minute, and try again. The time is NOT syncronized to the first second of each minute, so it could fall anywhere within the minute, depending on when it was started. * Added some timezone changes from Andrew Benham Andrew came up with some good ideas, that I of course made changes to ;-) but the results are basically the same. There are now two additional config.h flags. The first, LOG_GMT_TZ, will make all log file entries in GMT time, rather than local time. The UK users need this to be legal with their regulations. The second flag, USE_TZOFFSET, will use an offset from GMT (rather than a TZ name) in smtp headers. Also, the 'time' command (both in the BBS and at the Command Session) now takes an optional 'utc' argument (actually ANY parameter will do ;-) which gives the time also in GMT, and tells you what the local offset from UTC is. * Added code that MIGHT recover from Unix port write failures * Added in the latest JNOS RIP-2 code * Added a 'ifconfig ifc metric' command for separate RIP metrics From Ken Koster. * Added in the POLLEDKISS code from JNOS for BPQ POLLED KISS * Added a 'smtp rewritetrace on|off' command Andrew Benham mentioned he was trying to get something like this to work, but was having problems with it. Since it was a good idea, it's now in. This allows you to see on the Command Session the various steps that the rewrite takes when it does it's job. See, Andrew! I'm getting so good, I can now incorporate patches BEFORE they are debugged and submitted! ;-) * Added a 'editheader' command to allow SYSOPs to edit message headers This editing is done 'in-place', that is, is does NOT require the message area to be rewritten. This is done by making the mailer add padding spaces to the From, To, MsgID, and Subject lines for all mail kept in local areas. This space is stripped from all of the commands that use these lines, so the net effect is just a little more disk space usage. You can also edit the Message Type. This padding, of course, is for TNOS 2.02 and greater. You can STILL edit message headers on pre-2.02 messages (during the transition), but you can only replace data of the same length (or less) as was in the original field. The 'editheaders' command JUST edits the headers, it does NOT queue for forwarding, or do any other analysis. * Added more flexibility to the mbfilter code The mbfilter code when comparing subjects used to required the string being searched for to begin in column 1. Now the string is searched for from anywhere within the subject line. Also, mbfilter saves files using the reqsvr, which SOMETIMES would not work properly due to no permissions to write the file. Now there is another option within a mbfilter entry, '!', which will allow you to override any permissions restrictions. Use with caution. * Added support in parsing of DOMAIN.TXT to the $INCLUDE directive * Added code to support the proposed Negotiation Extentions to AX25 Though the proposed extensions are not even public, yet (proposal not yet proposed ;-), the necessary code changes (few) have been made, to allow testing and development. * Added a 'mbox enforce' command This if set (off by default) will not allow a user to enter a 'SB' to an address that doesn't have a '@host'. For instance, 'SB tcpip@usa' is fine, but 'SB tcpip' wouldn't be. * Added a BBS uptime command * Added a TRACE button for TNOS/X * Added a Compiling Configuration program (mkconfig.tcl) This prompts for the features desired, and creates a config.h file. It is based in style on the Linux Kernel configuration script, but this is done as a TCL script, so it can be used on both MSDOS and Unix platforms. * Added a Autoexec.nos Configuration program (mksetup.tcl) This prompts for the information needed, and creates a autoexec.nos file. This is also a TCL script, so it can be used on both MSDOS and Unix platforms. * Added SQL support! (Sorry DOS users, Unix feature, only) This is written for use with the MSQL package, freely available. With the sql.c file as a model, support could be added for commercial servers, too. The 'sql host' should be set to the Unix machine name running msql. The 'sql database' name defaults to 'tnos'. From the Command Session (or from the BBS as a SYSOP) all MSQL commands can be entered with the 'sql query' command. In the BBS, non-SYSOPs are limited to the 'sql userquery' command. This command can be set to only allow 'select' retrevals, IF the 'sql limitusers' command is set to 'on'. In addition, the TScript language has a new '~sql querystr' command. The current version of msql can be found on ftp.lantz.com in the /tnos/misc directory, or the mirror site of ftp.mwmicro.com in /pub/linux/tnos/misc. ------------------------------------------------------------ Minor Changes: The following minor changes have occurred. * Removed # TUTORED from statusline, if TUTOR not compiled in * Allowed SYSOPS to use non-callsigns with STRICT_CALL enabled * Assorted socket cleanups, from Jnos 110L Barry K2MF provided code to make sure a failed smtp or finger connection is cleaned up completely. Previously, a socket could linger with a PCB of 0000. * MS-DOS Multitask a little more stable From Jnos 110L: Andrew G8FSL enhanced the Multitask support by modifying morecore() in alloc.c to not call sbrk() while multitasking, but rather to fail a morecore() request. This avoids problems when sbrk() gets confused and loses what core we have left! Also affected are the shell and mail commands in pc.c. * Added some new messages MS-DOS error messages created since MSDOS 3.x. * Changed BBS to accept DEL as BS * New MS-DOS critical error handler from Jnos 110L Based on comments by Joe K5JB, Changed errhandler() in pc.c to handle disk and device error messages better. * Changed the maximum line size for ftpusers entries from 128 to 1024 * The setlong() function now accepts hexadecimal numeric strings Currently, this enhances the following commands: 'mem thresh' (DOS), 'ax25 blimit', 'ifconfig ifc ax25 blimit', 'ax25 maxwait', 'ifconfig ifc ax25 maxwait', 'ax25 irtt', 'ifconfig ifc ax25 irtt', 'ax25 t3', 'ifconfig ifc ax25 t3', 'ax25 t4', 'ifconfig ifc ax25 t4', 'conv t4', 'conv maxwait', 'domain maxwait', 'domain ttl', 'ftptdisc', 'ip rtimer', 'ip ttl', 'mbox tdisc', 'mbox maxtimer', 'netrom tdisc', 'netrom acktime', 'netrom choketime', 'netrom irtt', 'rip ttl', 'security tipperms', 'security ax25perms', 'security amprperms', 'security nonamprperms', 'ssaver' (DOS), 'tcp irtt', and 'tcp maxwait'. * The setint() function now accepts hexadecimal numeric strings Currently, this enhances the following commands: 'mem ibufs' (DOS), 'arp maxq', 'arp expire', 'ax25 hsize', 'ax25 filter', 'conv entrychannel', 'conv hmaxq', 'conv umaxq', 'domain cache size', 'domain cache wait', 'domain retry', 'domain maxclients', 'ftpmaxclients', 'ip hsize', 'bulletin loophold', 'mbox maxusers', 'ppp ifc trace', 'smtp dtimeout', 'smtp t4', 'tcp retries', 'tcp blimit', 'asyconfig ifc rxqueue' (UNIX), 'asyconfig ifc txqueue' (UNIX), * The setintrc() function now accepts hexadecimal numeric strings Currently, this enhances the following commands: 'lzw', and 'nntp quiet' * The setuns() function now accepts hexadecimal numeric strings Currently, this enhances the following commands: 'mem ibufsize' (DOS), 'mem minheap' (DOS), 'forward subchannel', 'mb tiptimeout', and 'asyconfig ifc bufsize' (UNIX). * The setshort() function now accepts hexadecimal numeric strings Currently, this enhances the following commands: 'ax25 version', 'ifconfig ifc ax25 version', 'ax25 retry', 'ifconfig ifc ax25 retry', 'ax25 maxframe', 'ifconfig ifc ax25 maxframe', 'ax25 paclen', 'ifconfig ifc ax25 paclen', 'ax25 pthresh', 'ifconfig ifc ax25 pthresh', 'ax25 window', 'ifconfig ifc ax25 window', ftp 'verbose', 'hop queries', 'hop maxttl', 'hop maxwait', 'pop trace', 'nntp trace', 'netrom ttl', 'netrom qlimit', 'netrom window', 'netrom retries', 'rip trace', 'rspf maxping', 'smtp maxclients, 'smtp trace', 'tcp mss', and 'tcp window'. * Added binary string entry for several routines This was added to setlong(), setint(), setintrc(), setuns(), and setshort(), and enhances the same commands as listed previously for hex strings. Also, the permissions string in the ftpusers file can be entered in binary. NOTE: All binary constants MUST start with "%", just as all hexadecimal constant must start with "0x"! * Increased the size of getline() buffers from 256 to 1024 Hopefully this will eliminate the domain crashes that have been more frequent with 'domain trans on'. * Removed conditional code for AMIGA and MAC in files.c This was OLD code left over from NET days, and has not been being maintained, anyway. * Consolidated filename strings in files.c, removing conditionals Also did a lot of reformatting to the files.c file, while I was there. This change and the one above reduced the size of the files.c file by over one third. NOTE: I discoved a discrepency between DOS and UNIX on the name of the 'groups' file, which was 'group' in UNIX. Any UNIX users upgrading that have an existing 'group' file must rename it to 'groups'. * Changed the CONV indicator on the status line to a 3 digit field Not uncommon on the Internet Converse Network to have more than 99 users online at once. * Made several changes to prepare for years > 1999 Files affected: at.c, nntpserv.c, and unix.c. * Assorted reformating of several files * Changed several 'retry' subcommands to 'retries' for consistency This occurred in domain.c. * Added a warning in the hostname command if no domain portion given * Added in a BBS scripthook named 'msgend.sys' This gets called (if it exists) at the end of each message, when reading messages. This was added to support the 'winpak' program. To make 'winpak' users happy, the following in a 'spool/cmds/msgend.sys' file should do it: ~ ending message for winpak ~p 1 0 7 20 --- end of message #~1 ---~n * Changed parameter to 'escape' from binary character to hex string * Assorted cleanup to nntpcli.c for warning-free compiling * Expanded command.hlp file...... Bill has provided an expanded command.hlp file which will be included in 2.02. * Made Unix's mallocw routine really wait If a memory allocation was requested and the memory was not available at that time (swap reorganization, etc.) it was NOT waiting. Now, that process within TNOS will wait up to 30 seconds for the memory, afterwards it will do what it HAS done, and that is exit TNOS. * Quieted a few Unix compilation warnings * Changed idle polling frequency of BBS line input function If there is no input from a BBS user, the process now goes to sleep for 1/2 second. This value USED to be 1/10 second. Shouldn't be noticed at all by the user, but should help keep down the CPU time on loaded systems. * Reverted the convers sockets to blocking mode I'm SURE there was a good reason that I made the convers sockets non-blocking on receive, and had them use the non-blocking version of recvline(), but I REALLY can't remember what it was. Until such time as it is found to be necessary, these stream will again be blocking, which will make each convers process use less CPU time. * Changed the default for 'smtp hopper' to off, if compiled in * Made a slight change to unixasy for z8530 support ------------------------------------------------------------ Known Bugs: The following are known bugs that are being worked on during the development of release 2.02. These may or may not be fixed in release 2.02. * Forward file locking needed If a record gets added into a *.fwd file when a forwarding session is concluding, sometimes the new record gets missed, and the *.fwd file gets deleted. Rare, but needs to be addressed. * Sending mail to the proxy server, doesn't seem to work properly * Displaying parameter strings with a '\r' needs adjustment If you define a parameter string (like 'ax25 bctext') to be multi-line strings with a '\r', the output to the screen may not be what you expect. * FBB compression quirk There seems to AT TIMES be a buglet involving FBB compressed forwarding. What happens is that a few random characters get incorrectly decoded and added to the end of messages, at times. I am trying to figure out the reason for this. * Duplicate entries in the WP files While not harmful, the WPages routines SHOULD be overwritting existing entries, NOT creating new ones. * Problem with a CC: to a public area If you send a 'SP' BBS message (or 'SC') and end up with a CC: to a public area it has an 'X-BBS-Type' line defining it as personal, when it should be bulletin. * Seems to be a problem if mail queued for fwding is being held Only occurs after the system has tried MANY times to fwd it, but it still remains held for review. * Occasionally output from one session goes to an incorrect socket Very rare. Trying to figure out where this one is coming from.......... * There are Reports that resetting FTP sessions are causing crashes No other info, though, at this time. * None other at this time.... ;-) ------------------------------------------------------------ To-Do List: The following are things on my 'to-do' list that may eventually be done, but not necessarily by the next release. * Investigate incorporating into TNOS a userfs extension This would allow *any* Linux (and possibly other Unix) program to open a file and access certain TNOS features. For instance a terminal program like minicom could open a device: /tnos/connect/lan/k0zxf/ko4ks-1/813044 and do the equivalent to 'connect lan k0zxf ko4ks-1 813044'. You could incorporate a copy of your current usage stats into a email message in Pine, by simply inserting a file named /tnos/stats/usage/general. * Add capability to allow use of OS commands Due to the obvious restriction of MS-DOS, this WILL be limited to Unix version only. * FTP permissions improved The new UNIX-like dir display needs a little more work with the permissions portion of the display... * Add better support for PBBS<->Internet mail address translation The 'translate' file and improved handling of aliases is a START, but more work needs to be done here. Maybe a 'translate.out' file... * Still better handling of AUTO/LOCAL ax25 routes Improvement by making an ax25 route entry part of the connection block, using this unique AUTO route for this connection only. * Support (optimization) for ncurses 1.9.x for performance * Color support output to Unix console The various color commands don't work with the Unix kernel and curses. Annoying, but just possible unexpected output. No crashes. * Consider altering import code to prevent holding imported messages Only bypass user permissions checking, not bad word check holding. * Consider providing a ROSE whitepages server * Consider adding a way to 'tip' remotely within the BBS * Consider providing separate SMTP/BBS rewrite files * Consider adding a MAN command Not much use till some man pages are made ;-), but the coding could be done in anticipation.... * Consider adding a 'R x - x' syntax to the BBS read command * Consider adding Compressed Convers support * Consider adding PASV support to FTP