The following optimizations and improvements have occurred.
- Added a 'security createsecure' command, for securing new file creation
This boolean command sets whether the 'security createperms', 'security
createuid', and 'security creategid' commands are to be used.
- Added a 'security createperms' for new file creation permissions (UNIX)
- Added a 'security createuid' for new file creation user ID (UNIX)
- Added a 'security creategid' for new file creation group ID (UNIX)
- Added a 'MINIDLE' attribute to the PBBS forward.bbs for each entry
For each BBS in the forward.bbs file, their MINIDLE attribute is set to the value of
the 'forward minidle' command. This value can be overridden for each BBS by setting it's
own 'MINIDLE' attribute. This allows you to set some BBSs with short retry intervals,
while other ones can be set with long intervals. By using this, and setting the 'forward timer'
to a short value, you can have different connection intervals for each BBS.
- Added to forwarding, code to limit time of fwding session
- Added a 'forward limittime' command to set default max session time
- Added a forward.bbs LIMITTIME attribute to override default
- TNOS/DOS no longer supports BorlandC - Now uses DJGPP!
Many reasons for this change:
- This is a FREE compiler
- It is easy for anyone to acquire
- It is the MSDOS port of the GNU C compiler, so the same compiler
will be used for both Unix and MS-DOS compiles.
- The source tree will be able to be simplified
- It contains its own DOS extender, allowing a linear memory map
(no 640K conventional memory limitation)
- It will use as much memory as you have, as long as you have a memory
manager that supports DPMI (and a free one is available for use with
DJGPP applications)
- TNOS/DOS users will be able to compile in EVERYTHING that they want!
NO MORE 'DGROUP exceeds 64K' compiler errors.
By the time this release goes public, all you need to know will be put
together to make it painless for the user or the individual who WANTS
to compile their own. There will be no NEED to compile your own, though.
And as of this release, I WILL resume making production MS-DOS executables
available, though only one will be supplied, with most everything compiled.
And Team TNOS will be MORE than glad to do custom compiles for those who
wish a smaller executable, if needed. Custom compiles with DJGPP are no
more effort than under Unix.
Some Borland-specific code has already been removed, and more will soon.
TNOS is now a BorlandC-free zone ;-)
- Added a 'forward reload' command
This should allow a way to eliminate the occasional crash if a BBS was
added or deleted from the 'forward.bbs' file and the system wasn't aware
of that change. This is NOT needed for changes within an already defined
PBBS in the file, but should be executed when PBBSs are added or deleted
to a running system, as soon as the change is made.Using this command also clears the 'forward laston' times and will affect
the 'forward minidle' and MINIDLE attributes for the PBBS defined in the
forward.bbs file. None of these is terminal; this is mentioned as a caviat.
- Added logic to forwarding code in determining if BBS is connected
Previously, if a user was connected to the PBBS with the same name as an
outbound forwarding BBS, the session would be skipped, even if this was the
actual USER of that remote BBS visiting your system. While that USER was
connected, traffic would backup on your system. This also was the same
if the remote BBS used your system to gateway to forward to another
system.Now if the USER seems to be on the system, the data from that
user is analyzed to see if we have received a PBBS SID. If not, then this
cannot be a forwarding session (at least, not yet), and the outbound
connection is allowed.
While their is the outside chance of an inbound and an outbound
both occuring at the same instant, they would be no problem in that
happening.
- Added PPPIPIP option 3, for use with Windows NT servers.
- Added a 'pbbscmd norreceipt' command to disable ReturnReceipt responses
- Added expiration of NNTP newgroups
New commands are:
nntp expire articles <expiry in days> (default 28)
nntp expire bids <expiry in days> (default 56)
nntp expire now kicks the nntp expire process into action.
The first two determine the age of articles and bids to be expired by
the 'nntp expire now'.
To do the expiration automatically at a set time, add a cron entry for it.
- Added a 'nntp rline' command - Thanks Gareth
Determines whether R: lines are preserved when moving PBBS messages to NNTP.
When off, R: lines passing through the pbbs->nntp gateway are stripped of
their R: Lines, and the BBS callsigns are added to the Path: line.
When on: R: lines are left in place, and BBS calls are not added to Path.
The default is on. The R: line stripper only operates on bulletins
gatewayed from your PBBS areas on your TNOS.
- Added a 'forward biduknos' command
This (if enabled) will create local bids of 'xxx_<host>@hamradio' rather
than 'xxx@<host>'. For messages forwarded in via PBBS forwarding, the bids
will be 'xxxxxx@hamradio' rather than 'xxxxxx@<remotebbs>.bbs'. This
is for compatibility with UKNOS, which does it different than all other
NOS's.
- Added code to reject messages with non-ASCII addresses
Since the PBBS spec makes these required to be ascii, TNOS will now reject
all non-ascii to and from addresses, and BIDs. Some were received here with
both callsigns as 6 '0xff' characters and all the data characters were the
same. Now those invalid messages will be refused, at least with FBB-style
forwarding.
- Added two NNTP subcommands 'nntp pbbs2nntp' and 'nntp nntp2pbbs'
Each of these command determine whether or not one side of the new
NNTP-to-PBBS gateway is active. If 'nntp pbbs2nntp' is on, then all PBBS
bulletins and selected personal messages will be gated into NNTP.
If 'nntp nntp2pbbs' is on, then most
NNTP messages will be gated into the PBBS message areas
The PBBS-to-NNTP handling uses a 'etc/news2mail' file. The format is:
news.group.name toaddress [ distribution ]
Any amount of white space can separate any of the fields, and comments can
be placed in that file by using a '#' as the first character on the
line. Blank lines are also ignored.
If the user part of the address (part before the '@') is found in the file
as one of the 'toaddress' fields, then the message will be sent to
the 'news.group.name' on that line. If an optional 'distribution' is given,
then it will be used rather than the default (discussed in the next item).
The 'distribution' string (if given) must be the complete distribution
name. If the 'distribution' is '-', then the distribution will be created as
described in the next paragraph.
If the address is NOT found in the 'news2mail' file and it is NOT a personal
message area, then a newgroup name will be made by appending the user part
of the address to 'ampr.bbs.'. If a host portion of the address was given
(the part after the '@'), then the distribution will be 'bbs.' with the
host portion appended.
Personal messages CAN be gated from PBBS to NNTP, but only if they have an
entry in the news2mail file. A typical entry would be:
ampr.mailbox.sysop sysop -
All PBBS forwarded messages with a 'Message-Id:' ending in '.bbs' will
be converted to <BID@hamradio>, to accommidate for consistency
in Message IDs, and to prevent dups.
NNTP-to-PBBS gatewaying uses the same 'news2mail' file, placing
messages into the PBBS if they are found in that file. The 'toaddress'
field is used as the user name and the host part of the PBBS address is
the last portion of the distribution header line in the news article.
If the NNTP newsgroup is NOT found in the 'news2mail' file, but the
newsgroup begins with 'ampr.bbs.', it is gated into the PBBS, using the
last portion of the newsgroup name as the user portion of the address
and the host part of the PBBS address is the
last portion of the distribution header line in the news article.
Message ID's of news articles ending in '@hamradio' will be changed
to '@nntp.bbs'. All other message ID's will remain intact, and will be
treated by the PBBS forwarding code as it always has.
All news articles NOT in the 'news2mail' file that do not begin with
the 'ampr.bbs.' prefix are NOT gated into the PBBS.
- Added a 'nntp defaultdist' command
This sets the default distribution used by PBBS-to-NNTP gatewaying, if the
address has a matching entry in the 'news2mail' file and does not
specify a specific distribution. This has no effect on messages not found
in the 'news2mail' file or on NNTP-to-PBBS gatewaying.
The default for this is 'bbs.www' for worldwide distribution.
- Added a 'nntp trace' command - with some activity traced
- Added a pre-defined 'fwd_queue' finger target
Provides the same info as the Command Session 'forward summary' or the
PBBS 'if' commands.
- Added a NNTPFILTER compilation flag
This uses the 'etc/wordhold.dat' file (the same one as for HOLDMODS) to
record words that are unacceptable for NNTP articles. Any incoming
articles (POST'ed or IHAVE'ed) will be checked against this list (if
the NNTPFILTER flag is compiled in), and if any are found, then the
article will be dropped, reporting the error.
This is a long needed addition to the NNTP server, with the Amateur
licensing regulations varying as much as they do from country to country!
- Added another NEW feature, that COULD be interesting!
Added an new server, which can be used in many different ways. I like
these kinds of additions, as I know that users will find many ways to use
this that I never could have imagined! (Like the Tscript language)
There is now a FIFO server (sorry, TNOS/Unix only), which (when started)
creates two fifos, and input one and an output one. You can (from Unix)
feed commands to the Command Session via TNOS's input fifo, and if output
is generated from the command, you can read it from TNOS's output FIFO.
The FIFO to input commands into TNOS is 'spool/fifo_in' and the output
FIFO from TNOS is 'spool/fifo_out'. You start the FIFO server with
a simple 'start fifo [trace]'.
If the 'trace' parameter is omitted, then
diagnostic tracing to the Command Session is disabled. You stop the
FIFO server with 'stop fifo'.
This came from my getting tired of occasionally needing to restore the
parameters to a KISS TNC, when minor power outages occur (the computers
here are all on UPS's, but the TNCs are not. It gets to be a regular
occurance in Florida, during thunderstorm season. I got tired of having
to do a 'grep param' on
my autoexec file, grabbing it in my paste buffer with the mouse, toggling
to the TNOS Command Session, and pasting it. I wanted an easy way to
send the output of the 'grep' directly into TNOS. This can do that....
Reading TNOS's output FIFO can be a bit confusing, if you are dealing with
an application that partially buffers input queues. The 'tail -f' SHOULD
work, but doesn't (unless you 'stop fifo' from TNOS). But a
simple 'cat /nos/spool/fifo_out' works fine.
- Added a new "-m" command line option, to display Feature Flags info
This option simply returns a hexadecimal string, representing the compiled
feature flags of that executable, then it completes execution. This hex
string contains one bit for each compilable flag, which is set if the Flag
was set, or cleared if the flag was cleared. This can help simplify
reporting which features are in an executable.
- Added a new executable, 'tnosmap', which decodes the '-m' output
The output of this simple executable is a list (one per line) of all the
compiled Feature Flags for the given string. This application can either
take a single hexadecimal string, or the actual output from the 'tnos -m'
command, which is the hex string preceeded with a label.
Unix users can easily tie this
command to the previously mentioned option, using:
tnosmap `tnos -m`
- All the above items included in beta release 2.20b1
- All the above items included in beta release 2.20b2
- Added the FORTH interpreter code from SM0RGV
Not sure how useful it will be, but you can compile it in! ;-) The forth.c
file compiles with two warnings, though.
- Added a new conditional processing directive to forward.bbs syntax
This new one, 'if DAYOFWEEK = xx' or 'if DAYOFWEEK = xx-yy' can allow you
to limit sections of a forwarding entry to only certain days of the week.