TNOS Release Notes - Release 2.21 Brian A. Lantz, brian@lantz.com v1.00, 08 February 1997 These are the FINAL Release Notes for release 2.21 of TNOS. Hope- fully, this list of changes will give you an idea of the scope of work that has occured since the release of TNOS 2.20. ______________________________________________________________________ Table of Contents: 1. Bug Fixes 2. Improvements and Enhancements 3. Minor Changes 4. Remaining Known Bugs 5. To-Do List ______________________________________________________________________ 1. Bug Fixes The following bugs have been squashed. o Added forgotten 'FORTH' to tnosmap info o Found header MSDOS inconsistencies Some modules were using n8250.h (correctly) while other were using the OLD i8250.h. This caused MANY serial related problems. Fixing this required a bit more of the older code to be integrated with the newer serial code. o Fixed an obscure session swapping buglet Thank to Ian Hamilton/G0TCD for the info for this problem. Seems that if you created a 'temporary' session (by pinging a hostname that needs to be looked up on a nameserver over a radio link, for example) then function key toggle to another session, and after the 'temporary' session has completed Fkey 'back' to the NOW COMPLETED 'temporary' session, you would crash. Fixed now. o Fixed a poll/minidle conflict in forwarding code If in forward.bbs you had an entry with 'POLL = yes', then the minidle code would be ignored. An entry with a poll set yes would be processed on each forward cycle. This is corrected, and you can still do a 'forward kickone bbsname poll' to force a session, overriding minidle. o Fixed a buglet where forwarding looped continually This was caused by the MINIDLE code being ignored if POLL was set to 'on' for any PBBS. o Fixed sysop mode negotiation random number generation code o Fixed a obscure looping problem in the forwarding code This would only occur if all messages in the queue were being held for review. It was caused because the forwarding code was incorrectly marking held messages as messages in progress (with '!'). o Fixed the EFFECT of a serial bug, cause unknown, affecting TIP Upon returning from a pwait(), a saved pointer was somehow corrupted in a major serial port routine. The EFFECT has been masked, for now, but the cause still needs to be found. o Fixed the MSDOS PPP attach hangup A tight continual loop didn't allow other processes to have CPU time. This was located in the asy_monitor() function, only used if PPP ports are active. o Fixed a long-time buglet in 'repeat' This was passing random garbage as the process name at times. o Fixed occasional crash with nntp2pbbs with long group lists o Fixed a small bug which prevented NNTP Client-only code from compiling o Fixed serial interrupt latency problem causing lost chars - MSDOS o Minor changes to make proper usage of color - MSDOS The '-k' and '-g' command line options work as pre-DJGPP. Also the color Command Session command works properly. o Fixed a bug that displayed garbage in the 'status' command o FINALLY fixed the serial port latency problems - for real While the work before helped, latency problems still persisted. Seems that they would only affect serial ports with IRQ4. The IRQ4 routine (inherited from NET/DJGPP) disabled interrupts while processing IRQ4 interupts. This had the effect of losing incoming characters while processing outgoing interrupts. All fixed now. Serial ports work 100% up to 38400, while 57600 only has an occasional FIFO overflow and is still highly usable! Since the data sheet for a 16550 says 57600 should have a 2.66 error percent (due to the baud rate ACTUALLY being 56000), this is probably hardware related. A baud rate of 115,200 CAN be selected and used, though on a Pentium 100Mhz, I saw about a 40% error rate. o FOUND the MSDOS spuratic crash bug! Seems that in the NET/DJGPP code I adapted from Phil Karn's work, he had NOT followed the STRONG warnings given for locking all functions and variables used in interrupt routines to prevent the DPMI memory manager from swapping that portion of memory. Now, with proper memory and function locking, I have not been able to produce a crash at all, under MSDOS (with QEMM), in a Win95 DOS box. Occasionally in Linux's DOSEMU there will be a crash, only after SERIOUS thrashing of swap space. This is probably due to a memory allocation failing rather than this bug. o Fixed CR-LF problem with TScript (and other things) under MSDOS o Discovered that FBB could send a message with length 0 This was previously treated as a corrupted negotiation and aborted. Now permitted. o Fixed MSDOS HTTP initial document name from root.html to root.htm Good old MSDOS doesn't like 4 character extensions, so all predefined HTTP server files ending in "html" now end in "htm" for the MSDOS version. o Fixed bug in HTTP directory listings Note, only directories containing a file named 'welcome.html' (or 'welcome.htm' for MSDOS) will be displayable. The contents of that file are displayed, though the files can be empty. o Fixed bug where mailbox would crash with a null 'pbbs motd' string o Fixed problem where crontab would be blocked if keyboard was locked o The above are included in 2.21b1 o Fixed a bug in the browser If when accessing a protected URL you gave an improper username/password, the browser would loop continually, and didn't re-prompt for another try. o Fixed a cosmetic problem on the browser help screen o Fixed warnings possible in several modules o Fixed browser where only first word of a IMG ALT string is displayed o Added a missing close of remote socket in browser code o Fixed a problem in the browser where tags could not span multiple lines o The above are included in 2.21b2 o Fixed browser's displaying of SCRIPT tag contents as data o Fixed browser's displaying of HTML comments as data o Fixed a long-standing typo affecting compiling with the POP3CLIENT o Fixed a long-standing bug with 'hop check' command o Fixed a bug with the address and subject of a PBBS email msg o Fixed link and line overflow errors in browser For those occasional WWW sites sites with an OBNOXIOUS number of lines or links, the arrays for these have been increased to a rediculous amount, and SOME sanity checking code is in place to catch overflows, though it is probably not exhaustive. Any sites with more links or lines that are currently allowed should be stayed away from, anyway ;-) o Fixed a cosmetic problem, where area '' would be attempted to be rewritten o Properly update last message read via HTTP PBBS o The above are included in 2.21b3 o Added code to the browser to override any table elements with colspan=0 o Fixed warnings when FBBCMP not set and hardware.h not included o Made browser properly ignore links with non-supported URL types o Changed browser parsing of certain tags to be case-insignificant Even though the HTML spec makes some tag parameters case significant, many people don't read the spec :-( o Fixed typo in new 'pbbs newuser more' command o The above are included in 2.21b4 o I *BELIEVE* that DNS names in autoexec.nos commands SHOULD work, now No promises ;-) 2. Improvements and Enhancements The following optimizations and improvements have occurred. o STRICT_CALL if compiled in, can now be turned on/off at runtime This is accomplished with a new command 'pbbs strictcall'. o Added security permission to prevent telnet to non-default port Allowing telnet access is one thing, allowing it to ANY port is another! This new permission allows you to control whether or not you will allow a user to telnet to a specific port. The value for this permission in the ftpusers file(s) is 524288 or 0x00080000 in hex. o Rewritten kernel scheduler code - inspired by latest KA9Q This solves the serial port interrupt latency problems in the MSDOS code. While no substantial gains for UNIX, it should make it at least a little better, too. o Kernel scheduler info added to 'ps' command - also new 'kstat' command The 'ps' command calls the new 'kstat' command to provide this info. o Added a 'statmode' command, to allow configuring status line counts The statmode command (if no parameter is given) will display which counters will display in the Command Session's status line (in line 2). To change the configuration, you give statmode a single parameter, a string of characters that identify the desired counts you wish enabled. The characters are 'B'BS, 'C'ONF, 'F'TP, 'T'UT, 'N'NTP, and 'H'TTP. As an example, to enable only BBS, HHTP and NNTP counters, you would do a 'statmode BHN'. In addition, the '-' character can be used in the parameter string, which will make the counter labels only a single character long. This provides more room on the line for the log messages. Also, the '3' character can be given, which will move the log messages to a new third line of the statline display. Finally, the 'U' character can be given to add an uptime display to the statline. If the statline is in three line mode (using '3'), the uptime will be placed at the end of the second line (below the current time). If the statlien is in two line mode, then the of the current time one the first line will replaced with the uptime display. The default value for statmode is 'BCFT', which makes the status line look the same as previous releases of TNOS. o MAJOR ENHANCEMENT! Per-connection routing The very first quirk of xNOS that the author discovered that he hated (*LONG* before he even examined the NOS source code for the first time) was the problem with ax25 routing corruption. It goes like this, AAA connects to CCC via BBB. DDD later connects to CCC also, but through EEE. NOW the connection for AAA uses EEE instead as a digi, since the system only has one routing table, and DDD has modified it with his connection. And this breaks all network nodes/switches, as well as some packet applications which check to make sure that the same path is used for each packet. With major R-and-R over the holidays, I came up (finally) with the simple and elegant way to overcome this. Now when a connection is set up, and an ax25 connection block is created, it stores a copy of the route being used to create the connection. And the routine used to look up the correct route to use, now will return the initial route. Very little code was changed but it has made a TREMENDOUS improvement. o And ANOTHER MAJOR enhancement in routing This is how outbound connects work as of this release... If the connect statement is made with no digis (no path given), and there is an 'ax25 route' of type 'LOCAL' (entered by the SYSOP at the Command Session prompt or in the autoexec.nos file), then that defined path is used as the default path. Digis (if needed) are added automatically and invisibly for him. If, however, a path is given by the user (one or more digis are specified), then this defined path is used instead of the default, LOCAL path. If the connect statement is made either with digis or without, and there is NOT an 'ax25 route' of type 'LOCAL' in the system, then the connect will be made as specified by the user. In previous releases of TNOS, a LOCAL defined route would be used (if, present) regardless of whether this was the path the user specified. While this may seem harsh, it was necessary to get around the routing problem now fixed (described in the previous section). A BBS (for instance) needing to send data to a specific path didn't need it's crucial path overridden by a casual user on the system. So, now all connections work as they SHOULD have all along. The author has waited over 5 years to get to this point!! The only visible item that can be seen with this change is in the 'ax25 route' listing. You may now see an entry of type 'Setup', if you happen to catch it at the right moment. There is the possibility of a 'Setup' route not getting cleared under certain circumstances. This will not present a problem. There is code in now which will clear the setup route queue after approximately 1 minute. o Final routing cleanup - incoming connections Previously in TNOS (as mentioned in the last two sections) a LOCAL route would not be able to be overridden by a temporary (auto) route, so an incoming connect from a station that had a LOCAL route (from a route other than the defined LOCAL route) would respond improperly. The incoming stations would use one path, while the outgoing TNOS frames would use another. Still, a LOCAL route will not get overridden by an auto one, but now the route connected FROM is saved in the ax25 connection block, and is used for all other frames of that connection. A LOCAL route now only defines the default route used if no digis are given on outbound connects, and has no effect on incoming connects. o Added a text-mode HTTP browser of limited functionality. While Lynx and Netscape have nothing to fear, it IS useful. Though I have NO intention of attempting to make this a world-class browser (supporting all the bells and whistles), this will allow a casual surf from the TNOS Command Session The new 'browser ' command starts of a browser session. URLs of types 'http://', 'telnet://', 'ftp://', 'file://' and 'mailto:' do as expected under most cases. I'm SURE that there are web pages out there that CAN confuse it, but it currently succeeds on all pages I've tried it on. The help screen (available with a 'h' or '?') describes the commands to navigate in the browser. o Added to ability to send email messages via the HTTP PBBS The user's permissions must NOT have the 'no_http_mail' bit set (value 134217728 - hex 0x08000000), which disallows sending email via http PBBS. Sending is also rejected if the 'no_sendcmd' bit is set, as usual. Otherwise, no other restrictions. If they can access the PBBS via HTTP, they can send email Build a simple form, which posts to '/bbs/sendmail' on your system. The input fields are 'address' (who to send to), 'subject', 'type' (either 'P', 'B', or 'T') and any number of fields starting with 'line', which are concatenated together for the body of the message. Those without permission to post message will get a brief message stating this, but you can add your own HTML to that message, by creating a file named 'http/bbs/sendfail.html' off your TNOS root directory. o Removed security hole 'http drive' command from MSDOS version. This could allow getting ANY file from a TNOS/DOS server. This command is removed. All files on a MSDOS server must be within the 'http' directory structure, the same as with TNOS/Unix. o Added 3 HTTP Server-Side Includes to HTTPPBBS code Three new echo variables, "MESSAGECOUNT" (count of messages in current area), "NEWMSGCOUNT" (count of new messages in current area), and "CURMESSAGE" (for the current message). o The above are included in 2.21b1 o Added a 'http secure' command, to protect WWW pages This allows you to secure individual URLs, or entire directories. The syntax for the command is 'http secure '. If the URL ends in a '/', then all URLs in that directory will be protected by this command. The URL must start with a '/'. The 'realm' parameter gives a string which the users browser will display indicating what is being realm on your site is protected. The 'pwfile' must be a complete pathlist to a file that contains usernames and passwords. The file is in the same format as the popusers file. Only those users in the pwfile will be able to gain access to protected URLs. Doing a 'http secure' without any other parameters will list all secured URLs, if any. This is in ADDITION to the /bbs/ URL, which (if the HTTPPBBS flag was set when compiled) is protected using the ftpuser file(s). Both the HTTPPBBS code and the 'http secure' code uses HTTP Basic Authentication, supported by all browsers. o The above are included in 2.21b2 o Added code to adjust the number of available serial devices, if needed If the number of AX25/SLIP-capable devices (default or overridden with the '-A' option) is greater than the number of serial devices (default or overridden with the '-P' option), then it is re- adjusted to the higher value. The side effect of this is that both settings can be set to the same value by setting just the '-A' option. o Added support to the HTTP server to support tags If you don't know what this is, consult one of the thousands of books on HTML and CGI. o Added support to the HTTP server for 'cookies' This is added with two new 'http' subcommands. The 'cookielogging' command (which is off by default) determines if incoming connections returning a cookie we have assigned will be logged. If so, they are placed in the 'cookie.log' file in spool/log. The 'usecookies' subcommand will assign all connections a unique 'cookie', if it did not return a previously assigned cookie as a part of it's request. The cookie assigned is 'TNOS', and it's value is set to 'xxxxxxxx_ipipipip_yyyyyyyyyyyy', where 'xxxxxxxx' is the sequential cookie number, 'ipipipip' is the ip address connected from (in a hexadecimal string) and 'yyyyyyyyyyyy' is the unix time that the cookie was assigned. The 'usecookies' subcommand is also off by default. At most, one cookie is assigned to each ip address that connects to the HTTP server. This prevents assigning large number of cookies to sites that are using browsers that aren't 'cookie-aware'. It also will return a previously assigned cookie, if a browser flushes cookies or the remote's cookie file is lost. These are TRULY persistent cookies ;-) The file 'spool/cookie.cnt' contains the last sequential cookie number used (i.e. number of cookies assigned). The file 'spool/cookies.dat' contains the cookies assigned. In addition, there is a new server-side include echo variable defined of 'REQ_COOKIE', which will contain the COOKIE header given in the incoming HTTP request, if there was one. A new executable was added to the source tree (lscookie), which will display the assigned cookies in an easy to read display. o Added support to the browser for 'cookies' All cookies received from local browsing are stored in 'spool/cookie.jar' o The browser is now 'frame-aware' Like lynx, when a frame is discovered, a link to created which (if followed) will bring up the page that is contained in that link. Frames are NOT formatted on the display. Each frame is treated as a separate page. o Added the URL's Title (if one specificed) to the browser display o Added a 'security httpperms' command This security command (if set to a non-zero value) will override the 'security amprperms' and 'security nonamprperms' values for HTTP PBBS anonymous connections. o Removed the restriction on MSDOS 'exec cmd' server-side includes When original developed and the MSDOS version was running under BorlandC, there WAS no way to do this, so there was conditional code limiting this to Unix versions. Since the DJGPP has support for the popen() function, this restriction is removed. There were no changes to this, other than removing the restriction against MSDOS usage. See new2tn2.10 for details. NOTE: Since MSDOS is *NOT* a multi-tasking operating system, these programs that are 'piped' are ACTUALLY run (temporarily preempting TNOS). o Added to the browser support for tables Unless there is a newer version of lynx out than the one I have (which is doubtful), this makes the TNOS browser 'one up' on lynx, as it does NOT support tables. Any links within the data element of a table set the entire data element as a link. This might not render correctly on a very few highly complex tables containing links. If more than one link is contained in a data element, the link gets set to the last one found. o The above are included in 2.21b3 o Added a new 'pbbs ackfilter' command This command (off by default) will filter out all '/ack' lines in email sent from or passing through the system via PBBS forwarding. This 'feature' is abused regularly with 'sp all@ww' messages. Your call, use it if you wish, or not. I've had MANY requests for it, so I've provided it. o The above are included in 2.21b4 o Added to browser ability to save non-text URL's (executables, etc) If the content is NOT text, you are prompted as to whether to save or not. If you choose to save, then the file is saved in the spool/incoming directory. o Added a 'browsercheck' command to display in browser a page if changed The command takes a timeout value (in seconds) and a URL (use a complete URL). If the URL is changed, it will prompt if you wish to view it, or not, or if you wish to view it at a later time. If you choose later, than the URL's date/time will NOT be updated in the spool/checked.url file. Otherwise that file will be updated. This ONLY works with servers that send the "Last-Modified:" header line. The TNOS HTTP server always sends this line. Apache needs the XBitHack command set to 'Full'. Other servers might ever send this header line. To check to see if the URL you are interested in sends the line, do a telnet to the site, port 80 ('telnet remotesite 80'). Then give a line like this "HEAD /file_within_site HTTP/1.0" followed by a blank line. The '/file_within_site' is everything on the URL AFTER the hostname. Examine the header lines, and if there is a 'Last-Modified:' line, then the 'browsercheck' command can be executed for that URL, also. This command is only available if the BROWSER flag is compiled in. o Added an internal 'browsercheck 30 http://www.lantz.com/tnos/updates.html' This extends on the idea of the 'features.new' file a bit further. Now, those sites connected to the Internet can receive automatic notification of items of interest to TNOS users. The updates.html web page will be updated with the latest news of interest. The timeout of 30 seconds will keep any site without Internet connectivity from being tied up but just a couple of seconds. But, those sites NOT connected to the Internet (or those NOT wanting the automatic monitoring for changes) can use the '-U 0' command line option to change the timeout to zero seconds, disabling the check. This same option can be used to set the timeout to a longer value, if needed. The automatic checking of this updates page happens after ALL autoexec.nos processing is complete, just before handing you the first command prompt. This feature is only active if the BROWSER flag is compiled in. o Added a 'browseremail' command to allow setting of email address If this command is NOT used, then 'wwwuser@' is used. Unless you have a rewrite file entry for this address, any intelligent web sites will not be able to email you responses. It is suggested that you set this command to your complete email address. This command is only available if the BROWSER flag is compiled in. 3. Minor Changes The following minor changes have occurred. o Added functionality to 'tnosmap' executable If the first parameter is '-c', then the output is suitable for use as a config.cfg file. If the first parameter is '-h', then the output is suitable for use as a config.h file. o Added minor changes needed for SUN compiles o Various pieces of conditional code cleaned up o Minor tweeks to mksetup.tcl and setup.in o More portable treatment of inclusion o Removed much old DOS code from source tree Removed the code for XSPAWN, STKTRACE, SWATCH, MULTITASK, and UMB code from source tree. These were all BorlandC-specific, and no longer needed or used. o Removed the APPLETALK and AMIGA code from source tree o Removed almost all the TURBOC and BORLANDC code from source tree o Added automatic UNIX/DOS sensing to mkconfig.tcl One less question ;-) Since many accidentally answered this one wrong and had a lot of needless grief, this should be of help. o Much cleanup of conditional code - MUCH unused code removed o Changed all malloc's to mallocw's Once I realized that about the only time my TNOS setup would crash was during long swap's of memory at the kernel level, I went in and found that many malloc's existed which should be mallocw's (malloc and wait till the memory is available). This should improve stability on machines with low memory or heavy usage. o Moved common Makefile rules to a 'makefile.all' file The MSDOS and UNIX makefiles include this file. o Cleanup and reorganized makefiles o Other MASSIVE cleanups in source tree and source files o Added three other special finger 'users' Added for consistency: yearly_msg, yearly_tfc and yearly_use. o Taking a cue from latest KA9Q, renamed two functions The 'pwait' function is now 'kwait', and 'psignal' is now 'ksignal'. As there is a BSD function named 'psignal', under Unix it was being renamed to j_psignal via a MACRO. Since these are kernel routine (not process routines) the 'p' is changed to 'k'. o To prevent function name collisions, renamed two other functions The 'alarm' function is now 'kalarm' and 'mspause' is now 'kpause'. o Added dpmi memory information to MSDOS 'mem stat' o Removed code preventing use of statline if '-e' option used - MSDOS The older Borland compiler had a problem with this. With a little tweeking the DJGPP works fine with the statline in EGA mode. o Less memory used by TNOS/DOS The original NET/DJGPP code I adapted for TNOS assigned 32K (32 bit) words for stack size (that is, 128K), regardless of whether it was needed or not. Admittedly overkill, and the comment in the code indicated that there was an unknown stack problem and this was a quick hack. Since the other environments use 16 bit words, and work FINE with far less memory assigned, I changed the DOS version to use realistic stack sizes. In making this change, I discovered the cause for the original hack. When a stack was being assigned, only half of the stack being created was in fact being used. This has now been corrected. This should make each processes within TNOS use (on the average) 16 times less memory. Now on all platforms the ACTUAL stack memory used is two times the value reported in the 'ps' command in the 'stksize' column. o MSDOS version completely linted! o The 'ax25 stat ' command now lists mode and digis This is for both inbound and outbound connects. o Added ability to pause automatic FTP sessions on completion Added a new optional parameter to the 'ftp' Command Session command, if the 'inputfile' parameter is used to automate the ftp session. If the 'inputfile' parameter is followed by the parameter 'pause' (actually, the letter 'p' is sufficient), then the automated session will require a keystroke before it is dismissed, to allow examining of the session status on completion. o Added code to shutdown routine to disconnect AX25 connections properly o Added a 'http strictcall' command to enable/disable only ham access to HTTP This is only available when the STRICT_HTTPCALL flag is compiled into TNOS. The default for this command is off. o Extended the time TNOS/Unix waits for memory to become available This was set to 60 seconds, but on slower systems with limited memory and lots of swapping, this could sometimes take more and still not be unobtainable. This is now set to 2.5 minutes. o Added a 'simple_log' function when logging simple strings One source of assorted gremlin crashes is logging simple strings that contain a percent character in the string. Since the log() function was using the printf() function (which treats percent characters as flags for parameters), this would cause random, unexplainable crashes. The new simple_log() function doesn't call printf, and is safer in many cases. o Removed the 'ip encapnew' command This was a temporary command, as all were converting from PID 94 to PID 4. Now that about 2 years has passed, all should be capable of handling PID 4. o The above are included in 2.21b1 o Added ability to reload current URL to the browser o Silenced a few compiler warnings due to conditional code o Added ability to pad the catalog.cat file While this is disabled in the standard compiler setup, if the variable CATALOGPADDING is overridden in the make.inc file, you can set a padding amount, which each new file added to the catalog.cat file will round up to. This has much use in my development situation, as without padding, each addition to the catalog.dat file caused ALL files using the CATALOG flag to have to be recompiled, since the offsets changed. Now, buildcat will alert you if the file has been altered such that the other modules need to be re-compiled. Not really useful to others. o Added code to browser to allow viewing list of previous links o Many minor cleanups in http.c and browser.c o One more pass of LINT cleanups, this time on a global level Moved 'external's to 'static's when they can be. Found several pieces of code never executed, etc. o Added two new compiler flags, BOOTPCLIENT and BOOTPSERVER It's a good thing that no one was trying to use the BOOTP code, as the BOOTP flag was not in the mkconfig.tcl setup ;-) I've broken the old BOOTP flag into BOOTPCLIENT and BOOTPSERVER, and corrected the conditional code. o The above are included in 2.21b2 o Added to the browser support for non-breakable spaces o Added a few needed FreeBSD patches o The default number of serial devices is smaller, but redefinable See the current TNOS man page for the '-P' option and the related '-A' option. Rather than make this a large number (when most sites only have a couple of ASY ports), the default is now 5. o Changed the name of a few 'http' subcommands This shouldn't effect anyone, as more was added to the names. The 'agent' subcommand is now 'agentlogging', the 'misc' subcommand is now 'misclogging', the 'post' subcommand is now 'postlogging', and the 'referer' subcommand is no 'refererlogging'. o Rewrote and simplified the disect_url routine in browser o Changed browser's handling of tags I was treating these as having implicit
tags, but most other browsers seem to treat these as having implicit

, so I have changed to this, also. o Make assumption about blank tags in browser Rather that parse the tags (which won't be used) to try to fill in an indication of an image map, I am assuming that if a tag is being completed and there was NO displayable data within the tag, that this must have has a graphic tag somewhere in there, so I will add the word 'Graphic' in the body of the visible link on the page. o Added support to browser for several more tags Added support for the 'dir', 'menu', 'comment', 'dd', 'dl', and 'dt' tags. o Added a 'pbbs newuser more' command, to set default more lines o Added ability to browse tables longer than the screen width While normal HTML code is constrained to the width of the screen, doing so would make tables unreadable. With this in mind, I added code to the browser to allow tables to be longer than the screen width, and to allow you to shift the screen contents one half page in either direction, if there is data not being displayed. You shift from side-to-side using the '<' and '>' keys. o The above are included in 2.21b3 o Increased the default number of rows in a table from 50 to 150 o Made default 'type=text' for input tags in the browser This is NOT to be consistent with the HTML spec (which says that the 'type' parameter is required for 'input' tags), but for consistency with the major browsers, which let such broken HTML code get by and assume 'text'. o Added to the browser's 'g' command code to expand incomplete URL's o Made browser tolerant of imbedded tables Since they will NOT be rendered correctly, a warning is inserted before the complex table and a note that the table is complete is added at the end of the table. o Added support to browser for tables defined with border=0 o The above are included in 2.21b4 4. Remaining Known Bugs The following are known bugs that will be addressed in the near future. These may or may not be fixed before the next release is made available. 1. The proxy server scripts do not seem to work properly There is a problem, that is being looked into, which seems to be related to calling scripts from within scripts (which proxy.scr DOES). 2. None other at this time.... ;-) 5. To-Do List The following are things on the author's 'to-do' list that are being considered for this or a future release of TNOS. These may eventually be done, but not necessarily by the next release. 1. Complete the spec and coding of the non-IP HTTP PBBS interface 2. Add to the browser support for the 'select' and 'textarea' tags 3. Add to the browser better rendering of tables within tables 4. Export a complete set of CGI environment variables when 'exec cmd' used Currently you can execute a program and pass in explicit parameters (which CAN be dynamically assigned using server-side includes), but it is NOT a CGI-compatible interface. I will consider adding this at a later time. 5. 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. 6. Add capability to allow use of OS commands This includes finishing the incomplete 'pipe' command in the Unix release. Due to the obvious restrictions of MS-DOS (memory, etc.), this WILL be considered for Unix version only. 7. 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... 8. Support (optimization) for ncurses 1.9.x for performance At this time, ncurses 1.8.5. is STILL the only supported ncurses release. 9. Color support output to Unix console The various color commands don't work with Unix and curses. Annoying, but just possible unexpected output. No crashes. 10. Consider adding a 'R x - x' syntax to the BBS read command 11. Consider adding IP MASQ support 12. Add code to allow a TIP socket type, for use with LL Modems 13. Tweek the WPages code a bit Need to improve the code that insures that the wpagebbs entries are correct, of the proper length, and actually look like hier addresses. Also, make the expiring of WPages files less fragile if the file has become corrupted. 14. Check into duplicate entries in the WP files While not harmful, the WPages routines SHOULD be overwritting existing entries, NOT creating new ones. 15. Consider adding intelligence to convers links The idea being that if there are no incoming links, and no local users, that the remote outgoing link would be brought down until this changed. 16. Consider added auto7+ detection/support