Welcome to TNOS release 2.40 *** NOTE *** There are MANY things in this file that you NEED to read! keys actions =========== ============================== h,H,< move to the top of file (HOME) e,> move to the end of file ^D move down the file 1/2 screen ^U move up the file 1/2 screen d,^N,j move down the file one line D,^V move down the file one page u,^P,k move up the file one line U,v move up the file one page ^C,q,Q,ESC exit VIEWER other keys redisplay screen This is the new features file, named 'features.new'. If you rename this file (or move it to another directory, you will not be prompted for viewing this on each startup. TNOS Release Notes - Release 2.40 Brian A. Lantz brian@lantz.com These are the Release Notes for the next public 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 occured since the release of TNOS 2.30. These Release Notes are updated as the work progresses, so it is a dynamically changing document. Table of Contents 1. Important Notes 2. Bug Fixes 3. Improvements and Enhancements 4. Minor Changes 5. Remaining Known Bugs 6. To-Do List 7. Known Quirks A. Appendix A: NNTP SERVER B. Appendix B: Thomas Lucaw's Colour mods 1. Important Notes The following are important notes that you CANNOT afford to ignore: * The value of 'smtp holdscanall' has changed from an on/off value to a numerical value. * None yet ;-) 2. Bug Fixes The following bugs have been squashed. * Fixed a buglet with messages with Return Receipt requests * Truncated trailing spaces on from addres in Return Receipt replies * Fixed typo with BROKE_SPRINTF in build-make.inc * Minor fixes for using 'make Version' and 'make clean' * Changed EWOULDBLOCK in unixasy.c to EAGAIN Since ALL OS's were aliasing EWOULDBLOCK to EAGAIN (and some, such as early Sun releases, didn't have EWOULDBLOCK), this just cleans up the code and makes it a tad more portable. * Several lint cleanup, discovered with upgrade to lint * Fixed an obscure incoming X-FWDing buglet An incoming X-FWDing session to a TNOS that had no outgoing data for that station would end before transferring data. This is now fixed. * Fixed a small forwarding buglet that always set 'TRY = 1' If multiple conditional were set to act differently if the first (second, etc) forwarding attempts failed, this was broken. It always returned 'TRY = 1'. * Fixed a small buglet with parsing of the forward.bbs file Nested conditionals didn't always work as expected. * Found/fixed a small memory leak in FBB/XFWD forwarding * Fixed browser's help screen for 25 line displays * Fixed browser bug of dropping successive NBSP characters * Fixed a bug when changing a user's passwd in PBBS as sysop * Fixed bug where 'ip routesame' value was improperly analyzed * Changed timer call in tcpout.c to eliminate hanging TCP connections * Fixed incomplete checking of command line parameters in 'tcp access' * Fixed bug with AX25 disc not properly being handled in all cases This was due to the timer changes in 2.30, and having a start_timer used in the disconnect code instead of a start_detached_timer. * Misc Y2K bug fixes by Gareth and Brian. * Send Reply - the first line of a reply could be omitted when the SR command was used from the mailbox. Fixed by 9A4GC. * 'Disconnect Pending' - AX25, Netrom and tcp/ip sessions would sometimes hang in this state. * Various Y2K bugs. * A condition which could cause a RIP 98 routing storm quashed. RIP version 98 frames now reported as such by trace, and properly displayed. * Fix from the JNOS stable to prevent crashes when an SMTP message contains a "return- receipt-to" line. * Possible compiler warning in iproute.c 'sorted' * Maybe, just maybe .... trying a fix that stops timers (e.g. smtp and forward kick) from over- running 0. Feedback welcomed. * Missing subject lines that could appear when forwarding should be fixed. * If 'smtp usemx' was in use, a non-existent MX record could cause mail to be delivered to ourselves as spool/mail/user@host/domain.txt * Cured crash that could happen if the domain file was being updated with an empty record. * Extra protection against empty domain records containing corrupt characters and trying to mean something. * Trying fix to avoid some peoples' naughty words and users file holding everything. 3. Improvements and Enhancements The following optimizations and improvements have occurred. * Finally found a way to mutex protect the timer list Prior to release of 2.30, many methods were tried to mutex protect the timer list, with the thought that contention for the timer list by two or more processes is one of the remaining gremlins. Due to not finding a working combination, this was not complete before 2.30 was released. Now the timer list is properly protected with a mutex. We will see if a gremlin dies... * Optimized FBB/XFWD forwarding proposals - removed area restrictions Previously a proposal for FBB or X-FWD forwarding was restricted in TNOS to not spanning an area. That is, if (using FBB as the example) there were five or more messages in a USA area, then a full negotiation of five messages could be sent in a proposal. If, though, the USA area only had 2 messages, then only 2 messages would be sent in that proposal, regardless of whether or not there were other messages in other areas. This 'area' restriction is now removed. A proposal is no longer 'flushed' at the end of an area. * Added ability to get 'forward summary' on a single PBBS Added an optional parameter (a PBBS name) to the 'forward summary' Command Session command and the PBBS 'if' command. If this parameter is NOT given, then the command lists all PBBSs in the forward.bbs file, as it previously did. If the PBBS name parameter IS given, then only that PBBS will be listed, with no output if that PBBS is NOT in the forward.bbs file. * Removed error messages generated by smtp duplication of 'bid's Now, if 'smtp bidcheck' is on, it will prevent (silently) any 'duplicates' from being processed, but without a reject error message to the smtp remote station, or a bounced message. Those duplicates WILL be dropped, though. Unless there is a need, the 'smtp bidcheck' command should be left 'off', the default value. * Added a new command, 'profile userremovepasswd' This command (which defaults to 'off') can be used to restrict whether or not a user can remove their own password or not. If this command is set to on, then a user can remove password protection from their own login name. * Added code to the 'passwd' command to allow removing passwords If both of the password prompts in the passwd command are answered with only a , then the password will be removed for that user. If this is not being done by a sysop, then the above mentioned 'profile userremovepasswd' command can deny the removal of the pass- word. * Added a 'security sysoponlyauth' command This command (if on, which is the default value) removes sysop permissions during a session, if the connection was made without the benefit of a password authentication. If this command is on and a user normally with sysop permissions is connecting via ax25 or netrom, then their sysop benefits will be removed for that session, unless you have either one of these commands on; 'security mbsecure' or 'security sysopmustauth', which is described next. * Added a 'security sysopmustauth' command This command (if on, which is the default value) forces all users with sysop permissions to authenticate with a password, if connecting via ax25 or netrom. This is a separate command from the 'security mbsecure' command, which requires ALL users to authenticate. * 'RIP Request' now works for RIP98. This is not part of the RIP98 spec and may not work with non-JNOS/TNOS boxes. * It is now possible for sysops to rlogin to TNOS when the maximum user count has been reached. * If 'user logging' is compiled in, and a user has set their name on the BBS, TNOS will greet them with their first name. * A 'UKIP' compile time option will add additional X headers to messages received from other BBSs. These X headers help the original AX25 BBS BIDs and To: fields to be recovered when mes- sages are transported by SMTP and NNTP, and avoid BID, topic and distribution swapping. * Associated with the last line is a new command 'forward x-bid'. If 'on' outgoing mail being forwarded will derive its BID from the X-BID line, if present. There is a caveat in that some messages forwarded in from MSYS systems containing X-BID defeat the system, and BIDs will disappear totally from those messages when forwarded on ! If used, this feature can help prevent BID swapping - but check that TNOS is actually passing the message and BID on - It will usually refuse to forward any messages if you have problems with 'forward x-bid' set to 'on'. * For Bob Meyer : lock files for BBS import and export files. These appear in spool/import (or mailqueue) and spool/export where the filename xxxx.lck corresponds to xxxx.imp or xxxx.exp Another two directories of lock files to clear out on startup. * Another Bob Meyer special: In the unlikely event you wish to forward personal messages to more than one BBS, setting 'forward pmulti' on should not delete personal messages after they have been forwarded. * New command: 'forward tlines'. Subject to the UKIP compile time option, this command will regenerate, or generate T: Lines after the R: lines on outgoing BBS forwards / export files. T: Lines preserve NNTP news- groups, Message IDs and From: addresses when messages are gated from TCP/IP to the AX25 BBS network. * New command: 'smtp norelay'. If '0' then mail relaying through your box will not be blocked. If '1' it will. The behaviour can be modified by etc/mailrelay. Using dotted quad addresses and /subnet masks, hosts and networks can be blocked (using the ! directive) or specifically enabled with regard to mail forwarding e.g. !44.131.177.254 - block this host 44.0.0.0/8 - enable this network If the host/network is not found, then a list of mail domains that we relay mail from or to can be listed in the file - wildcards may be used. You should put any mail domains pointing to your box via MX records in here as well. It isn't possible to 'block' domains, only enable them to be relayed for. # MX record pointing to us foobar.bigisp.com # Allow any mail to be relayed to/from ampr.org addresses *.ampr.org It is important to note that if mail relaying is being denied on the basis of the recepient's address, the address being checked is the translation after rewriting by the etc/rewrite file. If your rewrite file properly translates bang paths to '% and @' address form, then the address being checked by norelay is the '% and @' modified form (bang paths take the form relay- host!final-host!user) Some ORBS test messages do include bang paths. If you take no action on interpreting them in the rewrite file, they should be treated as being for local delivery and drop into the spool/mail directory. This is because TNOS does not process bang paths internally unless you are using the ! character to denote 'old-style' gatewaying to NNTP. If a message is denied relay, a log entry is made in spool/logfile containing the 'from', 'to' and 'rewritten to' addresses to aid debugging. The norelay code will also refuse 'to' addresses containing more than one '@' character. * The 'smtp holdscanall' command can now be used to scan messages passing through the smtp queue. If 'smtp holdscanall' is set to '1', then only messages inbound to our box are scanned for naughty words. When set to '2', all messages passing through the smtp queue are checked against the little rudies in etc/wordhold.dat If a suspect message is found, a copy of the .txt and .wrk file is placed in the spool/hqueue directory for sysop attention, whilst the event (together with the line that caused it) is logged and a message despatched to the sysop. The message can be manually edited in spool/hqueue, and released back into the wild by copying the .txt and .wrk files into spool/mqueue - then kicking the smtp queue. Also, when set to '2', messages sent from the mailbox are scanned and treated as above also. * Loads of stuff for the NNTP server - see appendix A. * Added Thomas Lucaw's colour mods - see appendix B. * Added the AXUDP enhancement from Maiko Langelaar/VE4KLM * Added the APRS Server enhancement from Maiko Langelaar/VE4KLM * Changed the initial installation and setup for source tree. Now uses a './configure;make;make install' sequence of commands. * Now uses a central CVS depot for source maintenance. There were several 'cvs-*' makefile targets added to make this easy to use. * Added a 'tcp kick 0' that kicks all tcp sessions in 'established' or finwait1 states. It is most useful for freeing sockets where no traffic is waiting to be passed to another host which has reset the session, and the reset frame has not been received by us. 4. Minor Changes The following minor changes have occurred. * Added 5 finger 'pseudo' users for HTTP statistics Like the other statistics information, the HTTP general, daily, weekly, monthly, and yearly statistics are available via finger. The pseudo user names are daily_http, general_http, monthly_http, weekly_http, and yearly_http. * Several tweeks to Netrom broadcasts to make it 'play better' The Netrom broadcast code has always been a bit of a hog in demanding most of TNOS's resources during the broadcast. With systems only sending one or two verbose lists (or several with only a few nodes listed) this isn't much of a problem. On the authors system, with 36 interfaces and 300-700 nodes at any time, this needed revisiting. While most will not notice much of a difference, those with long node lists and many netrom interfaces should notice that broadcasts don't steal all the TNOS CPU time as they previously did. * Default for 'smtp bidcheck' turned to off - Read this! Unless you have a DARN GOOD reason (debugging, etc), DO NOT turn the 'smtp bidcheck' on! There will be false bounce messages generated, when you have two PBBSs sending you traffic at the same time, and the same message gets queued twice before it/they are processed. Leave this OFF... Don't make me disable it ;-) * Added to browser ability to handle IMG tags in table cells * Added 'ax25 maxwait' checking to ackours() This prevents the potential for some retries to exceed the setting of the 'ax25 maxwait' setting on an interface. * The 'netrom neighbour' command additionally returns a retry percentage. * Strictcall checking can also be applied to AX25 callsigns. This is a compile time option available providing telnet login 'strictcall' is also compiled. Don't ask for this if you invite connections from non-callsign type 'aliases'. * Struck out some smtp headers when 'forward smtptoo' is enabled. X-BID, XBBSTO, XNNTPNEWSGROUPS, Line count and X-BBS headers. * If UKIP option compiled, outgoing messages being forwarded derive BID from X-BID: , and the original distribution from X-BBS-To: if they are present. Helps stop distribution swapping. * Admin note, 'look_for_tline' moved from nntpserv.c to mailutil.c * SMTP 'Received' headers generated by TNOS now show the dotted quad IP address of the client host. * Added a sample etc/mailrelay file * Added a sample etc/gateway.txt file * Added a sample etc/distmap file * Changed name of 'ci' Makefile target to 'rcs-ci' * Changed name of 'co' Makefile target to 'rcs-co' * Changed name of 'update' Makefile target to 'rcs-update' * Changed name of 'rcsset' Makefile target to 'rcs-set' * Changed name of 'rcsclean' Makefile target to 'rcs-clean' * Changed name of 'rcsbase' Makefile target to 'rcs-base' * Changed from using LinuxDoc/SGML to using Docbook Changed the makefile.unx file targets 'rn' and 'releasenotes' to reflect this change. 5. 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.... ;-) 6. 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. Consider adding to the browser support for the 'select' and 'textarea' tags 3. Consider adding 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 dy- namically assigned using server-side includes), but it is NOT a CGI-compatible interface. I will consider adding this at a later time. 5. Add capability to allow use of OS commands This includes finishing the incomplete 'pipe' command in the Unix release. Due to the ob- vious restrictions of MS-DOS (memory, etc.), this WILL be considered for Unix version only. 6. Consider adding 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... 7. Consider adding code to allow a TIP socket type, for use with LL Modems 8. 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. 9. Check into duplicate entries in the WP files While not harmful, the WPages routines SHOULD be overwriting existing entries, NOT creating new ones. 10. 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. 11. Consider moving MSDOS version to curses for screen I/O 7. Known Quirks The following are known minor quirks that have no workaround... 1. The 'ls' command cannot represent disk/free sizes for LARGE disks If you have a file system with more than 4,194,303 blocks (a disk partition greater that 4 GIG), then the 'ls' numbers for disk size and free size will NOT be correct. This cannot be fixed, as the number cannot be represented in a 32 bit 'long' integer. Since this will not normally happen on Linux (except with NFS mounted drives), most Linux users will not even notice it. It cannot normally happen on Linux because the ext2 filesystem will not support partitions greater than 2 GIG. 2. None other at this time.... ;-) A. Appendix A: NNTP SERVER Here is another update for the TNOS version 2.30 nntp server, and which is designed to address these issues. 1. The use of IHAVE only servers by linux users who have 'gone native' and servers such as INN that do not permit the 'NEWNEWS' method of downloading news without a 'MODE READER' command. The NNTP ihave pusher can now be engaged specifically by host where 'nntp ihave' is set to 0 or 1 (2 is a global 'push') The nntp add line is now amended: nntp add [ihave] [modereader] [] The appearance of the word: ihave in the appropriate part of this line will make TNOS push news to a particular server after a successful or unsuccessful poll for news. This format is 'backwards compatible'. In spool/news/access, the use of 'I' in the read/post permissions enables an individual server to push news to TNOS when the global 'nntp ihave' is set to 0, and 'nntp access' is in use. calanthe.g4hip.ampr.org:RPI: # or even calanthe.g4hip.ampr.org:I: The use of I also permits 'normal' read and post operations too. Inclusion of 'modereader' in the nntp add command may permit TNOS's NEWNEWS method of downloading news to be used on some servers which do not permit this without the command 'MODE READER' first being sent (e.g. INN) 2. Introduces NNTP Distribution: line mappings UKIP 'meddling' with the distribution field. A new file: etc/distmap can be fitted to map distributions when gating between nntp<>ax25 pbbs bulletins. If it is absent, mapping is not carried out and TNOS should not complain. A sample is enclosed. The first parameter is the desired nntp side distribution, followed by a colon, then the pbbs side distribution. world:www world:ww europe:eu uk:gbr The first match found will always be used when going from nntp to PBBS, while later matches are used for PBBS -> nntp only. In the above example, an nntp message sent to 'world' will always be gated to @www, but any PBBS messages sent to either @www or @ww will have an nntp distribution of 'world'. TNOS makes no further use of the distribution header in terms of limiting or permitting distribution. 3. Default newsgroup command (for use in the UKIP area - 'ampr.misc') New command 'nntp defaultgrp'. When incoming bulletins are transferred to nntp a map- ping from the To: field to newsgroup is carried out by etc/news2mail or etc/gateway.txt If a corresponding mapping is not found, then the message is placed in a newsgroup ampr.bbs.* where * represents the To: field e.g. ampr.bbs.vhf Setting 'nntp defaultgrp' to say, ampr.misc will send all items not mapped by news2mail or gateway.txt to the newsgroup ampr.misc instead of the ampr.bbs style group. nntp defaultgrp nntp defaultgrp ampr.misc 4. Permitting the 'mail2news' gatewaying of bulletins to nntp from areas not listed in etc/areas Gating of all Bulletins to NNTP. Previously, when 'nntp pbbs2nntp' was on, messages were only gated to nntp if the mes- sage was listed as being in a public area by the etc/areas file. TNOS now attempts to gate all Bulletins to nntp whether or not they were covered by an entry in etc/areas Personal messages should not be gated, and if anyone finds that this is happening, please let me know. 5. T-Line support for bulletins gated pbbs->nntp. Limited T: Line translation support Bulletins gated to NNTP are scanned for T: Lines pertaining to Newsgroup and Message- ID. TNOS will act to restore the original NNTP newsgroup and RFC-822 style Message ID. For the moment, T: Lines are not stripped from the message as an aid to debugging. 6. Support for the infamous UKIP 'gateway' file That UKIP 'gateway file'. This file is a source for creating alias, rewrite, areas, etc. files for JNOS 'Keg Gateway' systems. Importantly, the thing includes PBBS-> NNTP and NNTP-> PBBS newsgroup mappings which sometimes make use of wildcards. To make use of the file for mapping PBBS 'To' groups <> NNTP newsgroups first obtain the package via: http://www.aggis.net/ukip Extract the file gateway_xx (where 'xx' pertains to the issue number) and move it *neat* to tnos's etc directory as gateway.txt If present, TNOS will use this file for mapping between PBBS<>NNTP newsgroups *only* in preference to news2mail ... 'nntp trace 1' confirms the file in use. PBBS-> NNTP NTS field is mapped to GROUP NNTP-> PBBS GROUP field is mapped to ALIAS Other fields are currently unused New files are 'etc/distmap' and for those wishing to use the UKIP 'gateway' file in preference to etc/news2mail, 'etc/gateway.txt' B. Appendix B: Thomas Lucaw's Colour mods. Color/Trace patches for TNOS 2.30, Mar - 2000 * Added another option (PATCURSES) to config.in. When you run 'make' for the first time, or after running 'make realclean', you'll see another option in the session manager section in the "compiler configuration program". To include my changes you select Y here to PATCURSES. If you select Y here and Ctrace.patch is applied then the trace color hacks (CTRACE) are included automatically, but must still be turned on via TNOS's 'trace' command, see below. * PATCURSES must be defined for the changes to be included at compile time now, and trace color must be turned on/off per iface. * Added trace mask 4000. To turn trace color on add 4000 to the mask your using now. For example, if your using 'trace 311', then adding 4000 to 311 'trace 4311' will turn color on for that iface . You can also toggle trace on/off per iface that your tracing on, eg: 'trace color' (on), 'trace -color' (off). * Colored some more stuff. Note, colors are just my personal preferences that I use here on a black background, I know they won't look right on all monitors and some won't like. For now u'll just have to turn them off or hack ur own. Also I did not color everything just some stuff like; ax25, netrom, arp, tcp, and ip headers, stuff I see on my RF port. Ethernet headers are not colored for example, so you probably should leave color off on some ifaces as I have no idea what they'll look like :) * Made the hacks abit more portible? The one patch should be good to go on systems with the lastest ncurses packages, and at the same time should be fine with old versions of ncurses. I've tryed building with ncurses lib versions; 1.9.9e (aka 3.0), 1.9.9g (aka 3.4), 4.2, and both stable and beta releases of 5. * Added ctrl-l (refresh screen) to curses session manager. * Added seperate color for status, and seperate color for chatline in splitscreen mode. These are static values changable when TNOS is started via a command line option. * Command line options added; w,x,y,z -w [COLOR], status background (default blue) -x [COLOR], status foreground (default white) -y [COLOR], chatline background (default blue) -z [COLOR], chatline foreground (default white) where COLOR is equal to one of the following; black, red, green, yellow, blue, magenta, cyan, or white. * Added limited support for ansi sequence color codes (8 foreground colors) to curses session manager (the trace color hacks use this extensively). * Changed default background to black (my preference). * Changed splitscreen (locally echoed) text to bold, instead of reverse. * Some other things I don't feel like mentioning ;-) Have fun. VE1TTL Tom aj881@chebucto.ns.ca