Upgrading TNOS to release 1.12 http://www.lantz.com/Update1.12.html TNOS 1.12 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 ------------------------------------------------------------ Bug Fixes: The following bugs have been squashed. * Tscript mailing once again works The ~d and ~dr commands didn't mail their output in release 1.11. Now fixed. * Small TCPGATE buglet fixed When a TCPGATE connection was made, the logfile tried to print an integer as a string, causing garbage in TNOS/DOS logfiles, and causing occasional program crashes under TNOS/Linux. Now fixed. * The BBS 'RM' command fixed A seemingly long standing bug with the 'RM' command has been fixed. (Can't believe no one ever reported that one before). * A long-standing trace buglet squashed For quite some time (maybe forever) the hex dump tracing of AX25 interfaces have had a leading zero byte in the display. In TNOS 1.00, I stripped the first byte, only to find that the AX25 was fine, but others weren't. TNOS 1.10 and 1.11 were released with the original buglet. Now the first byte (the bogus zero byte) is stripped if the interface is an AX25, but it is left alone for all other interface types. * Fixed the alternate REQSVR "uploadblind" syntax The "ub filename" alternate syntax for the "uploadblind" sub-command didn't work due to a now squashed buglet. * Fixed a minor security buglet in the BBS 'conf' command There has been a minor buglet discovered in the mbox 'conf' command. If you use the 'c' command, then permissions are properly checked for the NO_CONVERS flag, and the attempt fails if the permissions have this flag. Well, the 'conf' command WASN'T checking this permission. * New mail buglet smashed There was a buglet that occurred if you were in the BBS with unread mail and a new message came in. What happened was that the current message was set in the routine that checks for new mail to the FIRST unread message, which is one MORE than what is just WAS. This now preserves the current message number when new mail comes in. * BBS buglet, causing unnecessary DNS lookups, is dead There was a buglet in the isanIPhost() function, which is called when the user sends a mail message. It had a piece of code, which looked at the address, and if it was a common Internet address extension, then it would bypass a DNS lookup. Well, the logic was wrong, and the result was to ALWAYS look up the address with DNS. * BBS Login 'ghost' now busted Thanks to Rob Mayfield for pointing me to another problem. Every once in a while (in any xNOS) you will see that you have a ghost user, that is 'LOGGING IN', but isn't really there. They WERE, but the connection is gone and the tdisc timer didn't kick in. Well, this was because the tdisc timer wasn't started until AFTER the login was complete. This has now been moved to before the login, so when the 'mbox tdisc' timer kicks, the ghost is busted... * Small filename buglet with tutorial files under Linux While the intention was to allow a tutorial file to be *.tut, for Linux this was fine but NOT if you wanted to name it *.*.tut. There could be only one '.' in a file name. Thanks to Rob Mayfield for catching this one.... * Expiration bug found One of the hardest ones I've had to find was this one.... It seems that if the public areas are expiring AND a message comes in for THAT area while THAT area is expiring, bad things happen. Sometimes the file(s) get corrupted. Sometimes a lockup. Sometimes the SMTP process would abort, leaving the ".CTL" file open. When it tries again later, if the expiration is STILL going on (large file - short timers), then ANOTHER ctl file COULD be left open. This SOMETIMES resulted in DOS getting all available files hanging, making a crash eventual. Well, this one should be good and squashed! * Forwarding subchannels quirk fixed If you were using the subchannels feature for forwarding, and not all BBSs with traffic to pass could start (due to subchannel limiting), then a quirk occured if the first (or an early BBS) fails, due to not being available. If this happened, the next forwarding slot would go to them, NOT to the next one waiting. This only became a BIG problem if the subchannel was limited to one. In this case, the next ones NEVER did get a chance.This has now been fixed. * Statline command in Linux version fixed I THINK (repeat, THINK) that I found what was goofing up the statline functionality under Linux, and causing the instability. The problem was two-fold. If you were NOT on the command session the display would not update, though the routine WAS being called !?!? Second, turning it on made you a ticking timebomb waiting for a place to happen. Well, it seems that it WAS updating the screen, the COMMAND screen. And after it had been sufficiently backlogged, the thing blew! So you could stay on the command session all day with no problem, but start to do something in another session and you would die after a SHORT while. * BBS Mail scan at startup w/Linux There was a bug with the mail scan at login in the Linux version. It is fixed in release 1.12 ------------------------------------------------------------ Improvements: The following optimizations and improvements have occurred. * Trace display of encap frames improved Added code to the tracing of encapsulated packets to show the encap IP type, which is either 4 or 94. Until the 94 type is completely history, this will assist in debugging encap problems. * Home BBS prompt message not in a changable file Changed the ASKHOME first-time prompt message from being a compiled in message to being one read from a file named '/spool/askhome.dat'. * Completely customizable prompt Added a new option to the 'prompt' command, "prompt custom 'promptstr'" which allows you to fully customize the prompt to whatever you wish. To use imbedded spaces, surround the string in quotes. * Two new short-cut commands Added two new command session commands, 'gone' and 'here'. These 'gone' command is the same as 'attend off' and 'mbox attend off'. The 'here' command sets these both to 'on'. * Made the rewrite file parsing more dependable The routine that parsed the rewrite file was very dependent on having only a single space or tab between fields. This is no longer a problem. * A small change to Conference Bridge flow control Made a small change to the flow control, which places the Conference stream in non-CR flow mode during the processing of Conference Bridge commands, and then places it back into CR flow control while waiting for new commands or data (the original flow control). This allows the incoming data messages to come out as soon as they arrive, without queueing, but makes the output of commands (like /who) come in the most efficient manner for the interface. * Added run-time configuration of the ARP expiration timeout Now there is a 'arp expire numseconds' command. The default is the old hardcoded value of 900 (15 minutes). * Added an 'unlock' command Necessity again adds to the command set! There is now a command session command 'unlock unlockpassword' that can be accessed as a remote sysop to bring a mountaintop TNOS box out of keyboard lock, so you can allow a volunteer to assist on site without giving the password out. * Also now allow remote locking To allow the keyboard to be secured remotely, the previousi restriction to the 'lock' command, which would not allow it to be executed remotely, has been removed. The idea is, if they have remote sysop permissions, then you are already trusting them, so allow it. * Added ability to ALWAYS display MOTD file The MOTD file used to be a one-shot only, that is, you only saw it once, on your next login only. To display it again after changes, you used the 'mbox newmotd' command. There is now a 'mbox motdalways' command, so if you desire to, you can always have the MOTD file displayed on EACH login. * Extended the flexibility of security permissions I've added two new security subcommands, 'amprperms' and 'nonamprperms', which ought to be obvious on who they are for ;-) I also made a change to how these work, so let me explain from scratch: The security subcommands of 'amprperms', 'ax25perms', 'nonamprperms', and 'tipperms' serve as a way to have a greater deal of control over anonymous logins to the BBS. These all default to a value of zero, which disables their use. When a user logs into the BBS anonymously, they get whatever value the 'univperm' entry is set for (if it exists). Then the type of connection is determined; i.e. ampr telnet, ax25, non-ampr telnet, or tipmail. IF the corresponding security permission is non-zero, then THAT value will be used, overridding the 'univperm' permissions. This allows you to have different anonymous permissions for each of these four groups, or use the old way if you prefer. * New BBS script hooks for access denial There is also a new set of mbox script hooks in all of the routines that deny access for gatewaying to either converse, netrom, ax25 connects, telnet, or if the use is denied because the 'mbox secure' flag is on. The script that will be called (if it exists) is the spool/cmds/denied.sys script. It is passed in ~0 a string of 'denied xxxx', where 'xxxx' is either 'converse', 'ax25', 'telnet', 'netrom', or 'secure'. This allows you to make a custom and more friendly message explaining the denial. * TAPR Hierarchical Addressing Protocol enforced This release enforces the TAPR Hierarchical Addressing Protocol (x.3.4) as published. The 'mbox haddress' command will NOT accept an address that is not using one of the 19 4-character Continent Identifiers listed in the protocol or an address that is not using a 3-character Country Identifier. While I have avoided coding in items that restrict the user, I believe that the Protocol, as recommended by TAPR's BBSSIG and TAPR's board, is important and should be adopted. * Command to limit number of BBS incoming sessions Give them a stable xNOS, and then they want to limit the number of users ;-) Well Mat requested: "BTW, what do you think of a 'mbox maxusers #' command to limit online users?" Well, it's in 1.12. * Added a command session uptime command. Didn't take much, and I got tired of typing 'mbox mailstat'... * Further security options.... There will also be a greater degree of security in release 1.12 in the area of email. There are now three new permission flags, no_pbbs_mail (Disallow PBBS mail addresses), no_inet_mail (Disallow non-ampr mail addresses), and no_ampr_mail (Disallow ampr mail addresses). * New command 'mbox bidsuffix' There is a new command session command 'mbox bidsuffix', which allows you to define the string used to make up the bids on messages created locally. This was normally based on the first part of the hostname, but for hosts like 'gw.n9xxx.ampr.org', the "12345_GW" didn't cut it. Most won't need this, but if you do it's there. * New command 'mbox rcall' There is a new command session command 'mbox rcall', which allows you to define the string used to make up the first element of the haddress used in the R: lines ('mbox haddress' should NOT include the callsign). This was normally based on the 'ax mycall'. While this is normally not needed, some are maintaining more than one TNOS machine (myself included) and this allows the callsigns to be the same (or different) and the haddress to be varied, also. * Introducing 'ax25 smartroute' Smart routing is where when an address is overheard which is NOT to your TNOS box, it looks in (1) optional remote calls associated with the axip interface (more later), (2) the current ax25 routing table, (3) the ax25 heard listings. If the call is intended for one of these (someone that TNOS can identify with an interface - and not the interface it came in on), then the packet will be digipeated to the proper interface automagically! For instance, K1XXX is a user located on port '2m' of TNOS system N4YYY. N4YYY can connect to him in his BBS with 'C 2m K1XXX'. Now W3ZZZ is another xNOS system, connected to N4YYY via an axip link, on his port named 'link1'. W3ZZZ can now connect to K1XXX directly using 'C link1 K1XXX' and K1XXX can connect to W3ZZZ using 'C W3ZZZ' from HIS station, without using, or knowing TNOS, and without knowing of the existence of N4YYY. Notice that I said W3ZZZ was a xNOS user, and not a TNOS user. One TNOS smart router can serve both ends. * Maintainence Mode added There are three new commands that alter what I call Maintainence Mode. This provides a way to prevent further BBS connects in order to do maintainence chores, like expiration. mbox maintainence [on | off] displays/sets state of maintainence mode mbox maintmode [on | off] displays/sets whether maintainence mode is really used mbox maintstr [string] displays/sets the string given to the users that try to connect while maintainence is being done. For example, if 'mbox maintmode' is on, then you can type 'mbox maintainence on', and no further logins will be permitted until you type 'mbox maintainence off'. The expire code now uses this mode, if it is enabled, to set maintainence mode, and then it waits until any current users log off. Once the BBS is clear, then the expiration continues. The White Pages expiration code uses this in the same way. You will want to schedule these to occur at non-peak times (4 a.m., etc.). * LOOK comes to TNOS One feature that made it into JNOS a while back seemed to escape my attention, the 'look' command. If you come to TNOS from a recent JNOS, you probably already know about LOOK (except for my additions ;-) Thanks goes to Mike Dent for making me aware of this one. Typing 'look user' or 'look socket#', gives the sysop a 'split' screen picture window of whatever the user you are looking at types OR receives, as though you where that user. Special commands for the sysop include: /chat starts a chat session to the user, user sees "***SYSOP initiated CHAT". /quit (or /bye or /exit) stops the look session or the chat session, if active. /msg message sends a ':' followed by your message. /help (or /?) gives a SMALL help message. /insert command allows the sysop to take over and do the typing for users from the sysop's look session. The user would still see the text the sysop was typing. * Selective holding of locally generated mail Added a command 'mbox holdall' to allow you to hold all locally generated BBS messages for SYSOP review. * AXUI mode developed Well, added another SYSOP tool, AXUI, which allows you to monitor all broadcast UI frames, and allows you to send UI's message to a definable callsign out a definable interface. The source callsign is the 'ax user' callsign. Commands syntax is: 'axui [callsign]" If 'callsign' is not given, then 'ID' is used. This gives the sysop a 'split' screen picture window of all of the UI non-protocol frames from ALL interfaces. The commands within AXUI are: /call callsign changes the outgoing destination callsign to 'callsign' /quit (or /bye or /exit) stops the axui session /interface iface changes the outgoing interface to 'iface' /help (or /?) gives a SMALL help message. This is a tool I've needed many times when debugging TNOS or debugging the local network. Also, there WAS no way to easily send a keyboard UI before. Hopefully this will be useful. ------------------------------------------------------------ Minor Changes: The following minor changes have occurred. * The "Mailbox" now a "BBS" The point was well made that the "Mailbox" has matured into a "BBS", so the logon and logoff messages reflect this change. * Added to the 'write' command Now the 'write' command will allow you to send data to a Conference Bridge user. * Added automatic parsing/responding to BBS SIDs when forwarding Now, when you set up a script to forward to a BBS through another station, the SID of the distant station is parsed, and then an automatic response is sent, your SID. * Less DNS lookups needed with sending mail from the BBS There is now another test done BEFORE isanIPhost(), which looks for a properly formatted (read that as '4 character continent') PBBS address. If it is one, then the isanIPhost() check is not needed.... * Made the BBS commands MM and MC more flexible Now allow a range (x-x) to be given as a parameter, like the 'k' command. * BBS area descriptions added There is now a file (/spool/help/areas.hlp) which is looked at when a user changes areas. If an entry exists for that area, the data from that entry is displayed with the area change. This data is NOT displayed for BBSs or users that have EXPERT mode on. The file is in the same format as the other help files: :keyword any data you want as many lines as you want :newkeyword * The expire routine accepts non-standard dates. The mod, originally by WA3DSP, has been added with changes to allow dates that have 4-character year strings, instead of the standard 2-character ones to be properly interpreted. * AXIP remote callsign support for Smart Routing The AXIP attach command has been extended to include an optional remote callsign. This keeps you from having to add all of these to your 'ax route' tables to use them with Smart Routing. * Local SYSOP can now initiate a chat session How many times have you been typing along on your TNOS box, when all of a sudden, ! Your screen has changed, and you have been abruptly placed in a chat session with either a ttylink user or a BBS user using the Operator command. Well, now SYSOPS, you can turn the tables. There is now a command session command 'mb chat ' (with a 'chat ' for the lazy among us). If the user is NOT sitting idle at a command prompt, when the current command is complete they are placed into the chat session (Do not pass go, Do not collect $200.00) If they ARE idle at the command prompt, they are BEEPed at and told that "SYSOP requests a chat.....", and they are in the chat. Thanks to Mike Dent for the suggestion.... * BBS 'encode' command There is now a BBS 'encode' command, requires SYSOP permissions, which encodes the FTPUSERS files from the BBS. * Added the 'ax25 user' command There is now an 'ax25 user " command, which sets the callsign used for console connects. This is the companion to the 'netrom user' command. This allows outgoing connects to use the same call on all interfaces, regardless of the interface call. It can also be used, for instance, at a club station machine, to painlessly change call signs for different users. * Added a 'quiet' parameter to statline The command session command is changed to 'statline [on|off] [quiet]', allowing you to turn statline on without getting the audible alert when data comes in to one of your non-selected interactive sessions. ------------------------------------------------------------ Known Bugs: The following are known bugs that remain as of release 1.12. * TCPGATE problems There is a problem with TCPGATE if a socket is prematurely closed. This is being worked on. * Screen saver not right in Linux version Display doesn't clear, just overwrites. Not harmful, but not right. * BID and WHITE PAGES flakiness, at times The expiring and sorting of BIDS and WP can at times make things a little flakey. These are still under construction. * Infrequent 'SC' bug If you use 'SC', sometimes not all of the copies get sent, if PBBS forwarding is used. * FTP permissions improved The new UNIX-like dir display needs a little more work with the permissions portion of the display... * Data coming into a 'closed' port causes bad things If data comes into a port that WAS open but is NOW closed, bad things can happen. This is not a TNOS-specific bug, but has been around since probably day one. ------------------------------------------------------------ To-Do List: The following are things on my 'to-do' list that should eventually be done, but not necessarily by the next release. * Linux kernel AX25 devices available from TNOS/Linux This would allow the PI card to be used.... * BID History moved to an in-memory structure This will eliminate the need to sort the history file, allow faster lookups, and eliminate the need to 'bid kick' in order to update the BID info. * Bypass internet SMTPClient->SMTPServer for local mail Find a way to do all that is being done, without the overhead of two separate processes, and two different temp files. * FBB-style forwarding No, I didn't give up on this.... * HTTP daemon??? Who knows! * Add in a way to process PBBS 'import' files Probably by rewriting a file to area 'import', the file would be processed and the messages treated as being received by a direct PBBS connection. * Possible incoming email 'budlist' Possibly add a command to look at incoming "From:" addresses and either hold the message, bounce it, or bit-bucket it if it comes from a 'budlist'ed name in a file. * Possible incoming email 'bad words' filter This would hold messages if they contained words found in a 'bad words' file. * Modify the delegation server Make this only send ONE notification per user per delegation period. * Add capability to TScript to allow starting of OS commands This MAY or MAY NOT be limited to Linux version. * Add in UNIX permissions checking to FTP server This could cause problems with restricted files not being restricted.