Here is JNOS 1.11f, the sixth update to Jnos 1.11, for both MSDOS and Linux.

Please send comments and bug reports that pertain to the either
version to me, James Dugal, N5KNX at this address:

Email:  [email protected]  or  n5knx@k5arh.#lft.la.usa.noam
Post:   James Dugal, N5KNX
       P.O. Box 44844
       Lafayette, LA  70504
       U.S.A.
-------------------


OBJECTIVE:

The objective of this code is to improve the use and features of NOS.
A lot of the work is done through cooperative discussion and testing
among the subscribers of the Internet maillist '[email protected]'
(to subscribe, send mail to '[email protected]')
A lot of new stuff comes from code fragments or suggestions contributed by
people on that maillist, most of which are avid users of the code.
This code is a continually developing piece of work, and as such, it should
be seen as a BETA software, no matter whether it is indicated as such or not.
You should not expect this to be a 'plug and play' solution to tcp/ip over
packet radio. If you experience problems, feel free to contribute
'constructive' critisism to the author or the discussion group.



VERSION NAMING CONVENTIONS:

JNOS cycles through three identifiable stages as source code is being
put out. Code goes from testing stage (aka. beta code), to somewhat
stable released code, to maintenance/bugfix updates. Note that the
OBJECTIVE above still applies to ALL code being released,
whether it is identified as beta, release or bugfix...!

As of v1.10, there is a 'new' version naming scheme.

1) eXperimental code put out by me will be a version number with 'x#' added.
  'x' stands for eXperimenting, and # is the number of test release.
  This will be the first step toward a new 'release'

  Eg:  JNOS 1.10x1 is the first test release for version 1.10 .

2) When an 'x' version seems stable, I might decide to put it out as a
  'released' version. This is the time the 'general public' jumps on it :-)
  This version will drop the 'x#' designation.
  At this time I will have at least one executable available, and the full
  source set. The source set will be versionname.ZIP,
  and the executable versionname.EXE . The executable might be a self
  extracting exe with some miniscule docs etc...

  Eg: JNOS 1.10 is the 'official release' version of 1.10
      JNOS110.ZIP is the source set, and
      JNOS110.EXE is the executable.

3) As bugs are found after step 2, bugfix/maintenance updates will be numbered
  with the version name plus a single letters added. (Using x for experimental
  should be okay, as long as we don't get many bugfixes... :-) )

  Eg. JNOS 1.10a is the first bugfix after the release of version 1.10


I strongly advise everyone that makes mods to use the same base version number,
INCLUDING experimentation or bugfix suffixes, with a personal extension.
This allows others to see what your base code was.
Eg. JNOS 1.10x3-Mods

If you send bugfixes and mods to the nos-bbs list or me, they will most
often get put into the next release...



COMPILER:

Starting with 1.08, I use Borland C++ 3.1 for all executables I distribute.
In the makefile, you have the option of compiling with TC2.0, BC++2.0,
BC++3.1, or BC++ 4.x . You can also choose the cpu to compile for (see note!)
We only use the Borland command-line compilers, NOT the IDE versions.
Also, the makefile to use is called makefile.bcc.

*** NOTES *** :
I DO NOT GUARANTEE the code will compile without glitches with other compilers.
The use of C++ comment delimiters (//) will present problems for TC2.0.
BC versions prior than to 3.1 may have optimizer problems (so try compiling
without -G and -O options).

If you use an older version of Borland's TASM.EXE assembler, it might choke
on line 2 in asmgloba.h : '.MODEL USE16 LARGE,C'. Simply remove the 'USE16'
to solve this problem.  NOTE: this should no longer be an issue, since we
now test for TASM versions less than 3.0, and make this change automatically!

Please also refer to the FAQ, mentioned above, for more info on compiling
the code.

UNIX NOTE: I have used gcc version 2.7.2 and ncurses 4.0 to compile Linux
Jnos, with excellent results.  Use makefile.lnx as the makefile.


CONFIG.H:

There are several different configurations in the source archive.
I also DO NOT GUARANTEE that other variations of config.h work. It is
impossible to test all different configurations possible with the many
options in config.h. Thus there might be certain combinations that result
in either compiler or linker errors...Find someone with good C and NOS
programming knowledge :-) ...

distconf.h - used to create the distribution executable (8086 code)
bbsconf.h  - as I run it on my bbs system. (WG7J.OR.USA.NA)
gwconfig.h - as I run it on my Internet gateway system (wg7j.ece.orst.edu)
users.h    - end-user, with serial port and scc drivers, but no bbs options
homeslip.h - mailbox and SLIP to an internet service provider.
unixconf.h - everything that makes sense is turned on for use under UNIX.


HOW TO COMPILE YOUR OWN VERSION:

You should place all files in the distribution source archive into one
directory.  Then edit config.h to select which features you desire, using
#define or #undef to turn features on or off, respectively.  Then rename
makefile.bcc to makefile, and edit makefile to provide the paths to the
compiler on your system, and to select which CPU to compile for, the compiler
version you have, and whether a "packer" program is available to compress
the resulting nos.exe.  Finally, invoke the make.exe program provided with
the Borland compiler while you are in the same directory as the source files.
If all goes well, you will have a new nos.exe.  If you get an error like
this during linking:
    Error: Group DGROUP exceeds 64 K
this means you have probably #define'd too many modules in config.h.  You
should #undef more modules, but there is a small chance that reducing the
value of DATASIZE in the makefile could help (or it may seem to compile OK
but won't run).

UNIX NOTE:  see readme.lnx for the compilation procedure.


MAIL INDEX FILES:

==> As of 1.10x15, JNOS now senses index file status at startup and after
   returning from shells. Index files for changed mailbox files will be
   automatically updated at this time.!
   This means you can now use ANY EXERNAL MAILER !!!

As of version 1.10x3, JNOS stores an index file for each mail *.TXT file.
This drastically speeds up switching of areas, and listing of mail headers.

As of version 1.10x10, the format of the index files have changed. They are
now variable length binary records. See index.h for the content of the record.
(The indexfiles are now named *.IND)

As a side effect, there is no limit anymore to the number of messages held
in a mailbox. This now is only limited by system memory :-)

Manual manipulation of index files is NOT advised !!!  Jnos will keep the
index file in sync with the associated .txt file.



DOCUMENTATION:

The latest docs files, for JNOS 1.11, are docs111f.zip, thanks to an
effort by Bob Fahnestock WH6IO to update the prior work by Doug Thompson,
WG0B, and Johan Reinalda, WG7J, done for the Jnos 1.10 version.
Also, a more-recent on-line version of the Jnos console command docs, can be
found in CMDSHELP.ZIP (or CMDSHLPn.ZIP for updated help files).

Much information about configuring and using Jnos can be found at:
    http://mikeday.rexnet.net/kf9ug/gateway/

Info about using Jnos with Windows 3.x, Win-9x, and Win-NT, along
with pre-compiled DOS Jnos versions,  can be found at:
    http://www.gb7iph.demon.co.uk/newsoft.html

Information on using Jnos as an Internet gateway/wormhole for passing
amateur traffic, can be found in the directory:
    ftp://hydra.carleton.ca/pub/hamradio/packet/tcpip/gateways
or   ftp://minnie.cs.adfa.oz.au/hamradio/gateways
or   http://www.fuller.net/Gateways/      (most recent site)

Information on using Jnos with Linux can be found at:
       http://people.zeelandnet.nl/pa3gcu/linux_xnos.htm
and     http://www.wa4dsy.net/56kb/PackeTwin.html

Questions and answers sent via the nos-bbs maillist since September 1994,
can now be searched and viewed at this URL:
    http://hydra.carleton.ca/mailman/listinfo/nos-bbs
or   http://hydra.carleton.ca/mailman/listinfo/nos-bbs

There are several programs to assist a new user in setting up Jnos for the
first time.  Please check for instjnos.zip or nosview*.zip at whichever site
you obtained Jnos, or look at http://www.gb7iph.demon.co.uk.



SOURCES:

If you obtained sources, feel free to do with them as you please,
as long as you keep and abide the copyrights in the different source modules!
If you add substantial stuff to the code, please modify the version string
in version.c to reflect this. (So I won't have to answer tons of questions
about stuff I didn't write)

Latest sources can be obtained on Internet by anonymous ftp from among others:

pc.usl.edu in pub/ham/jnos   [the HOME site!]
ftp.ucsd.edu in hamradio/packet/tcpip/incoming
mvangel.npt.nuwc.navy.mil in public/tcpip
db0fho-l.et-inf.fho-emden.de in pub/hamradio/tcpip/jnos/jnos111*/*
hydra.carleton.ca in pub/hamradio/packet/tcpip/jnos

They can also be found on several phone bbs systems, often shortly after
the release date.  Here are some to try (all in the U.S.A.):

       N8EMR's Ham BBS (614) 895-2553
       N1BEE BBS       (401) 944-8498

RPM-packaged Linux versions can be found at http://move.to/hi8gn/ .

NOTE: Due to large workload, I no longer will send you sources!!!

If you add/modify anything that might be useful to others, I would
appreciate the mods, to possibly add to the code.



Y2K STATEMENT:
Jnos 1.11b and successors are Y2K compliant, by using a windowing technique:
year yy is 19yy if yy >= 50, and is 20yy if yy < 50.  Where conversion to a
Unix-style time value is done, said conversion will fail in 2038. However,
no guarantee of proper functioning is made, nor should be inferred.



THE LAST WORD:

"Definitive is the source, not this note :-)"



HINT HINT HINT HINT :

if you are experiencing problems receiving with certain tnc's with this
code, set the dtr and rts parameters correctly:
       'param <iface> dtr 1' AND 'param <iface> rts 1'
(this is due to a rewrite of the original 8250 drivers in KA9Q 911218 and later)
You can also assert both dtr and rts with just one command: param <iface> up



FTPUSERS PERMISSIONS:

Name:        value     (hex)
FTP_READ        1       0x1             /* Read files */
FTP_CREATE      2       0x2             /* Create new files */
FTP_WRITE       4       0x4             /* Overwrite or delete existing files */
AX25_CMD        8       0x8             /* AX.25 gateway operation allowed */
TELNET_CMD      16      0x10            /* Telnet gateway operation allowed */
NETROM_CMD      32      0x20            /* NET/ROM gateway operation allowed */
SYSOP_CMD       64      0x40            /* Remote sysop access allowed */
EXCLUDED_CMD    128     0x80            /* This user is banned from the BBS */
/* 256 and 512 are used in PPP*/
NO_SENDCMD      1024    0x400           /* Disallow send command */
NO_READCMD      2048    0x800           /* Disallow read command */
NO_3PARTY       4096    0x1000          /* Disallow third-party mail */
IS_BBS          8192    0x2000          /* This user is a bbs */
IS_EXPERT       16384   0x4000          /* This user is an expert */
NO_CONVERS      32768   0x8000          /* Disallow convers command */
NO_ESCAPE       65536   0x10000         /* Default is no escape char */
NO_LISTS        131072  0x20000         /* No lists displayed from mailbox */
NO_LINKEDTO     262144  0x40000         /* disable '*** linked to' */
NO_LASTREAD     524288  0x80000         /* Ignore lastread in <area>.usr (shared accts) */
NO_FBBCMP      1048576  0x100000        /* Avoid FBB compression */
XG_ALLOWED     2097152  0x200000        /* Allow XG (dynip route) cmd */

To set options, simply add values. Format in /ftpusers file is:
name password rootdirlist1 #perm1 rootdirlist2 #perm2 ...

<rootdirlisti> is a semicolon-separated list of directories the user is
       permitted to visit (at or below).  The initial directory is the first
       listed, UNLESS one of the following directories is preceded by an '='
       to flag it as the initial directory.  Example:
       anonymous * /pub/wr_only 2  /pub/rw_del 7   =/pub 1  f:/ 1
       A directory must not end in a "/" or "\" unless it is a root dir.
       Note also that the MSDOS subst command can be used to make any dir
       appear to be a root dir of a new disk drive, and this is useful if your
       Jnos is to be accessed by Netscape or other programs that think you
       always start out in the root dir!
<permi> is the access permissions value to be applied to each directory in the
       preceding list.
<password> can be a *, so that any password is allowed.
<name> is a login name, such as a callsign, or certain keywords:
   "univperm" - any name not found explicitly in the ftpusers file will be
       treated as if it were "univperm". If a password is set, this password
       needs to be used. Eg:
               univperm * /public;/ham 132103
       gives anyone not otherwise known login permission, but no ax.25,
       netrom, lists, etc. and also ftp downloads are allowed...

NOTE: as of Jnos 1.10H, there is another protocol-specific permissions
<name> that takes precedence over "univperm", when the user's actual login name
is not found in ftpusers.  These are:
   tcpperm - telnet login to mailbox
   ax25perm - ax.25 login to mailbox
   nrperm - netrom login to mailbox
   confperm - convers signin
   pppperm - PPP login
   ftpperm - ftp login
   tipperm - tip login to mailbox



ERRORS IN NOS:

Here is the long awaited list of error numbers used in nos!
The numbers listed are directly from the sources (socket.h),
and when appropriate, are followed by a little description I've
shaken out of my pen :-).  Where Jnos and MSDOS share a name, the
MSDOS value is used, NOT these:

#define EMFILE          201     Too many open files (ie too few file handles)
#define EBADF           202     Bad file number (programming error)
#define EINVAL          203     Argument invalid
#define ESOCKTNOSUPPORT 204     Socket type not supported
#define EAFNOSUPPORT    205     Address family not supported
#define EOPNOTSUPP      206     Option not supported
#define EFAULT          207     Generic error (unknown)
#define ENOTCONN        208     No connection established
#define ECONNREFUSED    209     Already connected, or connection refused,
#define EAFNOSUPP       210     Address family not supported
#define EISCONN         211     Already connected
#define EWOULDBLOCK     212     Socket would have blocked
#define EINTR           213     Interrupted operation
#define EADDRINUSE      214     Address already in use
#define ENOMEM          215     Not enough system memory to do task
#define EMSGSIZE        216     Msg too big?
#define EALARM          217     Timer timed out
#define EABORT          218     Action aborted
#define ECONNNOROUTE    219     No tcp route to target address

Note: the AX.25 forwarding code may log error messages containing an error
code returned by the Borland runtime or by MSDOS.  These codes are found
in the Borland errno.h include file.

Some problems found during compressed-FBB forwarding are reported by number:

    0: Subject Packet does not start with a SOH (01) Byte.
    1: Checksum of message is wrong.
    3: Received binary frame is not STX (02) or EOT (04).
    11: Proposal has fewer than 6 fields.

These errors could be due to dropped characters if a serial interface was
used; use the asystat command to investigate this possibility.



FILES FOR JNOS:

Please check the file NOS.CFG in this distribution for the names and
locations of the files used on JNOS.  For file format information, see
below for a description in the release notes when that file was first
introduced.  See also any related console command helpfile.



COMMAND LINE OPTIONS:

JNOS can be started with a number of command line options. All but one start
with a '-'. Options should be separated by tabs or spaces. The option and the
option argument (if any) should be contiguous (ie NO spaces).

-b          : Use BIOS for the console i/o (instead of direct writes to VRAM)
-c#         : set the number of columns on the screen to #.
-drootdir   : set the root dir for configuration file path. This is overwritten
             by the files included in the -f config file.  The UNIX version
             does a chroot if rootdir ends in '/'; this is very secure but
             is also troublesome to support.
-e          : pause after each error line in autoexec.nos.
-fnos.cfg   : set JNOS config file names as indicated in the file 'nos.cfg'.
             This overrides the -d option.
-gn         : set trace colors, when tracing to console (ANSI.SYS needed):
             n=0 => none (default).   n=1 => tailor to grey-scale monitor
             n=2 => tailor to color monitor
             Add 4 to above values if colors are desired also in traces sent
             to other than the system console.
-i          : always re-index mail files at startup
-I          : never re-index mail files at startup (instead, test at 1st access)
-l          : do not remove *.lck files in the mail and news subdirectories
             (default is to remove those *.lck files!)
-mn         : set the default screen swap mode.
               n = 0 : Use EMS (if compiled in and EMS is available).
                       (Default if ems is available)
               n = 1 : Use XMS (if compiled in and XMS is available).
                       (Default if xms is available and ems is not available)
               n = 2 : Use memory. (default if no ems/xms available)
               n = 3 : Use a temporary disk file.
-n          : no trace session.
-r#         : set the number of rows on the screen to #.
-t          : trace the autoexec.nos file. You will be asked before each
             if you want to execute it. 'y' accepts, anything else
             skips the line.
-u#         : set the number of status lines, valid values are 0-3
-v          : verbose. Print line from autoexec.bat before parsing.
-wf+b       : set the foreground and background color for the system status
-xf+b       : set the foreground and background color for the session status
-yf+b       : set the foreground and background color for the 'main' window
-zf+b       : set the foreground and background color for the 'split' window
autoexec.new: Name of the startup file. If not given, \autoexec.nos (or as
             indicated with the -fnos.cfg option) is used.
UNIX additions to the command-line arguments:
-C          : allow core files to be created following certain errors.
-D          : disallow using the interval timer ... testing vestige from 1.09 Jnos.
-Smgr:o     : set the default session manager to <mgr>, with options <o>.
-Tmgr:o     : set the default trace session manager to <mgr>, with options <o>.

Supported session managers are "curses", "dumb" and "raw" (depending on what
compile-time #define's were used).



DOS MEMORY:

Most DOS environments provide up to 640 KB for a program to use.  However, there
are ways to increase this.  If you use the QEMM memory manager, then the VIDRAM
program can provide up to 704 KB of memory by disallowing graphics modes on EGA
or VGA equipped systems.  Tom, N1KIO, reports that vidram under QEMM version 8.0
can provide 736 KB if qemm386.sys is given the VREGA option.

Here is how to obtain similar results with EMM386:
----
Date: Sun, 13 Feb 94 18:58:52 UTC
From: [email protected]
Subject: VIDRAM alternative
To: [email protected]

DOS users that want extra memory for NOS/JNOS can use the following
instead of VIDRAM from Quarterdeck.

In your config.sys file for color video adapters load EMM386.EXE this way:
DEVICE=C:\DOS\EMM386.EXE NOEMS I=A000-B7FF NOHI

In your config.sys file for mono video adapters load EMM386.EXE this way:
DEVICE=C:\DOS\EMM386.EXE NOEMS I=A000-AFFF NOHI

Configured this way, EMM386 converts a portion of the area normally reserved
for the video buffer to usable RAM and links it with conventional memory.
Executable programs sizes can approach 700K or larger.

Don't switch to a pgm that uses graphics mode.  This should probably only be
used for boxes dedicated to NOS/JNOS or other non-graphic applications.



FILE HANDLES AND BUFFERS:

You should be sure to allocate sufficient file buffers and handles by
appropriate FILES= and BUFFERS= statements in your config.sys.  The maximum
number of file handles for programs compiled with Borland C is set by the
_NFILE_ constant in <_nfile.h>, typically 20.  You can observe the dynamic
number of free file handles in the first status line, by #defining SHOWFW in
config.h. Should you need more handles, the following note extracted from the
BC++3.1 readme may prove useful:
-----
 - You can now increase the number of files that can be open
   at one time in a DOS program by a simple modification of the
   runtime library.

   First, modify _NFILE.H in your INCLUDE directory by changing
   the #define for _NFILE_:

      #define _NFILE_ n

   where n is the number of files you want to open. Make sure the
   FILES statement in your CONFIG.SYS file specifies at least
   this number.

   Then compile the two files FILES.C and FILES2.C in the LIB
   directory:

      BCC -c -m<model> files.c files2.c

   where <model> is the memory model you're using.

   Then link them directly with the program which opens the files,
   for instance:

      BCC myfile.c files.obj files2.obj

   If you want the change to apply to all modules, add
   FILES.OBJ and FILES2.OBJ created above to the libraries
   you use; from the LIB directory, type:

      TLIB c<model> +-files.obj +-files2.obj

   where <model> matches what you used for the BCC command
   above.
-----


Additions/changes to Jnos follow in reverse chronological order:



1.11f (001128)

-  Linux changes: rspf fixed to interoperate with DOS jnos rspf without
  crashing.  /var/lock is now the default lockdir.

-  z8530 DOS driver enhanced, thanks to Piotr SP3UQS.

-  SMTP_DENY_RELAY compile-time option fixed.

-  info command enhanced to show more compiled-in options.

-  NNTPS server and client tasks now have increased stack sizes, preventing
  some crashes.

-  The kiss driver will no longer filter out unknown param codes, leaving
  it to the tnc to handle unsupported codes.  Thanks to Robin G8ECJ.

-  The trace module will use ANSI color escape sequences while tracing to
  other than the system console, if Jnos was invoked with -g4 or -g5, for
  grey-scale or color displays, respectively.  Thanks to Robin G8ECJ.

-  ttylink will display (and log) connect attempts in the command-session
  window if the sysop is flagged as busy.  From Andrew G8FSL.



1.11e (991224)

-  Linux changes: global.h improved to permit compiling under recent Debian
  and Slackware distributions.  Mailbox alias .hlp files now work.  The
  size of the finger daemon stack was increased to work right under RH6.0.

-  SMTP server now handles extra-long lines correctly.

-  The mailbox can now be configured to always use the linemode more?  prompt,
  by adding #define LINEMODE_PROMPT_ALWAYS 1 to config.h and recompiling.
  This supercedes the XP command.

-  The finger server can be made to recognize 'ifconfig' as a pseudo-user,
  by adding #define FINGER_DIVULGE_IFCONFIG 1  to config.h.

-  Jnos can be made to ignore the TOS (type-of-service) bits in IP headers,
  when deciding to use datagram (UI) or VC ax.25 packet transport methods.
  This is useful when the interface defaults must be obeyed, and can avoid
  sending a long datagram which exceeds the interface paclen.  Thanks to
  Patrick F1GYG for the implementation.  Enable this feature by adding
  #define NO_TOS_AX25_MAPPING 1  to config.h.

-  The 'detach encap' command can now be used to remove any routes involving
  the encap interface, to facilitate updating Jnos with new encapped routes.
  No actual detach is done!

-  I added the ability to limit a mailbox user to telnetting to only, or never
  to, amprnet destinations.  This feature is enabled when AMPRNET is #define'd
  to a numeric value, presumably 44, but in any case equal to the first octet
  of the Telnet destination IP address to be limited.  Two new permissions
  flags were added for use in ftpusers:
     #define T_NO_AMPRNET   4194304L  /* 0x400000 Disallow Telnet to 44/8 */
     #define T_AMPRNET_ONLY 8388608L  /* 0x800000 Allow Telnet to only 44/8 */
  I expect most users wanting to use this feature will add
     #define AMPRNET 44    /* Test mbox Telnet cmd destinations */
  to their config.h file.  Otherwise, leave it undefined so as to minimize
  the size of Jnos.




1.11d (990627)

-  Linux changes: Compiles under latest GLIBC.  TERMSERVER feature added.
  IBM character codes > 127 can now be displayed on the console, by using
  the 8bit option with the curses driver.  The S and T command-line arguments
  now accept options specified in the usual way (e.g., -Scurses:8bit ).
  With the proper font loaded, one can now read FRANCA messages with accents.

-  AX.25 change: the outbound ssid can now take on both odd and even values.

-  The nntp server will now only update the poll reference timer when the
  nntp session terminates normally.  Also, the parsing of some header lines
  during importation of smtp messages, was fixed.

-  The bid generation algorithm for transferring SMTP-originated msgs via AX.25
  forwarding, was improved in the case where the Message-id was very long.

-  The POP3 client will never ask for more than POP_MAX_MSGS at a time, if this
  is #define'd to a positive integer in config.h.  The POP protocol requires
  a successful disconnect before any deletes occur, so a poor circuit and
  lots of messages awaiting transfer, can result in a disconnect with no
  requested deletions occurring.  Choosing a small value for POP_MAX_MSGS
  could improve this situation.

-  The pop drop and pop kick commands now take an optional username argument,
  to allow which pop host entry is to be affected: pop kick pop.usl.edu jpd
  Otherwise, the first-found entry is used.

-  The DNS server now handles unsupported RR types better, avoiding a crash.

-  The SMTP Gateway name is expanded to an IP address once per maturation of
  the SMTP timer, thus accommodating those sites that provide a different IP
  address per lookup in an attempt to do load balancing.

-  The exit command can be made to write the mailbox mailstats into the log,
  if EXITSTATS is #define'd.  This is automatically done under UNIX, where
  memory is not usually so constrained as under DOS.

-  The RIP-98 protocol variant to RIP-2, can be supported if Jnos is compiled
  with RIP and RIP98 both #define'd.  See rip98.txt for details on how it
  works (basically, its packets are manually directed to specific hosts).
  Thanks to Gareth G4HIP for porting the code.

-  The misspelling of AGGRESSIVE_GCOLLECT in the sample header files was
  corrected.  Check in your config.h that two G's occur after the first A!

-  Neil VK2ANK provided a modification to the http server, to allow operation
  without needing a root.html file in the server root dir (it is treated like
  any other dir, that is, a directory listing is produced).  This will
  facilitate using a CDROM as the server's rootdir: in the 'start http' cmd
  provide the drive letter of the cdrom, and set the rootdir to "".  Also,
  one can now #define HTTP_INDEX_NAME "index" to have Jnos search for
  "index.html" instead of "welcome.html" in a directory.  "index.html" seems
  more common nowadays.  The default remains "welcome.html" (idea by KF9UG).
  I also made changes to fix http directory listings under Unix.

-  I changed the DOS Jnos to recognize operation under Windows 98 DOS 7.

-  Miscellaneous small fixes and enhancements; see readme.knx for details.



1.11c (981119)

-  Linux changes: newest GLIBC is supported.  Ncurses 1.1.9e works.
  HOLD_PARSER can be #define'd as the path to a program which will scan
  incoming messages for content, and hold selected messages, when 'mbox
  holdlocal yes' is in effect.  See comments in scanjmsg.c in the Jnos source.

-  Email can be rejected if sent to an id not present in the popusers, ftpusers
  or users.dat files, by compiling with SMTP_VALIDATE_LOCAL_USERS #define'd.

-  NNTPS compatibility improved by sending IHAVE before MODE READER, from
  Stewart G0LGS and Robin G8ECJ.

-  Solaris SPARC modifications have begun, by Brandon KF8NH.

-  Miscellaneous small fixes and enhancements; see readme.knx for details.



1.11b (980403)

-  Linux changes: the shell (!) command is now fixed, and behaves like the
  DOS version (the /c prefix to invoke the shell is NOT required; the SHELL
  is always invoked to process the command).  Example:
     at now+0001 "! find / -xdev -name core > /tmp/cores &"

-  SMTP-related changes:
  1) if SMTP_DENY_RELAY is #define'd, Jnos will not act as a mail relay for
  hosts that are not trusted, that is, not a member of one of the system's
  subnets.  For this to work right, be sure the netmask is defined correctly
  for all interfaces (see ifconfig command description).

  2) I added the ability to rewrite a message into an area (or smtp desti-
  nation) based on the message's envelope From and To address.  The rules
  are stored in /spool/refile by default (set Refilefile to a different
  value in nos.cfg to change the default filename).  The rules are similar
  to those used in the standard rewrite file, except that field one contains
  the expected From address immediately followed by a '|' symbol, then
  immediately followed by the expected To address.  This feature is enabled
  by compiling with SMTP_REFILE #define'd.  If the refile attempt fails, then
  the standard rewrite is performed.  Example:  to file nos-bbs messages
  arriving for user n5knx on gateway w5ddl.ampr.org, into a area called
  nos-bbs, use:
     [email protected]|n5knx@w5ddl*  nos-bbs
  As always, a mapping to "refuse" will result in the message being rejected
  (or returned to sender, depending on the protocol used).

  3) I fixed a mail loop bug when 'smtp gateway' is defined to be the system's
  IP address.  This somewhat unusual setting is not recommended in general.

-  The dynamic IP support (MBOX_DYNIPROUTE or UDP_DYNIPROUTE) has been enhanced
  so Jnos behaves like K2MF's MFNOS in adding and deleting dynamic IP gateway
  routes.  For a route to be added, there must be no existing route, OR the
  existing route must be via the Loopback interface, or via the encap inter-
  face with non-zero route timers.  The typical procedure would be for the
  sysop to route a subnet to loopback, in anticipation of it being changed
  later by a dynamic-ip gateway (thanks Barry, K2MF).

-  CDROM callsign server changes:  Buckmaster now prints country, email and URL
  adresses, and QSL manager (thanks Bob WA2MNO).  QRZ no longer prints a '.'
  after the lastname, and a Linux crash when the callsign was too long is
  now fixed.

-  A bug in editor invocation after composing a msg in the mailbox was fixed.

-  Convers users can now list users by channel: /who #nnn     where nnn is
  the channel number. Also, if CNV_TIMESTAMP_MSG is #define'd, msgs sent to
  local users are prefixed with a hh:mm timestamp (thanks Glenn, WB6W).

-  If SCC and FINGERSERVER are both #define'd, the sccstat pseudo-user is now
  available to display the scc statistics.

-  The mail2ind utility now has a -f option, to display summary info for all
  areas.

-  Miscellaneous small fixes and improvements, see readme.knx for more
  details.



1.11a (980107)

-  Linux changes:  param <iface> {up | down | dtr {on|off}} are now supported,
  and the dialer 'status' and 'control' commands now work.  TRANSLATEFROM
  now works.  Allow up to 9 asy/slip ports.   The Linux ftp server can be made
  to interoperate better with Netscape ftp clients, if FTPSERV_XPERM is
  #define'd in config.h.


-  NNTP and NNTPS code will now time out after waiting 900 seconds with no
  input received, while acting as an nntp client.  This value can be changed
  by:   #define NNTP_TIMEOUT <#seconds>
  in config.h.  A value of 0 disables any timeout.

-  The remote command/facility has been separated into two pieces, that which
  pertains to client functions, and that pertaining to server functions,
  enabled by REMOTECLI and REMOTESERV #defines, respectively.  From K2MF.

-  I added two kinds of support for gateways with dynamic IP addresses, to
  register with static-IP-addressed gateways for routing encapped packets.

  1) The first style is from Barry, K2MF.  It uses the remote command to send
  UDP packets asking to be registered as an encap gateway.  This feature is
  enabled when Jnos is compiled with both ENCAP and UDP_DYNIPROUTE #defined.
  The typical sequence is that the Jnos with a static address configures its
  remote server with a gateway password (remember REMOTESERVER must also have
  been #define'd):
       remote -g gwkey
  and then starts the remote server:  start remote 1234
  Note that the gateway sysop must make known both the port number and the
  gateway password used.  Also, the sysop should route the anticipated subnets
  to be claimed by the dynamic gateways, to the loopback interface.  This will
  help assure that the subnets are available for later rerouting.

  Then a Jnos which has been assigned a dynamic IP address, would issue this
  command to have 44.108.99.100 routed to it via an encap packet sent to its
  dynamic IP address (remember REMOTECLI must also have been #define'd):
       remote -p 1234 -k gwkey -r 44.108.99.100/32 static-Jnos-hostname add
  To terminate the encapped route, send the above command with 'add' changed to
  'drop', or wait for the route to time out, which is defaulted to 900 seconds.
  To change the default route TTL, the static-addressed Jnos should be compiled
  with #define DYNIPROUTE_TTL nnn    in config.h, where nnn is the number of
  seconds desired.  Also, a Jnos remote client desiring to renew the encapped
  route before the TTL expires, might use this method:
       at now+0005 "route -p 1234 -k gwkey -r 44.5.6/24 n5knx.net add+"
  Remember that UDP packets are not guaranteed to be delivered, hence the
  utility of the repeating at command shown above.

  2) The second method to register with a static-IP-addressed gateway for
  routing encapped packets is more suited to Jnos systems desiring only to do
  tcp-based forwarding.  Only the Jnos system acting as a static-addressed
  gateway need be reconfigured, by compiling with ENCAP, MBOX_DYNIPROUTE,
  TELNETSERVER and MAILBOX #define'd.  This configures it to recognize the XG
  mbox command to establish a route: XG 44-net-addr/#bits.  The route will
  persist for 900 seconds, unless changed by #defining DYNIPROUTE_TTL <#secs>
  differently, perhaps in config.h.

  A Jnos host with a dynamic IP address would first contact the static gateway
  and register an encap address, then contact a forwarding partner via that
  gateway and do tcp protocol forwarding.  For example, suppose K9DOG has an
  IP address of 44.108.0.51 as well as a dynamic address from his ISP, and
  wants to contact W5DDL.ampr.org as a forwarding partner.  If AT commands are
  used to initiate forwarding, a typical set would be:
       at 25 "mbox kick Xgddl+"     -- establish route to w5ddl via a gateway
       at 28 "mbox kick w5ddl+"     -- forward to w5ddl if any traffic pending
  It is assumed that 15 minutes (or whatever the static-IP gateway system has
  compiled in) is sufficient for a complete forwarding session.  Additional
  kicks to Xgddl could be used to extend the life of a route, or even a kick
  could be done every 15 minutes:  at now+0015 "mbox kick Xgddl+"
  if the encap route is to be maintained for other non-forwarding purposes.
  The destination system is assumed to route back to the 44-net station via
  the same gateway: route add k9dog.ampr.org tnc static.gw.edu 2

  Here is a sample forward.bbs script for the above example:
       xgddl 0023
       tcp static.gw.edu
       .k9dog
       .passme
       # Wait for prompt, indicating command-mode begun (assume no > in greetings)
       +>
       *60
       .xg 44.108.0.51
       .bye
       --------
       w5ddl 0023
       tcp w5ddl.ampr.org
       .k9dog
       .somepasswd
       w5ddl
       allus
       amsat
       ww
       ----------

  The gateway sysop must specifically enable a dynamic-ip host to log in
  (via an entry in ftpusers, perhaps with a password) and also allow the XG
  command by setting bit 0x200000 (XG_ALLOWED) in the ftpusers permissions
  field.  Also, the sysop should route the anticipated subnet to be claimed
  by the dynamic gateway, to the loopback interface.  This will help assure
  that the subnet is available for later rerouting.

  In both methods described above, a route will only be added if the subnet
  has no route, or is routed to loopback, or is routed via encap with a route
  timer running.  This last proviso assures that no manually-added encap
  routes can be changed by a dynamic-IP gateway (since such routes have TTL=0).

-  It is now possible for mbox users to use the ED editor to edit messages
  composed in the S(end) command, if ED, EDITOR, and SEND_EDIT_OK are all
  #define'd in config.h.  "mbox sendquery yes" must be in effect, and the
  query after the /EX is read is "Send(N=no,E=edit)?".  If e or E is typed in
  response, the editor is invoked, preceded by the message: "Invoking Unix
  ed(itor); use Q to quit without saving changes." then "Now press return to
  begin:".  Unless the mbox user has sysop privileges, the editor is invoked
  in restricted mode so no other files can be accessed.  The ed editor may not
  be the best solution to email editing, but it is very capable when under-
  stood.   I recommend that the editor portion of the editor helpfile be made
  available for download, if you enable this feature for your users.

-  Many changes made to allow a detach command to result in internal structures
  being purged of information or packets related to the deleted interface.
  Thanks to Barry, K2MF, for the Netrom-related changes.

-  The DOS ftp server MDTM command was fixed to operate properly.

-  The http server was changed to interoperate better with the IE4 browser,
  by checking for "HTTP 1.x" requests instead of just 1.0 requests, thanks
  to Barry K2MF via Dennis KD1CA.

-  The 'rip proxy' command was fixed not to crash Linux Jnos.

-  The ident deamon was fixed to detect an invalid socket while preparing a
  response to a query.

-  Miscellaneous small fixes and improvements, see readme.knx for more
  details.



1.11 (970825)

-  Linux changes: now accepts #define NRS and nrs/cts flow control, as in the
  DOS version.  COLOR is supported as in the DOS version, that is, the same
  color codes are used: 0=black, 1=blue, 2=green, 3=cyan, 4=red, 5=magenta,
  6=yellow, 7=white .  The 'tcp clean' and 'tcp view' commands were improved.
  Expire of nntp history file is fixed, thanks to Robin G8ECJ.  The POP3
  server no longer truncates the last lines of messages.  The socket command
  should no longer crash Jnos.  The trace window is now full, ie, no status
  window appears in the trace screen.

-  Paul N5FAZ' BPQ driver version 1.5 incorporated.  The bpqstat command is now
  'bpq stat', with more info shown (see bpq helpfile).  'bpq trace' exists to
  trace unattached BPQ streams.  Smarter buffer management added.

-  Robin G8ECJ's port of tcpgate added to Jnos.   See the gate helpfile for
  full details; tcpgate is enabled by compiling with TCPGATE #define'd, and
  serves to redirect tcp connects to another host and/or port.  The number of
  active gate clients is shown by GATE=nn in the first status line.

-  slip now handles minimal frames which used to cause a null pointer to be
  used, leading to Linux crashes and DOS reboots.

-  Andrew G8FSL's improved SCC driver is now used.  Andrew's driver supports
  software DCD, the ESCC fifo chip (Z85230), multiple scc boards, and
  easier attach statements for popular scc boards.  See the sccg8fsl.txt
  file in the source archive for many technical details and tips.

-  If you are having problems with your POP3 client waiting forever when a
  path to the server drops out, compile with POPT4 #define'd and use the
  new 'pop t4 #secs' command to establish a timeout.  Default is 300 seconds.

-  Mailbox aliases can now be deleted properly, thanks to Gene K8EE's fix.

-  Remote sysop session lockups after typing a single CR have been eliminated.

-  NNTP server improved: the nntp post command works better, and any errors
  from sending the 'mode reader' command (if NN_INN_COMPAT were #define'd)
  are completely ignored (thanks to Robin G8ECJ).

-  I added some more error detection to the lzhuf code, and fixed a problem
  in the Linux version that caused problems in long messages.

-  DOS version status command should no longer show garbage characters in
  program names having open files.  Also, Jnos no longer reports any open
  files under DOS 7 as no filename is available.

-  The Jnos FTP server now understands the REST and CDUP commands, allowing
  a second method of resuming transfers that conforms to RFC959.  The RNFR,
  RNTO, and MDTM commands can also be supported if the server is compiled
  with FTPSERV_MORE #define'd (thanks to Selcuk, N3YCO).  The Jnos ftp client
  can be compiled with FTP_REGET #define'd to provide the reget and restart
  commands.  The previous method, resume and rput, are now contingent upon
  FTP_RESUME being #define'd.  The rename command is now available if
  FTP_RENAME is #define'd when the client is compiled.  See the ftp helpfile
  for details.

-  Miscellaneous small fixes and improvements, see readme.knx for more
  details.



1.11x7 (970512)

-  The NNTP server now can limit the number of simultaneous client connections.
  'nntp maxclients [N]' establishes or shows the limit.  0 implies no limit,
  except sufficient memory!  Also, the NNTP client software now continues
  long header lines, so that mailbox header scanning works properly.

-  Jnos can be made to automatically switch sessions to an incoming ttylink
  session, if compiled with TTYLINK_AUTOSWAP #define'd.  This is also the
  standard behaviour in the UNIX version.

-  It is now possible to compile Jnos with LZW and FTPSERVER #define'd but
  FTPSESSION #undef'ined.

-  Back by popular demand!  The smtp gateway can be set to the local host.
  Using localhost (or any local IP address) would allow interoperation with
  external mailers that produce packet hierchical addresses in msgs added to
  the mqueue, e.g., 'n5knx@k5arh.#lft.la.usa.noam' or 'ft736@sale'.  This
  has the side effect of accepting email whose destination address can't
  be verified at submittal time by a DNS query.

-  The trace session now permits command-history recall (by up and down arrows)
  just as in the command session (DOS version only).

-  Jnos can be compiled with various forwarding options enabled, but AX25
  disabled.  That is, you can leave out ax.25 support, yet still do tcp
  and file (export) forwarding.  Note that changes were needed in config.h
  to make this possible.

-  AX.25 connect requests originated by Jnos, will use the interface call
  unless BBSCALL is available and set.  This convention can be overridden
  by the TTYCALL by compiling with TTYCALL_CONNECT #define'd.  I'd expect a
  BBS to want to use the BBSCALL, and a user station wanting to encourage
  interactive connects, to enable the TTYCALL_CONNECT.

-  If compiled with FWD_COMPLETION_CMD #define'd, Jnos will allow a console
  command to be executed when forwarding completes.  This command is specified
  in forward.bbs by prefixing it with a '+' and placing it just before the
  first area name.  This feature is described in the 1.11x3 section below,
  where it was first introduced for the FILE forwarding method.

-  A silly bug in parsing dates prior to the 10th of the month was corrected.

-  Remote server handles invalid exit/reset passwords better.

-  PPP support for ip-address pools is fixed, and the specification of an
  ip address as the fifth field in ftpusers now works properly.

-  Rare crashes while in the network() task, due to using an invalid index
  while processing multi-drop kiss packets, is now fixed.

-  UNIX improvements:  STATUSWIN now can be #define'd, and long UNIX filenames
  are properly handled now.  The GMT offset bug is fixed, and problems in
  fingerd, http and tip-server are corrected.  Domain tracing now works as in
  the MSDOS version, with output coming to the current session.  Other trace
  output in various modules was fixed to avoid writing directly to stdout.
  Problems with short 8-character helpfile names can be corrected by either
  renaming the help files to the full command name (e.g., 'third-party') or by
  compiling with DOS_NAME_COMPAT #define'd.

-  Miscellaneous small fixes and improvements, see readme.knx for more
  details.



1.11x6 (970314)

-  Linux UNIX version now available!  See readme.lnx for details!  For this
  reason, there are now TWO makefiles, makefile.bcc and makefile.lnx.  You
  should rename one of these files to "makefile" before you compile Jnos.

-  Mailbox improvements: LS, L< and L> accept line ranges:  ls 1 999 "736"
  which allows a numeric search string to be differentiated from a range!
  Use the BBSCALL in the greeting msg.  New users will be started with a
  20-line page size.  The sysop MM and MC commands now accept a range of
  message numbers, specified by an embedded '-', e.g., MM 5-26 junk  .

-  DNS server now generates compressed responses (so large query results can
  be handled) and we now reset the recursion-available flag.

-  NNTP server fixed to handle mixing ax.25 bulletins and NNTP articles, and
  gated bulletins can have their R: lines removed if NN_REMOVE_R_LINES is
  #define'd.

-  SMTP client now limits how many mqueue messages it tries to process in
  one invocation, to avoid depleting memory.

-  "status on|off" command will disable, and reenable, the status line display.

-  The mailfor facility will now detect a change to the watched mail files,
  and set/reset the MAIL statusline flag appropriately (in case external
  programs manipulate the mailboxes).

-  "bulletin holdold #days" command added, to hold bulletins which arrive
  more than #days after origination.  The "bulletin date on" command must
  be issued for this to work.

-  An idle time indicator can be added to the status line by #define SHOWIDLE,
  but "watchdog on" must also be issued for this to work.

-  The exit code is placed in the log (when logging is enabled).  More exit
  codes have been established:
  248 - Linux curses keyboard problem
  250 - Linux malloc failed to find memory available
  251 - AGGRESSIVE_GCOLLECT #define'd, and availmem is < 1/4 of Mem threshold
  252 - printf buffer was insufficient
  255 - Linux Jnos received SIGTERM signal

-  Miscellaneous small fixes and improvements, see readme.knx for more
  details.



1.11x5 (961220)

-  HTTP server by Selcuk, N3YCO was added.  The setup information is available
  in the http helpfile.  Some slight changes were made to Selcuk's original.

-  BOOTP client and server are now separated, and when neither are used, Jnos
  is a bit smaller than before.

-  APOP command added to the POP3 client and server, when MD5AUTHENTICATE is
  #define'd.  This means the pop password is not sent in plain text (unless
  the APOP command is rejected).

-  AT command weekday support added:  "at whhmm cmd" sets cmd to run at the
  next occurence of weekday w, at hh:mm.  w=0 => Sun, w=1 => Mon, ... w=6
  => Sat, w=7 => Sun, ...

-  The term command now supports sending a break in response to a specified
  character code received. Also, LFs can be completely ignored by using the
  cronly option. (Neil VK2ANK)

-  Makefile commands added to compile helper programs: pushmail, uudecode,
  mktl, and base64.

-  MD5 now uses 16 instead of all 32 characters to validate accesses, to
  enhance security, since password guesses would be harder to validate.

-  Converse now passes 8-bit charcodes by default, and retains and uses TOPIc
  timestamps.  Thus TOPIcs provided by older Jnos convers implementations will
  be ignored ... time to upgrade!

-  SMTP server stack overflow problems corrected, and local duplicates resulting
  from interactions with news-to-mail and mail-to-news are now eliminated.
  For example, to maintain an area called tcpip, and a newsgroup called
  ww.tcpip in the nntp server subtree, and have msgs appear in both regardless
  of how they arrived, you could have:
    rewrite:      tcpip@ww        tcpip
    alias:        tcpip           tcpip  !ww!tcpip
    gateway:      ww.tcpip        tcpip@ww

  SMTP will also now send lines beginning with a dot (".") correctly.

-  NNTP client and server were changed to deal properly with long header lines.
  NNTP client or server can interact with an INN server if compiled with
  NN_INN_COMPAT #define'd (sends a "mode reader" command).  Memory leaks in
  the NEWNEWS command handler are fixed.  Lines beginning with a dot ('.')
  are now properly handled before being passed to an nntp client.

-  FTP server will interoperate better with those web browsers that get
  confused by Jnos starting users out in a non-root directory, by treating
  "cd /" as a change to the user's default root dir when a change to the actual
  root is denied.  SIZE and APPE commands added.  (Selcuk, N3YCO)
  Selcuk's modification of ftp to work with the Windows ws_ftp program can
  be enabled by #define WS_FTP_KLUDGE, but I don't recommend it as SYST will
  report we're UNIX.
  The FTP client now will interpret a userid of "*" in net.rc as "anonymous".
  Ascii-mode ftp "put" speed is increased.

-  Tracing of polled-kiss interfaces by default will no longer show the poll
  itself.  The poll can be shown by adding 0x4000 to the trace flags value.
  (Dave, N9HKM)

-  The BBS command, in conjunction with MD5AUTHENTICATE, can automatically
  log the console user into the mailbox.  The net.rc file must have an entry
  for the hostname, userid and password.  EXPEDITE_BBS_CMD must be #define'd
  to enable this capability.  (Mark, KA1NNN)

-  More read timeouts were added to FBB forwarding, to catch cases where a
  forwarding partner connected via TCP goes silent.

-  Miscellaneous small fixes and improvements, see readme.knx for more
  details.



1.11x4 (961020)

-  If NN_USESTAT is #define'd, the two nntp modules in Jnos, NNTP and NNTPS,
  will bypass the refusal of an nntp server to honor the NEWNEWS command,
  by using combinations of GROUP and STAT commands.  This will permit Jnos
  to obtain news from some servers which ignore the requirements of RFC977.
  The limitation of this work-around is that newsgroups must be explicitly
  named, ie, use of '*' and '!' is not supported.  The highest article number
  available from a news server is maintained in host.rc (NNTPS) or in <area>.rc
  (NNTP).

-  Both nntp versions now take greater pains to eliminate duplicate news
  articles, by proper handling of ax.25 bulletins that were gated into
  newsgroups.  NNTP will now also update the bid history file for articles that
  arrive via nntp forwarding, that originated elsewhere as a bulletin.
  (thanks Pierfrancesco IK5PVX).

-  NNTP clients are disconnected after 3600 seconds of inactivity by the
  Jnos nntp server.  This can be changed by #defining NNTPS_TIMEOUT nnn in
  config.h and recompiling Jnos.

-  FBB forwarding via TCP protocol now has the 'mbox tdisc' inactivity timer
  enforced, to close connections which become silent.

-  The 'ax25 ttycall' is used as the Jnos source address for ax.25 connects,
  when available.  When not defined, the interface call is used.  This makes
  Jnos behave as many tncs do: the observed source address can be used by other
  hams as the target of their connect request, and they will interact with the
  sysop (provided attended mode is set).  Otherwise, the bbscall (or interface
  call, for that matter) would be used to interact with the mailbox.
  (from Mark, KA1NNN)

-  Improvement in ax.25 retry performance in VC mode when maxframe > 1, due to
  limiting the backoff time by the 'ax25 maxwait' value.  (from Patrick F1GYG).

-  Stand-alone converse implementations (where LINK was not #define'd) will
  need less memory.  Also, status line #1 will no longer display LNKS=0 in
  this case.

-  Jnos DNS server now handles CNAMEs properly, and will not provide bogus A
  records with IP address 0.0.0.0.

-  mailuser command uses "sysop" as the sender's ID unless the DOS environ-
  ment variable MSGUSER is defined, in which case the variable's value is
  used as the sender ID.  (from Tony, G6OPM)

-  The PPP module now allows the remote peer to provide a new IP address
  as a consequence of a reconnect, perhaps initiated by the dialer's redial
  feature.  Jnos users whose ISP provides only dynamic IP addresses will
  benefit, although connections existing at the time of disconnect will
  time out, since they can't be resumed due to the changed IP address.

-  The security of Jnos has been enhanced by the addition of the capabilty
  to authenticate logins via MD5 checksums.  When MD5AUTHENTICATE is #define'd
  and a password is requested (by ftp or the mailbox), the password prompt will
  include a challenge value in brackets.  This challenge value, combined with
  your password, will yield a "checksum" when manipulated by the MD5 routines.
  This checksum can then be provided instead of a plain-text password.  Jnos
  will accept either the correct "checksum" or the actual password.  The MD5
  calculations can be performed by running the epass.exe program, or, much
  more conveniently, use the etelnet or ettylink commands to access the
  mailbox.  These commands will automatically process the challenge and send
  the checksum to the remote Jnos system.  The syntax is:
      etelnet hostname [port#] loginid passwd
      ettylink hostname [port#] loginid passwd
  Note that ax.25 connects to the mailbox will be prompted for a password if
  AX25PASSWORD is #define'd, and users connecting via netrom can also be
  prompted for a password if NRPASSWORD is also #define'd (when Jnos is
  compiled).

-  Miscellaneous small fixes and improvements, see readme.knx for more
  details.



1.11x3 (960820)

-  The 'mbox fbb' command has changed.  When set to 0, it allows no FBB
  features during forwarding.  When set to 1, FBB batching is allowed, and
  when set to 2, allows both batching and compressing.

-  FBB compression can be disabled on a per-station basis, by the use of the
  new forwarding script command, "!".  The ! should appear in column one, just
  as the other script commands do.  This will allow a forwarding script to
  make a connection to another system via a path that is not transparent, that
  is, does not support FBB compression.  This would be useful, for example,
  when a TCP connection is made to a gateway, and then a connection is made to
  the forwarding partner; this is how a Jnos station with a dynamic IP address
  would initiate a forwarding session via a fixed gateway node.  Here is an
  example script that telnets to a gateway, and then does an ax.25 connect
  to the k9dog bbs:
      k9dog 0023
      tcp 130.70.240.31
      !   eschew FBB compression
      # Read blank line, then NOS greeting, then blank line:
      @10
      +NOS
      @30
      @10
      # read telnet motd:
      +Give your call
      @20
      #Send login ID and password in the blind:
      .myname
      .mypass
      #read all greeting msgs and await prompt
      + >
      *15
      #Assure transparent ax.25 session:
      .E off
      + >
      @15
      #now connect to k9dog
      .c tnc k9dog
      +Trying
      @15
      +*** connected
      @30
      k9dog
      amsat
      arrl
      south
      -------------

  If you know that a remote system is likely to reach you by a non-transparent
  path, you can disallow FBB compression by setting flag bit NO_FBBCMP
  (1048576 == 0x100000) in their privileges in ftpusers.  This would prove
  useful for interoperation with older Jnos or other *nos versions.

  Since stations having a dynamic IP address can't be forwarded to, but must
  none-the-less have entries in forward.bbs describing which areas are to be
  forwarded when they initiate a connect, I added the "skip" forwarding method,
  meaning we should not initiate a connect.  Any text appearing after the skip
  keyword is treated as a comment.  For example:
      ke5l 0023
      skip  Willy's IP addr is dynamic so we can't initiate a tcp forward
      ke5l
      amsat
      arrl
      north
      ----------

-  Jnos can now forward to an export file, which is formatted as a WA7MBL-style
  file:  SB/SP/ST line, then the subject line, then the message body, and
  finally the /EX line.  This sequence of lines may be repeated as required to
  to store multiple messages.  To specify forwarding to a file, use this syntax
  in the forward.bbs connect-line:  file  <path_to_export_file>
  Only three forwarding script commands are usable:  '.' adds lines to the
  export file before the exported msgs (this is probably not useful), '#' is
  used to introduce a comment line, and '+' is used to specify a Jnos command
  to be executed when exporting is completed.
  Note that + must occur just before the area lines, if at all, and might prove
  useful to email the file just created to another site. The export file is
  opened in APPEND mode.  If an error occurs while reading an area being
  forwarded, the last (incomplete) message is not terminated by a "/EX" and no
  more messages are written to the export file in the current forwarding cycle.
  The corresponding import program is assumed capable of rejecting this badly-
  formatted message.  The latest Jnos import.exe utility is such a program
  (see ftp://pc.usl.edu/pub/ham/jnosutil/jnos_import.zip).
  Example forward.bbs script:
      fred 0023
      file e:\fred.out
      +source c:\fred.nos
      fred
      amsat
      arrl
      -----------
  where c:\fred.nos would have something like these commands in it:
      mailmsg [email protected] "Jnos exported msgs" e:\fred.out
      delete e:\fred.out
  This export file feature is enabled at compile-time by defining FWDFILE in
  config.h (provided MBFWD is also defined).

-  The NNTP server can now also transfer incoming articles to the Jnos mail
  server.  This feature is enabled when both NNTPS and NEWS_TO_MAIL are
  defined at compile time.  The mapping of newsgroup names, to email addresses,
  is determined by the Newstomail file, which defaults to /spool/news/gateway.
  This file has two fields, blank separated.  The first field contains the
  newsgroup name; starnames are supported.  The scanning of the gateway file
  terminates when the first matching newsgroup name is found.  The second
  field contains the email address to which the article is to be sent.  This
  address will likely be an area name, so that news articles can also be
  viewed by mbox users, but can be any email address or even an alias.
  Example gateway file:
  # This is a comment
  rec.radio.shortwave swl
  rec.radio.amateur.* ham
  rec.radio.*        radio
  misc.investments   wb5aaa

-  Expiration of JUNK articles is now supported.  These are the articles
  that the NNTP server stores in /spool/news/forward (default location).
  In expire.dat, use !junk N   to expire them after N days.

-  AX.25 fixes:  the backoff algorithm for retries after an RNR is improved
  (WA7NWP).  The number of AXIP ports can be specified in the config.h file
  by defining NAX25 to the desired number (default is #define NAX25 16). The
  setting is now displayed by the info command.

-  All areas can be searched for messages carrying a given bid, by use of
  an external program, mail2ind.  This program now takes a -bBIDTEXT argument,
  and will display its progress and findings as it scans the areas.  Note
  that 'make mail2ind' will compile this utility program, and that it takes
  a -d options just as Jnos does, to specify non-default spool directory
  locations.

-  The main console session now defaults to flowmode OFF, that is, no --more--
  prompt will occur unless you issue "session 0 flow on".

-  Guest accounts can now be given a message at each login, by setting the
  privilege flag bit NO_LASTREAD (524288 == 0x80000) in their ftpusers entry.
  Suppose that the account name is "guest".  Then the contents of /spool/mail/
  guest.doc is displayed at each login and whenever their home area is
  selected.  Further, this user will always be shown the first msg in any
  other area, and be presented with that area's <area>.doc file contents,
  should it exist when switching to that area.  In other words, Jnos will
  not maintain a history of the highest msg accessed by this user, so that
  all messages appear new.  This feature requires that USERLOG be #define'd
  at compile time.  A suggested set of privileges for a non-ham guest login
  interactive acct is 0xc9401.

-  Incoming ttylink sessions will result in a message (with a bell) sent to
  the current screen, but no automatic switch to the incoming session is
  made.  The new session number will blink, if status lines are being used,
  to indicate the ttylink session is active and awaiting your attention.

-  Dialer improvements: the dialer should now handle fast input during a
  wait command even when the cpu is "slow".  Formerly, this could lead to
  a freeze.  A new command, "verbose ON|off", allows a dial script to
  disable most progress messages.  In particular, if a script ends with
  verbose mode off, any later automatic redial will not disturb the current
  console session screen.  Of course, "verbose off" should only be used in
  well-debugged scripts!  Finally, for SLIP users needing to acquire the
  assigned IP address, the wait command now takes an "ipaddress" option,
  to acquire a numeric IP address from the incoming data and set the dialing
  interface ip address accordingly.
  Example:  wait 5000 "Assigned IP address is" ipaddress

-  The PPP code now implements ipcp option #3, thanks to Louis Kotze.  This
  means that Jnos PPP now interoperates with Windows NT ppp to a greater
  extent.

-  Finger daemon now supports the pseudo-user "mhold", which lists areas with
  held messages.  HOLD_LOCAL_MSGS must be #define'd to enable this.

-  Miscellaneous small fixes and improvements, see readme.knx for more
  details.



1.11x2 (960701)

-  An IDENT server (rfc1413) can be configured by #define IDENTSERVER 1.
  This can expedite smtp sessions where the remote server does IDENT
  queries and waits for a response or a timeout.  (from K2MF)

-  TERM server minor improvements (thanks to VK2ANK).

-  When memory falls below the 'mem threshold', incoming packets are now
  dropped.  A source-quench can be sent if enabled.  Formerly, nothing was
  dropped if a source-quence was sent, leading to memory depletion if the
  sender ignored the quench.  (from Selcuk)

-  The smtp server now shares the cpu more equitably, leading to better
  performance (ie, no crashes due to memory depletion) with fast clients.
  The new 'smtp gateway none' command will deconfigure an smtp gateway.

-  The status command shows the UTC offset, as obtained from the TZ environment
  variable, to help discover when TZ is not set, or set improperly.

-  NNTP fixes for handling long lines better.  nntp dump works slightly better.

-  The sysop mailbox cmds MC/MM now reset the read flag in the destination area.

-  The mailbox SF command now quotes the msg header as well as the body, to
  better identify the originator of the msg.

-  The convers /who command defaults to 'quick' format.  The long format is
  used when any options are provided.  The syntax is now:
     /who [long | call | @host]
  The sysop console command, "conv online" was similarly changed.

-  The look command no longer yields a disconnect after /q, when the look
  session lasts longer than the mbox tdisc setting.

-  A new Jnos command-line option, -I, serves to bypass any attempt to
  check the area indices for consistency.  This would expedite the Jnos
  startup, deferring the consistency checks until an area is accessed.  This
  option would be most interesting for home users using an external mail
  reader, and where the startup index checking is "too slow".

-  The RDATE client and server routines can now be separately configured.
  RDATE has been replaced by RDATESERVER and RDATECLI in config.h.

-  PPP fix for handling a timeout properly in the LCP protocol, which
  improves operation with a Livingston Portmaster router.  The new
  'ppp <iface> ipcp local|remote address none' command serves to require
  the other ppp to provide the address.  Previously, one had to set address
  to zero, which (while successful) resulted in a complaint.

-  Jnos now handles better the display of routes, tcp connections, arp entries,
  etc. while memory is constrained.  Previously, a deadlock could occur.

-  Miscellaneous small fixes and improvements, see readme.knx for more
  details.



1.11x1 (960422)

-  BBS forwarding scripts can now read and discard lines until a line
  matching a desired string is encountered.  This is useful when you might
  get a variable number of lines at some point in the script.
  Use the '*' symbol to indicate this.  It has the same syntax as '@', ie,
  can be optionally followed by read timeout, in seconds.
  Example:  .c n5knx
            +bonjour
            *30
  will send "c n5knx<CR>", then read lines, each with a 30 second timeout,
  until a line containing "bonjour" is read.

-  Convers server reworked to add pong support, pass-through, and minimal
  topics support (if CNV_TOPICS and CNV_CHAN_NAMES are #define'd).  A new
  user command, /verbose [y|n], was added, to control the display of other
  users' signons and signoffs.  The default is n (no display).

-  Locally-originated messages, and messages arriving via SMTP, can be held for
  review by the sysop, before these msgs can be forwarded out via traditional
  forwarding, or read locally.  NNTP transfers are NOT affected.
  A msg must be rewritten (see /SPOOL/REWRITE) to an area which is listed
  in the /SPOOL/HOLDLIST file, for it to be eligible to be marked as Held.
  Typically, HOLDLIST would contain the same areas as
  are named in the AREAS file, plus any private areas used to collect personal
  messages to be forwarded off-site.  A held message can only be read by
  someone with sysop permission, but can be listed by all.  It will be shown
  with an H status instead of Y or N.  I added a new command, LH (list held),
  similar to LA, but only held messages are listed.  To reset the held flag,
  the sysop must read that message.  After the message display ends, the sysop
  is asked "Release Msg Hold? (y/n):".  Only a y or Y answer will release the
  hold.  I also added a RH/VH command for the sysop, to read only held msgs.
  Note that the old 'RH' (read with headers) command is gone.  Use 'V' instead!
  This hold feature is enabled at compile time by #defining HOLD_LOCAL_MSGS
  in config.h and at run-time by the command 'mbox holdlocal yes'.
  If the holdlocal flag is set to yes, then when the flag status is displayed,
  that is, if 'mbox holdlocal' is typed, those areas named in the HOLDLIST
  which contain held msgs, are also displayed, followed by a count of the
  number of held messages in that area.  This allows the sysop to run
  'mbox holdlocal' to see which areas need his attention, and then to use RH
  in each of those areas to perform the review function.
  Prerequisite defines are MAILBOX and MAILCMDS.  The HOLDLIST file defaults
  to /SPOOL/HOLDLIST, but can be changed by setting the Holdlist keyword in
  nos.cfg.

-  Neil, VK2ANK, provided modifications to the TERM server to improve its
  usability.  I further refined them, and changed the term configuration
  commands to these:

     term iface <iface> winkdtr [OFF | on]
       Displays or changes the setting of the flag which causes DTR to
       be deasserted for one second, at the start of a term session.
     term iface <iface> noecho [OFF | on]
       Displays or changes the setting of the flag which causes telnet
       echoing to be turned off for the duration of a term session.
     term iface <iface> nlcr [OFF | on]
       Displays or changes the setting of the flag which causes term to
       translate a newline read from the tcp input stream, into a CR to
       be sent to the serial interface.
     term iface <iface> 7bit [OFF | on]
       Displays or changes the setting of the flag which causes term to
       apply a mask of 0x7F to all characters read during the term session.
     term iface <iface> flushwait [<#ms>]                   Default: 0
       Displays or changes the number of milliseconds after which any
       non-newline-terminated input from the serial port, is flushed so
       that it becomes visible to the term user.  The default value is 0,
       meaning that no flushing is done.  A flushwait value of 500 ms is a
       good value to use when it is important to see, for example, login
       prompts that are not followed by a CR.
     term iface <iface> drop
       Deletes the interface <iface> from the list of interfaces accessible
       to term.  The interface must not be in use by a term process.

-  Neil, VK2ANK, provided a way for a mailbox alias to invoke certain console
  commands.  The console command must be prefixed by "@" to indicate it is
  not a mailbox command, and must not create a session or require any special
  permissions.  Example:  mbox alias pkst "@pkstat"

-  To make it easier to queue smtp messages from the console, I added a
  "mailmsg" command, that is compiled in when MAILMSG is #define'd.  The
  syntax is:     mailmsg <to_addr> ["<subject>"] "<msg>"
  and serves to send email to <to_addr> with an optional subject header.
  The <msg> string becomes the body of the message.  If <msg> begins with
  a forward or backward slash, or begins with a DOS drive specification, it
  is taken as the path to a file to be sent as the message body.

-  The finger daemon will no longer complain if Jnos was compiled with a
  cdrom callsign server, as long as the callsign server is not configured.
  Also, a new finger pseudo-user name, "help", will list available finger
  pseudo-users.  Example:  finger [email protected]

-  Many improvements to ax.25 forwarding, including closing files after errors,
  validating FBB received checksums, and eliminating the "Huh?" loop that could
  result after certain forwarding errors.  (from WA7NWP, KO4KS)

-  'rdate offset #' command eliminated.  Set the TZ environment variable before
  invoking Jnos, and this command becomes unnecessary.  (from G8FSL).
  I corrected the comment in config.h for RDATE, to indicate that both a client
  and server are produced when RDATE is #define'd.

-  Two new commands are available to help limit loading of a Jnos server:
  smtp maxservers [N]        establishes the maximum number of concurrent
                             smtp server processes allowed.  A value of 0
                             means no limit (other than memory!).

  ftpmaxservers [N]          establishes the maximum number of concurrent
                             ftp server processes allowed.  A value of 0
                             means no limit (other than memory!).

-  The Jnos smtp server was changed to send the "250 Sent" response before it
  completes the local delivery, since large messages could take too long to
  process and lead to the smtp client disconnecting and retrying the same msg
  later.  This is slightly less reliable, since if Jnos can't deliver due to,
  say, a full disk, the odds are it won't be able to requeue the msg for later
  delivery either! If you want the old behaviour, then
      #define RELIABLE_SMTP_BUT_SLOW_ACK
  in config.h when compiling Jnos.

-  Improvement in the Jnos DNS server, to handle large (> 512 byte) replies
  properly.  (from K2MF).

  Also, a new (to Jnos) command, "domain query <hostid>" was added to allow
  displaying on the console the results of a DNS query for <hostid>.  This
  command is available when Jnos was compiled with DQUERYSESSION #define'd
  in config.h.

-  Joe Soros provided changes to rip.c to improve the handling of subnets.

-  POP2SERV now compiles again.

-  PPP will now require PAP authorization from clients, if you use the
  command:  ppp <iface> lcp local authorization pap
  Formerly, non-Jnos systems could bypass the pap phase.

-  Miscellaneous small fixes and improvements, see readme.knx for more
  details.



1.10M (960105)

-  21st century dates are now supported (just in case we're still around!).

-  SMTP to AX.25-based forwarding enhancements.  When a message is stored
  into an area, any @our_hostname string is stripped from the TO address,
  and the FROM address can be rewritten to any desired value.  This last
  feature is enabled by the TRANSLATEFROM #define at compile time, and
  is controlled by the rewrite rules found in /spool/translat (by default).
  This file can be relocated by using the Translatefile keyword in nos.cfg,
  and the format is the same as for the rewrite mechanism.  For example,
  suppose my from address is: James P. Dugal <[email protected]>
  when I originate email from my Unix system.  To rewrite it as n5knx@n5knx
  so that it appears to come from the local Jnos system, use the rule:
  [email protected] n5knx@n5knx
  To reject and return email from an undesired address, rewrite it to refuse.
  The message itself is not altered, as just the area's index is changed.

-  SMTP enhancement: if TIMEZONE_OFFSET_NOT_NAME is #defined at compile time,
  the message header timezone is written as a numeric offset from GMT instead
  of a zone name.  From G8FSL.

-  SMTP, POP, and NNTP clients now handle very long lines properly.

-  Mailbox DM command displays the (/spool/)motd.txt file.  You might want
  to add an alias named MOTD to invoke the DM command.

-  FBB forwarding now scans areas more intelligently, by remembering the
  msgid of the last msg processed successfully in each area.  A distinction
  is made between interactive and BBS use of the same call.  Also, a bug
  was fixed where non-compressed FBB forwarding grabbed too much memory!

-  Non-standard converse ports can be specified for remote links, like this:
     converse link|xlink [port] [name]
  The default port is 3600 for links, 3601 for xlinks (ie, LZW-compressed).
  As always, a converse server can be started on a non-standard port by
  specifying the port number in the start convers command.

-  Mbox kick <hostname> will no longer force a connect if there is no data
  to send.  To force a connect regardless (ie, do a poll), specify <hostname>
  in uppercase.  This change will permit the at command to be used to provide
  better control, when desired, of when forwarding is initiated.

-  "ax25 retry" command is now "ax25 retries" for consistency with other
  commands that use the plural form.  Same for "domain retries". (from G8FSL)

-  The console shell and mail commands now work with BC4.x compilers, by
  using the system() call instead of the broken spawnvp().

-  An ascii text editor is now included in the Jnos distribution.  The
  editor, a clone of the Unix "ed" editor, is invoked from the console
  (or by a remote sysop) with the path to the file to be edited:
      edit  c:/ftpusers
  This option is enabled by compiling with EDITOR and ED defined. It
  adds ~13 KB to the size of Jnos.  Since a file is read into RAM, most
  probably only small files will fit (impossibly large files which would
  clearly reduce memory below the 'mem threshold' setting are always refused),
  but fortunately most Jnos config files are small.  A quick glossary of ed
  commands is in cmdshlp6.zip; for more depth, consult a Unix reference book.
  Note that the GNU ed is a superset of this (old) version.

-  A full-screen console-only editor is available if Jnos is compiled with
  both EDITOR and TED defined.  This editor is adapted from the TED editor
  and requires 5KB code and 16KB ram when invoked.  It can handle up to
  8KB files.  Unfortunately it requires that the fkey command be used to
  provide appropriate codes from the function and editing keys.  Suggested
  fkey commands are found in the editor helpfile in cmdshlp6.zip.  I'm not
  really happy with this implementation, since some fkey definitions conflict
  with standard usage, ie, F9/F10 (Jnos session switching) and the cursor keys
  (telnet).  See the suggested fkey commands for possible alternatives.
  Invoke TED by:  edit <filepath>

-  QRZ! cdrom callbook fixed to not truncate certain calls' info.

-  ax.25 improved to eliminate deadlock in the case where RNR is received
  but a subsequent RR is lost. (from K5JB)

-  POP2/POP3 servers will disconnect after 600 seconds with no command input.
  This can be changed by #defining POP_TIMEOUT nnn in config.h.

-  POP3 server no longer uses tmp files, and now opens mail folders much faster.
  Mailboxes will remain locked for the duration of a POP3 session.

-  POP3 client fixed to prevent a kick from yielding a redundant session, and
  from running outside of any defined time range set by 'pop addserver'.

-  The "mbox past flush" command was added, to free storage used to maintain
  a list of past mailbox users.  This list could consume and fragment memory
  in Jnos systems that are rebooted infrequently.

-  The mbox REGISTER cmd now stores updated info immediately, rather than
  relying on a (neophyte) user to exit via the Bye command.

-  Dialer now accepts absolute paths to a script file.

-  Async serial interface server, term, ported from KA9Q nos.  This server,
  enabled by TERMSERVER in config.h, lets a tcp connection to port 5000
  (default) access a preattached interface, similar to the console tip
  command.  New commands are:
     term ports [<iface>...]             display or set accessible interfaces
     term password string                defines an optional access password
     start term [port#]                  starts the server

-  "ip flush" command added, similar to ax25 flush.  ipheard bugs fixed.

-  XMS code fixed to not crash when no XMS driver is available!  This should
  solve some lockup problems reported on PC/XT systems.

-  Makefile changed to allow BC4 and 8086 to be selected together (N1BEE).

-  Many minor fixes and enhancements, from various contributors and N5KNX.
  See readme.knx for details.



1.10L (950925)

-  Compressed FBB forwarding with MSYS and NNA BBSes is improved.

-  Output redirection for non-session commands is now possible, by
  suffixing the command line with '> outfile' or '>> outfile'.  Similar
  to MS-DOS and Unix,  > means to create (by overwriting any existing
  file) the output file, and >> means to create (by appending to any existing
  file) the output file.  This feature is enabled by compiling with
  REDIRECT #defined in config.h.

  Note that console commands that spawn sessions will not accept redirection.
  Also, to shell out to MSDOS to run a dos command and specify redirection,
  you must issue it like this:  shell /c dos_cmd dos_args >outfile
  (note that no space occurs after the > [or >>]).  This trick allows Jnos
  to not strip and parse the redirection, but rather lets MSDOS do it.

-  The status line's NNTP counter is incremented while we are an NNTP
  client of another server.  Also, NNTP importation from SMTP messages
  has been fixed to not drop certain headers. (from KA1NNN and WY6S).

-  TRACESERVER feature has been fixed.

-  AX.25 connect digi path parsing has been improved to accept the syntax
  commonly used in TNCs: the via keyword, and commas between digipeaters,
  are allowed.   (from K5JB)

-  AX.25 T2 (resptime) timer added.  Its default is 1000ms, and minimum value
  is 0ms. This timer lets Jnos eliminate some redundant transmissions and
  optimize what it sends by possibly adding ACKs to I-frames.  Set this
  timer by:  ax25 t2 <value>   or   ifconfig <iface> ax25 t2 <value>.  Use
  the latter command after <iface> has been attached.  The tradeoff is:
  the larger the T2 value, the more efficient the transmissions, but the
  latency (delay) of transmitted packets will increase.  A T2 value of 0
  turns off this feature.  (from K5JB)

-  'mbox kick <bbscall>' added, permitting a single bbs in forward.bbs to
  be polled (provided the time constraints in forward.bbs permit a connect).

-  Multitasking improved to not lose memory in certain circumstances.
  (from G8FSL).

-  "remark" command added, that writes its arguments to the current output
  stream.  Similar to the MS-DOS echo command.
  Example:  remark  "Do:  source \dial_usl.nos ... to dial USL and start PPP"

-  Multi-drop kiss ports can now be individually traced (from K5JB).

-  If <area>.doc exists when a user first visits an area, its contents
  are displayed.  The AF <area> command will also display this file if
  it exists.  Example:   AF amsat
     will display /spool/mail/amsat.doc if it exists.
  USERLOG must be #defined to know when an area is first visited.
  This feature is intended to allow more info for a particular area to
  be maintained, and not clutter the /spool/areas file.

-  'mbox utc N' command dropped.  The offset of local time from UTC is
  now obtained from the TZ variable, which should be set in your
  autoexec.bat file (example:  set TZ=CDT5  -or-  set TZ=UTC0).

-  'mbox ifilter [on|off]' command added:  when this flag is set, it causes
  unexpected I-frames sent to mycall to be ignored, eliminating spurious
  mbox spawnings reported in some regions using ROSE switches. (K5JB)

-  bootp bug which truncated our IP addr fixed

-  the converse server no longer requires the Personal-info file to pre-exist
  in order to be updated.  Also, long '/who q' lines are handled properly.

-  HP95 may be #defined in config.h to allow compilation for the hp95 (but
  you must carefully choose the options you enable so jnos fits). (WA7TAS)

-  Bug fixed where the Jnos DNS server returned invalid data.

-  'tcp clean' command added, to reset all connections in a FIN wait 2 state
  (to free up our resources when a client has improperly disconnected).
  (from Selcuk Ozturk).

-  The mailbox Connect command is now transparent, if the Escape
  character is turned off.  This should permit, for example, FBB compressed
  forwards via a Jnos system.  Formerly, only digipeating was transparent.

-  The mailbox will allow both BS and DEL characters to act as correction
  characters, and telnet option processing was improved to eliminate loops.
  (inspired by Selcuk).  Also, the --more-- prompt handling is improved
  to work with Linux (and probably other) telnet clients (from KF8NH).

-  SMTP MX mail loop possibility eliminated.  Also, outbound SMTP connections
  which go idle longer than the smtp T4 timer setting, will be closed.

-  Mail index entry-length validation added, to detect damaged indices as
  early as possible.  Consult the log for notices of index damage.  Most
  damage can be handled by re-indexing an area via the index command.

-  Long lines typed into the split-screen input window no longer crash Jnos.

-  'ax25 route perm <target> <iface> [<digis...>]' command added.  It is
  like the 'ax25 route add ...' command, except the route will not be
  changed automatically.  AX.25 routes created using the 'ax25 route add'
  command are now subject to change based on the path found in incoming
  connect requests.

-  The mail2ind program now has another option: -m.  It serves to display
  the highest msgid number found while rebuilding index files, and can be
  used to correct the value stored in /spool/mqueue/sequence.seq. When the
  stored value has been improperly reset, you will find Jnos always claims
  there are "0 new" messages when certain areas are visited.  After the
  sequence.seq file is repaired, you should also delete all /spool/mail/*.usr
  files so they will be regenerated correctly.  To produce the mail2ind.exe
  program, type:  make  mail2ind
  To run it, exit Jnos and type:  mail2ind -m
  There are other options; in particular, -d<rootdir> which is used to
  specify an alternate location for your /spool/mail subtree.

-  A new command, "mbox maxusers N" lets the sysop limit the number of
  simultaneous mailbox connections allowed.  The default is 0, which
  disables this feature.

-  Finger daemon's display of info from the users.dat file is now shown
  in two lines.  Also, a new pseudo-user, "usersdat", will result in all
  user entries in /spool/users.dat being displayed. (inspired by KC6A)

-  An ip address may be routed to the loopback interface, which causes pkts
  sent to this addr to be dropped, and a HostUnreachable error to be returned.
  This thus acts as a bit-bucket interface. (from K2MF)

-  Minor fixes and enhancements, from various contributors and N5KNX.
  See readme.knx for details.



1.10k (950704)

-  Compressed FBB forwarding is now possible.  You must #define BOTH FBBFWD
  and FBBCMP in config.h.  You should expect the size of Jnos to increase
  by 15KB, and that each FBB session using compression will need an additional
  20KB (obtained from UMBs (if available and XMS was #defined) or from the
  heap.  This implementation was adapted from KF5MG's mgfbb05a distribution.
  You can increase the detail of FBB transaction logging by compiling with
  FBBVERBOSELOG defined, and setting 'mb trace on'.

-  QRZ display of British calls improved, and some db scanning bugs fixed.

-  Jnos '-b -u0' flag combination fixed to use the bios for screen output.

-  SMTP BidCheck command deleted.  This version will now ignore messages in
  the SMTP queue which it finds to have duplicate bids.  In no case will
  Jnos bounce msgs back to the sender claiming a duplicate bid was found.

-  Bids created for messages that arrived via SMTP was changed so we can
  detect duplicates even if the same message was gatewayed to ax.25 networks
  by other Jnos systems.  Updates of the bid history file are now protected
  by a lock file.

-  'ifconfig RXECHO' commands can now be specified for multidrop KISS ports.
  From VK1ZAO.

-  ftp client memory leaks corrected.  From K5JB.

-  rdate command rewritten.  By Selcuk Ozturk.

-  'finger [email protected]' added.

-  AXUI command now allows /t to toggle the header timestamp display,
  and several bugs fixed.  From Joe, K5JB.

-  EXPN smtp verb implemented differently, and VRFY verb added as a synonym.

-  NNTP server now handles NEWGROUPS and DATE verbs (from G8FSL).

-  Help files for aliases can now be read by the mbox H command.
  Put the file into \spool\help with the other mbox help commands.

-  Dialer improved.

-  Minor fixes and enhancements, from various contributors and N5KNX.
  See readme.knx for details.



1.10j (950520)

-  "rlogin" server changed to "rsysop" to better show that is is NOT a
  BSD-Unix-style rlogin server, but instead is for remote sysop access.

-  80386 compilation problems with timers fixed.

-  mailbox PIng and Finger commands now require Telnet permission to work.
  If this is not desired, compile with MBOX_PING_ALLOWED #defined, and/or
  MBOX_FINGER_ALLOWED #defined.

-  XMS memory managers are now supported (for the saving of session screens).
  Thus the XMS define now works, and the -m1 command-line option will work.
  Use of UMB ram is now possible, and is used by qrz code.

-  The root directory of a CDROM is now accessible via ftp (if permitted in
  ftpusers).

-  The SC mailbox command, and the handling of smtp msgs with multiple
  destinations, is improved.  Different bids are produced for each
  SC destination, so ax.25 forwarding will work (SMTP always did work).

-  FLEXNET packets no longer crash Jnos.

-  Expire will keep the NNTPS history file locked longer, to prevent
  trashing of the active file.  NNTP service will thus be down while
  expire is running.

-  One last (I hope) change to eliminate the occasional empty bulletin
  sent during FBB forwarding under load.

-  "domain maxclients [N]" added to limit loading while acting as a DNS
  (from G8FSL).

-  SMTP dtimeout command added, to specify how long a msg stays in the
  mqueue, being retried at 'smtp timer' intervals (unless low on memory,
  or maxclients is too constraining, etc.), until we give up and return it
  to sender.  Syntax:        smtp  dtimeout [<hours>]
  Setting hours to zero (the default) disables this capability.  (from Selcuk).

-  AXUI console command added, to permit UI (unproto) packets to be sent and
  monitored.   Usage:  axui  <iface>  [unproto_call]        (from KO4KS).

  A split-screen session is created where possible.  AXUISESSION must be
  defined in config.h to generate this code.  An axui session also allows
  a few commands:
    /c newcall   change the unproto call to <newcall>
    /i iface     change to interface <iface>
    /? or /h     display a help message
    /q, /b, /e   close the axui session.

-  Tracing may be made to a remote sysop who has either become sysop via the
  mailbox '@' command, or telnetted to port 1236.  The latter requires
  TRACESERVER be defined in config.h.  The sysop must issue the trace cmd
  as usual, and MUST be connected to an interface sufficiently faster than
  the interface being traced.  From WG7J.

-  Packets received on one interface can be copied to another like interface,
  by the command (provided RXECHO was defined in config.h):
       ifconfig <iface> rxecho {off | <echo-to-iface>}
  This code is from Johan, WG7J, who cites two interesting applications:

  Case 1:
   You have two machines connected to each other via a kiss link. Only
   pc1 has radio's. You want to 'listen' to a radio channel on pc2. Thus, on
   pc1, you add:
       ifconfig <radio-interface> rxecho <kiss-to-pc2-interface>
   Now on pc2's kiss interface to pc1, you will receive all packets heard on
   pc1's <radio-interface>.  If you then add to pc1:
       ifconfig <kiss-to-pc2-interface> rxecho <radio-interface>
   all packets received by pc1 on kiss-interface (ie. coming from pc2) will be
   send out on radio-interface. Ie. for pc2 it looks like it is directly
   connected to radio-interface, as if pc1 isn't there!

  Case 2:
   Say you have a gateway pc with radio's, and another pc with ethernet
   connected. You can monitor radio channels on the ethernet pc by setting up
   an axip link between the gateway and the pc ('attach axip ...' and then
   use the scheme above between the radio port and the axip port on the
   gateway machine.

   Note that you can monitor multi ports, although you will not be able to
   know what port a certain packet originated from.  You can NOT go transparent
   to more then one port, since an interface can only forward received data to
   one interface.

   Note also that you can monitor frames on fast ports (eg. Ethernet) but NOS
   might become more unstable when doing so, because of the large workload.

-  QRZ displays improved to handle the Winter '95 database better.  No
  attempt is made to display the century.  International call lookups work.

-  The April 1995 Buckmaster Hamcall CD is supported via the BUCKTSR define
  in config.h.  Buckmaster provides the needed TSR driver in BUCKTSR.ZIP,
  available from the "usual ftp sites" (or contact Buckmaster directly).
  A new command is needed: callserver2 tsrirq <dec_soft_irq>
  which specifies which software IRQ the driver uses.  In decimal!!

-  Handling of ridiculously long calls and IP addresses should be improved.

-  Multi-line smtp (ie RFC822) header handling is improved.

-  Convers module replaced by N2RJT's enhanced version.  Many configuration
  options are controlled by #defines:
  #define XCONVERS 1    /* LZW Compressed convers server and links */
                       Socket 3601 implies use of LZW-compressed links.
                       JNOS's LZW compression is unstable over long term,
                       so this should be viewed as experimental.
  #define CNV_VERBOSE 1   /* Verbose msgs */
                       Converse msgs can be longer instead of terser, at
                       the expense of more RAM and bandwidth used.
  #define CNV_CHAN_NAMES 1 /* Convers named channels */
                       Channels can have names, if the sysop puts them in
                       channel.dat file.  The format is simple: each line
                       contains a number followed by a space and a channel
                       name.  All linked convers nodes should use the same names!
  #define CNV_CALLCHECK 1 /* Convers only allows callsigns */
                       Some people like this, others don't.  It forces the
                       name used in convers to be a Ham callsign.
  #define CNV_LOCAL_CHANS 1 /* Convers local channels and msg-only channels */
                       Local channels only allow chatting on local node, ie,
                       the data are not sent to linked convers servers.
                       Msg-only channels only allow /msg traffic.
                       Nice for when you step out for a few minutes.
  #define CNV_ENHANCED_VIA 1 /* If convers user is local, "via" gives more info */
                       For the /who output, if the user is local, use the
                       otherwise blank "via" field to show how the user is
                       connected.  If ax25, show the port name.  If netrom,
                       show the node name.  If telnet, just say telnet,
                       since his domain name won't fit.
  #define CNV_CHG_PERSONAL 1 /* Allow users to change personal data permanently */
                       Enables the CONVERS SETINFO command, which allows
                       changes made with the /personal command to be stored
                       permanently in dbase.dat.  Nice for lazy sysops.
  #define CNV_LINKCHG_MSG 1 /* Send link-change messages in convers */
                       Sends a message on all channels alerting local users
                       whenever a link to another convers is added or
                       dropped.  When a link is dropped, all of the lost
                       users are listed on one line (or more..) instead
                       of showing "XXXXX signed off" for each individual.

-  other misc. fixes and improvements; see readme.knx for details.



1.10i (950301)

-  Exit command can now return an error code to Jnos' caller.  This permits
  a batch file to invoke Jnos and then test the errorlevel to take various
  actions depending on the numeric value given the exit command.

-  AT and other timers are now accurate over long periods. Repetitive AT
  commands no longer run twice!

-  Local message IDs may now grow to eight digits.  This does not affect
  BIDs or MIDs, but will result in more consistent reports of the last
  msg read.

-  Remote sysop can no longer issue the Shell command without args, or the
  Mail command, thus avoiding an accidental lockup.

-  (rare) Problem with locally-originated bulletins being duplicated is fixed.

-  Tail command now uses all but seven lines of the console screen (PE1DGZ).

-  Various fixes to the FBBFWD code: process destination field from forward.bbs,
  eliminate memory leak, fix occasional msg truncation or corruption.

-  Digipeater string now handled for ax.25 connect lines in FORWARD.BBS file.

-  Many packet driver fixes, and new PKSTAT command, from G8FSL.  PKSTAT
  will display the number of errors communicating with the packet driver,
  and statistics reported by many packet drivers.

-  FTP fixes: diagnose CWD to a non-directory.  Correct binwarn msg.  Add
  PASV support.  Eliminate automatic sending of message.ftp and desc.ftp files
  if the ftp passwd begins with '-'.  The DIR output can be made Unix-style
  if UNIX_DIR_LIST is #defined.  An '=' before a pathname in the ftpusers
  file will now indicate which dir is to be the initial dir.
  (from Selcuk, G4IDE, WA3DSP et al)

  Example: anonymous * /pub/wr_only 2  /pub/rw_del 7   =/pub 1
  in FTPUSERS allows the initial directory to be /pub, with Read access,
  but also permits a cd to subordinate dirs where different access modes
  are specified.

-  Monitor-style tracing (code 3) will contain date/time if MONSTAMP defined.
  Also, fix tracing of AX.25 packets when NO_BCSTS trace flag is set.

-  SMTP client will now refuse (code 550) msgs that REWRITE maps to "refuse".

-  New PI card driver, from VE3JF.

-  POP2 and POP3 servers now send multi-line output more efficiently, and
  lock the user's mailbox during updates (from Selcuk).

-  Some console Help files updated ... see cmdshlp2.zip.

-  dumpdate program added to display USER.DAT & bid HISTORY files.
  Usage is:  dumpdate [-v] file_path
  where -v implies a verbose display, and the file path defaults to
  /spool/user.dat.  dumpdate.exe is obtained by:  make  dumpdate

-  other misc fixes and improvements, see readme.knx for details.

-  developers looking for memory leaks may benefit from the memlog
  facility.  See memlog.c for details.



1.10h (941201)

-  FBB batched forwarding added (by KF5MG).  Enabled if FBBFWD is #defined
  in config.h.  THIS IS A PRELIMINARY VERSION ... more to come later.

-  XP setting remembered and restored at subsequent connects (by DL1BJL).

-  MBOX RESET <callsign> command added (by N2RJT).  Forces a disconnect
  from the mailbox of the indicated callsign.

-  Xpert-mode prompt now contains current message number.

-  Color tracing enabled via -gN command-line option.  N=0 is the
  default, and N=1 is for grey-scale monitors, and N=2 for color monitors.
  N=1 or 2 assumes ANSI.SYS was loaded.  By PE1DGZ.

-  AX.25 users can be prompted for login name and password, if AX25PASSWORD
  is defined in config.h.  (KF5MG)

-  More files added to CMDSHELP.ZIP.  Some files updated, too.

-  Protocol-specific permissions name checked in ftpusers (and is used instead
  of univperm):  (N2RJT)
       tcpperm - telnet login to mailbox
       ax25perm - ax.25 login to mailbox
       nrperm - netrom login to mailbox
       confperm - convers signin
       pppperm - PPP's call to userlogin
       ftpperm - ftp login
       tipperm - tip login to mailbox

-  Sessions can be toggled between single and split screen, by using the
  "session N split on|off" command (N2RJT).

-  Status line counters extended to include SMTP, NNTP and POP sessions,
  and are not displayed when zero (KD1SM).

-  A asy interface may now have bpq-style checksums added and checked on
  KISS packets if the interface was attached with the attach flag "c".
  The format of the attach command is:
    attach asy <ioaddr> <irq> ax25 <label> <bufsize> <mtu> <speed> c
  Submitted by OH2BNS.  Note: requires POLLEDKISS be defined in config.h.

-  The packet ID used for encapsulated packets can be changed from the
  default 94, to 4, by the "IP ENCAP 4" command.

-  Jnos will now remove NNTP locks at startup  (unless -l was given on the
  command line).

-  SMTP messages which are subsequently forwarded as bulletins, will have
  unique BIDS assigned based on their entire Message-Id, thus eliminating
  spurious DUPE BID rejects.  From KF5MG.

-  SLIP/PPP problems with invalid frees at detach or Jnos exit, have been
  fixed.

-  Multiple entries for the same BBS in the forward.bbs file are now OK,
  provided each entry is for a different time range.

-  Many miscellaneous fixes, and small enhancements.



1.10g (940826)

-  Help command enhancement, by N8FOW.  The console command set is now
  documented by online help files stored in /help by default.  This dir
  can be changed by redefining CmdsHelpDir in nos.cfg.  The archive
  CMDSHELP.ZIP contains the help files which should be placed in the
  help directory.  For example:    mkdir \help
                                   pkunzip -e a:cmdshelp \help

  The help command takes one argument, the command for which help is wanted.
  The help file will be displayed only if that command was compiled into
  Jnos.

-  NNTP client now supports LZW compression and GMT/UTC timezone.  A new
  command, "nntp firstpoll #days" was added from G8FSL, which determines how
  many days of news are requested by the initial poll to a new server.  Another
  new command, "nntp dir old=new" defines how a newsgroup is renamed locally.
  Mappings are examined in the same order they were specified.  Null mappings
  are permitted, which serve to delete the first part of a newsgroup name.
  Use "nntp dir old==" to delete a mapping specification.  For example:
      nntp dir rec.radio.=
      nntp dir amateur.=
      nntp dir shortwave=swl
      nntp dir usl.maillist.tcp-group=tcp

  would map rec.radio.swap to swap,  rec.radio.amateur.packet to packet,
  rec.radio.shortwave to swl, and usl.maillist.tcp-group to tcp.

-  NNTP server supports GMT.  No more infinite wait for the history lock;
  if a history lock persists this fact is logged and nntp exits.  The
  "nntp firstpoll #days" command was added, as described above.

-  Mailbox will no longer claim there is new mail in an area that is empty.
  A new command, XP, was added that toggles a flag describing whether a
  telnet user desires single-character or complete-line reads, when prompted
  for input.  This would help AX.25 users who reach Jnos via a T gateway
  command.

  Thanks to Jan, PE1DGZ for modifications to show that unread personal
  mail is waiting via the MAIL string on status line 1.  I added the
  "mbox mailfor watch call_1 ... call_n" command to permit specification
  of which mailboxes are to be checked.  To initiate this feature, you
  must activate mailfor (eg, "mbox mailfor 600") and set the watch list
  (eg, "mbox mailfor watch n5knx check").  To remove the MAIL string,
  first read the mailbox's last message, and then force the mailfor process
  (eg, "mbox mailfor now") or await the mailfor timer's maturation. Note
  that the calls to be watched must not appear in /spool/areas!

  The sysop's request to change to an area is now validated, to avoid
  problems when an invalid name is given.

-  Async driver now supports chained interrupts, a 6th serial port, and
  NRS-CTS protocol.  A chained interrupt is designated by suffixing the
  irq by "_c" in the attach comand.  Remember the first port in the chain
  should NOT have the "_c" flag, and the last port specified with chaining
  will get the best response, since it's serviced first.  Since PCs are
  edge-triggered, chaining will work erratically unless a board is designed
  to support it.

  The NRS-CTS protocol emulates the behaviour of the Tiny-2 TNC in a
  Netrom-style node stack, and is specified (when NRS is #defined) by a
  'n' attach flag, e.g.  attach asy 03f8 4 nrs nstk 512 256 9600 n

  Here's the description of the wiring, provided by N2RJT:

  The hexipus and other diode matrixes for connecting NetROM-style nodes
  have always been a source of confusion.  This is an explanation of how
  and why it works.

  The hexipus was designed to connect two Tiny-2 TNCs with straight-thru
  cables. The Tiny-2 was designed to connect to a PC (9-pin connector)
  with a straight- thru cable, just like a modem.  That means the Tiny-2
  is DCE:  it receives data on the TXD pin, and sends data on the RXD pin
  - exactly the opposite of what seems right.

  The hexipus is wired like a null-modem, except with diodes.  That much
  makes sense - but you have to understand that the hexipus isn't a
  null-modem.  It is the opposite:  a null-terminal, null-computer, or
  null-DTE.  In other words, the diode orientations are exactly the
  opposite of what they would be if the hexipus were a null-modem.

  The other important thing to understand is that the data signals go thru
  the diodes in a different direction from the flow control signals.  This
  is easiest to explain in terms of voltage levels and idle states.  The
  purpose of the diodes is to allow a single line with non-idle state to
  override all the other lines with idle states.

  Data lines: the idle state is a STOP  bit = 1 = MARK  = V-
              the data state is a START bit = 0 = SPACE = V+
              One V+ must be able to override multiple V-

  Flow lines: the idle state is V+
              the flow state is V-
              One V- must be able to override multiple V+

  So, this is what the matrix must look like:
  -----------------------------------------------------+
            -              |           -               |  Symbols:
  Idle RXD --->|--  ~      | Idle RXD --->|--  +       |
            -     |--- TXD |           +     |--- TXD  |     + Positive Voltage
  Idle RXD --->|--         | Send RXD --->|--          |     - Negative Voltage
  -----------------------------------------------------+     ~ No current flow
            +              |           +               |
  Idle CTS ---|<--  ~      | Idle CTS ---|<--  -       |     All signals flow
            +     |--- RTS |           -     |--- RTS  |     from left to right.
  Idle CTS ---|<--       ^ | Send CTS ---|<--          |
                   pullup|                             |     Resistor = 4.7K ohms
                   resistor to V+                      |
  -----------------------------------------------------+

  So the simplified 2-port diode matrix would look like this (9 pin sense):
  2 RXD-->|--TXD 3
  3 TXD--|<--RXD 2    The RXD diode arrow always points to TXD
  5 GND------GND 5
  7 RTS-->|--CTS 8    The RTS diode arrow always points to CTS
  8 CTS--|<--RTS 7

  The more common cables are shown below, assuming 9-pin connectors, but
  showing the 25-pin connector assignments in parentheses.  Tiny-2s have
  the pullup resistor internally, but PCs don't.  The usual way around
  this is to solder the resistor to an unused pin such as DTR, and have
  the PC software assert DTR to supply the V+.

  PC NOS       HEXIPUS | PC MSYS      HEXIPUS | TNC-2        HEXIPUS | Tiny-2
  ==================== | ==================== | ==================== | ==========
  TXD 3(2) -- 2(3) RXD | TXD 3(2) -- 2(3) RXD | RXD 2(3) -- 2(3) RXD | RXD 2
  RXD 2(3) -- 3(2) TXD | RXD 2(3) -- 3(2) TXD | TXD 3(2) -- 3(2) TXD | TXD 3
  GND 5(7) -- 5(7) GND | GND 5(7) -- 5(7) GND | GND 5(7) -- 5(7) GND | GND 5
  RTS 7(4) -- 8(5) CTS | DTR 4(20)-- 8(5) CTS | DTR 4(20)-- 7(4) RTS | RTS 7
  CTS 8(5) -- 7(4) RTS | CTS 8(5) -- 7(4) RTS | CTS 8(5) -- 8(5) CTS | CTS 8
  DTR 4(20) asserted   | RTS 7(4) asserted    |                      | NR  9
                       |                      |                      |
  Solder resistor at PC| Solder resistor at PC| Connect pins 10 & 23 | Connected
  end of cable to CTS  | end of cable to CTS  | at TNC-2 end of cable| straight
  and DTR which is V+. | and RTS which is V+. | to enable NetROM mode| through.

  Jim  WA2ZKD  | @WB2PSI.#WNY.NY.USA.NA | This file: wiring\hexipus.txt
  Dave N2RJT   | @sw.wb2psi.ampr.org    | 18-Feb-1993


-  Encapsulation RX using protocol code 4 is supported (KA9Q).

-  LZW compression added for ftp client's put, mput and rput commands (when
  in ascii mode).  Offers to do LZW are discontinued after the first rejection
  in an ftp session (unless a 'reclzw on' command is issued).

-  A printer as an output device is now supported if PRINTEROK is #defined.
  If a printer name is used as a local area name, SMTP will print the message
  followed by a FormFeed (and no index file is written).  If the printer is
  offline or has an error condition, the smtp message remains in mqueue, and
  is retried at every maturation of the smtp timer.

-  Bids found by the SMTP server in non-dup messages, are now stored into
  the bid history file.

-  LZW compression added for POP3 client and server, from N2RJT.  New command,
  "pop lzw [on|off]" added.

-  New command, "lzw trace [on | off]", added.  If on, when a socket is
  closed, its compression statistics are written to the console.  (N2RJT)

-  IP heard and ax25 heard now have correct counts.  From VE3DTE.

-  115200 baud is now supported in the attach and dialer commands.

-  Dialer now displays progress properly.

-  SMTP "New mail for ..." and POP "New mail arrived for..." messages can
  be eliminated by setting the smtp trace value and pop trace value to 0.  All
  preexisting trace values should be incremented by one to display the same
  results as previous versions on Jnos.



1.10f (940704)

-  index files are MUCH more robust.  You should force a rebuild of
  your indexed areas when you first start 1.10f (issue 'index *').

-  tip dialup code fixed to recover from hangups, idle timeouts, and
  shutdowns.  tip user names now shown by 'mb status'.

-  async driver replaced with pa0gri's version, which is faster and
  handles rts/cts better.

-  nntpcli improved to maintain indices and timestamps (tnx VE3LUM), and creates
  only subscribed newsgroups.  If you don't want indices created, set a
  new spool dir, such as:  nntp dir /newsdir /spool/news

-  expire now can expire NNTP articles and history files, for both NNTP
  client and server JNOS configurations (tnx VK5XXX).  Expire uses a different
  procedure which seems to eliminate trashed indices, and will remove areas
  that become empty after a succesful expire.

  To expire newsgroups, enter their names into /spool/expire.dat, PREFIXED
  with '!'.  Example:  !rec.radio.swap 7

  To access newsgroups as areas (NNTP client only), put the newsgroup name
  into /spool/areas.  Example:  rec.radio.swap -  for sale/swap postings

-  forward.bbs optional destination field works again.

-  'pause #secs' command added.

-  pwait() calls added to index-scanning routines to more equitably
  share cpu time.

-  G8FSL's smtp hopper code added.  If you define HOPPER in config.h
  and recompile Jnos, then smtp will deliver to a gateway serving a
  destination if one can be found in the routing tables.

-  TNOS/KF5MG's rlogin and QRZ callbook server code added.
       To run the QRZ callbook server, first compile with QRZCALLB
       defined in config.h, then issue these commands before starting
       JNOS:           set qrzdrv=E:     (or whatever you use)
                       set qrzpath=\dir\path           (to dir containing
                                                       callbkc.dat/.idx)

       Then in Jnos, issue:    callserver host k9dog   (your call)
                               start callbook

  The rlogin server is really a responder for telnets to port 513, that
  logs you into the mailbox, then invokes the sysop (@) command for you.

-  info cmd displays compiler version.

-  "early" disconnect from the mailbox is re-enabled, with code added to
  prevent unwarranted side effects previously noted.



1.10e (not released)

1.10d (940527)

-  --more-- prompting should accept single character responses again, for
   tip and telnet users.  Use space to advance to next page, CR for next
   line, and q to quit.

-  MC/MM commands now accept a pathname as well as an area, for the sysop.

-  more tests to eliminate unproductive forwarding connects.  Additional
   logging of mbox exits.

-  locking change to help assure the index files stay in sync.

-  MBOX now remembers your position and msg status (eg, delete) when
   new msgs arrive.

-  G8FSL's multitask change applied.

-  morecore will accurately report memory status when it fails, and will
   not log allocation failed messages as frequently.



1.10c (940417)

-  param <iface> rcvmode <n>
   will now set the receive mode for a packet driver <iface>,
   where <n> is one of the following

   1     turn off receiver
   2     receive only packets sent to this interface
  *3     mode 2 plus broadcast packets  *DEFAULT*
   4     mode 3 plus limited multicast packets
   5     mode 3 plus all multicast packets
   6     all packets

   This is primarily useful for tracing the ethernet (mode 6), or for
   limiting the amount of packets jnos sees (mode 2, combined with the
   appropriate hardcoded arp entries for a gateway, etc... so that
   ip routing still works, since mode 2 basically disables the arp
   mechanism.)

- turning off watchdog while shelled out without multitask on, fixes reboots
 after 5 minutes

- 'convers channel' sets or shows the default channel for users

- 'rewrite <address>' will show the result of the mail rewrite process
 (from an idea of Doug Crompton, wa3dsp)

- '-i' startup option forces all index files to be rewritten at startup

- one more forward.c usesock() fix.

- 'remote' command socket hanging around fixed.

- tipmail ^R echo fixed.

- clean up of a lot of compiler warnings.



1.10b (940318)

- forward code caused screen output socket to be lost at time; fixed
 (from n5knx)

- socket reference count fix in session.c

- a message sent to 'call' from the bbs, that gets rewritten to a different bbs
 is now forwarded as 's call < from' instead of 's call @ call < from'

- keyboard process stack size increased to 512.

- bugfix in ax25 recover timer for retry counts exceeding the backoff limit.

- forward.c bid mangling bug fix (creeped into 1.10a trying to fix long msg-id's).

- bug fix in netrom socket code that crashed system when a netrom mailbox
 connect came in.


1.10a (940309)

- alias commands show in the node prompts if turned on with
 'mbox showalias on'
 (They show before the ? in the short prompt, eg BBS,TEST,?,B,C,...
  and on a separate line in the long prompt. )

- status window is disabled while shelling out with multitask enabled.

- status window netrom session timer fixed.

- ftp server and client now use the 'SYST' command to get remote system type.

- pathname.c code fixed for single character filenames. Eg. 'dir t' now works.

- bbs more prompt works with help, areas, and motd and register text info
 files.

- ax25 recovery timer fixed (from n5knx).

- alt-f11 works as fkey (fix from n5knx).

- ftp mput fixed. (from kc2ct).

- forward bid protected against long bids. Error return code on
 some file opens checked. From Jim Dugal, N5KNX.

- bug fix in echo server.

- finished SAM callbook support. Not in regular distribution executable.
 Define SAMCALLB in config.h  Also fixed a bug for Club call license class.



1.10 (940228)

- JNOS now has a status display. This shows on the first line:
 time, heap and core free memory, number of connections to the
 different servers. Then a list of active sessions, where sessions with
 data waiting are blinking.

 The 2nd line shows the users connected to the bbs. A status symbol
 in front means the following:

 none - user is idle
    * - user is a bbs
    @ - user is in sysop mode
    ! - user has gatewayed out
    # - user is reading or sending mail
    = - user is transfering data (up/download)
    ^ - user is in convers or sysop-chat mode
    ? - use is in none of the above, but not idle...

 Eg: BBS: *w0rli johan #ka7ehk !n7ifj

 (lines 1 and 2 are the 'system' window)

 On the 3rd line, it shows data depending on the current session.
 Always displayed are the current session number and type.
 If the sessions are network connections, displayed are remote connection
 name,  tx-queue (bytes for tcp, packets for ax.25), state of the connection.
 It then shows the retry timer, with current time left, and initial value.

 In repeat, more or look sessions, the 3rd line show the command, filename
 or user/socket for the session.
 In the command session 3rd line shows the current directory.

 (the 3rd line is the 'session' window)


 The number of status lines displayed can be set with the '-u#'
 commands line option. '-u0' turns it off. Default is '-u3'

 NOTE: if tracing is enabled, this will 'bleed' through the status window.
 This is NOT a bug, but is inherent to the way tracing works in JNOS.
 (It would take a major rewrite to fix.) The status window will be
 rebuild about twice a second to overcome this.

- new commands line option to set colors of the different windows
   (Only if SPLITSCREEN is compiled in !)

   -wf+b : set the foreground and background color for the 'system' window
           (The top 2 lines of the display, if not disabled with -u option)
           default: white on magenta
   -xf+b : set the foreground and background color for the 'session' window
           (The line underneath the 'system' window, if not
            turned off with the -u option)
            default: white on blue
   -yf+b : set the foreground and background color for the 'main' window
           (The session output window)
           default: the system colors when jnos is started.
           (most often lightgray on black)
   -zf+b : set the foreground and background color for the 'split' window
           (The text input window in 'split screen' mode);
           default: white on green

   The 'system','session' and 'split' window always have the 'high intensity'
   bit set in the color attribute. This allows those windows to stand out
   on monochrome systems.

   f and b colors are numbers, and + is the + character:
   0=black 1=blue 2=green 3=cyan 4=red 5=magenta 6=brown 7=white/gray

   EG: for blue text on a red background for the 'main' window,
       nos -y1+4
   To have this, with black text on white background 'system' system window,
       nos -y1+4 -w0+7

- new 'look' command. You can now peek into a user on the bbs, or any non
 local socket. If looking at a bbs user, you can initiate a 'chat' with
 the user...

 'look <user|socket#>' will bring up a window that follows the user
 or socket.

 There are a few commands available:
 /? or /h - will show a sort help line
 /m <msg> - send a message to the user. User sees: '<sysop>: message text'
            (only if looking at a bbs user)
 /c       - initiate a 'chat' with a bbs user. The bbs will suspend, and
            you can talk with the user.
 /q or /b - if in 'chat' mode, finishes it, and dumps the user back in the bbs.
            if in 'look' mode, finishes looking at the user/socket.

  Note: if not in 'chat' mode, all non-command strings will be ignored.

  Looking at non-bbs socket might be helpful debugging things, or seeing
  what an ftp user or a smtp user is doing. Note that often you don't see
  what you expect: eg. ftp user sockets don't show the data transfered,
  including directory listing, because this occurs on a separate socket
  (ie. not seeing it is NOT a bug, for once...8-) )

- no limit (other then memory) to the number of sockets in the system.
 (command line option -s is not used anymore !)

- 'netrom interface' command changed a bit:
 new format 'netrom interface <iface> <quality> [<min-bc-quality>]'
 If min-bc-quality is not set, the 'netrom minquality' value is used.

 Only routes of the min-bc-quality and better will be broadcast in a
 nodes broadcast in this interface. If min-qual = 0, no nodes are broadcast
 (Ie. this is the non-verbose mode of versions < v1.10)
 Eg:  netrom interface ax0 224 180  -> nodes >= 180 are broadcast
      netrom interface ax0 224 0    -> only ourself is broadcast
      netrom interface ax0 224      -> nodes >= 'minquality' are broadcast

- Polled Kiss support (included in 1.10x11) now works. It has been tested
 with a KPC-3 with polled kiss eprom. The parameters needed in the tnc
 are CHECKSUM ON,MYDROP <tnc id>,POLLED ON, INTERFACE BPQ, then a RESET

- protection against opening device files like CON,AUX, etc (as 'advertized'
 in 1.08) now works. Ie. no more lockup when fingering 'con' etc...

- the trace session (F9) now doesn't take any extra sockets. Also, you can
 now issue commands in the trace session...(I have No Idea what that is good
 for :-) 8-) )

- new mailbox 'XR' command. Shows or sets 'reply-to' header status.
 Default is off. 'XR' shows state, 'XR on|off' sets the state.
 If turned on, and user has registered an email address, messages sent by
 this user will include a 'Reply-To: email-address' line. The state is
 'remembered' across logins/logouts.

- new mailbox 'PIng <host>' (from Doug Crompton, WA3DSP)
 Check if a host is alive. Returns RTT.

- new PI driver from Dave Perry, VE3IFB

- bug fix in 'ax25 bbscall' if used after non-ax25 interfaces were attached.

- bug fixes for local tcp links, and also for the heapsize memory value,
 for ftp login 'anonymous ok' message, and for filename creation effecting
 the ftp server, and mailbox d,u,w&z commands.

- fixed long time bug in scc driver allowing an already existing interface
 name to be used again.

- fix in smtp tick for low memory conditions. From Andrew Benham, G8FSL

- mailbox negiotiates a few telnet options. From Wayne Schellekens, VE4WTS.

- 'icmp timeexceed [<on|off>]. Default is on. If turned off, no ICMP
 'time exceeded'message will be sent when the ttl of an ip packet to be
 routed becomes 0. This causes the system to be 'invisible' for
 traceroutes, and might be useful for Internet gateways.

- 'mbox alias [<alias>] ["cmd"]' sets or shows alias commands for the
 mailbox. To use an alias, the user has to type the FULL alias. Instead
 of <alias>, <cmd> will be executed by the node. In the mailbox,
 a user can type 'ALIas' to get a list of sysop-defined aliases.

 Without arguments, it shows the current aliases.
 With only the <alias> argument is show this alias, if defined.
 With <cmd> is add, redefines or clears an alias.
 Eg. to add a new 'BBS' command to the node shell:
       mbox alias bbs "c port bbscall"
       mbox alias sysop "@"            -> allow 'sysop' command
 Or to override the CONV command (or add one if you don't have convers
 compiled in) and letting users use a remote convers system :
       mbox alias conv "t <conv.serv.ampr.org> 3600"
 to delete an alias
       mbox alias myalias ""
 or to change, simply redefine it
       mbox alias bbs "c newport newbbscall"

- mailbox 'operator' is now sends a message to the sysop identifying
 the user that initiates the 'sysop-chat'

- bug fixed from x16:
 - forward subject line
 - mailbox 'd,u,w,z' commands work correct with multiple paths

- 'callserver' and mailbox 'CAll' command are gone !
 This can be defined with an alias (saves code !):
 eg:  mbox alias call "telnet callserverhost callserverport"

- 'fkey' will now list all keys with their definition
   (S=Shift, C=Control, A=Alt. Eg. SPgup = Shift Page-Up)

- ftp server sends 'anonymous login ok' message to user names that will
 resolve into anonymous, unknown or unprotected (ie. password = *) logins.
 This was in 1.10x16, but undocumented.

- a new nntp server is included from OH2BNS. *** This is UNTESTED *** I've
 only made sure it compiles clean.! If it doesn't work, copy nntpsold.c to
 nntpserv.c, and rebuild !

 From OH2BNS:

 This file describes my modifications to the NNTP server code in JNOS.

 The server now supports all forms of all RFC977 commands except NEWGROUPS.
 The most significant change is that POST command now works. Changes to
 other commands are less significant but still vital to get the server
 to work with "third-party" newsreaders. Also supported are XHDR, XOVER,
 XINFO, XLZW and DEBUG of which XHDR and XOVER are new commands.
 The modifications were made under JNOS 1.10x12 and 1.10x15 and tested
 also under JNOS/Linux 1.09 alpha 2 and 3. The code works as is on all
 these versions.

 Here's a short list of the modifications I remember doing...

 - Fixed LIST

 - Implemented <MessageId> form of STAT, HEAD and BODY commands

 - Implemented POST

 - Posting to unexisting newsgroups now denied.
   If message has no valid newsgroups in "Newsgroups:"-header
   the message ends up in JUNK (= spool/news/forward).

 - Added console command 'nntp create' to create new newsgroups.
   Usage is 'nntp create <newsgroup> [y|n]' where 'y' means
   that you can post to this group.

 - Cleaned output of HELP

 - Implemented XHDR and XOVER.
   Command syntax is XHDR header [range|MessageId] and XOVER [range]
   These don't handle continuation headers correctly and XOVER isn't
   fully implemented (I don't even know what all the last field
   may contain).

 - The server now checks incoming message headers more strictly.
   All incoming articles should have from, subject and newsgroups.
   If the article is submitted with IHAVE it should have also
   message-id, path and date. Empty headers are removed. Xref,
   date-received, posted, posting-version, received and relay-version
   headers are removed. Date, path, message-id and lines headers
   are added if needed.

 - Message-id now checked against embedded whitespaces and >'s.

 - History file is locked during article transfers

 - Implemented nntp access feature. This can be toggled with
   'nntp access on|off'. File spool/news/access is read and
   connected host is given read, post or no access according to it.

   # Example file /spool/news/access
   #
   # Only first match is counts
   #
   # host:permissions:
   #
   # For some reason we don't want this host here
   notwanted.ampr.org::
   #
   # All other ampr.org hosts can read and post
   *.ampr.org:RP:
   #
   # Host foobar.com can only read
   foobar.com:R:
   #
   # All other hosts will be refused access

 - Small fixes here and there, can't remember all of them...

 As soon as I find enough time and enthusiasm I will look into adding
 handling of cancel messages and maybe some sort of nntp message
 logging.

 All this is not very rigorously tested since tcp/ip activity here is
 very low. The code seems to work just fine with newsreaders such as
 WinQVT/Net's newsreader and GNUS (under Gnu Emacs).

 73 de Tomi

 Tomi Manninen            [email protected]
 [email protected]     [email protected] [44.139.8.46]

- added RIP-2 from Jeff White, N0POY
 (not in the standard distribution. Define RIP in config.h)

   RIP-2 for NOS

   Introduction

   This document covers the implementation of RIP-2 (RFC 1388) in
   NOS.  Specifically the WG7J version of NOS.  RIP-2 is an
   enhanced version of the RIP protocol (RFC 1058).  RIP and RIP-2
   are an interior gateway protocol (IGP).  RIP-2 for NOS was
   implemented by Jeff White, N0POY.

   FEATURES

   The NOS implementation implements all features of the normal RIP
   protocol (RFC 1058) and all features of the RIP-2 protocol (RFC
   1388) except multicasting (which NOS does not currently
   implement) and Route Tags (NOS does not implement any EGPs).
   Features include:

   Routing Domains

   Authentication

   Proxy routing

   Filtering of naughty nodes

   Optional refusal of a default route

   Enhanced logging and tracing

   Route subnet masks correctly maintained

   Optional refusal to accept older RIP version broadcasts

   Mixing of RIP-1 and RIP-2 support


   NOS RIP COMMANDS
   ----------------

   RIP ACCEPT <gateway>

   The RIP ACCEPT command resumes the acceptance of RIP broadcasts
   from a specific node given in the <GATEWAY> field.  Ex:  RIP
   ACCEPT 192.55.248.1  or   RIP ACCEPT skeggi.tcman.ampr.org

   RIP ADD <DEST> <INTERVAL> [<FLAGS>] [<RIPVER>] [AUTH <PASSWORD>]
   [RD <routing domain>]

   The RIP ADD command adds a node to the list of stations that are
   to be broadcast to with the local nodes routing table.  <DEST>
   is the destination node, usually a broadcast address.
   <INTERVAL> is the number of seconds between broadcasts.  <FLAGS>
   are the RIP flags used (see below for the flags), it is a
   hexadecimal number.  <RIPVER> is the version of the RIP
   broadcasts.  This may be a 1 or 2.  The AUTH identifier preceeds
   the authentication password to be included with the RIP
   broadcasts to this destination.  The RD identifier preceeds the
   routing domain number.  This number must range from 0 to 65535.
   The authentication fields and routing domain fields are only
   valid with RIP-2 broadcasts.  The password must be 16 characters
   or less.  Printable ASCII characters are recommended, but not
   required.

   RIP FLAGS

   0x01    Do split horizon processing

   0x02    Include ourselves in the routing broadcast

   0x04    Broadcast RIP packets (default type)

   0x08    Multicast RIP packets (not implemented) (RIP-2)

   0x10    Poisoned Reverse on

   0x20    Authentication data to be included in broadcast (RIP-2)

   Recommend flags are Split Horizon, and Poisoned Reverse or 0x11.
    Authentication and routing domain data entered here only
   applies to the outgoing RIP broadcasts.  See RIP AUTHADD and RIP
   AUTHDROP for entering acceptable passwords and routing domains.

   Example:    RIP ADD SKEGGI.TCMAN.AMPR.ORG 30 0x31 2 AUTH frodo RD
   2

           RIP ADD BIGGUS.TCMAN.AMPR.ORG 300 0x11 1

   RIP PROXY <SRC> <DEST> <INTERVAL> [<FLAGS>] [AUTH <PASSWORD>]
   [RD <ROUTING DOMAIN>]

   The RIP PROXY command adds a node to the list of stations that
   are to be broadcast to with the local nodes routing table.
   <SRC> is the node that the broadcast will "point" to.  <DEST> is
   the destination node, usually a broadcast address.  <INTERVAL>
   is the number of seconds between broadcasts.  <FLAGS> are the
   RIP flags used (see below for the flags), it is a hexadecimal
   number.  The AUTH identifier preceeds the authentication
   password to be included with the RIP broadcasts to this
   destination.  The RD identifier preceeds the routing domain
   number.  This number must range from 0 to 65535.  The
   authentication fields and routing domain fields are only valid
   with RIP-2 broadcasts.  The password must be 16 characters or
   less.  Printable ASCII characters are recommended, but not
   required.

   RIP FLAGS

   0x01    Do split horizon processing

   0x02    Include ourselves in the routing broadcast

   0x04    Broadcast RIP packets (default type)

   0x08    Multicast RIP packets (not implemented) (RIP-2)

   0x10    Poisoned Reverse on

   0x20    Authentication data to be included in broadcast (RIP-2)

   Recommend flags are Split Horizon, and Poisoned Reverse or 0x11.
    Authentication and routing domain data entered here only
   applies to the outgoing RIP broadcasts.  See RIP AUTHADD and RIP
   AUTHDROP for entering acceptable passwords and routing domains.

   Proxy RIP is tricky, complex and not needed for normal use.  Do
   NOT use proxy rip unless you understand what you are doing.
   Proxy RIP's primary use would be to advertise routes to another
   machine that is aquiring routing information via another routing
   protocol.  See RFC 1388 for further details.

   RIP DROP <dest> [<DOMAIN>]

   RIP DROP removes a routing broadcast entry.  If a RIP-2
   broadcast was entered, the correct routing domain needs to be
   entered, since it is possible to broadcast multiple routing
   domains to the same address.

   Example:  RIP DROP SKEGGI.TCMAN.AMPR.ORG 2

   RIP AUTHADD <interface> <routing domain> [<password>]

   RIP AUTHADD adds an acceptable routing domain and optionally a
   password to a specific interface.

   Example:    RIP AUTHADD ax0 2 frodo

           RIP AUTHADD en0 3

   RIP AUTHDROP <interface> <routing domain>

   RIP AUTHDROP removes an acceptable routing domain (and password
   if any) from a specific interface.

   Example:    RIP AUTHDROP ax0 2

   RIP REJECT <version>

   RIP REJECT is used to ignore older RIP broadcasts, as they may
   cause undesirable routing table alterations.  The version number
   is the version number and below that are ignored.  RIP version 0
   (XNS RIP) is always ignored.  The default is 0.  To ignore RIP-1
   broadcasts:  RIP REJECT 1 would do the job.

   RIP FILTER <ON|OFF>

   RIP FILTER will cause advertisements to the default route
   (0.0.0.0) to be tossed and ignored.  By default this is off.
   This can serve as a LID filter.  Default routes should NOT be
   advertised, unless there is a specific reason (ie this machine
   is a gateway to the rest of the Internet).

   RIP MERGE <ON|OFF>

   RIP MERGE will cause overlapping routing entries to be merged
   into one routing entry.  For example N0BEL.TCMAN.AMPR.ORG is a
   route to 192.133.30.0/28, and 192.133.30.16/28, with merging on
   this would become a single entry of 192.133.30.0/27.

   RIP REFUSE <gateway>

   RIP REFUSE will reject all RIP broadcasts from the GATEWAY
   station.  RIP ACCEPT is the opposite.  By default all stations
   are accepted.

   RIP REQUEST <GATEWAY>

   RIP REQUEST asks the gateway station to send a routing table
   now, rather than waiting for periodic updates.

   RIP STATUS

   RIP STATUS will display various statistics for RIP-1 and RIP-2,
   RIP broadcasts, RIP refusals, and acceptable Interface, Domain
   and Password combinations.  It also displays the refusing
   version level.  The DEFAULT interface is for every interface.
   Thus unless removed, and RIP-2 broadcast with a domain of 0 does
   not require a password and will be accepted.

   RIP TRACE <level> [<FILE>]

   RIP TRACE will begin tracing RIP operations.  The higher the
   level, the more detailed the logging.  Level 9 is the useful
   maximum, with level 0 (the default) being no logging.  If a file
   is specified, logging will go to that file, else logging appears
   on the console.

   RIP TTL <time-To-LIVE>

   RIP TTL sets the time-to-live before RIP entries expire from the
   routing tables.  The default should work for almost all cases.







1.10x16 (940208)

- ftpuser permission added NO_LINKEDTO is 262144. If set, this disables
 the use of the '*** LINKED TO'. This solves a security hole. It should
 probably be added to the 'univperm' entry in your ftpuser file, and
 any other appropriate entries.

- mailbox convers access is now with 'CONVers' command. 'CONV' gets the
 user to channel 0, and 'CONV n' to channel n.

- starting tcp servers doesn't create a new process anymore (ie. they don't
 show up in the 'ps' display anymore !) This is now handled in the network
 process. From KA9Q.

- 'mem minalloc' sets minimum number of bytes to allocate per malloc() call.
 Setting this to a sensable value like 32 or 64 might prevent too much
 memory fragmentation for the realloc scheme to work effectively.
 Default = 0, ie no minumum allocation size;

- forwarding speed is fixed. It now takes a few seconds to scan through
 300+ messages to check on forwarding, instead of several minutes...

- added command line -e and -t options for autoexec.nos debugging.
 -e pauses after lines with errors. -t asks if you want to execute a line
 before it is processed. 'y' executes, anything else skips the line.

- all *.lck in the /spool/mail directory now get deleted at startup. This
 can be turned off with the '-l' command line option.

- a new file '/spool/names.dat' is read when mailbox messages are sent.
 If the file exists, and if the user's login name (most often the call)
 is found, the user's full name is used in the 'From:' line of the message
 (modified from code by Pierpaolo IW5DHE ([email protected]) )

 EG. in names.dat 'wg7j Johan. K. Reinalda', then a message sent by wg7j
 in the mailbox will show :
 From: Johan. K. Reinalda <wg7j@hostname>

- config.h gives the option for end forwarding with Ctrl-Z instead of /EX
 This has caused a problem with forwarding by some European systems.

- in the mailbox, if an email address has been given during registration,
 messages sent will include a 'Reply-To: ' header with this address.

- mailbox registration (if compiled in) can be disable with
 'mbox register off'. It defaults to on.

- ALL AX.25 parameters are now configurable per interface. The 'ax25 xxx'
 command sets the default values, and the 'ifconfig <iface> ax25 xxx' command
 sets or shows the interface specific values. (Note that some commands,
 eg. 'ifconfig iface paclen' have changed format ! These are marked with *)
 'ifconfig <iface> ax25' shows all values. The new commands are:
 ifconfig <iface> ax25 bbscall *
                       bctext *
                       blimit
                       cdigi *
                       irtt *
                       maxframe
                       maxwait -> new, sets max retry time-out value in ms.
                       paclen *
                       pthresh
                       retry
                       timertype
                       t3
                       t4
                       version
                       window

 NOTE: as a result of this 'iconfig' NO LONGER takes multiple subcommands
 on one line. They have to be broken up now !
 eg. 'ifconfig ln0 netmask ffffff00 broadcast 255.255.255.255' is invalid,
 should be 'ifc ln0 net ffffff00' and 'ifc ln0 broad 255.255.255.255' !

 NOTE2:
 If you want to change the system default ax.25 parameters, you now need
 to do so BEFORE attaching interfaces! (Eg. ax25 irtt 2500) After attaching,
 you should use the 'ifconfig <iface> ax25' command to change it per
 interface.


- Most TCP parameters are now configurable per interface. The 'tcp xxx'
 command sets the default values, and the 'ifconfig <iface> tcp xxx' command
 sets or shows the interface specific values. The new commands are:
 ifconfig <iface> tcp blimit
                      irtt
                      maxwait
                      mss
                      retries
                      syndata
                      timertype
                      window

 Outgoing TCP connections get the values for the interface the initial
 sync packet ('connect request') will be routed out on. Incoming TCP
 connections get the values for the interface the initial request comes
 in on.

 NOTE: as a result of this 'iconfig' NO LONGER takes multiple subcommands
 on one line. They have to be broken up now !
 eg. 'ifconfig ln0 netmask ffffff00 broadcast 255.255.255.255' is invalid,
 should be 'ifc ln0 net ffffff00' and 'ifc ln0 broad 255.255.255.255' !

 NOTE2:
 If you want to change the system default tcp parameters, you now need
 to do so BEFORE attaching interfaces! (Eg. tcp window 512) After attaching,
 you should use the 'ifconfig <iface> tcp' command to change it per
 interface.


- added core reallocation code, modified from TNOS (KO4KS)
 If possible, memory is given back to the DOS core.
'mem stat' will show the number of successful reallocs.

- 'tcp maxwait' and 'ax25 maxwait' added. Sets a limit (in ms) to the
 retry timeout values. Both default to 0 ms (no limit).

- outgoing tcp connections to addresses without an existing route result
 in an error no. 19

- 'ftpusers' can now have multi drives, paths and permission sets.
 A path can be compound, like dos path, can contains multiple drives, and
 should be followed by the permissions for that path.
 Mailbox logins get permission from the first path listed in 'ftpusers'
 (ie. backwards compatible.)
 Fields in ftpusers can now be separated by any number and combination
 of tabs and spaces.
 NOTE: PPP users should at this NOT have multiple path entries ! (It messes up
 the ip-address field!)
 Eg:
 user  password  /public 12345 /temp;d:/help   12345

- fixed bug in pathname.c that could cause memory to be overwritten in
 instances where filenames contained '\' chars.

- fixed bug in pop 2/3 code where new mail wasn't written unless
 mailbox file existed.

- bug fix for empty names in smtp <usr@host> addresses.
(caused loop in smtp server). From Matthias Wermann, DL1BJL.

- Smtp BID checking can be turned off with 'smtp bidcheck off'. Default is on.

- convers users get a 'message of the day' from the file "/spool/convmotd.txt"
 if it exists. (Can be renamed with the -fnos.cfg option)

- many mods from n5knx

- smtp kick now spawns a process (speeds up response)

- mbox forward scripts can pause a number of seconds: '&5' pauses 5 seconds



1.10x15 (931204)

- if mailbox files have an old or nonexisting indexfile,
 new index files are now automatically updated at program startup
 and after returning from shell. (From an idea by Jack, kf5mg)

 ==> You can now use ANY MAILER you want !

- 'index *' indexes all mailbox files, irregardless.


1.10x14 (931202)

- bug fix in expire code that caused mail from non-nos systems
 to be garbled after expire.

- bug in forward code with 'to%atbbs@host' style messages fixed.

- ax.25 irtt (initial round trip time) can be set per interface
 with 'ifconfig <iface> axirtt nnnn', where nnnn is the irtt in ms.
 This is useful when you have low and high speed interfaces.

- remote command fixed.

- convers personal data is now limited to 32 characters.

- added new PI driver with support for PI2 (from ve3ifb)


1.10x13 (931031)

- fixed alarm() bug in mailbox2.c

- fixed '.' access problem in ftpserv.c

- fixed printf's -> tprintf's in bpq.c and bpqcmd.c

- fixed tprintf with no arguments in pppipcp.c

- deleted debug statement in nr3.c

- convers overload checking now done even if no links are initiated



1.10x12 (931022)

- fixed bug in forward code that garbled addresses.

- also fixed 'mbox kick' bug and open index file in main.c (from kf5mg)



1.10x11 (931011)

- 'taillog' command added.

- several memory leaks in use of index code fixed.
 (in initnotes(), mbx_reply(), closenotes(), and more...)

-
 *** DUE to a lack of hardware, this has not been tested, yet ***

 Polled KISS (ala G8BPQ) is now supported. When attaching the serial port
 use the mode 'pkiss' instead of 'ax25'. This becomes port 0. Then for
 all other tnc's on the same serial port, add an additional 'attach
 kiss' command. Eg. to attach 3 polled kiss tnc's(#0,2,11) at 9600bd:

   attach asy 3f8 4 pkiss p0 1024 256 9600
   attach kiss p0 2 p2
   attach kiss p0 11 p11

The poll-intervall is calculated according to the asy interface mtu and
the speed, with some overhead. This is the frequency in wich the list of
tnc's is polled. Thus the frequency for each tnc is the interval * number-
of-tnc's...

   interval = 0.15 + ((10 * mtu) / speed ) seconds
   poll-time = interval * #-of-tnc's

(Eg. for 9600bd with mtu=256 , interval = 0.416 sec; rounded up to the
 nearest system clock tick gives 440ms; thus poll-time for each tnc is
 about 1.5 seconds)

 From G8BPQ's 'PORTS.DOC' document, I conclude that polled mode and checksum
 addition always go together (unlike the Kantronics tnc's that can switch
 things on and off independently...) This is how JNOS and JNOS40 polled kiss
 is implemented.

 From G8BPQ's 'KISSROMS.DOC' is some information on how to connect the tncs:
-------------- insert ----------------
 The system uses polling to prevent contention on the link. Each TNC must
 run the BPQKISS program, and each must have a different 'address' byte
 patched in at location 20hex...
 In theory you can have up to 16, but in practice the maximum will depend
 on the power of the PC and the speed of the radio ports.

 Wiring.

         PC              TNC 1           TNC 2

  GROUND  7 ---------------7----------------7-----------  etc

      TXD 2 ---------------2----------------2-----------  etc

      RXD 3 --------------------------------------------  etc
                            |               |
                            -               -
                            ^               ^
                            |               |
                            3               3

   -
   ^   is a diode (1N914 or similar)


   With some TNCs and serial cards, a pulldown resistor may be required
   from pin 3 on the PC (10k to -12v is suggested). Thanks to G3ZFJ for this
   information.
----------------end of insert--------------

  For more information see the G8BPQ documentation.


- 'convers tdisc' added. Set maximum inactivity time (in seconds)
 for users.

- 'ftptdisc' and 'mbox tdisc' commands were rewritten, and are no longer
 options in the config.h file.



1.10x10 (930927)

- smtp server has configurable timeout. 'smtp tdisc' sets this. Server will
 close if client doesn't send any data for specified time (in seconds).

- indexing is changed; now variable lenght records are used, to keep complete
 header info. The create utility is now MAIL2IND.EXE

- log files are changed: they are now named 'ddmmmyy' and are kept in
 the /logs directory by default (Unless changed with nos.cfg option).
 Ie. each day automatically gets a new log !
 Logging can be turned on/off with 'log on|off' (ie this does not set
 the log filename anymore !)

- forwarding when bbs already connected is fixed.

- mailbox 'KA' command added to 'Kill All' messages

- 'index <mailbox>' command added to rebuild the index file for a mailbox
 text file.

- convers '/w' command now can show info for one user with '/who <user>'
(as long as <user> doesn't start with 'q', since this is a quick /who')

- many more config.h switches added.

- 'netrom call' buffer problem fixed.

- 'message.ftp' file now also works when ftp users login to root dir.

- mailbox list works with display > 80 columns

- little bug in expire fixed.

- extended telnet option negotiation might work now...
 You should define TN_KK6JQ in telnet.h to activate it.

- G8BPQ driver include; #define BPQ in config.h . Here is the read.me :
4-12-93

here is an addition to nos that allows it to attach interfaces directly
to bpqcode without having to use the packet driver interface and
nodedrv4.com TSR. nos will talk to bpqcode using the bpq_host interrupt
code in version 4.00 and up of bpqcode. this eliminates the extra
memory and processing time used by nodedrv4.com to send packets between
nos and bpqcode.

this code was developed with nos v 911229 wg7j v1.07b. it should be
easily ported to other versions. it consists of three files: bpq.c,
bpq.h, and nos2bpq.doc (this file). there are several changes to
other files in nos that are needed. these changes are described
below.

usual disclamer:
the code described herein is copyright 1993 by FazCom. it may be freely
used and distributed for non-commerical amateur radio use only, provided
this notice remains, all other rights reserved. FazCom is not responsible
for any liability, directly or indirectly, resulting from the use of this
code, nor for its suitability to any purpose, stated or otherwise.

now that that's over with; use and enjoy.
.. faz ...

paul h launspach n5faz
7913 edgemere blvd
el paso, tx 79925-3836
packet: n5faz @ w5es.#wtx.tx.usa
amprnet: [email protected] 44.77.0.70
internet: none
cis: 71046,0076


*** Commands for using the bpq host to nos interface:

attach bpq init <vec> <stream>
Used to initilize the bpqhost interface.
       vec     interrupt vector in hex of the bpq_host code normally 0x7f.
               must be the same as defined in bpqcfg.txt.
       stream  bpq_host stream number used by nos. must be between
               1 and 64 and not used by any other program. nos uses
               only one stream for all interfaces attached to bpq_host.

attach bpq <port> <label> [mtu [callsign]]
Used to attach an interface to the bpq node.
       port    bpq radio port number as defined in bpqcfg.txt
       label   name of this interface.
       mtu     paclen for this interface. if not given set to
               AX25 Paclen.
       callsign call used for this interface. if not given set to
               AX25 Mycall.

bpqstat

display the status of the bpq_host to nos code. values displayed are:
bpq_host interrupt vector, bpq_host stream number, number of bpq_host
ports in use, frames sent, frames recieved, transmit calls, recieve
calls, and control calls.



- SCC driver has support for Baycom modem. From Rene Stange, dg0ft
 Here is some info:

NOS-Version 920411.DG0FT.920508  for BayCom USCC - Slotcard.

With this version of PE1CHL`s SCC-Driver for KA9Q-NOS it is possible to use
the BayCom-USCC-Slotcard.
Special changes to the sources for the clocks were adapted, NRZ-mode for the DF9IC-
Modem was made possible and the CTS-external status interrupt was switched
off, because the feedback of /CTS to the Interrupt output might crash
the system.

The ATTACH-command for the USCC is to be used as following:

attach scc 2 init 300 2 4 5 -4 0 7 p4915200 10
          ^      ^   ^ ^ ^  ^ ^ ^ ^        ^
          1)     2)  3)4)5) 6)7)8)9)       10)

1) number of SCC-controllers 8530
2) address basis of 1st controller
3) offset in address between the SCC-Chips
4) offset from basis address to control-port of channel A
5) offset from basis address to control-port of channel B
6) offset between control-port to data port of channel
7) always 0, because no INTACK
8) used Interrupt
9) Clock 4915200 Hz
10 always 10, marks BayCom USCC

Because of the used port-address scheme only one slotcard can be used.
Personalize parameters 2) and 8) to your system

When you have given above command you have to initialize the SCC-ports to
be used as following:

attach scc 0 ax25 uscc0 256 1200  1024 mycall
attach scc 1 ax25 uscc1 256 1200  1024 mycall
attach scc 2 ax25 uscc2 256 d9600 1024 mycall
attach scc 3 ax25 uscc3 256 ext   1024 mycall
          1)      2)   3)   4)   5)    6)

1) number of USCC-port
2) name of this port
3) maximum packet length (MTU)
4) kind of modem and baudrate
5) size of buffer
6) optional call for this channel

Definition of paramter 4):

1200   AFSK-modem using internal SCC-clock and 1200 Bd
      (e.g. TCM3105-modem), no fullduplex operation

d9600  modem with external TX-clock, internal RX-clock 9600 Bd,
      fullduplex operation possible.

ext    DF9IC-modem, NRZ-mode, external clock

Parameter 2-6 have to be personalized as required

I just want to state, that this version was not completely tested,
especially modems with external clock (DF9IC/G3RUH) were not tested
or only in loopback-mode.

The parameter-setting sometimes is a little bit unusual, because
some of the data have to be set up in  fractions of 1/18.2s.
The PC-Timer chip is the reason for that. A recalculation might have
been possible, but I didn`t enjoyed to do that.

73`s from Rene, Strausberg (GERMANY).
DG0FT  at DB0KG




1.10x9 (930728)

- dos environment variables can be set to allow a login without using
 the ftpusers file. (This is very handy when this file gets corrupted!)
 NOSSYSOP sets username, NOSPASSWD the password, and optional NOSPATH the
 path, and optional NOSPRIVS the priveledges. If NOSPATH is not set, it will
 be the root dir on the current drive. If NOSPRIVS is not set it will be
 FTP_READ + FTP_WRITE + FTP_CREATE + AX25_CMD + NETROM_CMD + TELNET_CMD +
 SYSOP_CMD + IS_EXPERT . NOSPRIVS accepts both decimal and hexadecimal if
 "0x" preceeds the value.

 Eg: before starting JNOS: 'set NOSSYSOP=johan' and 'set NOSPASSWD=password'

 Note: if this id is to be used via FTP, the NOSPATH should also contain the
 privileges desired, for example:  set NOSPATH="c:/ 0x4037f"

- mailbox closenotes() is less a cpu-hogg ;-)

- convers servers is a little more memory efficient by not allocating input
 buffers for users on other hosts (saves 256 bytes per user)

- telnet extended options and dos environment TERM deleted because of
 reported problems. (If you want it anyhow, define TN_KK6JQ in telnet.h)

- expire stack increased again to solve crashes

- little bug fix in arp.c that caused replies with wrong ip address sometimes.
 by Mike Gallaher, wa3hee

- 'domain addserver' has optional timeout value in seconds for this server.
 if not set, timeout defaults to 3 * tcp irtt.
 Eg: 'domain addserver wg7j.ece.orst.edu 30'

- cdigi digipeating now only works if BOTH interfaces involved have a cdigi
 callsign set.

- bug that caused 'you have new mail' to be send to bbs's fixed.

- attempt to handle convers servers with hostname or usernames > 10 .

- mailbox 'K' or 'KU' command nowm kills or unkills current message if no
 message list is given.

- expire process is prevented against mulltiple invocations.

- G8BPQ logging was logging destination node, instead of source; now fixed.



1.10x8 (930721)

- a version of BM.EXE with support for Mail Index Files is now included
 (initial version is 4.0x1. Still needs more work, but is functional)
 See the BM.EXE and BM4.ZIP files.

- if MAILBOX is undefined in config.h, but ALLSERV or TTYCALL is defined,
 incoming connections to telnet-port, or netrom/ax25 calls go to the
 tty-link listener...

- ax.25 convers and tty call connection now go directly to their server,
 and bypass the mailbox completely...

- many process stack sizes have been decreased to better utilize memory

- ftp server has additional information possibilities:
 if a file 'message.ftp' exists in the initial directory (eg. /public, or
 whatever), it will be send right after the login.
 When CD-ing, if a file 'desc.ftp' exists in the new directory, the
 server will send the text in this file to the user...
 From Giancarlo, IW5CZT.

- mailbox problem with smtp_send process solved; should fix a few
 unexpected disconnects here and there. From Mark, ve3dte

- 'status' command now shows if system is 'loosing time' through missed
 hardware tick interrupts, or through DV or OS/2 DOS emulation problems.
 (If it doesn't show it, it didn't miss any :-)

- forwarding finally works correctly again with new index code.

- mailbox 'List' works again with indexfiles and userlog code.

- 'smtp list' fixed under DV ad OS/2 (with correct date/time)

- digipeat bug with crossband fixed

- included extended telnet option negotiations, and a DOS enviroment
 variable "TERM" can be set to the terminal type. From kk6jq
 ( This was Deleted in 1.10x9 because of reported problems; if you
   want it anyhow, define TN_KK6JQ in telnet.h )

- 'ip heard' now works on netrom by setting 'ip hport netrom on'

- memory leak in convers.c '/p' processing fixed (from Mark, ve3dte)

- ax.25 and netrom resets will send a disconnect to be polite.

- current msg pointer in mailbox fixed.

- smtp 'Apparently-To:' fixed.

- both jnos and mail2idx use 'Apparently-To' header if 'To:' doesn't exist.

- mailbox 'SF' works again.



1.10x7 (930708)

- little fix in new private mail notification.

- fixed dir problem introduced in 1.10x6 .

- convers maxq code changed; you can now set limits for users and hosts with
 'convers umaxq' and 'convers hmaxq' . If set to 0, there is no limit,
 otherwise connections will be reset if there is more then the maxq value
 data outstanding on the connection. This should now also reset connections,
 instead of the previous graceful close...



1.10x6 (930707)

- I've tested pop2/3 and they should now really be working with
 the index files. :-)

- mail2idx bugfix in -d option.

- additional permission bit in ftpusers: NO_LISTS = 131072  (0x10000)
 if set, user can not list mailbox IH, IP, P, N, and NR commands.

- fixed some '#define' areas



1.10x5 (930630)

- fixed 'MM' and 'SR' mailbox commands.



1.10x4 (930629)

- pop2 and pop3 should now be compatible with the mail index files.
 However: I do not use either pop2 or pop3 and thus the code has NOT
 been tested. I would appreciate feedback.

- Monitor Trace mode added. Gives a shorter, easier trace display.
 'trace <iface> 3xy' sets this, where x=1 sets input, y=1 sets output
 From Brandon Allbery, KF8NH

- bugfix in MAIL2IDX.EXE. Doesn't write a faulty index file anymore if
 mailfile is emty or contains data but no messages.

- new icmp source quence behaviour:
 if 'icmp quence off' is set, when a ip packet is received, and
 mem < threshold, it will be dropped (ie. no quench or anything.)
 This might help systems with ethernet controllers or other higher
 speed interfaces...
 (If 'icmp quench on', the default, behaviour is as before)

 From a message Barry McLarnon, ve3jf, forwarded to me :
 "From: [email protected] (Henner Eisen)
 Newsgroups: comp.protocols.tcp-ip.ibmpc
 Subject: Re: KA9Q as Gateway... how?
 Date: 8 Mar 1993 10:04:50 GMT
 ...Whenever KA9Q receives new packets faster than it can process them
 the internal buffer is likely to overflow. The way KA9Q deals with that
 situation is as follows:
 There is a high water mark for the dynamically allocatable storage (its value
 may be changed in autoexec.net with the "memory thresh #" command ). Whenever
 that hig water mark is exceeded KA9Q will submit an ICMP Source Quench to the
 originator of every additionally received packet. Unfortunately, this requires
 additional system resources (especially more storage). The result is that,
 before the originator will have reacted upon the ICMP Source Quench, KA9Q's
 dynamic storage will be exhausted. (Several TCP/IP implementations even won't
 react upon ICMP Source Quenches at all). I don't know what really happens
 after that, probably this causes a deadlock somewhere else and KA9Q hangs...

 ...Now, whenever the high water mark is exceeded and a new
 packet arrives that packet is dropped immediately and no further storage is
 needed. The higher protocoll layers will keep track of retransmitting the
 dropped packets and a well-implemented TCP will even automatically adjust to
 the maximum possible transmission speed..."

- 'ax25 ttycall' sets tty-link call for direct keyboard access. Remember to
 make sure you have both 'attended on' and 'mbox attend on'.
 From Brandon Allbery, KF8NH

- AX.25 ports can have a 'cross-band digipeater only' callsign. If this call
 is set, digipeating works independent of the 'ax25 digiport' setting !
 (Connections to this call do NOT work)
 'ifconfig <iface> cdigi <call>' sets this.

- open file problem in List fixed.

- AX.25 RNR frame bugfix in lapb.c, from Mark, ve3dte

- value given to g8bpq nodes for rtt corrected, from Mark, ve3dte

- more system information via finger server (modified from N7IPB). Valid
 are now:  iheard,mstat,info,ax25,netrom,tcpview,memstat,socket,asystat,
 ifconfig and rip

- from N7IPB:

 * Interface names are now case insensitive

 * Support for F11 and F12 (control,shift,alt) added

 * Delay added on startup before enabling 'more'.

 * domain ttl  - Select a default ttl value to be applied to server
                      responses that contain none.

 * domain dump - Clears the domain cache

 * domain update - Allows you to control whether or not your domain.txt file
                   is updated with server responses

 * domain subnet - Works in conjunction with 'domain translate' to allow or
                   disallow translation of any address ending in 0 or 255.
                   On systems that have a lot of subnets this can result in
                   a considerable speedup when displaying routes with domain
                   translate on.

 * ipmerge now correctly merges routes of the form 'x.x.x.x ax0 x.x.x.x'
   where the two addresses are identical and a previous route exists for
   this address. This fixes a nasty routing problem on subnets that have
   multiple routers.

- mail system messages are now more verbose.

- bug with mailbox 'KM' command fixed.

- mailfor.c now also uses the mail index files.

- ax25 beacon text can now be set per interface with
 'ifconfig <iface> beacon [bctext]'
 If you set 'ax25 bctext' before interfaces are attached, all ax.25
 interfaces will have this bctext as default.
 If you set 'ax25 bctext' after one or more ax.25 interfaces have been
 attached, only those with no bctext will get the new bctext.
 (Remember, you still have to enable ID-ing with 'ax25 bcport' !)



1.10x3 (930622)


- mailbox works with index files. Much faster ! Before you run this you
should build index files by running MAIL2IDX.EXE. See the section above
'MAIL INDEX FILES' for more. If JNOS doesn't find any index files in the
mail directory at startup, it will warn you to run MAIL2IDX.EXE

- mailbox 'LS subject' lists messages in current mail area with 'subject'
 in the subject line.

- 'ax25 bbscall' now changes or sets all interfaces where bbscall is not set
 to the bbscall. 'ax25 mycall' will not override bbscall anymore, once it has
 been set. You should
 1 - set 'ax25 mycall xyz-#'
 2 - 'attach' all interfaces
 3 - set 'ax25 bbscall xyz-#' or 'iface <name> bbscall xyz-#'

- smtp server bid memory leak fixed (N5KNX).

- smtp server Ctrl-Z in lines now handled.

- pop2 and pop3 servers are now case insensitive for commands.



1.10x2 (not released)


- mods to pop3 server to fix long line reboots. From Ross Patterson, N4YYH



1.10x1 (930609)


- mailbox problem with remembering last read if a Ramdrive is used
 is fixed. From N5KNX

- mailbox fixed to allow for ^Z at end of line when sending mail.
 Allows FBB to forward better. From N5KNX .

- obscure bug in ax.25 bctext fixed, from Brandon Allbery, KF8NH

- pop3serv.c fixed for files > 32k

- G8BPQ NET/ROM Extension handshaking added to Connreq/Connack packets.
 G8BPQ nodes are now indicated in the netrom route displays.
 JNOS will reply to G8BPQ nodes in BPQ style if "netrom g8bpq" is on.

- 'convers maxq' should now work.

- drastic clean-up of prototyping in source modules. Most all warnings
 are gone (apart from a few in the gracilis drivers). Also fixed some .asm
 modules for 80186 and above.

- commented out net/rom raw sockets; saves 0.5k

- session screens when swapped out (ie. not the active session)
 can now be saved in 4 different modes. This can save conventional memory.
 Modes are:
 0 - in EMS (if available), this is now the default mode.
 1 - in XMS (if available and no EMS) (Note: NOT! functional yet)
 2 - in conventional memory, the previous method. Used if EMS/XMS doesn't exist.
 3 - in a temporary file. (Use only if you have a ramdisk for tmpfiles, or
     a fast harddisk with cache...)

 You can force options 1, 2 and 3 from the command line starting NOS with the
 -m# option, where # is 1, 2 or 3 ...

 The 'session' command display show the swap mode in use under the 'Sw'
 heading. E for EMS, X for XMS, M for Memory and F for File.

 You can show the current swap mode with 'session swap' or set it with
 'session swap E|X|M|F' for Ems, Xms, Memory, or File.

- user registration code from K5MG added (with mods)
 Mailbox "register" command registers users. The file /spool/mreg.txt will
 be shown to users attempting this...

- rewriting of the files-naming code (for -f option), saves 1.5k

- deleted POP option from config.h; it's functionality is duplicated
 in POP2XXXX

- PPP option negotiation bug fixed, from D. Myers.

- 'mbox jumpstart' is gone.
 You can now define a bbs call with 'ax25 bbscall'. Default is ax25 mycall
 value. The bbscall will be automatically set on appropriate interfaces
 and depending on whether the interface drivers call setencap() (not all do).
 Or you can set it with 'iface <iface> bbscall <bbscall>'

 Jumpstart now works as follows:
 NO connections to the interface hwaddress get jumpstarted.
 ALL connections to the bbscall for each interface, or ax25 alias
 get jumpstarted.

 This should solve all problems with wrong jumpstarts,
 as long as hwaddress is not equal to bbscall !


JNOS 1.09 (Never 'officially released')

- from Lars, sm6rpz:
 * 'mem efficient' command deleted, since it has been totally
 useless for "eons" :)

 * ax.25 dis-connected state transition memory overwrite problem fixed.

 * tcp_reset problem fixed.

 * iface detach routines clean out ax.25 routes.

 * makeroutes() in rspf.c bug fix.

- rewrite file now ignores additional spaces and tabs; from kd4cim

- kiss.c time-problem in interface-send fixed.

- "exit" command from the keyboard now asks if you want to do it.
 (if not from keyboard, this is skipped...)

- 'at' command is now a process, solves lots of problems...

- convers.c /p and memory problems fixed, from VE3DTE

- duplicate bid in smtpserv solved, from KD4CIM

- smtp looping 'hard' fix: if it occurs, message is dropped.
 (a '550' error code is sent, causing a 'hard-error')

- xspawn dropped from distribution because of many problems reported.


1.08df (930404)

From WA3DSP:
This source code is JNOS108D with most all prototype errors corrected.
Those not corrected are in some drivers - in particuliar the twin drivers.
Also other nagging errors have been corrected.
A compile should show NO errors unless you are using a module I was not
when I went over this.
Also -
- DOS 6.0 support added in MAIN
- ASM's are 386 compliant
- Makefile has 386 compile option
- Makefile uses strictly autodepend - no .h dependecies required - works
 good for borland c 3.1 - This makefile should be included as an option
 for those using it!! It is much more reliable and less subject to problems.
- Ifdef's added on modules - some may still be missing - decreases compile
 time significantly when that module is not defined
- Some other minor fixes.


1.08d (930311)

- new tipmail.c from Doug, wa3dsp

- 'domain startdns' is gone. Domain Name Server can be turned on and off,
 with 'domain dns [on|off]'
 Also found a problem in getline.c where domain.txt is read...

- convers server has been optimized to send less multiple-packet responses.

- 'convers allow' is now replaced with 'convers filter'
 'convers filter mode [accept|refuse]' shows or sets the mode (default refuse)
 'convers filter [ipaddress|hostname]' add an ip address to the filter
 table.
 If filter mode is refuse, then convers links from hosts in the list will
 be refused. If filter mode is accept, then only links from hosts in the
 list will be accepted.


1.08c (930305)

- several system errors and permission infringements will now send
 a message to the user 'sysop'.
 This is controlled with 'error [on|off]'. Default is on.

- BBS R:-line sends message BID as well

- local fingers now work. Eg 'finger johan'

- several Turbo-C 2.0 compile problems fixed; from Jim Dugal, N5KNX

- Mailbox R/V/K commands allow message ranges... Eg: 'R 1-4', from N5KNX

- problems with smtp BID checking should be fixed...


1.08b (930224)

-smtp server bid problem fixed.

-finger server fixed


1.08 (930222)

- all commands that effect interface flags have new syntax.
 They now need ON or OFF to set the state of the flag.
 If no interface is given, all interfaces with the flag set will be shown.
 If interface is given, but no on|off, then the state of the flag will
 be shown.

 Eg:
 ax25 bcport
       will show ALL active ax.25 beacon interfaces
 mbox hideport 2m
       will show the state of the interface '2m'
 convers interface 2m on
       will turn on convers call access on interface '2m'
 ax25 digipeat 2m off
       will turn off digipeating on interface '2m'

 The command affected are:

 mbox ax25only [iface] [on|off]
 mbox useronly [iface] [on|off]
 mbox sysoponly [iface] [on|off]
 mbox bbsonly [iface] [on|off]
 mbox mport [iface] [on|off]
 mbox hport [iface] [on|off]
 convers interface [iface] [on|off]
 ax25 digipeat [iface] [on|off]
 ax25 bcport [iface] [on|off]
 ax25 hport [iface] [on|off]
 ip hport [iface] [on|off]
 arp poll [iface] [on|off]
 arp eaves [iface] [on|off]

 NOTE that ax.25 ports now default to ON for:
 beacon, mail-id, digipeat, ax-heard and ip-heard !!!

- the BID checking in the SMTP server (from 1.05) now works !
 if a 'Message-Id: ' line is received with a valid BID format
 (ie. 'BID#@Bbscall.bbs' format), then the BID will be cross checked
 with the ax.25 bid file ('history' file). If a duplicate, response will be
 "452 Duplicate BID in Message-Id line\n";

- 'repeat [interval in ms] command (from new ka9q, ported by wa3dsp)
 Starts a new session screen with the output of the command updated
 every interval ms. If you hit F10 it ends the session.
 Eg: repeat 1000 t s
 (repeat every second 'tcp status' command)

- buckbook support driver updated; again, this is NOT tested !.

- for all AX.25 ports, you can now indicate what kind (if any) of mailbox
 connections are allowed.

 mbox noax25 [<iface>] [on|off]
       shows or setss the 'no ax25 maibox connections.
       This prohibits mailbox connects, but still allows IP in VC mode.

 mbox bbsonly [<iface>] [on|off]
       shows or toggles 'bbs only' per port. The IS_BBS bit
       in /ftpusers has to be set in order to be able to login to the bbs

 mbox usersonly [<iface>] [on|off]
       shows or toggles the 'users only' flag. Any call with the IS_BBS
       flag NOT set can login to the bbs via this port

 mbox sysoponly [<iface>] [on|off]
       shows or toggles the 'sysop only' flag. Any
       call with sysop permissions can login to the bbs via this port.

 NOTE: this does NOT work for NET/ROM and TCP connections, since for those
 protocols there is no real concept of incoming port...

- TIP MAILBOX improvements from Doug Crompton, WA3DSP
 CD is now detected and influences the login, and XMODEM transfers can
 be done with TIP logins. Here is what Doug writes about it:

NEW commands  -

'start tip <interface> <terminal|modem> [timeout seconds]'
BBS added commands - 'dx <filename>' , 'ux <filename>'
Deleted command - 'mbox tiptimeout'

Tip code has been extensively modified. It now works with a terminal
(3 wire connect) or modem (CD)  Two tiers of timers, the first being
set on the 'start tip' command line and the second "grace" timer fixed
at 1 minute. CD loss is unconditionally detected.

Tip timeout timers should not effect xmodem as long as they are not set
shorter than xmodem timeout - 120 seconds. Tip default is 180 seconds.
The 'mbox tiptimeout' command has been taken out - setting is in the
start tip command line.

Phone connects, and xmodem successful up/downloads are logged if logging
is turned on. xmodem BBS commands are only available with tip connects.
Only 128 byte xmodem packets are allowed at this time. This is the standard
original xmodem format that is supported on most all comm programs.

Note that most internal modems do not use a 16550. Therefore on heavily
loaded NOS systems it might be desireable to use an external modem with
a 16550 serial port. I have not run my system above 2400 baud using an
internal modem. Based on what I see on my system I would expect that
a 16550 interface would be a requirement for higher baud rates - I.E 9600.


- 'convers maxq' command sets or shows the maximum transmit data outstanding
 on convers links (permlink or other) before a hostlink is rudely reset.
 Default is 5kb (ie 5120 bytes)

- Bulletins with NO BID can be refused if 'mbox nobid off'
 off means refuse them, on means accept. Default is OFF, ie refuse !

- NOTE: the 'mbox haddress' now NEEDS THE CALLSIGN !!!
 eg:  mbox haddress WG7J.OR.USA.NA   !!
 The First part (ie WG7J) will be used to assign BID/MID's from our
 system, eg 1234_WG7J

- device files etc. can not be opened anymore; ie no more finger crashes
 to 'CON' 'AUX' etc...

- bug in 'route lookup' fixed

- Mbox forwarding now marks ALL messages that received the 'NO'
 reply as forwarded.

- Mbox forwarding now sends all mail in areas starting with 'nts'
 as traffic, ie. with 'ST'.

- a finger to 'links' will shows all convers links at the system.

- fixed 'ftp mput' command.

- 'convers maxwait' sets the maximum time to wait before trying to
 re-establish a link, after convers links have timed out.

- you can now undefine the mail commands (S,R,K,V etc) from the mailbox
 interface, do '#undef MAILCMDS' in config.h

- if the first chararcter of a function key definition is the '~' char,
 the following characters will be sent to the command session, and
 NOT the current session. Command sessions becomes the active one.
 Eg. fkey 63 "~ps\n"  allows you to do a ps from any session (output
 will go to command session, wich is made active immediately)

- small problem with non ampr.org. domain names in domain.c (resolve_a())
 fixed.

- there is no limit of 10 mbox/convers-call users anymore; now only limited
 by memory resources...

- mailbox gateway escape char defaults to ctrl-T, to accomodate tnc's (wich
 use the formerly used ctrl-X for line editing)

- mailbox disconnect when sending a message and it cannot create tempfiles

- message numbers are now in the range 1-99999 (in smtpserv.c)

- 'ax25 dest' is now same as 'ax25 hearddest'

- tip incoming sessions fixed, go to mailbox again.

- even when netrom is not active, you can still set an alias callsign
 for users to connect to.
 'ax25 alias' sets or displays it. Old 'netrom alias' modifies the same call!

- duplicate MID problem fixed in smtpserv.c, from KO4KS

- ftp server tells file size before transfer starts, from N1BEE

- 'mbox header off' also turns off 'mbox thirdparty' !

- xspawn shelling modified. Seems to fix most problems.
 Known to still lock up with some ethernet drivers.
 From Brian Lantz, KO4KS

- OS/2 multitasking now correctly recognized, from N1BEE

- added pop2serv.c and pop3serv.c from N1BEE's v0.85 release.

- small nr4 fix from N1BEE

- fix for pi driver, from Dave, ve3ifb

- stktrace added to buffer-overwrite in sockuser.c; to help trace this.


1.07b (921217)

- 'mbox motd' is gone; instead, the contents of the file /spool/motd.txt
 will be shown when users login to the bbs.

- 'fmotd' is gone; instead, set the ftp message of the day in the file
 /spool/ftpmotd.txt . It will be shown before the ftp login sequence starts.


1.07  (921215)

- smtp client has been modified.
 'smtp t4' sets a timeout limit (in seconds) for attempts to deliver mail.
 If t4 is 0 (default), behaviour is as before (direct delivery is attempted
 to the host or mx-host.)
 If t4 is set, behaviour changes as follows:
 If a connection has not been established in t4 seconds, the mail will
 be attempted to be delivered to the 'smtp gateway' (if one is defined)

- pop code has been modified to hopefully eliminate potential crashes.
 (from Mike Billow, N1BEE)

- socklen() fixed for netrom L4. From Paul Healy, EI9GL

- lower case only stuff in ftp login eliminated. It is now correctly case-
 sensitive.

- added 'tcp blimit' to limit backoff for tcp connections.

- 'rip kick' added to send an immediate rip update. From Dave, ve3ifb

- mailbox now supports MID's on receiving and forwarding of messages.

- 'ftpusers' permissions can be set in hexadecimal, ie '0x32', or '50'

- mailbox escape checking can now be set to off in ftpusers file. Add
 #define NO_ESCAPE 65536
 to the permission for a user to have it default to no escape checking while
 gatewaying out. User can change the default. The mailbox 'E' command now
 works as follows:
 'E' shows status (ie. on/off) and escape character.
 'E arg'
       -if arg is one character, it is interpreted as the new escape char
       -if arg starts with a number, it is interpreted as the ascii number
        for the new escape char
       -else if arg starts with 'off' or 'dis' (not case ssensitive)
        then scape checking is turned off
       -anything else will turn escape checking on.

- 'more' and 'dir' commands now work correctly from remote sysop.
  Note that there currently is NO -more-? prompting when executed from
  remote !

- Forward polling added. If there are no message to be sent to the bbs,
 the system will poll the remote bbs for messages when the forward timer
 expires.  Simply add a 'P' to the end of the first line in the forward.bbs
 script. Thus the format is now either
 <bbsname> P
 or
 <bbsname> <[time]...[time]> P

- Extended IP access code. (usefull for gateways only)  NOTE: this is
 NOT compatible with the old version. Ie. modify your autoexec.nos !!!
 Here is the new command format:

 access <state> <proto> <src>[/<bits>] <dest>[/<bits>] <if> [<low> [<high>]]

 where:

 proto = {any|tcp|udp|icmp|<number>} (<number> = decimal IP protocol number)
 dest  = Destination IP address (or "any"), just like <src>

 The rest of the parameters are the same as before.  The port parameters are
 used only if proto is "tcp" or "udp"; they are ignored otherwise.

 Here are some examples:

 ip access permit any  192.111.106/24  all             eth
 ip access permit tcp  all             all             eth     25
 ip access permit tcp  all             all             eth     53
 ip access permit udp  all             all             eth     53
 ip access deny   tcp  all             130.137/16      eth     1       1023
 ip access deny   udp  all             130.137/16      eth     1       1023
 ip access permit any  all             all             eth

 Note that the new "ip access" command format is incompatable with the old.  I
 guess I could have made it backward compatable, but I thought it would look
 ugly if I did.

 The "ip access" command code could probably stand some additional error
 checking on parameters.  For example, only the first letter of the protocol
 is used (e.g., "ijkl" == "icmp").  If the low port is set to zero, this
 means ignore the port numbers (the same as "all" or just leaving them out),
 whereas it probably ought to generate an error.


- automatic personal information for convers users.
 When a user log in, either from mbox, convers call, or convers server,
 the Cinfo file is searched for the user name. The Cinfo file defaults to
 /finger/dbase.dat. Name and text need to be separated with a space or tab.
 Everything that follows the name will be set as the personal info.
 Note that the default file is the SAME as the finger database file !!!
 However, this can be changed with the 'Cinfo' line in the filename config
 file described below. (-f command line option)
 Eg. if the Cinfo file contains the line
 'wg7j Johan, in Corvallis, OR, USA'
 then when wg7j logs in to your server, his /p info will be set to
 'Johan, in Corvallis, OR, USA'

- command recall feature.
 Command are saved in a circular buffer of a size that can be set with
 'history #', eg. 'history 10', which is the default.
 'history' will show the maximum set, and the history list kept.
 'history 0' disables the feature.

 The up-arrow and down-arrow will cycle through old commands when in the
 command session. No editing (yet), just recall.

- added case-insensitivity to convers loop detection code, to handle other
 convers systems better...

- fixed some defines to allow MAILBOX to be undefined in config.h

- sockuser() 'protected' against overwriting of output buffers. System will
 write a message to the log file, and then reboot :-(

- mailbox forwarding R: line needs to be explicitely turned on with
 'mbox header on'

 This is so that regular users can forward from jnos to another system
 designated as full-service bbs, without leaving a trace of their system.
 This avoids other bbs systems marking them as a fullservice bbs.

 (The elements of the R: header are now optional. If not set, they will
  not show in the line, instead of show as 0 or null-strings.)

- some more stuff from wa3dsp:

 * 'prompt on|off'  - defaults to off
   Turns ON or OFF the display of the current directory at the command prompt

 * Commands - rename, copy, dir, cd, pwd, more, tail, del, mkdir rmdir
 now use fully qualified names based on the command session current
 directory. This directory can be ANY valid drive/directory on the
 system.

 The command session current buffer assumes the current directory at
 NOS startup. When 'cd' is exercised at the net prompt the ACTUAL
 dos drive and or directory are never changed. Instead the path on a
 per drive basis is stored in a structure known to the command session.
 Filenames are built into fully qualified names using the path and supplied
 name.

 This is the same way it is done in the FTPCLI in my previous mods.
 PLEASE advise if there are any other commands that should use this method
 that I may have missed.

 * Option added to MORE  - more <filename> [searchstring]
   If searchstring is specified only lines containing the string are displayed.

   more /spool/log bbs           - display lines in logfile with the text "bbs"
   more /autoexec.nos netrom     - display lines with text netrom
   more myfile "text to display" - if text contains spaces use quotes!

  * Option added to domain - domain look <searchstring>
    This is just a call to the 'more' command with the '/domain.txt' file
    specified.
       domain look 44.80.8
       domain look wa3dsp

- All files in nos now can be on any drive and directory. A 'file-naming'
 configuration file can be named on the command line with the -ffilename
 option. (If filename is not given, the -f option will be ignored)
 Eg:  nos -fnos.cfg

 The format of the config files is as shown in the accompanying nos.cfg.
 Ie. filename = directory-or-file-path, where dir-or-file-path can be any
 valid path or filename.

 This now allows things to be in places that optimize the speed; ie; you
 can copy certain things to ramdrives etc before running nos, and then
 use the much faster access times to improve speed...

 You can still use the -d option to set a new 'root' directory for nos.exe,
 but it is only usefull if used before the -f option. If you use -d,
 then you can use the -f to move some files to non-standard directories
 by simply commenting out the files you don't want moved...
 eg.   nos -d/nos -fnos.cfg    is valid
 but   nos -fnos.cfg -d/nos    causes the -d to be ignored !!!

- XSPAWN library (c) Whitney Software used to allow swapping out of JNOS
 when shelling to dos. This allows shelling out at all times, with a full
 size dos memory available !! Ie. Full applications can be run; JNOS is
 INACTIVE at this point!. Compile time option is XSPAWN. (MULTITASK is NOT
 available when XSPAWN is used !)

 Swapping is to EMS, if available, or to disk. Disk swapping is to the
 current drive. You can set a directory path to try and store the disk image
 with the new command line switch -x. (if you have ems, this isn't usefull)
       eg. nos -xc:\;d:\

 From the manual.doc of the xspawn code:

       " Each separate path specifier in the _swappath string (separated by a
       ;) can contain a drive, a directory, or both.  If you do not specify
       a drive, XSPAWN will use the current drive.  If the directory is not
       specified, XSPAWN will use the directory that is current on the
       target drive.

       You may be wondering why you would ever want to specify multiple
       paths.  To illustrate one use of this feature, let us say your system
       has a ramdrive called D: and a hard drive called C:.  Since writing
       to a ramdrive is many times faster than writing to a hard drive, you
       would naturally prefer to write the swap file to the ramdrive.  The
       problem is that there may not be enough space on the ramdrive to hold
       the swap file.  The _swappath string shown above would cause XSPAWN
       to try the ramdrive first and if there is insufficient space, to try
       the C: drive next.

       If a path does not exist, XSPAWN will skip it.  If XSPAWN can't store
       the swap file on any of the specified paths, it will return -1 and
       set errno to EACCES.  "


 According to the user policy, the complete source for the code is in
 xspawn.zip, inside the jnos107.zip source zipfile... Please read
 license.doc in xspawn.zip for more details.

- 'bulletin check' protected against too many forward bbs's (from Jerry, kd4cim)


1.06B (921124):

- forward bug fixed; netrom forwarding works again

- arp display fixed

- rip now allows advertizing of route to yourself with the '2' flag
 (ala KarnCode) Eg: rip add 44.26.1.255 600 2

1.06A (921121):

- cmdparse fixed to accept both tabs and spaces correctly (debugged from code
 by Mike Gallagher)

- twinvec.asm fixed for BC++3.1, dirutil.c for TC2.0

- screen sizing is now a command line option: -c# for colums, -r# for rows
 the 'stat' display now shows this, instead of 'info'. 'col' and 'row'
 commands are gone.
 IE. If your screen size is not sensed correctly, use:
 Eg: to run with 43x132 screen: nos -r43 -c132
 (note: this does not SET the video mode; your system has to be in that mode
 already !)

- tcp stat bug fixed.

VERSION 1.06 (921119)

- all commands setting interface flags now TOGGLE! Ie. first time the flag is
 set and the feature turned on, next time it is turned off, ad infinitum :)
 They are:
 convers port                  ax25 bport
 mbox mport                    mbox hide
 ax25 digi                     ax25 hport
 arp eaves                     arp poll
 ip hport

- 'tcp access' command added. Good for internet gateways. Defined with
  TCPACCESS switch in config.h

- IP heard logging. Turn on per interface with
 'ip hport <iface>'
 For ax.25 interfaces, logs all ip packets heard on the channel.
 For other interface types, logs ip packets that the system routed.

 'ip hsize' sets size of table. 0 means no limit!  Default is 8.

 Shown with with mailbox 'IH)eard' command, or with
 'ip heard'
 or you can now finger 'iheard' to get the list.

- AX25 heard logging needs to be turned ON per interface !!!
 'ax25 hport <iface>' does this. Use 'ax25 filter' still to set
 options for source or destinations. (1=no source address, 2=no dest. address
 3=no logging at all !)

 'ax25 hsize' sets maximum number of call in the total list (ie. NOT per
 interface !). 0 means no limit, and is the default !

- security hole in mailbox telnet permissions fixed.

- screen handling now senses the screen size correctly. Ie. you can use
 80x25,80x43, etc modes. With help from Ron Henderson, WA7TAS
 I tried to assure this works even with vga drivers that
 do not report correct sizes to the gettextmode() call (due to the fact
 that I work on a system that did this faultily :-). It's been tested
 in 80x25,80x28,80x43,80x50,132x50,132x60 modes.
 'info' will show the detected tty size.

 On some systems this still doesn't detect the screen size correctly;
 if so, set the number of rows and columns on you screen in the autoexec.nos
 file with 'rows #' and 'columns #' commands (this does NOT work from
 the command line !!!)


- new arp subcommands:
 'arp eaves [<iface>]'
 Display or set the 'arp eaves drop' functionality per interface.
 If set, all arp replies overheard on the interface will be logged in the
 arp table. This builds a large table on ethernet interfaces, but speeds up
 arp discovery, and might be usefull on radio interfaces.

 'arp maxq'
 Display or set the max number of packets waiting for an arp resolution
 to finish. Default is 5 packets.

 'arp poll [<iface>]'
 Display or set the 'arp keepalive polling' functionality per interface.
 If set, when an arp entry expires, a query will be sent for the address; this
 keeps the arp table fresh, but possibly retains lots of unneeded entries.

 'arp sort y/n', defaults to yes, to sort the arp display.
 (from Doug Crompton, wa3dsp)

- Added the PACKETWIN driver, for the Gracilis Packetwin Card.
 To use, define the 'PACKETWIN' option in config.h
 (Disclaimer: I have NOT tested this, but others have used it with my code :-)

- Added Doug Crompton's (wa3dsp) mods:
 route sort y/n
 tcp view bytes  - t v b
 tcp view timers - t v t
 icmp trace 0|1|2
 rdate server <ipaddress>
 rdate offset +-n
 'ftp' client commands: ?,help,lcd,ldir, and lmkdir (See w7jmods.txt for more)
 'dir' allows for drive letters.
 'ftp resume/rput' (see wg7jmods.txt)

- mbox 'IP' command shows non-private routes only.

- morecore failures are only logged to disk when 'mem debug' is on

- added nntpserv.c from Doug Crompton, WA3DSP

- fixed fifo setup for 16550's

- increased stack size for finger and ttylink servers to fix overflow problems

- forward connects to unknown netrom nodes now fail.

- fixed arp-calls in ax25aar.c


VERSION 1.05 (921021)

- at command allows events to be killed, and rescheduled. From Ron Henderson,
 WA7TAS.
 'at k <#>' to kill event #, where # is the number shown in the 'at' command
 'at [time] command+' to indicate recursion. Ie. after the command has been
 executed, timed execution will be started again.
 EG: at now+0005 dir+   will show a directory listing every 5 minutes

- fixed mkname.c for compile with tc2.0

- added domain name server fix for CNAME queries, from Don Sandstrom, KG7CP.

- new and improved tipmail.c from Milton Miller and Ben Thornton.

- asy flow control bug fixed in asytimer() (file i8250.c)
 from Milton Miller and Ben Thornton

- made 'Tick' volatile, to avoid problems. From Milton and Ben.

- when netrom routes are dropped, either due to obsolesence counter becoming
 zero or by a manual route drop, netrom connections using that route will
 now be be purged if that route was the only route left to the netrom
 destination.

- 'netrom connect' and 'netrom split' don't accept unknown node destinations
 anymore.

- 'MS' display changed; now has
 Core: 76096                   -> coreleft value in bytes
 Up: 3:19:46:59                -> up 3 days, 19 hours
 Logins: 49                    -> 49 total logins
 Users: 2                      -> currently 2 users
 Count: 19                     -> 19 different users have logged in
 Sent: 43                      -> users sent 36 messages
 Read: 186                     -> users read 186 messages
 Rcvd: 171                     -> got 171 msg forwarded to us
 Fwd: 124                      -> forwarded 124 message to other bbs's

- added 'finger database server'; the finger server now will read info
 from the file '/finger/dbase.dat', if there is no '/finger/username' file.
 Ie. if you finger 'johan@wg7j', and the file '/finger/johan' exists,
 it will be sent; if the file '/finger/johan' does NOT exist, the
 '/finger/dbase.dat' file will be scanned (exists.)
 The first line found in this file that starts with the 'username' requested,
 ie here 'johan', will be sent...
 EG: the '/finger/dbase.dat' file can contain:
 johan: WG7J, Corvallis, OR USA, ph.xxx-xxxx. EXTRA CLASS
 ka7ehk is Jim Wagner, in Tangent, OR. Technician license since 1795 :)
 etc...
 NOTE:
 if you have a line starting with 'johannes', a finger to 'johan' will show
 this line if it's the first !

- added  'copy <file> <newfile>' command.

- added 'timed' support, from Brian K. Teravskis, WD0EFL

- fixed buf in send_ax25() and send_nr4(), not freeing buffer if control
 block is invalid.

- display flowmode doesn't start until after the autoexec.nos file has been
 executed. Avoids lockups on remote systems.

- fixed forwarding with empty subject line in msg; now subject is "none".

- fixed '*** done' interpretation in forward.c (looking for -2 instead of 2!)

- bbs forwarding now can be 'scripted'. Format of forward.bbs file is expanded:

 w0rli                 <- still the bbs to forward to
 ax25 ax0 w0rli        <- still how to forward to
 [ multiples of:
 .send this text
 +continue if this string is received
 @wait_this_long for a reply  ]
 w0rli                 <- the areas to forward...
 pnw
 north
 -----------           <- end of this entry

 Valid connect-script lines are:

 '.' lines are like before. The text following will be sent over the
       connection.  This line doesn't need to contain text. In that case,
       a <cr> only gets send.
       NOTE: This will also reset the '+'  reply search string to null!

 '+' lines set a reply string to search for when a line is being received
       with the @ command.

 '@' lines set a timeout in seconds in wich to receive a line over the
       connection. This is the maximum time the system will
       wait for a reply. At this point, an attempt is made to receive a line
       from the connection in the time specified.
       If nothing is received after the timeout time, forwarding for this
       entry is cancelled.
       If something is received, and a search string set with the + command,
       forwarding will be continued only if the search string appears
       somewhere in the line received.
       If the search string was not set, forwarding is continued.

       NOTE: if the value after @ can not be converted to a number, the
       default is 90 seconds.
       NOTE: the search string is reset if forwarding continues after the
       @ command.


  You can have as many of these lines to establish a connection. They need
  not be in any particular order.

  CAVEAT:
  Replies from the connection need to be full lines; ie they have to be
  terminated by a proper end-of-line sequence. This means you can not wait
  for the login prompt from a NOS system, since those are NOT terminated
  with a end-of-line sequence. (see the examples)
  You need to know the EXACT reply from systems you connect through.
  Each @ command reads only one line of data from the connection (if
  any, offcourse). This means that if a system replies multiple lines
  after a connection is made, you need multiple @ commands. (see the
  examples below). This makes it hard to connect via systems that can
  have varying replies, like NOS systems that do not have your system
  marked as a BBS, and thus will send welcome messages and varying
  message-of-the-day etc...


Some examples:

1- a connection via a netrom neigbour:
       w0rli
       ax25 ax0 k7uyx-1        <- initial connection to netrom node
       .c rlimb                <- ask for a netrom connect from this node
       +Connected              <- if we don't get this, things went wrong
       @60                     <- maximum one minute wait !
       w0rli                   <- forward these areas...
       pnw
       allor
       ---------

2- a connection via a JNOS system .
  This assumes that you are marked as a BBS at the JNOS system, so that
  you only get a '[JNOS...] and '>' prompt...

       n7dxt
       ax25 iposu              <- initial connection to the JNOS system
       +[JNOS                  <- wait for sign-on message from the JNOS box
       @15                     <- don't wait longer then 15 seconds
       +>                      <- wait for the prompt
       @15                     <- wait 15 seconds at the most
       .c ax0 n7dxt            <- next, request a gateway connect
       +Trying                 <- NOS replies it's trying...
       @15                     <- wait 15 secs max.
       +Connected              <- wait for 'IPOSU:WG7J-3} Connected to N7DXT'
       @60                     <- wait 60 secs max
       n7dxt                   <- send these following areas
       pnw
       allor
       ----------

3- A connection to a JNOS system, and from there a telnet to a remote bbs
  (again, assumes your system is marked as a bbs !)

       wg7j
       ax25 con iposu          <- initial connection to JNOS
       +[JNOS                  <- sign-on from JNOS
       @15                     <- shouldn't take too long
       +>                      <- next is the prompt
       @15                     <- not too long either
       .t wg7j.ampr.org.       <- ask for a telnet connect
       +Trying                 <- JNOS is trying
       @15                     <- should come pretty soon
       +connected              <- wait for '*** connected to xxx'
       @45                     <- might take a while
       @30                     <- wait for another (blank) line
       +NOS                    <- now come the telnet sign-on message
       @30                     <- wait for this
       @30                     <- after this is a blank line, wait for it
       .w0rli                  <- now we get 'login:' and "Password:" prompts,
       .whomever               <- but they have no <cr>'s, so just answer
       sysop                   <- we're there, forward these areas.
       allor
       wg7j
       pnw
       nos
       ------

- '/sounds y|n' in convers added. This turns the bells on or off.
 Ie. if you don't want the bell if new users log on, do a '/s n' after
 you logon.

-'mbox hideport [<iface>]'
Set or show the 'hide' flags on interfaces. If this flag is set, the mailbox
'P' command will not list this interface for ax.25 connection, unless the user
has sysop priviledges.  AX.25 gateway connections are also dis-allowed,
unless the user has sysop privs. (This is good for stuff like forward-only
ports, etc...)

- fixed scanning of the '/p' command in convers server.

- smtp server accepts messages to areas with sub-directories.
Eg. you can now receive mail for rec.radio.packet, or
test/toys, or rec\ham
These messages will be placed in the right subdirectory under /spool/mail.
CAVEAT: the subdirectory HAS TO EXIST when the mail is received!! It
is not created.!!!
(Ie. int the above, /spool/mail/rec/radio, /spool/mail/test have to exist!)

- mailbox keeps track of new mail in areas since user last logged out.
If 'mbox newmail on', user will get notified on login wich areas have
new mail. New mbox 'AN' command gives the same information.
(default is on)

- the interface flag field, as shown in the 'ifconfig' command,
 has more use. It's bits have the following meanings:
#define CONNECT_MODE    1   /* Send datagrams in connected mode */
#define IS_NR_IFACE     2   /* Activated for NET/ROM */
#define NR_VERBOSE      4   /* NET/ROM broadcast is verbose */
#define IS_CONV_IFACE   8   /* Activated for conference call access */
#define AX25_BEACON     16  /* Send AX.25 beacons */
#define MAIL_BEACON     32  /* Send MAIL beacons */
#define HIDE_PORT       64  /* Don't show port in mbox P command */
#define AX25_DIGI       128 /* Allow digipeating */

- convers configuration is now done with commands, and not the convers.cfg
 file any more. New 'convers' command has subcommands :

 allow [ipaddres|hostname]
       - if set, only hosts in this list will be allowed to link to us
         This does NOT effect regular users.
         Host to allow can be set with multiple 'convers allow' commands
         Typing 'convers allow' shows the hosts to allow.

 hostname [name]
       - set or show the convers host name as announced to users and
         across links. 10 chars max. When the 'hostname' command is
         executed, the 'convers hostname' is automatically set to the
         10 first chars of it, and if '.' are found from the right,
         they terminate the string.

 interface [<iface>]
       - activate interface <iface> for ax.25 convers call connections.
        with no argument will show active interfaces.

 mycall [call]
       - set or show the ax.25 convers call.

 link  [<hostname|ip-address>] [linkname]
       - add a convers link to the system at hostname or ip-address.
         linkname is optional, and sets the name of the link.
         (It will be replaces once the remote systems announces it's
         true name...)

 t4 <seconds>
       - set or show the ax.25 t4 timeout value for conference call
         connections. Default is 7200, ie 2 hours.

- user permission bit to disallow convers access from mailbox or
 from convers call.
 #define NO_CONVERS 32768
 If set, user will not be allowed to give the 'C' command, or connect
 to the convers call.

- fixed double <cr> bug in convers personal data across links. Also fixed
 month display in links-listing.

- 'netrom verbose' is gone. 'netrom interface' now defaults to none-verbose
 and the additional 'v' makes it verbose. EG:
 netrom interface ax0 192      -> non-verbose broadcasting
 netrom interface ax0 192 v    -> verbose broadcasting

- 'ax25 confcall' and 'ax25 ct4' are gone. See above.

- 'ax25 digipeat [<iface>]' now shows or sets digipeating per interface.
 All interfaces default to no digipeating when first attached !

- new 'ax25 bcport [<iface>]' command. Sets or displays the ports that
 ax.25 beacons are sent out on. You need one for each interface you want
 to beacon on. Eg:
 ax25 bcport ax1
 ax25 bcport vhf
 (beacon interval and text are still set with 'ax25 bcinterval' and
  'ax25 bctext')

- new 'mbox mport [<iface>]' command. Sets or displays the ports that
 'Mail for:' beacons go out on. You need one for each interface you want the
 mail-beacon to be sent out. Eg:
 mbox mport ax1
 mbox mport vhf

- new 'mbox sendquery'. If set, the mailbox will send a query to ask users
 if they really want to send the mail after they've type the /ex
 A 'N' or 'n' response will abort the message at that point. The user will
 be notified the message was aborted by a 'Mgs aborted' message.
 (default is on)

- forwarding is now a server-process. Start with 'start forward'.
 Timer is still set with mbox timer command.
 (this and a few other things from Milton Miller, kb5tkf and
  Ben Thornton, wd5hls)

- fixed bug in forward.c that would forward with Mycall as the node call,
 instead of the netrom call. Caused problems if Mycall != Netromcall
 (with help from Milton Miller)

- AX.25 Paclen can now be set on a per-interface basis.
 'ifconfig <iface> paclen <num>' will do the trick.
 (this is good for HF, where you want a small paclen !)
 Default is the 'ax25 paclen' value (ie. 256)

 NOTE: If the interface is activated for NETROM, setting this will also
 effect the 'netrom mtu' value. It will be set to (smallest paclen) - 20.
 If this is > 236, the netrom mtu will be 236 (the protocol maximum!).
 Eg: if you have a HF port with paclen of 64 and active with netrom,
 and another VHF port active with netrom and with paclenof 256, then
 netrom mtu is 44 and 'ifconfig netrom' will show this !
 You can override this automatic assignment with 'ifc netrom mtu <num>',
 but BE AWARE of fragmentation problems that will occur if you run this
 over an interface with a smaller paclen then netrom-mtu + 20 !!!
 (You get ax.25 V2.1 fragmentation, and Thenet, BPQ. MSYS etc can NOT handle
  this! NOS and it's derivatives are the only one that can handle this !!!! )

- Setting the netrom mtu now also works for netrom data! (it was originally
 intended for IP over NETROM use; however, both user data and IP packets are
 just data for the netrom protocol, so who cares :) Previously, everything
 pertaining to NR4 data was hardcoded to 236 bytes max, and would result in
 AX25 V2.1 fragmentation if paclen < 256, NO MATTER what.
 In NR4.C, send_nr4() now chops packets larger then netrom mtu into
 multiple smaller ones, thus preventing ax.25 V2.1 fragmantation.
 (see also 'ifconfig iface paclen' above !)

- AX.25 connection calls are now on a per-interface basis. Ie. you can have
 the same two calls with connection on two different interfaces:
 wg7j-3  <->  ka7ehk  on ax0 , and  wg7j-3  <-> ka7ehk  on ax1 now works.

- 16550 fifo trigger level can be set from attach command. Valid values are
 1,4,8 or 14. If you use this, the 'f' option is now mandatory !
 Add the trigger level following the 'f' or as an additional argument. EG:
 'attach asy 3f8 4 ax25 ax0 1024 256 9600 f8' or
 'attach asy 3f8 4 ax25 ax0 1024 256 9600 f 8'

- bbs forward loop detection added. Ie. when you receive a message that you've
 forwarded already, there is a forward loop. New 'bulletin loophold' command
 shows or sets the number of loops after wich to hold a message. 0 disables
 it, and is the default. Eg. 'bul loop 2' will hold any message that has 2 of
 your R: headers in the message when it is received. Loop-held messages get
 an additional header, 'X-BBS-Hold: Loop'.
 Currently, the sysop is NOT notified of the held message. However, they show
 up with the common 'H' as the type of the message in the List display.
 Messages marked 'H' can only be read by users with sysop priviledges, wether
 that message is in a user's private mail area or not. (This is jumping ahead
 of possible message contents scanning and holding)

- stktrace() from the new KA9Q sources added. This is currently only used
 for invalid free() calls. For each invalid free, it will show a trace of
 where the call came from. This should facilitate debugging.
 The 'test' command demonstrates it. Output is in the file stktrace.out.
 -> You need to have the map-file (nos.map) in the current directory !
 If you have invalid frees showing in the 'mem stat' command, and you have
 stktrace.out output, please send me a copy of that file. That will allow
 me to try and figure out what happened.

- netrom default round-trip-time increased to 45 seconds.
 (15 seconds is pretty unrealistic for a loaded 1200bd network :-)

- minor delinting and convers bug fix by Mike Gallaher, wa3hee

- incoming ttylinks do not create a session if system is unattended

- smtp server checks Message-Id's for possible duplicate BID's
 If found, message is accepted, but not delivered.

- mailbox disconnects on any '***' command, except '*** linked to' (bug fix)
 '*** linked to' should now work with any format, including texnet.

- conference connection sockets are put into no-block mode, this solves
 the data backlog problem that bogs the system down.
 (it will still fill up the tx buffer (even beyond the window size),
 but the send_mbuf() call will not block anymore).

- fixed conference access via mailbox inactivity timeout problem.
 Same with mailbox 'D', and 'W' commands.

- All tcp connections allow verbose ip ports. Currently allowed are
 "convers","telnet", and "ttylink". This is case sensitive, but you don't
 need the whole name. First lettter (for convers and telnet), or first
 two (ie. tt for the ttylink port) is enough.
 Eg. to telnet to the conference server with a split screen, do
 "ttylink <hostname> convers" (this is the same as "ttylink <hostname> 3600").
 This also work from the mailbox: 'T wg7j.ampr.org. convers'

- added split screen options for ax.25 and netrom connects (if compiled in)
 New command "split <iface> <call>" is same as "connect", but with S.S.
 New command "netrom split <node>" is same as "netrom connect" but with S.S.
 (Remember: you can do S.S. telnet's with the 'ttylink' command, by adding
  the telnet port number! (see also above))

- ax25 route commands now takes interface. This allows different digi paths
 per interface ! Eg. MAIL beaconing:
 if you want to digi via different nodes on different interfaces...
 'ax25 route add mail ax0 kf7dq-1'
 'ax25 route add mail ax1 wg7j-3'

- arp add/drop/publish now take interface.
 'arp add wg7j.ampr.org. ax25 wg7j-3 ax0'
 'arp drop 44.26.0.162 ax25 ax2'
 'arp publish gw.wg7j.ampr.org. ax25 wg7j-2 ax1'

- timer process is modified, fixes some timing with PI, SCC and other things.

- mailbox accepts and handles <del> chars (0x08) (from wa7tas).

- mailbox areas with more then maxmsg messages now allow reading of first
 maxmsg messages.

- fingers to the system now show the 'last connected' info for the requeste
 user, if exists. After this, the finger file (if exists) will be shown,
 as usual.

- remote sysop 'dir' and 'more' commands work, but without more-prompting.

- 'netrom hidden [on|off]' enables or disables showing of hidden nodes in
 the N display

- 'netrom interface' allows changing parameters for already active interfaces

- Tracing on AXIP interfaces now also works on receive (ie. input)

- fixed command line expression passing in .asm files for BC++3.1

- new mkname.c and other stuff for BC++3.1 from n1bee.

- nr4 ack bug, kiss-ioctl bug fixes per n1bee.

- netrom bcpoll <ifname>, will poll other systems running jnos1.05(or later)
 or dataengine's running jnos40 to send a routes broadcast. Speeds up route
 discovery...
 Eg. add this to the autoexec file for each activated netrom interface.
 This was primarily written for the DataEngine code, that doesn't have the
 'netrom load' from disk capability.

- tcp retries 0, resets to original KA9Q behaviour, ie no retry max.


VERSION 1.04 (920805)

- at command now takes minutes only too; format 'at mm <cmd>'

- format of /convers.cfg has changed:
 localname             -> still the local convers name
 name moot hostname
 name2 moot hostname2
 etc.
 where 'name' and 'name2' are the names of the convers links to put in.
 'moot' can be anything, but needs to be there for compatibility reasons
 (previously it had to be 'telnet' but that is the only thing accepted and
  is now hard coded (saved code))
 'hostname' is optional, and if defined, it is the hostname that will be used
 first to resolve the ip address of the host to link to. If 'hostname' can
 not be resolved, then 'name' will be used as previously.
 Eg:
 Corvallis whatever jnos.wg7j.ampr.org.
 This will try to link to jnos.wg7j.ampr.org. first, if that isn't a valid
 address, then it will try to link to 'Corvallis'

- added convers '/personal' command to show some info. Up to 30 chars will
 be shown in the users display (/w command).  This info also travels across
 links to compatible servers (ie servers running jnos1.04 or later).
 eg '/p Johan in Corvallis, OR'

- convers hostname can be 10 chars now (instead of 8 previously).
 Be carefull if you link with other server running older, noncompatible
 code; it is wize to keep it down to 8 chars in that case...

- added convers loop detection code, from dl9sau

- bug in convers code that didn't free the socket of a failed link
 attempt is fixed.

- separate ax.25 conference call added, with separate t4 timer.
 If set, connections to this call dump the user directly into the
 conference bridge. New 'ax25 confcall' and 'ax25 ct4' commands.

- new commands 'write' and 'writeall' to send message to users.
 'write' takes either socket # or mailbox username, and message
 and 'writeall' takes message and sends it to all mailbox users
 Eg: 'write 131 test'  'write wg7j "testing messages"' or
 'writeall test'  'writeall "testing messages"'

- socket display (eg. 'so 131') now shows socket creation time

- Added tcp retry timeout from iw0cnb. New 'tcp retries' command.
 Will reset tcp connections after too many retries.

- commented out some non-used code in the socket interface (AX25_UI sockets)
 (saves 1.5k :-) )

- New mailbox rewrite rule:
 mail rewritten to 'refuse' is refused from the mailbox with a 'NO' or
 'Bad host' reply.

- Upped the maximum number of netrom and axip interfaces to 16

- 'netrom interface' shows active netrom interfaces
 (verbose flags: v - yes, n - no, and f - according the verbose setting)

- tcp connect requests (Syncs) are refused if low memory, and
 socket() call will fail if memory low.

- AX.25 source call logging now correctly logs outgoing call, instead
 of interface call. (ie. gateway users will show up in list!)

- conference bridge access from mailbox is not via telnet connection
 anymore, but direct. Is faster and saves 2 sockets, 1 process and
 lots of system overhead. Convers.c has been cleaned up a bit too.

- added check in telnet login procedure for valid (Dos-filename) login name

- all memory address displays have dropped the '0008'. All commands involving
 memory  addresses do not accept the '0008' anymore.


VERSION 1.03 (920701)

- 'mbox tmsg' command. Shows or sets the 'telnet msg', that is
 shown to incoming telnet users before the login: prompt
 eg. mbox tmsg "Please use your call to login. Thank you"

- Domain Name Server code added. Start with 'domain startdns'
 Does not support multiple queries per frame, does not support
 authority and additional rr's in the reply.
 Always gives non-authoritative replies.  Has been tested to
 work with A,CNAME,MX,PTR,HINFO,SOA,NS queries. If other remote servers
 have been configured, if needed they will be used to resolve queries.

- 'netrom interface' changed:
 syntax is now 'netrom interface ifname ### [n|v]'
 where ifname is the interface name to attach
 ### is the route quality, 0-255
 and 'n' or 'v' is optional overriding of the verbose setting.
 If 'n' is given, the route broadcasts on the interface are none-verbose
 if 'v' is given, they are verbose.
 These 2 override the verbose flag !! Ie. if verbose is off, but the
 interface flag is verbose, all routes are broadcast.
 If no option is given, the verbose flag is used...

 This allows verbose broadcasts on axip interfaces, but keeps all the remote
 nodes off the local lan by disabling verbose broadcasts on that interface.

- users don't need telnet-permissions anymore for C,CA, and O

- KU will undelete messages marked for deletion

- 'L<' searches the 'From:' field

- a finger to 'conf' will show the conference bridge users (if configured)

VERSION 1.02 (920615)

- bugfix for recording of telnet session by Ron, vk6zjm added

- POP2 and POP3 from was0206 and gri-2.0j was added.

- userlogging works now also for any mailbox starting with "sys",
 even if not an area; this allows sysops to read sysop-mail from
 private areas, and have the system keep track of last read msg.

- the mailbox 'A' command will show the area names only, NOT
 the descriptions. To show descriptions, type AF
 Comments in /spool/areas now NEED TO START with a '#' char...
 and are only shown in the AF form of the command

- code to restore 16550 fifo status added (from Bill Simpson)

- ftp message of the day, modified from Max (iw0cnb).
 Set/show with 'fmotd' command

- mailbox (L)ist display has been changed a bit to show the To: field
 of messages.

- new mailbox 'L>' command allows searches in the To: field of messages
 (NOT case sensitive!)
 eg: 'L> test' will show messages with To: fields of:
 test@allusa, TEST@somewhere, [email protected], ...

- expanded mailbox 'ML' command :
 'ML'       -  lists all past logins since startup
 'ML n'     -  lists last n logins since startup
 'ML call'  -  gives last login date/time for call

- new mailbox 'Move Message' command for sysops:
 'MM name' moves the current message to mailbox file 'name'
 'MM n[...] name' moves message n to mailobx file 'name'
 eg:
 MM 1 3 4 newarea
 (Moves messages are deleted in current mailbox file)

- 'New mail' messages only print to the command screen

- userlog code now also works during 'R' command

- mailbox 'SR' doesn't generate a Cc: to the original message To: addressee

- user default logging added; keeps track of last time logged-in/out,
 state of XM,XA and XN commands, and how last connection was made.
 gets read at login and restores values that existed at last logoff.

- in mailbox send, the rewrite result 'To:' is only shown to sysops

- new command XN to toggle the netrom id prompt.

- deleted the masking of chars with 0x7f, to allow international
 character sets to pass correctly (in ttydriv.c and telnet.c)

- disallow attaching of axip interfaces with names longer then 6 chars
 This is needed for the gateway code to work correctly (inherent to the
 socket internals)

- fixed bug in the Bye command that would reset the last read message
 to 0, if nothing was Listed in the last area

- netrom inactivity timeout disconnection was not working properly in 1.01
 (wrong timer configured). This is now fixed...

- refusing of new connections when memory is low is now done
 in the protocol modules for netrom (nr4.c) and AX.25 (lapb.c)

- when a nodes-broadcast from a previously unknown netrom
 neighbour is heard, the system send a nodes broadcast too.

- new mailbox 'XA' command; toggles showing of the current area
 with the mailbox prompt. Defaults to on.

- fixed bug that prevented areas in subdirectories from being accessed
 (in mlock() and rmlock() functions). This affected systems using nntp

- modified the nntp client in nntpcli.c to be compatible with my userlog code
 (added a "Received:" line to articles)

- message expiry code can now handle both the 'mailbox' style
 (ie. "Tue, 14 Apr 92 15:11:07") and the 'nntp' style date
 line (ie. "14 Apr 92 15:11:07").
 (so it *should* now work with the nntp client; still NOT tested though!)

- mailbox forwarding: anything that came in with a bid goes out with a bid.
 Thus now 'SP sysop@blah $bid' goes out with $bid unlike before.

- when 'bulletin date' is on, "Date: " now only shows the date,
 no more the  "BBS, ".

- added st_garbage() fix in sockutil.c


VERSION 1.01 (920408)
************

- any user can delete messages in any area that starts with "nts".
 Thus users can delete nts traffic, without having to give them
 permission to delete everything.
 Eg: I rewrite all nts stuff i can deliver to the area 'ntslocal'
 User's can now delete these messages after delivery.
 All other traffic (ie. not for my area) i rewrite to 'nts' to
 be forwarded elsewhere. However, 'nts' is NOT an area, so regular
 users can't touch it (You could also use 'traffic' or whatever
 else suits you...)

- plain 'netrom route info' gives info for all routes
 mailbox 'N *' does the same; from Doug Crompton.

- telnet login's get 3 tries max to be validated; ctrl-d as the first
 char will exit the login-procedure.

- support for the BuckMaster CDRom ham-call database has been added;
 it compiles just fine, but this has NOT been tested !!
 (check the compile switches in config.h; not in the standard
 distribution)
 The commands for this are 'callbook','callserver2','cdrom',
 'start callbook' and 'stop callbook'
 This code comes from KB7YW, taken out of SS_NOS sourcecode,
 and is provided as is...

- fixed memory leak with mailbox finger, and overwrite problem
 with the 'whereto' variable.

- mkname.c now works with tc2.0, bc2.0 and bc3.0, from Ron Henderson, wa7tas

- smtp lzw is a more robust; from pa0gri 2.0f

- tipmail.c timer problem fixed; from ke9yq

- Function key session switching ! (modified a bit from WNOS3 sources)
 If the function keys F1-F8 are not defined, they will switch you to
 the session of that number; eg F3 will switch to session 3 !

- tracing to a session. Function key F-9, if not re-defined with an fkey
 command, switches to it from any other session. (it actually toggles;
 ie you can switch between trace and current session by pressing F9)
 Session tracing defaults to on.
 Trace output is only printed in this session when it is the active one.
 Tracing to file currently disables output to the session.
 Tracing can be set to go to the command screen with 'strace off' command.
 (Sometimes you want to see what's going on while you're typing some
 commands at the console)

 To save memory (about 4 kb.) session tracing can be disabled with a
 commandline option. Invoking nos with '-n' will not setup tracing
 to session, but always trace to the command window.
 (the 'strace' command is disabled aswell)
 (eg 'nos -n -s40' will give 40 socket and tracing to the command window)

- the bid's in history file now have a timestamp with them to allow
 for automatic expiry. Format is "%s %ld\n", where %s is the bidstring,
 and %ld is the number of seconds since 1970 (ie. standard time long-integer)

- BID and MESSAGE expiry built in.
 command 'oldbids <timer> [age]' or 'oldbids now'
   <timer> is in hours and sets the interval that the bid file ('history')
   will be scanned for old ones to delete. Old file is renamed to
   'history.bak' and a new one created. This will also transform old style
   bid's (without timestamp) to new style with timestamp.
   [age] is the optional age in days, and defaults to 30 days.
   'oldbids' will show current values, 'oldbids now' will expire old bids
   immediately, with previously set age value (or default if not set)

 command 'expire <timer>' or 'expire now'
   <timer> again is in hours, to set the interval to check for expired
   messages. The expiration in controlled by the file '/spool/expire.dat'
   This file is a list of fields like
   area age
   where area is the area-name WITHOUT the '.txt' extension. Area CAN
   have subdirs denoted by either '.', '/' or '\' . Thus is *should*
   work with NNTP articles as well (see note 2). Age is the age in
   days of the message. If age is omitted, default is 21 days
   Area and age are separated by one space character !
   On expiry, any area.txt file is renamed to area.bak, and then all
   messages are checked for their age. Age comes from the 'Date: ' header.
   Thus with the 'bulletin date yes' command, BBS style messages can
   be properly expired.
   Some valid formats of the '/spool/expire.dat' file:

   #This is a comment
   #expire the allusa bulletins after 7 days
   allusa 7
   #assume the default for allor (ie 21)
   allor
   rec.radio/amateur\packet 10

   NOTE 1: the use of the mktime() function in the age calculations
   now forces the use of BCC instead of TCC. There is a sort-of working
   replacement of mktime() in expire.c for those that want to keep using
   tcc

   NOTE 2: I have tested the subdir expiration with mail files; NOT with
   NNTP originated messages. If this doesn't work, please let me know !

- mbox mailfor exclude. You can set a list of private mail areas to exclude
 from the mail-beacon. Same syntax as 'mb jumpstart exclude'.
 (mailfor code has been rewritten to be more efficient, less hd access)

- a user does NOT need TELNET_CMD permissions anymore to do the 'CALL'
 command. This is so that we can disallow telnet's and still allow
 connections to the call-server.

- included the latest PI driver in the sources (dated 920329)

- mailbox.c is now split into mailbox.c and mboxcmd.c

- mailbox subcommand 'mbox tdisc' sets the inactivity timeout value.
 If not zero, if mailbox user has not given any input for the timeout
 period, the mailbox connection is closed. This prevents idle users.
 Default is 0 seconds, ie off.
 (can be compiled out with MBXTDISC switch in config.h)

- ftp server inactivity timeout. Command 'ftptdisc'. Again, if not zero
 ftp connection will be closed after no data has flown for the timeout
 period. Defaults to 0 seconds, ie. off.
 This gets deactivated during file transfers in either direction;
 this is to avoid looong slooow transfers to cause a timeout.
 (can be compiled out with FTPTDISC switch in config.h)

- netrom subcommand 'netrom tdisc'. Sets a timer similar to the 'ax25 t4'
 timer. If there has been no incoming data over a level 4 circuit for the
 timeout period, the circuit is reset.
 Default is 0 seconds, ie. no timeout.
 This is usefull with idle forward sessions etc.
 (can be compiled out with NR4TDISC switch in config.h)

- mailbox 'SR' command works again (sending replies...)

- 'LL' command was broke since addition of 'LA'. Fixed again.

- mailbox 'RH' command, to read with all headers (same as 'V')

- R: header interpretation now allows both '@:bbs' and '@bbs' format
 as well as '?:bbs' and '?bbs' (for aplink etc.)

- mailbox 'SC' command to send one message to multiple people
 'Send Carboncopy'; it asks for a list of Cc:-addresses. A user can
 answer with one or more addresses, separated by comma's
 eg: 'Cc: [email protected], [email protected],[email protected]'

- mailbox 'XM n' to show or set (XM n) the number of lines for
 more-prompting. Telnet default is 23, others 0 (same as previously)
 MORE now works for ALL connection types, instead of only for telnets.
 MORE also works with all the 'L' commands (as well as R/V commands)
 (this is NOT logged(yet), so at each login, the defaults are set)

- smtp bactch processing fixed ala VK6RJM

- 'info' command now shows compile date/time.


VERSION 1.00 (920318)
************

- New commands 'bulletin <check|date|return>'
 (Can be compiled out by undefining 'MAILFOR' in config.h)

 'bulletin date on/off' (DEFAULT: OFF)
 if on, the original message date from the last R: line will be
 used in the message 'Date:' line. Off acts as plain ka9q code.
 This allows a more correctly indication of the age of the message
 and improves automatic expiry of messages
 (with the 'at hhmm "shell expire..." ' command !)
 (NOTE: due to the lack of the mktime() routine in the TC2.0 libraries,
  the weekday field in the ARPA-date header is set to "BBS"; as soon
  as i get around rewriting that routine (it is in BC2.0 and above)
  that will be fixed. This causes no grief :-), just shows something like
  'Date: BBS, 12 Mar 92 11:21:00 UTC'
  the presence and length of this field are imperative, since at several
  places the string is scanned for the ',' (smtp) or the lenght (forward) )

 'bulletin return on/off' (DEFAULT: OFF)
 if set, when a message is received via bbs-forwarding
 a 'valid bbs-style return address' will be taken from the
 last R:-line, if one is present. This works with any message
 type that starts with R:-headers (so personal mail as well).

 the 'true from-address' is made as 'user@last-R:line-bbs'
 ie. the from-address is set to come from the user, as send
    with the 'S bla@blah < USER' line, and the 'home' bbs will
    be extracted from the last R: line found
    This allows a correct 'from' the be shown, and allows
    the SR (Send Reply) to work normal, however....
    eg. If the message is forwarded as 'SP W7ABC < W6XYZ'
    and the last R:-header is
    R:920312/1200z @:N7PQR.AB.CD.EF [TEST] #:0 Z:1
    then the 'From:' line will read:
    'From: [email protected]'

    NOTE !!!!
    Since in most of these occasions, the from-hosts will NOT
    be tcp/ip hostnames (eg. wg7j.ampr.org) but rather
    bbs H-addresses (eg. WG7J.OR.USA.NA)
    YOU (ie. the sysop) HAVE TO MAKE SURE your system can handle
    these new addresses by setting up the ALIAS and REWRITE files
    to handle these, and then setup bbs-forwarding (if needed)
    as well with FORWARD.BBS

 'bulletin check on/off'
 When turned on, the forward.bbs file is scanned to build a list
 of bbs's we forward to. If on, 'bulletin check' will give this list.
 When a bbs connects, each time a bulletin or any message send with BID
 is forwarded the R: trail (if present) will be read for comparison
 to the list. If an R: line from a BBS we forward to is found,
 an 'X-Forwarded-To' header is added to the smtp headers of the messages.
 (They are written as the very first thing, to speed up the scanning
  of the headers during forwarding...)
 This 'X-Forwarded-To' header is lateron used by the
 forward code to realize that those bbs-es already have the
 message, and we don't have to try to send it,
 only to get a 'NO' reply. Thus not as much time and network
 bandwith is wasted...

- mailbox 'read' only sets the 'READ' flag when the area is the
 users private mail area. This prevents users with sysop privs
 that read other private areas to mark stuff as read.
 eg. I rewrite lots of private mail into two private mailboxes,
 north.txt and south.txt, to be forwarded in those directions.
 I don't want regular users to be able to read this, so they can't be areas.
 I want to be able to read them myself (sysop privs), but doing so would
 previously set the 'READ' status and cause a message not to be forwarded!
 Thus the fix...
- When a message originates here, and goes out over bbs-forwarding,
 after our R: header, a blank line is inserted followed by the message text.
 (previously the text followed immediately)
- when forwarding a message out of a private area, when the message is a
 bulletin, the message does not get deleted (previously it would). Reason:
 i rewrite certain buls to a private area, so that regular users can't read
 them (eg. 'sb sysop@allor'). I also forward these, and thus might miss the
 message if it gets killed after forwarding... (now 'sp sysop@allor' still
 get killed after forwarding :-( )
- by changing the subject-prompt G3ZZC's LANLINK's auto-upload
 is supported (some of my users run this).
- mailbox 'MS' shows mail-status; number of received,forwarded msgs. etc.
 also shown with 'mbox mailstat' command
- userlogging does NOT work for area names 'help' This allows new users
 to list help messages over and over with a simple L command, without
 having to know the 'internals' of the L-subcommands. Suggested by
 my local users
- user is only notified of new received private mail if user is currently
 in his own mail area. Prevent users from doing RM upon new mail nofication
 and getting the new messages in a different area. Suggested by my local
 users

- remote-sysops 1-packet pings are allowed.


VERSION 0.99 (920310)
************

- Mailbox command 'RM','VM' and 'KM' to read-mine, verbose-mine and kill-mine
 This will read at the most the first 19 unread messages, or
 kill (ie. delete) the first 19 read messages IN THE CURRENT AREA.
 (19 is inherent to the cmdparser routine)
 Also 'LA' to list all messages, and LM same as L for compatibility
 (ie. list unread messages)
- A commandfile, ~/onexit.nos, if present, will be parsed when the 'exit'
 command is given, and after this the system exits. (from iw0cnb)
- When the remote-listener receives a valid 'exit' or 'reset' command,
 the same stuff is done as when 'exit' is typed on the keyboard
 ie. processes are notified, onexit.nos parsed etc...
 then if 'reset' a system reset occurs, otherwize a regular exit()
- Mailbox user display ('M' or 'mbox') is enhanced, showing
 detailed state of all users
 (users in sysop mode will only show to others with sysop privs,
  regular users will see that user to be 'Idle')
- New mbox command 'mbox mailfor <interval>'
 (Can be compiled out by undefining 'MAILFOR' in config.h)
 <interval> is in seconds. A 'Mail for:' beacon will be send
 every <interval> seconds to the address 'MAIL'.
 It contains a list of all private mailfiles
 (ie. none-areas) that have unread mail.
 The beacon is also send when the timer is set,
 and can be forced (ie. kicked) with 'mbox mailfor now'
 Simple 'mbox mailfor' will show the timer value and the current
 users that have mail waiting...
- 'netrom load' now works !

VERSION 0.98 (920303)
************
- LZW compression in smtp now works (thanks Gerard!(pa0gri))
- Mailbox minimal tcp negotiation added (thanks Bob!)
- (hopefully) fixed the last incompatibilities with BID's when
 forwarding.
- Made the 'R:' line "bulletproof" for certain fields not set (from iw0cnb).
- fixed bug that reset number of new messages when new mail was received
 in current public area
- made 'domain translate' work correctly again (from g1emm)
- fixed jumpstart problem (actually ax.25 spec 'problem') when a second
 SABM frame is received. (from Ron Murray, vk6zjm)
- trace only outputs to command session or files; ie. doesn't garble
 other sessions anymore (from iw0cnb)
- added a 'call' command to mailbox.
 (code is optional via the CALLBOOK switch in config.h)
 This is an automatic telnet connect
 to a host and port set with the 'callserver' command.
 Format is 'callserver <host> <port>' where the callbook server
 resides on tcp-port <port> on <host>
 This is mainly useful for gateway systems on Internet.
 It allows users to use the callbook-server at buffalo.edu in an easy way.
 Note: User needs to have telnet permissions
 eg: 'callserver marvin.cs.buffalo.edu 2000'
 then the mailbox 'call' command will try to telnet to this host/port
- added the 'at' timed command execution, from IW0CNB's code
 (this can be compiled optionally with the ATCMD switch in config.h)
 The "at" command with no arguments shows the list of events that are to
 be executed.
 at yymmddhhmm <command>
   Executes <command> at specified date,expressed in Year-Month-Day-Hour-Min.
   If specified date is past, the command is not executed.
 at hhmm <command>
   Executes <command> at specified hour and minute of the current day, or of
   the next day if the specified time is past.
 at now+hhmm <command>
   Executes <command> hh hours and mm minutes from now. hh and mm can be up
   to 99.

 Notes and examples:
 <command> may be any valid NOS command, possibly enclosed in quotes,
 as well as a DOS shell command.
 If you want multiple commands to be executed, use the "source <filename>"
 command.
 The third mode of operation requires the exact writing "now+" in lower case
 and without spaces between hhmm.

 Single command execution examples:
 at 9202150900 exit   /* Shuts off on 15 Feb 92 at 9:00am */
 at 2245 "! /c pkzip oldmail \spool\mail\*.*"
 at now+0500 "smtp kick"

 Multiple command execution examples:
 at now+0859 "source cleanup.net"

(VERSION 0.97b)
- fixed little incompatibility with texnet '*** linked' stuff
- added check for console on all session-invoking commands.
 (ie. you can not do 'dir',etc. from remote sysop anymore!)

VERSION 0.97 (920220)
************

- User status keeping.
 The mailbox now keeps track of the last listed message
 in each area for each user. Next time the area is listed, by default
 only newer messages are listed. 'L start# stop#' and 'LL #' will
 still list all messages.
 This info is kept in a file 'areaname.USR' in \spool\mail .
 eg. the area 'amsat' has it's info in \spool\mail\amsat.usr
 The content is simply a list of user names, followed by the id-number
 of the last message listed in this area.
 The content is updated when the user switches areas, or logs out.
 The .usr files are build completely automatically, there is nothing
 you need to do to get things started.
 This feature can be turned of by undefining USERLOG in config.h
 It currently DOES NOT work in areas in subdirectories under ~spool/mail .

- The expanded bbs-forward R: line gets only send if all of
 mbox haddress, fwdinfo, qth and zip are set. Otherwize a simplified
 R: line gets send with only time, @-bbs and message-#

- the mailbox '*** linked to' handling is a bit more robust.
 Every user has permission to do this now, but if sysop-password is not
 set, SYSOP_CMD priviledges are reset.
 It will not allow some one to reset the NO_SENDCMD, NO_READCMD or
 NO_3PARTY protection, if they were disallowed in the original login.
 It now also sets the new call for outgoing gateway connects.
 Handles the TEXNET 'linked to' message, but doesn't use the ssid
 from this (i see no need for this)
 If 'linked to' is done, this logged to the logfile

VERSION 0.96
************

- requested by wb5bbw: logging of mailbox telnet/netrom/ax25 gateway connects

- 'mbox expert' command is gone. Instead default state can be set for each
 user in ftpusers database. Use value of 16384 to set user as expert.
 X command from mailbox will still toggle, but NOT update the default in
 ftpusers.

- hidden ML mailbox command to show previous users,
 also shown with 'mbox past'

- lzw compression in smtp (same as in gri2.0d)
 (disabled in the distribution .exe, since there are reportedly bugs!)

VERSION 0.95
************

- jumpstart has been ruggidized. Lapb now sets a flag in the ax.25 control
 block to indicate wether jumpstart was used. If not used, the first line
 to trigger the mailbox is eaten again.
 Also, a list of calls to excluded from jumpstart can be set (or shown) with:
 mbox jumpstart exclude <one or more call>
 eg:
 'mbox jumpstart exclude wg7j-4 kb7bhf-5 pa3dis'
 Now when either one of those connects, jumpstart will not be used.
 You can show the list of excluded calls with 'mbox jumstart exclude'
 or add more with additional 'mbox jumpstart exclude call call call...'
 lines

- added Jerzy Taraziuk's ksubr mods  (main-process stack checking)

- added code in lapb.c to drop non-local ax.25 routes when a connection closes
 (ie. routes coming from gateway users using digis etc.) Inspired by K4TQL
 Changed routes added in the mailbox gateway and in doconnect() from AX_LOCAL
 to AX_AUTO, such that these routes are only temporary.
 The only permanent ax.25 route entries are now those entered with the
 'ax25 route add' command.

- added Mike Billow, N1BEE's minheap trick in pc.c to (hopefully) resolve
 memory problems when shelled out with the multitasking shell on

- additional config.h switches to undefine multitasking shell code,
 ax.25 ip autoroute, shell-command and some unneeded sessions
 (for switch setup)

- dropped autoroute in the distribution because it causes problems
 when using vc for ip links. It still can be added by changing config.h
 and recompiling


VERSION 0.94
************

- bbs flag in ftpuser:
 IS_BBS     -  the user should be treated as a bbs
 (#define IS_BBS      8192    /*This user is a bbs*/)

- node list in mailbox 'N' command is sorted, per Doug Crompton's code
 Sort can be done by alias or call, set by 'netrom route sort' command
 default: by ALIAS

- netrom neighbours can be listed with 'NR' from mailbox
 this also shows if a route has been used in the last 60 seconds
 (an '>' shows up in front)

- better protection for mbox password and lock commands
 (only access via keyboard, suggested by Gerard, pa0gri)

- fixed a longtime bug with loosing the BID when forwarding bbs mail
 that was received with a bid from someone else

- little bug fixed that would show multiple paths in the ftpserver pwd command

- when jumpstart is off, the line that triggers the mailbox (ie. the CR)
 will be eaten again, like in plain KA9Q (instead of being taken as a
 command, as in previous versions)

- ala PA0GRI:
 mailbox chat is now 'operator'
 mailbox users is now 'mboxusers'
 mailbox upload is back !

VERSION 0.93 (920126)
************

- anonymous permission ala pa0gri's 'univperm'

- Additional mailbox user permissions:
NO_SENDCMD -  disallow all mail, except to 'sysop' or 'SYSOP'
NO_READCMD -  disallow reading of any mail
NO_3PARTY  -  disallow 3rd-party mail to be send
These bits need to be set in order to disallow those actions,
such that ftpusers need not be modified if you don't want to mess
with them

Thus permissions are now:
#define AX25_CMD        8       /* AX.25 gateway operation allowed */
#define TELNET_CMD      16      /* Telnet gateway operation allowed */
#define NETROM_CMD      32      /* NET/ROM gateway operation allowed */
#define SYSOP_CMD       64      /* Remote sysop access allowed */
#define EXCLUDED_CMD    128     /* This user is banned from the BBS */
/* 256 and 512 are used in PPP*/
#define NO_SENDCMD  1024    /*Disallow send command*/
#define NO_READCMD  2048    /*Disallow read command*/
#define NO_3PARTY   4096    /*Disallow third-party mail*/

- additional 'cls' command to clear the command-session screen

- mailbox command to set offset between computer's time and UTC.
 this is used with forwarding ax.25 bbs mail such that the R: line
 indicates correct UTC time with the 'z'.
 ie. if you don't have your computer running with UTC time,
 set this parameter.

 eg: on the west coast, local time is UTC - 8 hours.
     if your computer runs with local time, issue the following
     command:
     'mbox utc -8'
     The default value is 0, ie computer time = UTC .

     Both positive and negative offsets (for those outside the US :-))
     are supported. The code will automatically account for jumps into
     the next or previous day, or year and checks for leap-years on
     february 28/29

- Netrom Level 4 problem (not sending data queueud up)
 is fixed (ala Dave Perry, VE3IFB)

- Remote Sysop password protection
   Set the password with 'mbox password your_password'
   Maximum password lenght is 30 chars.
   NOTE: Users still need sysop premission in the ftpusers file !
   (this is easy to change in the soures)
   If the password is not set, users with sysop priviledges don't get to
   pass the query, but jump into sysop-mode right away. (the old way!)
   If it is set, 5 numbers are prompted. The user then needs to answer
   with the correct 5 characters from the password. The first char is number
   zero !
   You can give as many lines answering the query, to mislead people
   listening in :-). End with a blank line, and if one of the answers you
   gave was correct, sysop permission is granted!

   eg: 'mbox password *12345abCDE'
   you give the '@' command:
   system prompts: '3 7 2 9 0'
   you answer:     agk4e
                   thier
                   3b2D*           <--- the right answer !
                   9qPr&
                   <blank line>    <--- just hit <CR>

   Sysop permission is now granted !

-Forced NS16550 attaching
   optional 'f' parameter in 'attach asy' forces the presence of the 16550.
   eg: attach asy 0x3f8 4 slip sl0 2012 1006 2400 vf
   sets VJHeader compression ( the 'v') and forces the 16550 ('f')

VERSION 0.92 (920114)
************

-Some additional configuration switches in config.h
These save lots of memory (MBFWD and ALLCMD undef'd save about 50k!)
MBFWD  - if not defined, excludes mailbox forwarding code
        and related commands
ALLCMD - if not defined, excludes a bunch of rarely used commands
        (I this did for the internet-slip server we run here)
   Excluded are:
   delete,rename,more,tail,dump,status,motd,cd,dir,finger,fkey,info,mail,mkdir
   pwd,record,rmdir,watch,test,upload,bbs
ALLSERV - if not defined, only the basic servers are included
   Excluded are:
   discard,echo,tip,ttylink servers,
   the ttylink command and the split screen code
Along with these are some fixes regarding NRS and TRACE. Main.c and scc.c
had a few things not properly ifdef'd such that modules needlesly were pulled
in at link-time.

-Kicking or stats of sockets made easier :
1-'tcp|ax25|netrom kick' or 'tcp|ax25|netrom stat' commands
   can be given just the first 4 numbers.
   The '0008' is automatically appended when a lenght of 4 is detected.
   eg: 'tcp kick 76ea' is the same as 'tcp kick 76ea0008'
   (this is ala N1BEE)

2- New command 'skick <socket#>' to automatically kick whatever type the
   socket is. This kicks valid sockets of type TCP, AX25 and NETROM.
   Use 'socket' command to get a list of used sockets.

-AX.25 forwarding is changed.
1) the R: line is ALWAYS sent.

2) some additional R: line fields can be set with
   -mbox zip <your zip>           : sets zip code to be used
       eg. 'mbox zip 97330'             will show 'Z:97330' in R: line
   -mbox haddress <your Haddress> : sets Hierarchical address
       eg. 'mbox haddress #CRV.OR.USA' (note NO leading period!)
               will show '@WG7J.#CRV.OR.USA' in R: line (assuming Mycall
               is set to WG7J)
   -mbox fwdinfo <your info>      : sets [info]
       eg. 'mbox fwdinfo "BCARES BBS"'  will show '[BCARES BBS]' in R: line
       eg. 'mbox fwdinfo Testing        will show '[Testing]' in R: line
   -mbox qth <"qth, St">          : sets your qth (and state)
       eg. 'mbox qth "Corvallis, OR"'   will show 'Corvallis, OR' in R: line
       eg. 'mbox qth Corvallis          will show 'Corvallis' in R: line

3) A message number is sent.
  The message number sent in the '#:' segment comes from the 'id AA####'
  part of the smtp header.

   The R: line looks as follows:
R:date/time @:MYCALL.HADDRESS [your info] your-qth-st #:IDNUM Z:your-zip

4) Optionally sending of the smtp headers.
   Sometimes a message will come in over SMTP and go out via AX.25 forwarding.
Normally the SMTP headers of the message are NOT sent. Thus there is no trace-
back trail beyond your system, since the only trace is your R: line.
If you want to include most of the SMTP headers from all previous
delivery hops, then use the command :

'mbox smtptoo on|yes|1'     (default: OFF)

(This does not send some duplicate line line Subject: etc. that already have
been sent)

VERSION 0.91 (920103)
************
These mods originated in my work on the V25/V40 port of NOS. Version number
is taken from that code-version.

Several NET/ROM changes:

One netrom call, different from any other interface call can be set with
'netrom mycall <nrcall>'   (or 'ifconfig netrom linkaddress yourcall')
This is the call used in netrom route broadcasts !

Netrom alias setting:
Either the 'old' way can be used:
netrom interface <label> <alias> <pathqualilty>
or the alias can be set with 'netrom alias <myalias>'.

If 'netrom alias' has not been set when the old 'netrom interface' command
is given, the alias will be taken from this.
If 'netrom alias' has been set, the 'netrom interface' alias is ignored.
If the alias is set with the 'netrom interface' command, later
'netrom alias' commands will override the alias !

Thus there is only ONE alias for the system
This alias is used for ALL active netrom interfaces, wether you set
different aliases in the 'netrom interface' commands or not !

This alias is also used in netrom route broadcasts.
(
The 'netrom interface' commands doesn't need the alias in it anymore
You can use a simlified version of the netrom interface command:
'netrom interface <ifname> <quality>'
)

Connects (and digi's) to this netrom call and to the alias (with ANY ssid)
are accepted.

If not running netrom, you can still set the netrom alias, and thus
allow connections to the alias...
(digipeating also works then, with any ssid)

SOME EXAMPLES:
******
eg. 1
if you have the following configured :

netrom mycall WG7J-11
netrom alias WGJBOX
netrom interface ax0 192     #assuming ax0 and ax1 are valid interfaces
netrom interface ax1 191

then netrom broadcasts on both ax0 and ax1 will announce you as WGJBOX:WG7J-11
users can connect (or digi's via (if enabled)) WG7J-11, WGJBOX-x, where x=0-15
Connects to the regular ax25 mycall, or other valid interface calls
set with ifconfig are accepted as well.
******
eg. 2
if you don't run netrom but still want an alias for your system
(and netrom-support is compiled in your executable :-))
then simply set the alias:

netrom alias WGJBOX

This allows connections and digi's (if enabled) to WGJBOX-x, where x=0-15
Connects to the regular ax25 mycall, or other valid interface calls
set with ifconfig are accepted as well.
******

-LOTS of MAILBOX changes:

- mailbox outgoing connects use the user call !
 If a user logs in over telnet, the login name will be used as call,
 if:
 A -  there is at least 1 digit (0-9) in the name
 B -  the name can successfully be set to a call
   (ie, 'anonymous' won't work !)
 If the above 2 rules don't work, ax.25 and netrom permission are
 denied, no matter what they we're set to in ftpusers
 Be careful, this still allow someone with '4us' as login and
 permissions set, to go out on ax.25 or netrom with call '4us-15' !!


JUMPSTART:
The mailbox is jump-started when:
the remote address connecting to us is not a known netrom neighbour and
the interface mode is not VC. If both these are true, it is assume to be
a user connecting to the mailbox, and the mailbox is jump-started
upon the SABM frame is received and answered. Thus NO ADDITIONAL cr or whatever
is needed to trigger the mailbox...

In Yeoman's terms: regular users get the prompt IMMEDIATELY upon connecting!!

The above is on by default, but can be changed (ie. turned off) with
'mbox jumpstart on/off' (default: ON)

MAILBOX PROMPT:
'mbox expert on/off'  (default: OFF)
Start user in Expert mode; ie short prompt. This can be toggled from
the mailbox with the (X)pert command.

'mbox nrid on/off'    (default: OFF)
If on, the prompt is 'ALIAS:CALL} ' followed by the whole list of
commands when not in expert mode.
If off, the prompt is as normal in none-expert mode, and '> ' in
expert mode. BBS prompt is unchanged.

Thus,
With nrid OFF and expert OFF, the system looks like 'normal':
Msg #0: A,B,.....,Z,?>

With nrid OFF and expert ON, you get a short prompt :
>

With nrid ON and expert ON, it looks like a 'standard netrom' switch:
WGJBOX:WG7J-11}

With nrid ON and expert OFF, it looks like :
WGJBOX:WG7J-11} Msg #0: A,B,.....,Z,?>

USER COMMAND-CHANGES
No separate pseudo-netrom interface (the old N command) exists anymore.
(N)odes has taken its place, giving the regular list of nodes

New mailbox user commands are:
(X)pert: toggle expert status
(P)orts: gives port/interface description
(N) nodename : gives more descriptive information
(U)sers: shows all users and outbound link with type (ie. telnet,netrom,ax25)
   (the Upload command has been sarificed for this, since no-one around here
    uses that)
(C)onnect:
'c' is the old chat with sysop.
'c name' is a netrom connect, accepting BOTH ALIAS and CALL. Gives error
        and help if name isn't either one.
'c port call' is an ax25 connect. Uses the USER's call with inverted SSID !
       gives help on error.


-KEYBOARD LOCKING
'lock password <your unlock password>' sets the password
typing this DOES NOT clear the screen, so set it in the autoexec file
or type lots of CR's to clear the screen after this
then typing 'lock' will disable any command from being executed
until the password is type. During this input echoing is disabled,
so that your password will not be echoed to the console.
This only works form the keyboard, so that remote sysops cannot lock you
out !

-MINOR COSMETIC CHANGES:

-'ifconfig <iface> description "your description"'
This shows up in the new (P)orts command in the mailbox,
as well as the ifconfig list

- G4JEC's ax.25 ip autoroute code is added.
 This code automatically adds a temporary ip route to the target
 (if none exists) when ip packets are received.
 Configurable with:
 'autoroute on/off'. (default: OFF)

 As suggested by Mike Billow, this only works when RSPF is not active.
 Attaching the first rspf interface automatically turns it off, and
 autoroute can not be turned on anymore after that.

-mailbox sysop (@) is protected against 'exit'. This now simply returns
you to the mailbox, instead of exiting net.exe!

-kiss attach checks for asy interface type (such that you cannot attach
kiss ontop of the netrom interface etc.)

-mbuf.c interrupt allocation fixed per hb9rwm