NewsPlex for Windows
Version 4.4 November 2005
Copyright © 1999-2005 by Adam Mirowski
Introduction
Overview
NewsPlex is a news-server multiplexer. It allows any news-reader to access several
news-servers simultaneously, by merging their content transparently into
one single virtual news-server. NewsPlex merges the lists of news-groups proposed by
different news-servers into one single list, and for each news-group, it merges
the lists of articles available on different news-servers into one single
list of articles. For each active news-group, NewsPlex maintains an index,
and when a news-reader requests an article, NewsPlex forwards this request
to the appropriate news-server.
Additionally, NewsPlex can be used to quickly explore large lists of
candidate news-servers and evaluate their service value. This is
called the Minimal mode.
NewsPlex runs on your own machine (or possibly on some other machine),
in the background,
and appears as a standard news-server to your news-reader and as a news-reader to
your news-servers. It is therefore somewhat similar to a proxy
or to a web cache.
NewsPlex runs on Windows (95/98/Me/NT/2000/XP), OS/2 and Unix (Linux,
Solaris, FreeBSD and Windows's Interix subsystem).
This version and this manual are for Windows.
Skip to Installation
Features
Full news-group list
NewsPlex is able to efficiently manage the full Usenet news-group
list, which has over 150,000 entries today.
Handling of news-groups is deferred. All news-groups are originally in the
inactive state. This allows to reduce disk, cpu and
network usage and was a prerequisite for handling the full
news-group list. The activation of a given news-group is performed
automatically, when a news-reader accesses it, ie. requests the list
of articles it contains. Up to a few thousand news-groups can be
activated before performances drop.
The first time a news-group is entered, NewsPlex generates an internal
article announcing that the news-group is now being downloaded, starts
downloading the news-group from all news-servers, waits for a few seconds to
have a chance of getting some real articles, and returns the
resulting list to the news-reader. The full news-group contents will be available
a few moments later.
Configuration
NewsPlex is plug-and-play. When run for the first time,
it will auto-configure itself to handle
the full list of news-groups and to use all the news-servers which
it can find on your local network or referenced in files on your
machine. It will complete this list with a few dozens of well-known
specialized news-servers.
It is later possible to add or remove news-servers. It is also possible to
restrict the group list, for example to save memory. It is also
possible to improve performance by either tuning some parameters
or activating features like the asynchronous article retrieval.
NewsPlex is controlled through command-line options
and configuration files at startup
time, or dynamically, from a Web browser
or by telnetting into it.
The provided NpNNTP command line utility can be used
to issue commands to NewsPlex, for example from
batch files.
Clients
NewsPlex can service several news-readers at the same time.
This notably allows to control it from the network
while it is already being used by some news-reader.
NewsPlex constantly monitors whether the news-reader which has requested
an article is still there to receive it and has not disconnected
in the meantime. If not, it stops the retrieval tentatives
immediately.
NewsPlex can be seamlessly inserted between your existing news-server
and your news-reader, without disturbing the list of news-groups or
the article numbers.
Note: this feature is currently broken.
Access
NewsPlex allows optional login/password authentication
of users. It offers two levels of access: ordinary/user
and privileged/administrator.
It is possible to restrict access to only news-readers
running on the same computer.
Background operation
NewsPlex can be run in the background, permanently. It will explore
news-servers periodically to maintain its article database up to date.
NewsPlex does not need to be stopped if the network connection goes
down, for example because you disconnect from your ISP. It will wait
until the connection is up again and continue operations.
On Windows NT/2000/XP/2003, NewsPlex can be installed
as a service. This allows to have it running even
when nobody is logged in, and to have it launched
automatically at system startup.
Performance
NewsPlex always uses the best news-server for requesting an article,
among those having it. It will use the remaining news-servers if the
best one could not deliver the article. Servers are rated dynamically
according to current speed, best speed obtained in the past, latency
and availability.
NewsPlex remembers errors occurring in the middle of
an article retrieval, typically news-server timeouts or unexpected connection
terminations, and will try to use a different news-server as
source the next time the article is requested.
Error isolation
NewsPlex is able to use any news-server as news source, even news-servers
which implement very old versions of the news transfer protocol, and yet
always exports a modern interface to news-readers. Errors occurring
during the exploration of news-servers are also recovered, through either restarts,
deferring or workarounds.
article descriptions imported from news-servers are carefully checked
for correctness. Those which appear garbled, typically a
result of overruns in the news-server, will be asked for again, as long
as progress is made. In non-recoverable situations, bad article descriptions
are ignored and not stored in the article database; a correct version
will most probably be available from some other news-server.
NewsPlex is able by itself to fix incorrect or missing
Bytes, Lines and Message-ID information for articles (in the last
case, a Message-ID of the time-stamp@newsplex
or similar form is generated).
Such errors do not cause rejection of article descriptions.
Tricky situations
NewsPlex supports connecting to news-servers either directly, or through
proxy servers (SOCKS 5, SOCKS 4, HTTPS, simple tunnels or Sun-specific).
NewsPlex can be used as a client of another NewsPlex.
It can even be a client of itself, although this
normally happens only accidentally, if a given
news-server name resolves to a local IP address.
Filtering
NewsPlex can filter out unwanted articles, based on the
From:, Message-ID, Subject: and other fields of article descriptions.
Wild-cards are supported.
NewsPlex automatically removes junk lines from the headers
of posted articles and does not add lines of its own.
Through extra header lines, news-readers tend
to disclose more information about your software and hardware
configuration
than what you usually want other people to know, and this
cannot generally be disabled by other means.
Currently, the
Sender,
User-Agent,
X-Accept-Language,
X-Binary-Poster,
X-Converter,
X-Hamster,
X-Korrnews,
X-Mailer,
X-MimeOLE,
X-MSMail-Priority,
X-Newsposter,
X-Newsreader,
X-Posting-Agent,
X-Priority,
and X-WM-Posted-At
lines are eliminated. This can be adjusted thru
clients.junkPostedHeader= settings.
Note that some news-readers also embed identification into the standard
Message-ID header line. Typically, this can be a prefix like <Xns
or a suffix like @4ax.com>. NewsPlex does not modify
this Message-ID line by default, but you can use the
clients.junkPostedHeader= setting to strip it as well.
It is also sometimes possible to ask the news-reader to
not provide it. When a posted article does not
contain a Message-ID, the news-server will generally generate one
by itself. NewsPlex can of course do nothing
about header fields added by the news-servers themselves.
Asynchronous article retrieval
NewsPlex supports asynchronous article retrieval. Instead of
providing an article immediately, NewsPlex can instead simply remember
that it has been requested and retrieve it independently and in
parallel with the news-reader operation. The news-reader is either returned a fake article,
which only informs about the asynchronous article retrieval in progress, or told that the
article has been deleted.
The real article will be available in the async
news-group, managed locally by NewsPlex, as soon as the retrieval finishes.
Having asynchronously retrieved articles visible in a separate news-group
allows to use the news-reader facilities for merging multi-part postings.
NewsPlex slightly changes the Message-IDs inside asynchronously retrieved articles,
so that news-readers able to detect cross-posts consider
them as different from the fake articles returned initially.
asynchronous article retrieval allows to accelerate retrievals
by parallelizing operations and eliminating idle moments.
- It
is useful when articles are available from several news-servers and the
bandwidth bottleneck is remote, so requesting several articles
from several different news-servers in parallel allows to progress faster.
- It is also useful if a news-server responds slowly or limits the speed on
a single connection, yet allows several connections.
In all
these circumstances a news-reader requesting articles one by one performs
poorly.
- It allows
to retrieve large batches of articles from news-servers which become
temporarily unavailable; most news-readers would stop at the
first error.
- Finally, it allows to use the news-reader to do something else
while large/binary articles are being retrieved.
An arbitrary number of article retrievals can be scheduled,
and up to 4 retrievals are performed at once
(this can be adjusted with the async.simultaneous= setting
in etc\newsplex.ini).
NewsPlex remembers which
articles remain to be retrieved even across shutdowns and restarts
and finishes retrievals the next time it is run.
You are not obliged to access the asynchronously retrieved articles
through the async news-group, because asynchronously retrieved articles are also
visible as async\xxxxxxxx.ok files.
If articles contain binary attachments,
you can directly run arbitrary decoding tools on the
files and even delete them when done.
|
Since version 3.6, the NpUud uudecoding utility is provided
and since version 3.7 it also supports the yEnc format,
which notably offers reliable decoding and
automatic multipart merging.
NpUud can extract the binary
attachments from any file and put whatever
remains into a separate .hdr file
named after the first attachment.
|
The async.executeCmd= setting in etc\newsplex.ini
allows to specify the program which will be run each
time a new async\xxxxxxxx.ok file is created.
When to use NewsPlex?
NewsPlex is useful when your main news-server does not offer
all the news-groups you want to read, or when these news-groups
are incomplete (for example some articles are filtered out
or parts of multi-part posts are missing), or when the
expiration delays for articles are too short.
If your news-servers are unreliable, become easily unreachable
or give timeouts, NewsPlex will isolate you from these errors,
perform the necessary retries in the background and keep you
posted with the latest news in the minimal time and without
drudgery.
Few news-readers allow using several news-servers at the same time,
and very few can take articles from several news-servers
for a single news-group transparently, or request an article from
different news-servers until successful. NewsPlex allows you to choose your
news-reader on other criteria than these abilities.
Because NewsPlex can service many users at the same
time, running on a well-known machine on your
local network, it can avoid everybody the work to
setup and maintain a multi-server configuration
themselves and can globally reduce the amount of data
transferred with the Internet.
Author
Adam Mirowski <mirREMOVETHIS@jalunaREMOVETHIS.com>
NewsPlex version 4.4 is freeware.
It is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. You can use it at your
own risk, and report whatever problems you have encountered with it.
You are free to copy this software ONLY if you include this document
file and all the other accompanying files with it. You may NOT charge
anyone for a copy of this software
other than a small copying fee. You may NOT include this software with
any commercial software without the written consent of the author.
Unpack the NewsPlex distribution archive to any directory.
You should notably have the executable file newsplex.exe and a help file
newsplex.htm in HTML format, which you are currently reading.
There should also be a boilerplate file file_id.diz and
a descript.ion file with descriptions of all the files
in the distribution.
There are also several utilities provided, which can assist
you with dealing with binary and text files of various types.
Because of the auto-configuration feature, you can start
NewsPlex without providing any command-line options or configuration
files.
Start
NewsPlex is a console-mode program. It can be conveniently
started from either a command-line window or from
a shortcut on the desktop.
Alternatively, it can be installed as a service
and managed using standard Windows commands.
You can start NewsPlex by typing its name.
The first
time it is run, NewsPlex just creates configuration
files, fills them with default settings and exits.
The default settings include a default list
of news-servers to use (except in minimal mode,
set thru a command-line option).
You can then edit the created files, and run
NewsPlex again.
Alternatively, you can install NewsPlex
as a service at this point, by running
it again with the -si command-line option
(NewsPlex acts as its own installer).
You also need to provide the -d directory
option again if NewsPlex is not installed in the
current directory.
The NewsPlex service can be started
using either Windows service-oriented commands,
or by running the program again with the
-sa command-line option (NewsPlex acts as its own controller).
Then you can connect your news-reader to machine name
localhost (or Internet address 127.0.0.1)
and the standard NNTP port 119.
NewsPlex will need to connect to at least one
news-server and start getting the news-group list from it before offering news-groups
other than the async news-group.
Stop
To shutdown NewsPlex when it runs in the foreground you can
send it a Ctrl-C or a Ctrl-Break signal.
You can also click the Close button, double-click the
system menu button or select Close from the system
menu of the NewsPlex window.
When NewsPlex runs as a service, it can be stopped
using standard Windows service-oriented commands,
or by running the program with the -so
command-line option (NewsPlex acts as its own controller).
It is also possible to stop NewsPlex from
the Web browser interface or by telnetting into
it (telnet localhost 119) and entering
the NPSHUT command.
This command can also be sent with the NpNNTP utility.
As the last recourse, you can terminate NewsPlex using
the End Program button of the Task Manager
(Ctrl-Alt-Del dialog).
Uninstall
If NewsPlex was installed as a service,
first stop it by running the program again,
passing the -so command-line option, then uninstall
the service by passing the -su command-line option.
These commands can be executed from any directory
and do not need to be passed the -d directory
command-line option.
To uninstall NewsPlex, just delete the directory
from which you started it (or the work directory
specified with the -d command-line option) and the directory
to which you unpacked the distribution files;
this is usually the same directory.
If you just want to delete the generated
files, run the program with the -C command-line option.
NewsPlex never writes or modifies anything outside
of its startup directory or the -d directory.
The configuration files
NewsPlex accepts many settings thru the etc\newsplex.ini,
etc\servers.ini and etc\filters.ini files.
They are ASCII files, and are organized into sections
and entries, just like old Windows .ini files.
etc\newsplex.ini replaces most of the command-line options which existed in pre-4.0
versions of NewsPlex and all the files from
the old config directory, except config\servers
which logically became etc\servers.ini.
Sections are introduced by
[section-name] lines,
while entries are lines of the
entry-name=value form.
Entry names are not case-sensitive, but string values can be sometimes.
Certain sections and entries can be repeated.
Repeatable sections will create several objects
of the same type, eg. each [server]
section in etc\servers.ini describes a
single news-server. Repeatable entries will create
arrays of objects, eg. comment= settings
create multiline comments. If a given
section or entry type is not supposed to
be repeated, it will just update the
value(s) of the previous section or
entry of the same name. In this case, when
NewsPlex rewrites the .ini file,
only one such section or entry is written.
This manual often uses the section-name.entry-name
notation in order to refer to entry entry-name
in section section-name.
In the descriptions, boolean settings
are shown with their non-default (active) values.
If a setting is not present, NewsPlex will
use the default hard-coded value.
This release of NewsPlex does not yet offer the possibility of
modifying all the settings in the .ini files from the
Web interface. You will have to edit the files by hand therefore.
If you modify them, you will need to restart NewsPlex before the
modifications are taken into account. The restart can be performed
from the Actions web page, with the NPRESTART command or
by shutting down NewsPlex and re-running it. Note that certain files
are rewritten automatically on exit. This can be disabled however.
The etc\servers.ini file
This file contains the list of news-servers to use
and their configuration settings.
It can also specify which proxy, if any, should be
used for accessing a given news-server (see a specific chapter below).
There are 4 possible types of sections:
[file] section
This section hosts comments for the file.
| Setting |
Description |
comment=string1
comment=string2
...
|
Allows to add comments to the file.
Can be repeated as many times
as necessary, to create multiline comments.
Comments will be preserved if this file
is rewritten.
It is also possible to have comment lines
starting with ; or #,
but such comments are not preserved
if the file is rewritten.
|
[server] sections
Each [server] section defines a single news-server.
Compared to the old one line per news-server config\servers file:
- the server-number field has become the id= setting
and is now allocated automatically
- the server-url has become the url= setting,
and is the only compulsory setting
- the flags have become various fully spelled out
settings, eg. a became the attemptMsgId= setting
- comments can be stored in comment= settings
There are no equivalents to the old exit and
dontexplore keyword lines. The first one would
make little sense, as NewsPlex must be able to parse the
etc\servers.ini file entirely to be able to rewrite it later
without losing information. For
the second keyword you can use the cut and paste facilities
of a text editor to add an explore=0
setting to every news-server which requires it.
| Setting |
Old news-server flag |
Description |
|
id=server-number
|
|
server-number must be unique for each news-server and greater
than 0. It identifies the news-server in the article database
and must not be changed after a news-server has been explored.
It is computed automatically
if not provided; the etc\servers.ini file
is rewritten afterwards.
|
|
url=server-url
|
|
Should be the URL (Uniform Resource Locator)
of the news-server, that is its Web address.
It must contain at least the hostname of the news-server, and can
optionally contain
the news:// prefix, the login name,
the associated password and the port of the news-server.
A given login name, hostname and port combination
can be provided only once because it is used to
construct a unique name for files in explore
and newsrc2 directories.
Some examples:
[server]
url=news://news1.yourisp.com
comment=news-server without login
[server]
url=news://mylogin:mypass@news2.yourisp.com
comment=news-server with login
[server]
url=news3.yourisp.com:4000
comment=news-server on port 4000
If you need to pass funny characters in the
login or in the password, use standard % escape
sequences: a % character followed by the hexadecimal
ASCII number of the offending character. For example:
- @
can be escaped as %40
- : as %3A
- a blank as %20
So if the login is
for example ano:nymous and the password
joe@domain.com, the resulting url= setting
will be
url=ano%3Anymous:joe%40domain.com@newshost.com
|
|
disabled=1
|
|
The news-server is disabled. It still has a server-number, but is generally
not used in any way until it is reenabled. Currently,
re-enabling can be only done by editing the etc\servers.ini
file by hand. The disabled news-server notion replaces commented
out lines in the old config\servers file.
|
addedDateSecs=value
addedDateString=string
|
|
NewsPlex automatically generates these settings when
noticing a news-server for the first time in the file.
|
|
adjustMaxConnections=count
|
R, r
|
Adjust the default maximum number of simultaneous
connections allowed to a news-server (4)
by the specified amount, positive or negative.
Increasing can be useful with
news-servers which limit the speed but do not
limit the number of simultaneous connections.
You will also need to increase the maximum
number of simultaneous asynchronous article retrievals
if you increase this per-news-server setting beyond
that value, otherwise it will not be effective.
Decreasing can be useful with news-servers for which the
default limit is too high, for example
because their owners charge you per connection count
or per connection time.
Decreasing too much will
prevent NewsPlex from using the news-server at all.
|
|
attemptMsgId=1
|
a
|
Attempt retrieval of articles even if the news-server
does not have the news-group or the requested articles in that
news-group. Every time an article is requested, NewsPlex
will attempt to retrieve it from the news-server as well.
Some news-servers have articles which are not or which
are no more referenced in any of their news-groups.
It is still possible to retrieve them by Message-ID.
NewsPlex normally attempts this during zombie
retries. Passing this option allows to
do it for specific news-servers all the time.
|
|
blindLogin=1
|
n
|
Blind login. Do not wait for the news-server welcome message and issue a command
immediately, typically an article download request. This setting
is useful with certain news-servers only, which issue the welcome message
with a delay, and in the meantime accept other commands.
|
|
category=category
|
tcategory
|
Set the category of the news-server, ie. its download priority, to
value category, which can be negative, 0
or positive. Zero is the default value.
This allows to enforce the
order in which news-servers are used for downloading articles.
NewsPlex will not use a news-server with a higher category until it has
tried to get the article from news-servers of lower categories.
NewsPlex will only wait for the number of secondes
defined by the connect.maxCategoryWait= setting
before trying to use a higher category news-server if it
cannot obtain a connection to any news-server from the
current (or lower) categories.
You should set reuseForAsync=0
(Do not reuse the news-server for an asynchronous article retrieval after it
becomes free) for news-servers for the categories to
be fully effective during async retrievals.
See here for more details.
|
|
closeOnListOk=1
|
C
|
Consider that errors occurring when NewsPlex is
listing available
news-groups on the news-server indicate the end of list. This allows
to use otherwise unusable news-servers.
|
|
cost=value
|
cvalue |
Define a cost for news-server. The value will be considered
as the number of kilo-bytes per second to
subtract from the news-server's score when evaluating it
in order to retrieve an article.
Note that the cost notion only applies after
the category notion, which means it is
only used among news-servers of the same category.
|
|
daysTooOld=days
|
ydays
|
Limit the age of article descriptions added from this news-server to the
article database to days days. By default, the age is
not limited. This setting takes precedence
over the explore.daysTooOld= setting in
etc\newsplex.ini. See also
the NPDELETEOLD command.
|
|
explore=0
|
U
|
Enable or disable the automatic exploring of the news-server.
If 0 is passed,
the news-server will not be explored periodically,
it will also not be explored after a news-group has been
activated and it will not be explored after an article
has been posted to it.
The operator can still request a single exploration
with NPEXPLORESERVER or thru the Web
interface.
This setting can be interestingly combined with the
attemptMsgId= setting,
to create a news-server where NewsPlex tries to take
articles from blindly, by Message-ID, without ever asking
for anything else.
|
|
emulateXoverUsingHead=1
|
H
|
Use HEAD requests rather than XOVER
requests to obtain the article descriptions from the news-server. NewsPlex
normally does this automatically when necessary, but
you can force it, for example if XOVERs
are slow. See also the emulateXoverUsingXhdr= setting.
|
|
emulateXoverUsingXhdr=1
|
x |
Use XHDR requests rather than XOVER
requests to obtain the article descriptions from the news-server. You can set
this mode of operation if XOVERs are slow.
See also the emulateXoverUsingHead= setting.
|
|
extraConnectTime=value
|
X
|
Give extra time to news-server for responding when connecting.
Some overloaded news-servers may need this. Use this setting
if the news-server can be normally connected at TCP level,
but subsequently does not send a welcome message before
NewsPlex stops waiting and considers the connection as
failed.
Only use this setting on good
news-servers, because it increases the time before NewsPlex
tries to use another news-server and hence may slow down
things actually.
|
|
extraTime=1
|
T
|
Give the news-server much more time to answer requests. This
allows to avoid disconnects with news-server which take a lot
of time to answer some requests, and hence for example
it is not possible to complete an exploration successfully.
Note that if a news-server is given more time, NewsPlex will
also wait longer before switching to another news-server which
could provide the same article.
|
|
filterArticles=1
|
|
Apply filters from etc\filters.ini in real time during
explorations. Matching articles will immediately be
either rejected or marked as hidden.
|
|
groupBeforeMsgId=1
|
B
|
Issue a GROUP request before an article retrieval
by Message-ID if the group where the article is located
is known. This is normally unnecessary, but
might help with some news-servers.
|
ignored=entry-name1=entry-value1
ignored=entry-name2=entry-value2
...
|
|
When NewsPlex encounters invalid, possibly obsolete entries,
it stores them in this setting.
|
ignoreGroup=group-name1
ignoreGroup=group-name2
...
|
g(group-name1 group-name2 ...)
|
Do not explore specific news-groups on the news-server.
Set this option if accessing a certain news-group causes
malfunction of the news-server, like disconnects
or indefinite waits, or if the news-group
contains too many corrupted article descriptions on the news-server.
This setting can be repeated.
|
|
ignoreLoginFailure=1
|
i
|
Ignore login failure. NewsPlex will attempt to use
a news-server even if the login sequence failed.
|
|
isSlow=1
|
S
|
The news-server is slow, so do not use the LISTGROUP
or XHDR LINES requests for getting
the article numbers, but rely on the results
on the GROUP request instead.
|
|
keepAlive=1
|
A
|
Keep-alive the news-server for 15 minutes
after it was last used. Normally, connections to
idle news-servers are closed after 5 minutes, without
keep-alive.
This setting can be automatically set
by NewsPlex if the news-server appears as difficult
to connect to, for example because it
limits the number of concurrent users and
is very popular at the same time.
It is also set if a news-server closes the connection
immediately after a TCP connect.
The NPCONNECTED command and the Web page
ignore the keep-alive when displaying the duration
of idleness for news-servers.
|
|
listgroupDoesNotSetGroup=1
|
O
|
LISTGROUP does not set the current news-group.
This setting allows to deal with news-servers which do
not adjust the current news-group when receiving the
LISTGROUP news-group request. This is
not so easy to detect automatically, hence this
setting.
|
listgroupGroup=group-name1
listgroupGroup=group-name2
...
|
l(group-name1 group-name2 ...)
|
Use the LISTGROUP request instead of
GROUP to select the specified
group-name news-group on the news-server.
This setting can be repeated to define
as many news-groups as necessary.
This option sometimes allows to access specific news-groups
on news-servers which normally forbid entering them thru the
standard GROUP request, although
they do have them and are able to provide article
lists and articles from them normally.
Such news-servers should normally have the attemptMsgId=1
setting set for them.
However, just because a news-server is able to provide
an article by Message-ID does not mean it has the news-group
or that it allows listing it. For example,
articles could appear in a common junk newsgroup.
Instead of using the GROUP request
in order to select a specific news-group on the news-server,
NewsPlex will use the LISTGROUP request.
This request, in addition to its normal behavior of
listing the available article numbers in the news-group,
also almost always sets the news-group as the current news-group.
NewsPlex will simply ignore the article numbers
and use the side effect.
Because such inaccessible news-groups are usually not listed
in the news-group list, the listgroupGroup= setting
also adds the specified news-group names to the list of
active interesting news-groups on the news-server.
It is therefore not possible to have wild-cards
in the news-group names.
|
|
listgroupIfGroupFails=1
|
|
Attempt to use the LISTGROUP request to change
the current news-group if GROUP did not work.
This setting is similar to the listgroupGroup= setting,
except it is only used in error circumstances and
does not make NewsPlex consider that the news-server has specific
news-groups. It is not compatible with the
listgroupDoesNotSetGroup= setting.
|
|
listPreferred=1
|
L
|
When constructing the list of interesting news-groups offered
by the news-server, request the full list and filter it locally
instead of requesting only the names of news-groups matching
groups.yes= settings.
This is the per-news-server version of the
explore.alwaysLIST= setting in etc\newsplex.ini.
|
|
main=1
|
m
|
This news-server is the main news-server
(the notion is explained below).
Only one news-server can be main.
|
|
msgIdIfNbFails=0
|
M
|
Do not try to get articles by Message-ID from this news-server.
NewsPlex tries to retrieve an article
by Message-ID if the article cannot be retrieved by number from
its news-group, typically because it has been deleted from it.
However, some news-servers stop responding in such
circumstances, presumably because the search for
the article in other news-groups takes a lot of time.
|
numbersCollapseMinDistance=value
numbersCollapseMaxRanges=value
|
|
These settings individually replace the global [explore]
settings of the same name (please refer to them for
explanations) if the value is non-zero.
|
postingGroup=group-name-pattern1
postingGroup=group-name-pattern2
...
|
|
Define the news-server as the posting news-server for the specified
news-groups. Wild-cards can be used in names and this setting
can be repeated.
|
privateProxy=proxy-url1
privateProxy=proxy-url2
...
|
o(proxy-url1 proxy-url2 ...)
|
This setting, which can be freely repeated,
allows to specify per-news-server proxies,
which do not need to (and also even cannot) be
explicitly given a proxy id.
Use this option if you do not want to manage
the global numbering of proxies yourself.
More about proxies in the [proxies]
section.
|
|
retrieveArticles=0
|
|
Do not retrieve articles from this news-server even if
it does have them. This setting is for example
useful when an otherwise good news-server contains a
corrupted version of an article and you want
NewsPlex to attempt retrieving it from
some other news-server instead, the next time the article
is requested by a news-reader. You can also use
NpNNTP to download the article directly,
if you know what news-server contains a good copy.
|
|
reuseForAsync=0
|
D
|
Do not reuse the news-server for an asynchronous article retrieval after it
becomes free. Using this setting for news-servers which do
not allow many simultaneous connections should give
the news-reader less 500 No server having article is
reachable errors if the news-reader tries to retrieve
some articles directly when asynchronous article retrievals are
enabled.
See here for more details.
|
xhdrMessageIdAllowNumberNotGreater=1
xoverAllowNumberNotGreater=1
|
|
These two settings allow to properly explore
some broken-by-design news-servers.
The server.xhdrMessageIdAllowNumberNotGreater= setting makes
NewsPlex stop requiring that the list of article number-Message-ID
mappings returned by XHDR MESSAGE-ID has strictly
progressing article numbers.
The server.xoverAllowNumberNotGreater= setting
does the same for the list returned by XOVER.
|
|
xoverOnEmpty=0
|
E
|
Some news-servers do not like that news-readers request the
article descriptions for empty groups, and start providing corrupted
article descriptions from this moment. This option avoids this.
|
|
truncAfterMsgId=1
|
I
|
Allow certain article description truncations to occur after the Message-ID
field and still accept the article description.
NewsPlex only accepts cuts which do not look like
a corruption which could be recovered by asking for
the article description again, and cuts in the middle of article threading references,
since some news-servers limit article descriptions to an arbitrary
length and this cut-off falls there.
|
|
useFakes=1
|
F
|
If the news-server fails to provide descriptions for
articles which he has previously declared as
available, consider these articles
as permanently unavailable.
If in the news-server exploration logs you
see that for certain news-servers NewsPlex keeps exploring certain
articles ranges without getting any article descriptions, you might
set this setting. This however introduces a penalty: if the
news-server generates article descriptions out of order and at the same time declares
the numbers in advance, you might not get all the article descriptions.
Note that when this option was introduced, NewsPlex did
not yet implement the collapsing of neighboring article
number ranges, so today it is less interesting.
|
|
useXrefs=0
|
|
Use or do not use the cross-reference information
provided by the news-server within the article descriptions
(the Xref: tags or lines)
to update other news-groups than the one currently being
explored with information about cross-posted
articles.
The explore.useXrefs= setting in etc\newsplex.ini
allows to disable this globally.
|
|
xgTitleBroken=1
|
G
|
Do not use the XGTITLE request for getting
the list of groups. This setting is equivalent to
the explore.noXGTITLE= setting in etc\newsplex.ini
except it only applies to one news-server.
|
|
zombies=0
|
|
If zombies are disabled for a news-server, when the last
news-server reference to vanish for an article is from
this news-server, the article will not become a zombie,
but will be marked as deleted and later removed
from the article database.
You can only disable zombies this way on news-servers
which are the sole source of their articles.
For example, someone can cancel and reissue
an article on a company internal news-server, and it
is pretty sure that the original article will
not appear again on another news-server. If you disable
zombies using this setting for a general purpose
news-server, and the article becomes available again from
some other news-server before it is actually removed from
the article database, it will remain deleted.
Zombies are still created when invalid news-server references
are deleted from the article database.
|
comment=string1
comment=string2
...
|
#...
|
A comment for the news-server.
This setting can be repeated,
to create multiline comments.
|
|
|
N
|
The flag can be displayed, but there is no corresponding
setting.
The news-server most probably does not allow posting,
at least this is what the welcome message says.
|
|
|
P |
The flag can be displayed, but there is no
corresponding setting.
The news-server probably allows posting, at least this is
what the welcome message says.
|
Main news-server
You should select your existing news-server as the main news-server.
NewsPlex will then synchronize with it when run for the first time, so
as to provide the same news-groups and article numbers. This way, your
news-reader will not be confused about which articles have already
been read and which have not. NewsPlex will then complete the list of
news-groups and articles with what other news-servers offer.
Note: this sync feature is currently broken.
The main news-server is used for posting articles by default.
Additionally, the NPPOSTSERVER command can be used
to change the posting news-server globally at any time, or to
view the current selection.
If you do not select any news-server as main, NewsPlex will consider
all the news-servers as equivalent, explore them simultaneously, and
number articles starting from 1 up.
[proxies] section
By default, NewsPlex attempts to connect to news-servers directly.
It is however possible in the etc\servers.ini file to specify a
proxy for each news-server. Several proxies can be used
at the same time, and each news-server can be accessed through
a different proxy if necessary.
The simplest way of defining proxies is to do this
individually for each news-server, using
server.privateProxy= settings
in [server] sections.
Otherwise, you can define proxies globally. This allows
to use the same proxy for several news-servers, at the
inconvenience of having to give them unique numbers.
In this second case,
first, define a [proxies] section,
and put inside the list of proxies you intend to use,
with entries like this:
url=proxy-url,proxy-group-number
The proxy-url
must start with the proxy type, either none,
or socks5://, or socks5b://,
or socks4://,
or socks4b://,
or https://,
or tunnel://,
or sun://.
none means that no proxy should be used and the
connection can be established directly. This is the default
way of connecting to news-servers.
If the type is not none,
the proxy-url should then specify the name
of the proxy server and potentially its port
as well as the login and the password if necessary.
The default ports are:
| Port | Proxy types |
| 1080 |
socks5
socks5b
socks4
socks4b
|
| 443 |
https |
| 3666 |
sun |
By default no
login or password information is sent.
tunnel proxies are proxies which only allow to access
a single machine, and which connect to it automatically after
being connected to. Since they appear just like normal news-servers,
they can be specified instead of news-servers in the
etc\servers.ini file. However, if a given news-server can be accessed through
several such proxies, it is interesting to define them as
tunnel proxies instead, because this will make NewsPlex
try them in sequence when connecting to the news-server. Note that
unless one of the proxies specified is not none, the
original news-server will not be contacted directly anymore, so its
name will not matter. Tunnel proxy URLs have the default port
equal to the port of the URL to which they are used to connect.
The proxy-group-number must be a small integer number.
It allows to identify a proxy and to reference it from
a news-server entry.
The default proxy-group-number is 0.
Note: socks5b servers are buggy socks5 servers
and socks4b servers are buggy socks4 servers.
If you observe that NewsPlex is unable to connect at NNTP level
to any news-server, and the logs\results file shows truncated welcome messages
from them, with missing first 6 chars (eg. instead of
200 newsservername... you see wsservername...,
and instead of 502 You are not allowed to talk you
see u are not allowed to talk, use socks5b
instead of socks5 and socks4b
instead of socks4 to define the type of your proxy.
For each news-server entry, it is possible to reference the
proxy in the server-url by appending a final
,proxy-group-number to it. By default, value 0
is assumed. To quickly modify a config\servers
file used on a direct Internet connection so that it can be used
on a proxy-ized Intranet connection, just add an initial
line defining proxy 0. Example:
[proxies]
url=socks5://login:pass@socksproxy:1080,0
url=proxy none,1
url=proxy sun://oursunproxy,2
[server]
url=news1.yourisp.com,0
comment=news-server outside, will go through proxy 0
[server]
url=mylogin:mypass@companyserver,1
comment=news-server on local network, no proxy
[server]
url=news3.yourisp.com:4000,0
comment=another outside news-server, use proxy 0
[server]
url=news4.someisp.com,2
comment=go through sun proxy 2 to reach this
Note that all ,0 are actually unnecessary.
If no proxy is defined in proxy group 0, NewsPlex will
automatically assume a direct connection for this proxy group,
that is, create an implicit proxy none,0
entry. This allow to not define any proxies in the config\servers
file if the connection is always direct.
Proxy groups
Several proxies can have the same
proxy-group-number and hence constitute a proxy group.
NewsPlex will use the first proxy defined in a given
proxy group, except if the news-server
indicates that it does not allow additional connections
from this proxy (or from your host, if the proxy is none).
In such a case, NewsPlex will
try to use the next proxy from the same proxy group,
so that the news-server thinks a different news-reader
is connecting. NewsPlex will also try to use a
different proxy from the same proxy group if the current
proxy indicates that it does not authorize establishing
the NNTP connection. Finally, NewsPlex will try to
use another proxy if the first one could not
be connected to.
NewsPlex will
not try to use another proxy if the news-server is simply not
reachable from the first proxy in a proxy group.
[proxychain] sections
Sometimes, it is not possible to reach news-servers using a single
proxy. For example, this proxy might not allow establishing
NNTP connections but might be the only way out of an intranet.
To deal with this situation, NewsPlex supports
proxy chains. This means that it can use a proxy to reach
another proxy, and then use this second proxy
to actually connect to a news-server.
After proxies have been defined in the etc\servers.ini file, you can
chain them using the proxychain directive:
[proxies]
url=socks5://intranetproxy,0
url=socks5://externalproxy,1
[proxychain]
proxyGroup=0
proxyGroup=1
[server]
url=news.somedomain.com,0
Here, proxy group 1 is chained behind proxy group 0. Every connection
going through proxy group 0 will transit through proxy group 1 before reaching
the news-server. Referencing proxy group 1 directly remains possible.
Only two components are allowed in proxy chains. A single proxy
group can appear only once in the first position of a proxy chain.
If the second proxy group has several proxies, only the first
one defined will be used. However, all proxies in the first
group will be tried if necessary.
Proxy chains are longer to establish and
slower in operation than ordinary proxy-based connections,
which themselves are worse than direct connections.
They also require that the first proxy does not
forbid connecting to the second one. In the above
example, intranetproxy must allow connecting to
port 1080 on externalproxy.
The etc\newsplex.ini file
The etc\newsplex.ini file replaces most of the command-line options which existed
in pre-4.0 versions of NewsPlex and all of the config
directory files except config\servers.
Do not edit this file while NewsPlex is
running with the shutdown.updateNewsplexIni= setting,
because your modifications would be overwritten.
In the description below, boolean settings
are shown with their non-default (active) values.
[async] section: Asynchronous retrieval settings
| Setting |
Old command-line option |
Description |
|
simultaneous=count
|
-a
|
Perform count asynchronous article retrievals
at once instead of default 4, if
asynchronous article retrieval is enabled.
This parameter should be equal to the speed of your
Internet connection divided by the average
speed of your news-servers.
Passing 0 will disable the retrieval of articles
scheduled for asynchronous article retrieval.
|
|
lineTrigger=min-lines
|
-g
|
Enable asynchronous article retrieval for articles longer than
min-lines lines and which seem to contain binaries
(NewsPlex looks at article subjects to decide about that,
using the binaryFilter= settings described below).
If min-lines is preceded with a minus, all
articles longer than min-lines are retrieved asynchronously.
Value 0 disables asynchronous article retrieval.
|
|
reportAsDeleted=1
|
-L
|
Makes NewsPlex return an article deleted
status to the news-reader when an article retrieval is scheduled.
Use it if you do not
want to see the fake articles and/or do not want to have
to delete them.
When activating this setting, you probably should configure your
news-reader to not automatically combine parts of multi-part
postings (except for the async group), because
news-readers will usually stop retrieving further parts
if they encounter a missing part in the middle.
Note that NewsPlex can properly deal with news-readers which request
an article by Message-ID if they could not get it by number, and
avoids scheduling the same article for asynchronous article retrieval twice.
|
|
executeCmd=program-name [args ...]
|
-X
|
Defines the program
which should be run every time NewsPlex finishes
retrieving a
async\xxxxxxxx.tmp file in the async directory, but
before renaming it into async\xxxxxxxx.ok.
This program could for example be a uudecoder
or a MIME attachment extractor.
It can do whatever it wants with the async\xxxxxxxx.tmp file,
even delete it.
The program is only run if the associated boolean
executeYes= setting is set.
The NpUud program provided with NewsPlex is run
by default, with options
which make it decode all files to the decoded
subdirectory of NewsPlex's work directory, to subdirectories
named after the Date: lines of articles.
The program will be given the full pathname of the
async\xxxxxxxx.tmp file.
NewsPlex can run several copies of the program
in parallel. It is up to the tool to
perform necessary synchronization.
|
|
executeYes=1
|
|
Enables the actual usage of the program defined by the
executeCmd= setting.
|
binaryFilter=pattern1
binaryFilter=pattern2
...
|
|
Define a single pattern for detecting article Subject:
lines which indicate binary attachments.
The pattern needs to cover the entire Subject: line,
so it will most of the time start and end with *
wild-cards.
This setting can be repeated, to define additional
patterns.
Patterns can also be defined to exclude matching
Subject: lines from being considered as indicating
binary attachments. Excluding patterns must start with
a ! exclamation point. They must appear
first.
Note that defining even a single
pattern thru this setting disables all the
default patterns hard-coded into NewsPlex.
|
|
serverAvailable=count
|
|
Defines how many server-available asynchronous article retrievals will be
conducted at once. The default is 4. Value
0 will disable such retrievals. See elsewhere
in this document for the discussion about
normal versus server-available asynchronous article retrievals.
|
|
zombieTasks=count
|
-Z
|
Allows to set how many zombie retries will be conducted at once.
Default is 1. Greater values can speed up the
retrieval of zombie articles, but at the cost of more open
connections to news-servers. Value 0 will disable zombie retries.
|
[access] section: Access settings
| Setting |
Old command-line option |
Description |
|
otherComputers=1
|
-e
|
Enable insecure mode and allow connections from other computers.
By default, only connections from the machine running
NewsPlex are possible.
|
|
nntpEnabled=0
|
-s
|
Enables or disables NNTP access.
|
|
nntpPort=port
|
-p
|
Use port port for establishing the NNTP news-server.
By default, NewsPlex uses the standard port 119.
If this port is not available, NewsPlex tries
to allocate a port starting from value 2000.
|
|
webEnabled=0
|
-w
|
Enables or disables Web access.
Unlike in pre-4.0 versions, the Web interface is
now active by default.
|
|
webPort=port
|
-w
|
Create a Web server on port port for
controlling NewsPlex from a Web browser. The port
value of 8000 is the default.
If this port is not available, NewsPlex tries
further values.
|
|
banner=some-text
|
|
Define a different welcome message for NewsPlex.
This welcome message will be taken into account
if the bannerOkForVersion= setting
has the value equal to the current
version of NewsPlex or if the bannerOkAlways= setting
is set to 1.
|
|
bannerOkForVersion=version-number
|
|
Define NewsPlex version for which the banner= setting is
valid. If you want to keep a customized banner= setting
after upgrading NewsPlex, you will need to adjust this
setting or set the bannerOkAlways= setting to 1.
Note that the default empty value of the
bannerOkForVersion= setting does not match
any NewsPlex version.
|
|
bannerOkAlways=1
|
|
A given banner= setting is valid only
for the NewsPlex version defined by
the bannerOkForVersion= setting,
unless you set the bannerOkAlways= setting.
|
adminLogin=login-name
adminPass=password
|
-P
|
These settings make NewsPlex require entering the
specified login name and password before
the NPsomething privileged
administration commands
are recognized. By default, all commands are
available.
The settings also protect the Web access.
|
userLogin=login-name
userPass=password
|
-U
|
These settings make NewsPlex require entering the
specified login name and password before
any other commands can be entered.
By default, the login and password are
not required.
They also protect the Web access.
|
webHtm=0
webUrl=0
telnetHtm=0
telnetUrl=0
newsHtm=0
newsUrl=0
|
|
Do not create the web.htm, web.url,
telnet.htm, telnet.url, news.htm
and news.url files respectively.
|
maxNntp=16
maxWeb=16
|
|
These settings allow to define how many incoming client connections
of each type are allowed.
|
nntpQueueRequests=1
webQueueRequests=1
|
|
These settings allow to define whether NewsPlex
should wait till a "connection slot" becomes
free in overload conditions or reject an incoming
connection immediately.
|
allowedIP=IP-address-pattern
allowedHostName=hostname-pattern
|
|
These settings allow to better control who is allowed to connect
to NewsPlex outside of the local computer. They can be repeated,
can contain wildcards and can also specify an exclusion if the
! exclamation mark is used at the beginning of the pattern.
If they are not present, every IP address and every host name
are allowed accordindly.
Exclusion patterns must appear first, as NewsPlex scans
the list of patterns from the beginning and stops
scanning as soon as a match, positive or negative, is found.
If these settings are present, at least one pattern must
be other than a rejecting one, otherwise nobody would
be allowed to connect.
|
|
hostNameRequired=1
|
|
Allows to specify that only clients for which NewsPlex
was able to find the hostname (by performing a reverse
DNS search on the IP address) are allowed to access
the server.
|
[clients] section: Client related settings
| Setting |
Old command-line option |
Description |
addPostedHeaderLeading=string
addPostedHeaderTrailing=string
addPostedBodyLeading=string
addPostedBodyTrailing=string
|
|
These settings allow to insert header or body lines into posted
articles, at either the first/leading or the last/trailing
position, for example in order to identify postings.
The settings can be repeated, to insert several lines.
Strings inserted into the header should have a valid
format, otherwise the news-server might refuse posted articles.
|
|
renumber=level
|
-n
|
Sets the article renumbering mode if news-server unreachable.
This is the equivalent of the NPRENUMBER command.
By default renumbering is disabled (value 0).
|
|
showOnlyActiveGroups=1
|
-E
|
Show only active news-groups to the news-readers.
It is still possible to activate other news-groups.
This option eg. allows to check whether your news-reader
is subscribed to all active news-groups.
|
|
fakes=0
|
-F
|
When a news-group is activated, NewsPlex creates two
activation announcement
articles inside, of which the first one is visible
to the news-reader. When fakes is set to 0,
the news-groups remain empty until
some real articles are found for them on news-servers.
|
|
globalMsgIdRetrieval=0
|
|
Disallow article article retrieval by Message-ID (the ARTICLE,
HEAD, STAT and BODY commands)
if the current news-group was not yet set by the news-reader or if the
Message-ID is not present in it. By default such retrievals
are allowed, articles are considered as a variety
of zombies and the same rules apply for deciding which
news-servers will be used for downloading. If the article cannot
be found, it is reported as inexisting rather than as
temporarily unavailable.
|
junkPostedHeader=string1
junkPostedHeader=string2
...
|
|
Define a string, which if found at the beginning of a header
line in a posted article, will make NewsPlex skip that line
when giving the article to the news-server.
Note that string is not a pattern
and cannot contain wild-cards.
This setting can be repeated, to define additional
headers. Note that defining even a single
header thru this setting disables all the
defaults hard-coded into NewsPlex.
|
|
logPostedBodies=0
|
|
Allows to select whether bodies of posted articles should
be logged.
|
|
retrievedShow=0
|
-R s
|
Show previously retrieved articles to news-readers, by marking
their article descriptions with a /r prefix in the From: field.
If an article has been scheduled for async retrieval,
but the retrieval has not yet finished and has not
been cancelled,
this will be indicated with a /a prefix.
If both situations occur,
NewsPlex uses /ra as prefix.
Warning: If you use Netscape or Mozilla to read news,
then if the From: line of an article contains
just an address without name, that is somebody@host,
when the field is marked, the news-reader will display
just the /r itself, probably because adding the
prefix violates the format of Internet email addresses.
|
|
provideXrefs=1
|
|
Enables the usage of NewsPlex with news-readers which require that
article descriptions returned by the XOVER command include the
Xref: field. By default, this field is not provided,
because NewsPlex does not currently maintain article
cross-reference information (it does however use this
information when available on news-servers, except if this is
disabled with server.useXrefs= settings or
with the global explore.useXrefs= setting).
If enabled, the Xref: field will only contain
information about the current news-group, so unless
you are unable to use NewsPlex at all, there is
no reason to change this setting.
|
[connect] section: Connection control settings
| Setting |
Old command-line option |
Description |
|
maxCategoryWait=3
|
|
This setting allows to define how much time
NewsPlex should spend waiting for a news-server inside
the current or lower categories before trying
to use a higher category news-server.
|
|
maxTasks=16
|
|
This setting allows to define the maximum number of
connection attempts that should be performed at the
same time. The default value is 16.
NewsPlex only opens one new connection to a given news-server
at a given time, so this setting also limits the number
of news-servers to which connection attempts are performed.
|
priorityDirect=-120
priorityAsync=0
priorityExplore=120
|
|
These settings allow to define the relative priorities
of direct article retrievals, asynchronous article retrievals and
explorations with respect to news-server access.
Lower values mean higher priority.
By default direct retrievals are the
most important and explorations the least.
The absolute priority of a news-server request is the sum of
the request time and of the priority, which prevents
starvation of less important requests as long
as the values of relative priorities are not too
different from each other.
|
[general] section: General settings
| Setting |
Old command-line option |
Description |
|
exitIfNoInternet=1
|
-i
|
Shutdown NewsPlex if the Internet connection is lost.
This option works only if auto-updating is active
(the explore.explore= setting is set).
|
|
shortFileNames=1
|
-t
|
Shorten file names to 8.3 conventions.
This options makes NewsPlex create files following the
MS-DOS naming convention, so that NewsPlex can run on
file-systems which do not support long filenames, for
example FAT on OS/2 or s5 on Unix. It is
not fully implemented yet, since in the dataset2 and index
directories filenames still reflect the news-group names.
|
|
storeDefaults=0
|
|
When saving the etc\newsplex.ini file to disk, only store
those settings which do not have their default values.
If you did not change any settings, then activating this
option will produce a etc\newsplex.ini file where all sections
except [general] are empty, and the
[general] section contains only one setting,
this one (since it is not at its default value, which
is to save everything).
|
|
verbose=1
|
-v
|
Be more verbose and log additional information
to the log files. This information notably includes
performance data.
Activating this setting will make
NewsPlex show a few undocumented traces.
|
|
zombieDays=number
|
-z
|
Set the deleted article disappearance delay to
number days. Value of 0 disables zombie
creation. The default zombieDays is 7.
|
|
assumeInternetPresent=1
|
-I
|
Assume that the Internet is always present. Use this option
if NewsPlex is unable to correctly detect whether you are
connected to the Internet at a given moment, and notably
thinks that you are not while you really are.
Note that often NewsPlex's inability to detect Internet
presence comes from the fact that the
/etc/hosts file (on Unix systems)
or %SystemRoot%\system32\drivers\etc\hosts
file (on Windows systems)
define the IP address of your machine as 127.0.0.1.
Another possible cause is that your computer is named
localhost.
Using this option will clutter the logs more easily with
uninteresting host unreachable information, and also
will cause the renumbering (see the NPRENUMBER
command) to be performed when you try to request an article
while not being connected to the Internet.
|
|
hiddenLog=1
|
|
Enable the logging of the Message-IDs of hidden articles
into the etc\hidden file.
|
retrievedLog=0
retrievedMark=0
|
-R lm
|
Configure the remembering of retrieved articles.
retrievedLog enables
logging of the Message-IDs of retrieved articles into the etc\retrievd
file.
retrievedMark enables
the marking of articles individually as read in the article
database each time they have been
successfully retrieved by some news-reader for the first
time.
Note that if you do not enable retrievedMark
but enable
retrievedLog, article Message-IDs will be logged to
the etc\retrievd file at each retrieval, potentially
several times. This is not a problem.
See also the clients.retrievedShow= setting.
See the section below for
more details.
All these settings are enabled by default.
Note that in version 3.7 and before, the default processing
was equivalent to just the
clients.retrievedShow= setting, that is, no logging was
done, but already marked articles were shown as such.
Passing the -R command-line option was equivalent to enabling
all three current settings.
|
|
mutexUnlockBeforeCondSignal=1
|
|
This setting allows to deal with buggy system libraries
for thread management on Unix-type systems, typically Linux.
If NewsPlex hangs on Ctrl-C instead of shutting down,
then try this setting.
|
|
timeStampLogs=0
|
|
This setting allows to disable the default time-stamping
of every line in the various log files that NewsPlex produces.
|
[groups] section: Group pre-selection
| Setting |
Old file |
Description |
yes=pattern1
yes=pattern2
...
|
config\groups.yes
|
These settings define names of news-groups which
should be retrieved from news-servers and offered to
news-readers. The names of news-groups can contain *
and ? wild-cards. Eg:
yes=*midi*
yes=*music*
It is possible to pass a single * on a line
alone. This will select all news-groups on all news-servers and
is the default value if there are no settings of this
type.
Patterns defined by groups.yes= settings are passed
to news-servers as-is (except when NewsPlex is configured to
request the full news-group list and filter only locally).
Therefore, it is not possible to use the slightly better
filtering possibilities offered by NewsPlex, namely
character sets or character ranges, described a
propos the etc\filters.ini file.
Around
100 bytes of memory or swap are necessary to store information
about a single news-group.
|
noByName=group-name1
noByName=group-name2
...
|
config\groups.no
|
Indicates the names of unwanted news-groups
which might get selected by groups.yes= settings.
No wild-cards are allowed here. Eg:
noByName=alt.music.boring
noByName=alt.midi.lame
Use this setting only if you want to forbid access
to specific news-groups.
Before the 4.4 release, this setting was named just groups.no=.
|
noByPattern=group-name-pattern1
noByPattern=group-name-pattern2
...
|
|
Indicates the names of unwanted news-groups
which might get selected by groups.yes= settings.
Full wild-cards are allowed here, as for
the etc\filters.ini file. Eg:
noByPattern=*.alcohol*
noByPattern=*.cigarettes*
Use this setting if you want to forbid access
to broader news-group categories.
It may be difficult to exclude just what seems necessary
when operating by patterns without accidentally excluding
other news-groups too.
|
[explore] section: Server exploration setting
| Setting |
Old command-line option |
Description |
|
alwaysLIST=1
|
-l
|
Always request the full news-group list from news-servers when
exploring them, and filter interesting news-groups locally.
The server.listPreferred= setting in etc\servers.ini
is the per-news-server version.
|
|
minimal=1
|
-m
|
Perform minimal exploration of news-servers and terminate.
This command causes NewsPlex to run in a special
Minimal mode, and only
rate the news-servers listed in the etc\servers.ini file.
NewsPlex will try to connect to each of them, and retrieve
the latest available article's head in up to
20 news-groups from
the list of news-groups matching the groups.yes= settings.
If no article could be
retrieved, the entire session will be logged into logs\unusable.
Otherwise, the session log will stay in
explore\server-disk-name.
Note that NewsPlex will stop sampling the
news-groups on a news-server if the connection with it has been
broken temporarily.
No dataset2, index or newsrc2 directories are used or created.
|
|
explore=0
|
-u
|
Whether to explore the news-servers automatically.
When exploring is disabled,
it is still possible to explore a specific news-server
by using the NPEXPLORESERVER command.
|
|
noXGTITLE=1
|
-x
|
Do not use the XGTITLE NNTP protocol request
for getting the news-groups list.
NewsPlex normally does not use XGTITLE for getting the
list of news-groups matching a pattern. However, if the news-server
does not support retrieving names of news-groups using wild-cards,
then XGTITLE will be used. Since this command is often
broken and does not return all the possible news-groups,
the -x option allows to avoid using it. NewsPlex will
instead get the full news-groups list and filter locally.
|
|
daysTooOld=number
|
-y
|
Limit the age of articles (article descriptions) added to the article database during the news-server
exploration to number days. By default, the age
is not limited and all articles are accepted.
This setting can be superseded for each
news-server individually using server.daysTooOld= settings.
See also the NPDELETEOLD command.
|
|
deferredOnStartup=1
|
-D
|
If this option is specified, NewsPlex will look
at the dates of the newsrc2 files and defer the
exploration of news-servers for which the date of their file
is recent. If you restart NewsPlex after a short
interruption, it is better to specify this option.
|
numbersCollapseMinDistance=5
numbersCollapseMaxRanges=32
|
|
These options allow to specified how NewsPlex should
try to reduce the number of requests about new
articles issued to news-servers. Article numbers can
be from 0 to over 2 billions, so in the worst
case, NewsPlex could issue up to 2/3 billion
requests to a news-server, which would take an eternity.
The numbersCollapseMinDistance= setting
allows to collapse number ranges less
than the specified value apart. The minimal
distance is 2 (a distance of 1 would
mean two ranges are contiguous, and NewsPlex
merges them automatically then).
The numbersCollapseMaxRanges= setting
specifies how many ranges there can be
at most. The minimum value is 1.
|
|
quitAfter=1
|
|
Close news-server connections immediately after finishing explorations.
You can specify this option when NewsPlex is only occasionally
accessed by news-readers, in order to decrease news-server usage.
|
|
skipEmptyGroups=1
|
-S
|
Skip news-groups which appear as empty in news-server's
news-group list
when exploring. By default, NewsPlex tries to explore
news-groups which appear as empty by other means, in order to find all
the articles they might contain in spite of possible
incoherences
in the information provided by the news-server, but this is not
worth it most of the time.
|
simultaneousMinimal=count
simultaneousNormal=count
|
-T
|
Explore count news-servers at once instead of default.
By default, up to 8 news-servers are explored at once
in normal mode, and 16 in minimal mode.
This is suitable
for dial-up modem connections. Increasing
this number can speed up things up if you have
a fast Internet connection. Otherwise, it could make
things worse because of Internet connection contention
and resulting timeouts. Also, the more news-servers are explored
at once, the more CPU and memory are used.
|
|
useXrefs=0
|
|
This setting complements the per-news-server server.useXrefs= setting
in etc\servers.ini, and allows to globally disable the
usage of article cross-reference information received from
news-servers, rather than having to disable it individually for each
news-server. In some setups, involving probably very large news-groups,
managing cross-references caused excessive memory
usage and resulted in trashing.
|
xrefLogGroupNotActive=1
xrefLogHadArticle=1
xrefLogAddedArticle=1
|
|
Introduced in version 4.3, these 3 settings allow to re-enable
frequent log traces which were always produced in version 4.2
and before:
- Not adding x-ref for news-group: Group not active.
- Had article (server article-number,
local article-number) in news-group already.
- Added article to news-group (current article-number,
other article-number, server current
article-number, server other article-number).
|
[startup] section: Startup settings
| Setting |
Old command-line option |
Description |
|
runInBackground=1
|
-b
|
Run in background.
By default, NewsPlex runs in foreground and blocks the window
from which it has been started.
The
runInBackground= setting makes
NewsPlex put itself into the background.
NewsPlex will either close its console window,
if the companion hideIfBackground= setting is 0, or just
hide it, if the hideIfBackground= setting is 1.
On Windows 95, closing the window
frees the window and allows to run
other programs from it.
On Windows NT/2000/XP, NewsPlex must be started with
start NewsPlex, otherwise the window will not be
freed and Ctrl-Break will not even work to stop NewsPlex.
|
|
hideIfBackground=0
|
|
Only used and useful on Windows, this setting
changes the way in which NewsPlex switches to background
mode. It makes NewsPlex hide its own console window instead of
destroying it. This allows NewsPlex to still get system signals,
notably about system shutdowns, and to terminate gracefully.
|
|
filterAll=1
|
-f
|
Delete unwanted articles.
If this setting is enabled, the etc\filters.ini file is read on startup
and all articles which match the patterns inside
are deleted from the article database.
See also the server.filterArticles= setting.
|
|
lowerPriority=1
|
-ol
-oi
|
Lower the priority of the NewsPlex process to the Idle level.
This frees the CPU, but the download speeds might suffer.
NewsPlex could become CPU-starved if you
already have programs running in the background permanently
and at a low priority, like Seti@Home, or if you run DOS
programs which take all CPU. On Windows NT/2000/XP, you can also
adjust the priority of NewsPlex from the Task Manager.
|
|
ignoreAnother=1
|
-G
|
Ignore another news-server already running on the NNTP port.
It allows to start NewsPlex when certain funny proxies or
firewalls are running on the computer.
|
|
applyHidden=1
|
-M
|
This option makes NewsPlex read the etc\hidden file
on startup and mark as hidden
all the article descriptions whose Message-IDs are listed in this file.
This can also be performed using the
NPAPPLYHIDDEN command at any time.
|
|
applyRetrievd=1
|
-M
|
This option makes NewsPlex read the etc\retrievd file
on startup and mark as retrieved
(see section below)
all the article descriptions whose Message-IDs are listed in this file.
This can also be performed using the
NPAPPLYRETRIEVD command at any time.
|
|
compactAll=1
|
-O
|
Compact all the databases and rewrite all index files
at startup (merging information from update files in).
This option allows to bring the databases
to the smallest size. It however takes a certain time
to execute.
|
[shutdown] section: Shutdown settings
| Setting |
Old command-line option |
Description |
|
waitEnter=0
|
-N
|
Whether to wait for a final Enter key press before exiting.
|
|
updateNewsplexIni=0
|
|
Whether to save the current settings back into
the etc\newsplex.ini file on exit.
Given that currently it is not yet possible to
edit most of the etc\newsplex.ini settings from the
Web interface, it appeared convenient to allow
disabling their automatic saving. This way you
can edit the file while NewsPlex runs and have
the modifications taken into account the next
time NewsPlex is started or restarted.
|
deleteJournal=1
deleteLogsClients=1
deleteLogsCompact=1
deleteLogsIntruder=1
deleteLogsResults=1
deleteLogsSummary=1
deleteLogsUnusable=1
deleteLogsWeb=1
|
|
Delete the corresponding file and the associated .bak
file if they exist.
|
deleteConnect=1
deleteExplore=1
deleteLogs=1
|
|
Delete the corresponding directory.
|
Zombie and Phoenix articles
Zombies are articles no more available
from any news-server, but still maintained in the article database for a few
days, by default 7. Zombie management allows to
avoid allocating new numbers to such articles if they become
available again, through other news-servers. It also allows preserving
the retrieved status during this lingering time and
thus makes using the startup.applyRetrievd= setting
and the startup.applyHidden= setting
in etc\newsplex.ini (apply etc\retrievd
and etc\hidden at startup) less necessary
after adding a new news-servers to the etc\servers.ini file and exploring it.
Articles which resurface are called phoenix articles.
If a zombie article is requested, NewsPlex behaves like for
requests for articles residing on unreachable news-servers.
It returns the same error code, but with a specific message
(500 Article is a zombie) by default. If renumbering
is activated, NewsPlex pretends
that the article has been deleted (which is actually true here)
and renumbers it, so that if the article becomes available again, it is
perceived as a new article by the news-reader.
It is also possible to specify the attemptMsgId= setting for specific
news-servers, which will make NewsPlex attempt to always retrieve articles
from them, even if they never said they had the article or even
the news-group.
Files and directories
When operating, NewsPlex produces a series of files and directories
in the work directory.
| Filename |
Description |
|
async
|
The async directory is used when
asynchronous article retrieval is enabled. It stores both
control files and the articles themselves.
|
|
async\xxxxxxxx.bad
|
The async\xxxxxxxx.bad files, where x are hexadecimal
digits, are articles which could not be retrieved completely
because of temporary errors. These files always have a size
greater than zero, otherwise they are not kept.
During the next article retrieval attempt,
they will be deleted and replaced with async\xxxxxxxx.ok
files.
|
|
async\xxxxxxxx.del
|
The async\xxxxxxxx.del files, where x are hexadecimal
digits, are produced instead of async\xxxxxxxx.ok files if an article
could not be retrieved, for example because
it has been deleted from all news-servers. async\xxxxxxxx.del
files contain only an error message from NewsPlex,
formatted as a news article. These files are deleted just
like async\xxxxxxxx.ok files after a news-reader has requested them.
You can delete them manually at any time if you want.
|
|
async\xxxxxxxx.log
|
The async\xxxxxxxx.log files, where x are hexadecimal
digits, are logs of asynchronous article retrievals. They exist
only while the article retrieval is in progress and when it completes,
they are appended to the logs\summary file.
|
|
async\xxxxxxxx.ok
|
The async\xxxxxxxx.ok files, where x are hexadecimal
digits, are asynchronously retrieved articles.
They are also visible in the async news-group generated
by NewsPlex locally. They are deleted 300
seconds after having been successfully
retrieved for the first time by a news-reader. If they are
requested again in the meantime, the deletion is delayed
accordingly.
You can also delete them manually at any time if you want.
This allows to retrieve articles several times, which
is useful when news-readers do not cache them, and also allows to
better deal with errors (eg. disk space exhaustions)
occurring when transferring multi-part postings. news-readers might
discard parts already retrieved if an error
occurs for the current part, even if for NewsPlex
they were retrieved correctly and hence scheduled for
deletion.
If an article could not be retrieved, for example because
it has been deleted from all news-servers, then a async\xxxxxxxx.del
file is produced instead.
Note that any async\xxxxxxxx.ok file, where x are
hexadecimal digits and where the first digit is not a zero,
copied into the async directory,
will be visible in the async news-group and
can be retrieved from a news-reader. After the first successful
retrieval, it will be scheduled for deletion as described above.
|
|
async\xxxxxxxx.tmp
|
The async\xxxxxxxx.tmp files, where x are hexadecimal
digits, are asynchronously retrieved articles in progress.
After the article retrieval is finished, articles are renamed to
async\xxxxxxxx.ok and visible in the async news-group generated
by NewsPlex.
|
|
connect
|
The connect directory stores logs of connection activities
performed on news-servers. Since NewsPlex serializes connection attempts,
only one file needs to be used for a given news-server. Log files are
named after news-servers; see the description for the newsrc2 directory
for format details. Once files grow over a certain size, they
are renamed into .bak and a new file is started.
The previous .bak file is deleted.
|
|
dataset2
|
The dataset2 directory contains these parts of article descriptions which do not
need to be loaded into memory all the time during operations.
There is one file for each news-group offered by NewsPlex. Each file
has one line per article. It describes the article
and has the following fields:
- article number
- subject
- originator information
- date
- Message-ID
- article threading references
- number of bytes in article
- number of lines in article
Do not put foreign files into this directory. They
would be taken for news-group files, and NewsPlex could decide
to "fix" or purely delete them if they do not follow a
certain format.
|
|
etc
|
The etc directory hosts the various output files that
NewsPlex produces and sometimes reuses.
|
|
etc\done
|
The etc\done file contains the list of asynchronously retrieved articles
which have been completely processed.
It is deleted, together with the
etc\scheduld file, after all articles have been processed.
Lines in the etc\done file have the same format as lines
in the etc\scheduld file, except more status codes are
possible:
| Code | Meaning |
| 3 | Retrieval finished ok |
| 4 | Error, group does not exist anymore |
| 5 | Error, article is no more available |
| 7 | Error, article has been deleted |
| 10 | Error, article download has been cancelled |
|
|
etc\filters.ini
|
This file is used for article filtering,
with the server.filterArticles= setting,
with the NPFILTER
command and with the startup.filterAll= setting
in etc\newsplex.ini.
This file contains only [filter] sections,
each one defining a single filter.
A sample etc\filters.ini is automatically created
at NewsPlex startup if it does not yet exist.
The following settings can be used inside sections.
If a setting is not defined, the corresponding field
in article descriptions will not be examined.
Empty filters, for example resulting from having two consecutive
[filter] lines, would cover all articles, and are
hence ignored.
Wild-cards (*, ? and character sets and intervals,
eg. [0-9a-z] or [!;,]) can be used in
patterns. Note that patterns must cover the entire
field, so they will often start and end with a star (*).
| Setting |
Description |
| from=pattern |
Pattern for the From: field of articles.
Can be repeated.
|
| msgId=pattern |
Pattern for the Message-ID field of articles.
Can be repeated.
|
| subject=pattern |
Pattern for the Subject: field of articles.
Can be repeated.
|
| groups=pattern |
Pattern for the Newsgroups: field of articles.
Can be repeated.
|
| comment=string |
Comment for the pattern, just for your information.
Can be repeated.
|
| disabled=1 |
Disables the pattern.
|
| hide=1 |
The pattern causes the hiding of the article. The article
remains in the article database, but NewsPlex will pretend it has been
deleted.
|
linesMin=value
linesMax=value
|
Defines the minimum and maximum number
of lines in the articles to be filtered out.
|
bytesMin=value
bytesMax=value
|
Defines the minimum and maximum number
of bytes in the articles to be filtered out.
|
| daysTooOld=value |
Filters all articles whose Date: is
older than value days.
|
Example file:
[filter]
comment=This is a comment
from=annoying@annoying.com
msgId=<*@annoying.com>
msgId=<*@unwanted.com>
[filter]
comment=This filter would cover everything and will be ignored
[filter]
from=lamer*@lamers.com
msgId=<lamers*@*lamers.com>
[filter]
comment=Filter out old reposts
subject=REPOST:*
daysTooOld=40
[filter]
comment=Filter out small zip files in alt.* groups. No, after all
subject=*.zip*
linesMax=10
groups=alt.*
disabled=1
|
|
etc\groups
|
The etc\groups file contains the full list of
news-groups managed by NewsPlex. Each line
records information about a single news-group,
and contains:
- a unique news-group number
- the date at which the news-group has been added
to the file
- the name of the news-group
You can (currently) delete this
file when NewsPlex is not running, in order
to get rid of news-group names which do not exist
on any news-server anymore, yet match the
groups.yes= settings (news-groups which do not
match the current groups.yes= settings are ignored
when NewsPlex reads this file). NewsPlex will
reconstruct the file when it is run again.
This only introduces a minor penalty that
names of all news-groups will be returned
if later a news-reader asks for just new news-groups.
|
|
etc\hidden
|
If the general.hiddenLog= setting in
etc\newsplex.ini is set,
NewsPlex stores in the etc\hidden file the Message-ID fields
of all the articles which have been hidden
as the result of the application of filters.
This file is also used when
the startup.applyHidden= setting
is specified in etc\newsplex.ini
(see section below).
|
|
etc\newsplex.ini
|
This is the main configuration file for
NewsPlex. It is documented in detail
in a separate chapter.
|
|
etc\popular.ini
|
The etc\popular.ini file records news-group popularity, which is measured
by the total number and size of articles retrieved from them.
Since version 4.0 this is a .ini file. It currently
contains [group] sections only.
When exploring a news-server, NewsPlex first asks for the
most popular news-groups, but it also takes into account
the last exploration date for each news-group.
This avoids starvations with unpopular news-groups
if a news-server often becomes unavailable before
an exploration completes.
The different settings are:
| Setting |
Description |
| articlesGot |
number of articles requested |
| kiloBytesGot |
total size in kilobytes of these articles |
| lastGotSecs |
date of last article retrieval expressed in seconds since 1/1/1970 |
| lastGroupSecs |
date of last news-group selection (not necessarily activation),
expressed in seconds since 1/1/1970 |
| groupName |
name of the news-group |
The content of this file is also accessible thru the Web
interface.
Note that this file can contain historical groups, no more
active or even no more allowed by groups.yes= settings in
etc\newsplex.ini.
|
|
etc\retrievd
|
If the general.retrievedLog= setting in
etc\newsplex.ini is set,
NewsPlex stores in the etc\retrievd file the Message-ID fields
of all the articles which have been successfully retrieved
by news-readers. This file is also used when
the startup.applyRetrievd= setting
is specified in etc\newsplex.ini
(see section below).
|
|
etc\scheduld
|
The etc\scheduld file contains the list of articles which
are being retrieved asynchronously.
It is deleted, together with the
etc\done file, after all articles have been processed.
Each line in the etc\scheduld file has the following
fields:
- article handle
- status code (always 0, meaning queued)
- news-group name
- article number
- article Message-ID
- number of bytes in article
- article Subject:
|
|
etc\servers.ini
|
This is the news-server list for
NewsPlex. It is documented in detail
in a separate chapter.
|
|
explore
|
The explore directory stores the log files resulting from the
exploration of news-servers. Log files are named after news-servers;
see the description for the newsrc2 directory for format
details.
Each news-server exploration has the same scenario, which is
logged into the file:
- NewsPlex asks for news-groups matching groups.yes= settings.
This is done if the previous request is more than 24 hours
old or if the etc\newsplex.ini file has been modified since
(if shutdown.updateNewsplexIni is not set),
otherwise NewsPlex just requests new news-group names.
- NewsPlex produces a resulting list of interesting news-groups.
The first column is the number of articles, the 2nd column
indicates whether the news-group is active, the 3rd column
is news-group name, followed by highest and lowest available
article numbers and by the posting status of the news-group
(y=yes, n=no, m=moderated). This listing is only produced
if the groups.yes= settings does not request all news-groups or
if the news-server does not have many news-groups.
- If any of the news-groups on the news-server are active, NewsPlex
produces a separate list for them.
- NewsPlex displays which news-groups have vanished compared to
the previous run.
Note that because of the way in which news-group activation is
implemented today, NewsPlex can sometimes indicate at the
next normal exploration of the news-server that certain groups
have vanished from it, while in fact the news-server never had them.
This is due to the fact sometimes it is not possible to
decide about the existence of a news-group on a specific news-server at
the activation time.
- NewsPlex explores each news-group, using the newsrc2, index and
update files to avoid retrieving the same article descriptions twice. It
also leverages
the statistics from the etc\popular.ini file to explore the most
popular news-groups first. Groups which have never been visited
are explored in a round-robin order, thanks to the time-stamp
info from the newsrc2 file.
At the end, NewsPlex displays how many
connections were performed, the number of bytes sent and
received, and when the next exploration will be done.
This directory is preserved when NewsPlex terminates. The files
inside can be deleted at any time, except when locked by NewsPlex
because used. If a log file grows over 102400L
bytes, a new file is opened when the next exploration starts,
and the existing file name is added the .bak extension.
The previous .bak file is deleted.
|
|
index
|
The index directory contains these parts of article descriptions which need to
be loaded into memory during operations. There is one file for
each news-group offered by NewsPlex. Each file has one line per
article. It describes the article and has the following fields:
- article number
- article unique message identifier
- list of news-servers having the article and the corresponding
article numbers
- flags
| Flag | Meaning |
| A |
Article has been scheduled for asynchronous article retrieval. |
| H |
Article has been hidden. NewsPlex will
pretend it is not there. |
| N |
Article has been renumbered at level 2.
NewsPlex will alter the
Message-ID of the article when a news-reader requests it.
Note that if an article is renumbered at level 1,
ie. without changing the Message-ID, no special flag is
set for it.
|
| R |
Article has already been retrieved by some news-reader. |
Do not put foreign files into this directory. They
would be taken for news-group files, and NewsPlex could decide
to "fix" or purely delete them if they do not follow the
above format.
|
|
journal
|
The journal file logs certain events and conditions as NewsPlex runs,
like incoming connections
from news-readers. This file is renamed to journal.bak each
time NewsPlex is started and this file is over 204800L
bytes long. The previous journal.bak, if any, is deleted.
When NewsPlex terminates, it prints into the journal file some
summary information about the usage of news-servers during the
session, similar to the results of the NPSERVERS
command.
|
|
list
|
The list directory temporarily stores the full news-group
listings from news-servers which cannot return news-groups
matching patterns. It is automatically destroyed when
NewsPlex exits.
|
|
logs
|
The logs directory hosts the various output files that
NewsPlex produces but does not reuse. Its content can
be deleted at any time.
|
|
logs\cli-host-port
|
The logs\cli-host-port files log commands issued by your news-reader
and the responses it got.
They notably contain the full content of posted
articles.
host is
either the name of the machine from where the
news-reader connected, or the IP address if the name could not
be found, while port is the IP port
number the news-reader is using.
Once a news-reader has disconnected, the contents of
its logs\cli-host-port file are appended to logs\clients and
the logs\cli-host-port file is deleted.
|
|
logs\clients
|
The logs\clients file logs closed sessions from news-readers.
It can be deleted at any time.
If it grows over 100000L bytes, a new file is started,
and the existing file name is added the .bak extension.
The previous .bak file is deleted.
|
|
logs\compact
|
The logs\compact file logs database compacting activity.
A compaction is scheduled to start 10
minutes after NewsPlex startup, and is performed
every 300 minutes later.
The logs\compact file can be deleted at any time.
If it grows over 10000
bytes, a new file is opened when the next compaction starts,
and the existing file name is added the .bak extension.
The previous .bak file is deleted.
|
|
logs\intruder
|
The logs\intruder file logs rejected incoming connections.
For each connection, the date, the IP address, the IP port
and the host-name are stored. The file can be deleted
at any time, but you better check from time to time
who tries to use your NewsPlex without
authorization.
|
|
logs\results
|
The logs\results file indicates the exploration
results for news-servers. Each line has this format:
server-url [flags] # result (comment)
This file is kept when NewsPlex terminates. It can be deleted
at any time.
This file has the same format as the old raw
config\servers file.
If you have defined proxies for accessing the
news-servers, they are copied into this file when it is created.
|
|
logs\summary
|
The logs\summary file stores the log of asynchronous article retrievals.
Both successful and unsuccessful attempts
are logged there after they have completed. For a given
article, there can be several failed logs before the
successful one. Or the last log can be a permanent
failure, eg. article deletion from the article database.
If it grows over 500000L bytes, a new file is started,
and the existing file name is added the .bak extension.
The previous .bak file is deleted.
|
|
logs\unusable
|
The logs\unusable file is only created in Minimal mode
(explore.minimal in etc\newsplex.ini).
It contains the logs of news-server explorations
for all news-servers which did not have any interesting news-groups
or which could not be contacted at all. It can be deleted
at any time.
|
|
logs\web-host-port
|
The logs\web-host-port files are similar to logs\cli-host-port files,
except they are used for Web browser sessions.
Once a Web browser has disconnected, the contents of
its logs\web-host-port file are appended to logs\web and
the logs\web-host-port file is deleted.
|
|
logs\web
|
The logs\web file has the same purpose as the logs\clients file,
except it collects the logs of past Web sessions.
|
|
newsrc2
|
The newsrc2 directory contains one file per news-server used.
It logs which active news-groups have been explored on the
news-server and which article descriptions have been retrieved
from them. The file does not store information
about non-active news-groups on the news-server.
The names of files are normally equal to news-server names, but
if there is a login or a non-standard port specified for
a news-server, the server-disk-name will include them as well,
using the
[login@]server-name[_port]
syntax, so that it is possible to eg. use several news-servers
located on the same host.
Note that invalid characters in the resulting filename are
replaced with underscores.
The newsrc2 directory is not called newsrc,
like in versions of NewsPlex older than 3.0,
so that your article databases are not corrupted if
by accident you run a version of NewsPlex older
than 3.0 in the directory containing 3.0 and
later style article database files. It will simply
create and start filling the database
and newsrc directories, which you can safely
delete after stopping the program. Then you
can start the correct version of NewsPlex.
The format of the files in the newsrc2 directory
and the information in them are not quite the same
as for the newsrc or
.newsrc files used by news-readers.
Lines starting with a tab contain the name of a news-group
and the date of its last exploration, while
the other lines contain the ranges of article numbers
for which article descriptions have already been retrieved.
If the news-group is empty on the news-server, there will be
no numbers for it.
You can delete a file corresponding to a news-server to force
NewsPlex to retrieve the full article list for each news-group
at the next exploration of the news-server. This will however almost
certainly create dangling references in the article database.
Such dangling references can be removed with the NPCHECKGROUPS
command, preferably after the news-server has been re-explored.
|
|
news.htm
|
The news.htm file contains a Web redirection to NewsPlex's
news-server. By opening it with a Web browser, you should
get your news-reader started and connecting to NewsPlex.
It is created at startup
and deleted at shutdown. JavaScript must be enabled in
the Web browser.
Note that the login and password are not currently
passed in the news.htm link.
|
|
news.url
|
The news.url file contains an Internet Explorer link to NewsPlex's
news-server. By opening it with Internet Explorer, you should
get a news-reader session with NewsPlex. It is created at startup
and deleted at shutdown.
Note: some news-readers, like Outlook Express, do not recognize
the port specification in the URL, so if you run
NewsPlex on a non-default port, you will need some
tweaking to get them to connect.
Note also that the login and password are not currently
passed in the news.url link.
|
|
panic
|
The panic file is created if NewsPlex detects an non-recoverable
internal error. Once a short message has been logged into this
file, NewsPlex exits.
|
|
telnet.htm
|
The telnet.htm file contains a Web redirection to NewsPlex's
telnet port. By opening it with a Web browser, you should
get a telnet session with NewsPlex. It is created at startup
and deleted at shutdown. JavaScript must be enabled in
the Web browser.
|
|
telnet.url
|
The telnet.url file contains an Internet Explorer link to NewsPlex's
telnet port. By opening it with Internet Explorer, you should
get a telnet session with NewsPlex. It is created at startup
and deleted at shutdown.
|
|
update
|
The update directory contains updates to index files.
NewsPlex now avoids rewriting index files each time
they are modified and instead appends new article descriptions to
them and stores updates to existing article descriptions into
update files. When update files grow too large, or
if the index files are small, index files are rewritten
and the update files are deleted.
|
|
web.htm
|
The web.htm file contains a Web redirection to NewsPlex's
Web page. By opening it with a Web browser, you should
get to NewsPlex's web page. It is created at startup and
deleted at shutdown. JavaScript must be enabled in the
Web browser.
|
|
web.url
|
The web.url file contains an Internet Explorer link to NewsPlex's
Web page. By opening it with Internet Explorer, you should
get to NewsPlex's web page. It is created at startup and
deleted at shutdown.
|
|
xhdr
|
The xhdr directory temporarily stores the results of
individual XHDR requests issued to news-servers for
which the emulateXoverUsingXhdr= setting
has been set. Hosted files
are named using the
server-disk-name_xhdr-request-name pattern
(see the description of newsrc2 directory for
explanations about server-disk-names).
They are deleted when no more needed.
The directory is automatically destroyed when NewsPlex exits.
|
NewsPlex supports most of the standard NNTP commands for servicing
news-readers: ARTICLE,
AUTHINFO USER,
AUTHINFO PASS,
BODY,
DATE,
GROUP, HEAD,
HELP,
IHAVE (always refused),
LAST,
LIST, LIST ACTIVE [wildmat],
LIST NEWSGROUPS (always empty),
LIST OVERVIEW.FMT,
LISTGROUP, MODE READER, NEWGROUPS,
NEXT,
POST,
QUIT,
SLAVE (does nothing actually),
STAT,
XGTITLE [wildmat] (all groups have ? as description),
XHDR,
XOVER and
XPAT.
Although the STAT command could be executed entirely
locally, it actually goes to news-servers in order to allow validating the
availability of an article.
The XHDR command has been extended.
- If passed
the NPSERVREFS argument, it will display the news-server references
for articles in current news-group, in the
server-number:articlenumber form.
- If passed the NPSUBJECT argument, it will
display the article numbers and subjects in the
current news-group just like XHDR SUBJECT,
but prefixing subjects with the retrieved
and marked for asynchronous article retrieval indicators
when applicable. See the Remembering retrieved articles
chapter below for an explanation about these indicators.
NewsPlex also adds a few commands of its own, which are not intended for usage
by news-readers but rather by an operator. These commands can be
entered after performing telnet localhost 119 on your computer.
They can also be performed using the provided NpNNTP utility.
The HELP command does not display them if the user
is unprivileged.
The Web browser interface, active by default since version 4.0, allows
to perform all administrative commands available by telnet, plus a few
of its own. The pages are not currently documented. If the default
Web port is used, connect your Web browser to URL
http://localhost:8000 or load/start either the
web.htm or the web.url file.
| Command |
Web |
Description |
|
NPACCESSED
|
Yes |
Display which news-groups are currently being accessed by
news-readers or are being updated.
The following information is displayed for each news-group:
- Number of users
- Number of articles
- Whether it has been modified since having been read from disk
- The number of threads waiting to access the news-group
- Flags:
| Flag | Meaning |
| B | Busy, still loading |
| E | Error, not accessible |
| L | Loaded ok |
- Name
|
|
NPACTIVE
|
Yes |
Like LIST, but displays only active news-groups.
|
|
NPAPPLYHIDDEN
|
Yes |
Read the etc\hidden file and mark as hidden in all news-groups
all articles whose Message-IDs are listed inside.
Equivalent to the startup.applyHidden= setting
in etc\newsplex.ini.
|
|
NPAPPLYRETRIEVD
|
Yes |
Read the etc\retrievd file and mark as read in all news-groups
all articles whose Message-IDs are listed inside.
Equivalent to the startup.applyRetrievd= setting
in etc\newsplex.ini.
|
|
NPASYNC [min-lines]
|
Yes |
Enable asynchronous article retrieval for articles longer than
min-lines lines and which seem to contain binaries
(NewsPlex looks at article subjects to decide about that,
using the async.binaryFilter= settings).
If min-lines is preceded with a minus, all
articles longer than min-lines are retrieved asynchronously.
Passing
min-lines of 0 disables asynchronous article retrieval,
but does not stop article retrievals already
scheduled. The NPASYNC command also displays the
list of articles which are being retrieved asynchronously,
followed by a line giving their count and total number
of bytes.
|
|
NPCANCEL article-number [article-number ...]
|
Yes |
Cancel the retrieval of one or more articles scheduled for asynchronous article retrieval.
Each article-number can be provided
either in decimal form or in hexadecimal
form (with a 0x prefix). It is not
necessary to select the async news-group first.
|
|
NPCHECKGROUPS mode
|
Yes |
Check the article database for coherency with the newsrc2
files and optionally remove dangling news-server references.
Such references can appear if NewsPlex is brutally killed
before having saved modifications done to an index file,
while corresponding modifications done to the
newsrc2 file have already been saved (the
opposite situation simply makes NewsPlex retrieve
some article descriptions again, as regets).
mode specifies the operation mode:
0 - check only, silent mode
1 - check only, verbose mode
2 - fix errors, silent mode
3 - fix errors, verbose mode
If a news-server is being explored when this command is entered,
no checking will be performed for it.
Starting with version 3.0, NPCHECKGROUPS also
deletes the index and dataset2 files corresponding to
unwanted news-groups.
|
|
NPCLIENTS
|
Yes |
Display the list of currently connected client news-readers and
Web browsers.
For each client, the following information is displayed:
- Connection type, N for news-readers and W
for Web browsers
- Socket number (a unique identifier for the connection)
- The IP address of the client
- The IP port of the client
- The host-name of the client
- The time the client came in
- Whether the current group's index is loaded into memory.
- The current group for the client.
- The current article number in the group, or -1 if there is none.
- The calling connection is marked with an asterisk in the last
column.
|
|
NPCLOSE server-number
|
Yes |
Close all idle connections to a given news-server.
If no server-number is provided or if it is 0,
all idle news-server connections
are closed.
|
|
NPCONNECTED
|
Yes |
Display the list of open news-server connections
along with the state and purpose.
This can be either for exploring or for retrieving an article
on news-reader request. Connections are maintained a few minutes
even when idle, so as to minimize the time necessary to
re-use a news-server.
For each connection, the following information is displayed:
- ID of the news-server
- Connection status:
| Letter |
Meaning |
| |
Idle |
| A |
Direct asynchronous article retrieval |
| C |
Connecting |
| D |
Dead |
| E |
Explore |
| K |
Being kept-alive |
| R |
Direct article retrieval |
| T |
Terminating |
| V |
Server-available asynchronous article retrieval |
- For how long the connection has been in this state
- How many times this connection has been used, including
the current one (if Used)
- Number of bytes sent to news-server
- Number of bytes received from news-server
- Name of the news-server
- Current group on news-server, if any
- Last error string
|
|
NPDATASETS
|
Yes |
Display the usage information of the files in the
dataset2 directory. For each active dataset,
the following information is displayed:
- the number of users
- the number of users waiting for exclusive access
- whether the dataset file is open
- flags
| Flag | Meaning |
| B | Busy |
| E | File pointer is at end |
- how many times the file has been opened. This number should be
always 1 for now, except for the (history) entry
- the number of seeks performed in the dataset file
- the number of gets (line reads) from the dataset file
- the number of find operations
- the number of record additions
- the number of errors
- the name of the news-group
The last table line, where the news-group name is (history),
shows cumulative usage information for no more active datasets.
The last displayed line shows:
- the total number of datasets opened till now
- the total number of reused datasets
- the number of freed datasets
- the number of dataset access errors
|
|
NPDEACTIVATE
|
Yes |
Deactivate the current news-group.
The dataset2, index and update files will
be deleted, and NewsPlex will consider that
the group has never been activated.
Note: Because, for now, the newsrc2
files are cleaned off non-active news-groups at next
exploration only, it is better to shutdown NewsPlex
before re-activating a news-group, or
the news-group will not be re-populated with news-server references correctly.
|
|
NPDELETEOLD days
|
Yes |
Delete article descriptions older than days days
in all news-groups.
Articles which do not have a recognizable Date will
be kept. Note that NewsPlex does recognize some non-English
formats and can parse post-1999 dates where the year is noted
with one or two digits only, eg. 0, 00, 01, etc.
No zombies are created; article descriptions are deleted directly.
Note that article descriptions are normally automatically removed from the
database when corresponding articles vanish from news-servers (after
the expiration of the zombie period). The NPDELETEOLD
command allows to trim the article database in case news-servers forget to
expire some of their old articles.
See also the explore.daysTooOld= setting
in etc\newsplex.ini and the server.daysTooOld= setting
in etc\servers.ini.
|
|
NPDELETESERVER server-number
|
Yes |
This command currently deletes article database news-server references to the
specified news-server. It does not make NewsPlex stop attempting
to use the news-server.
If a news-server becomes unusable, as the
explore\server-disk-name file indicates, you can
delete it from NewsPlex using
NPDELETESERVER server-number.
NPGLOBALSTATS will then not show any articles for it anymore.
Then you can delete it from the etc\servers.ini file
(or set the server.disabled= setting for it)
and restart NewsPlex.
This command even allows to delete a news-server which is
no more present in the etc\servers.ini file. For example,
if you removed the entry, but did not perform
NPDELETESERVER first.
|
|
NPEXPLORESERVER server-number
|
Yes |
Explore a news-server immediately rather
than waiting till its time comes. This command is also
useful if NewsPlex has been started with automatic
exploration disabled (the explore.explore= setting
set to 0).
Note that the news-server will be only explored once.
|
|
NPFILTER
|
Yes |
Apply filters from etc\filters.ini to current news-group.
After selecting a news-group with the GROUP name
command, you can enter NPFILTER to apply
the current set of filters from the etc\filters.ini file
to this group.
No zombies are created; article descriptions are deleted directly.
See also the startup.filterAll= setting
in etc\newsplex.ini and the server.filterArticles= setting
in etc\servers.ini.
|
|
NPFORCETASK handle [handle ...]
|
Yes |
Force the immediate execution of one or more tasks, which
otherwise would be executed later. One can force
an asynchronous article retrieval this way.
|
|
NPGLOBALSTATS
|
Yes |
Display provider stats for all news-groups.
NewsPlex will display for each news-server how many
articles it has and how many of them are unique.
If a given news-server does not appear in the list,
NewsPlex has no articles from it.
|
|
NPGROUPSTATS
|
Yes |
Display provider stats for the current news-group.
After selecting a news-group with the GROUP name
command, you can enter NPGROUPSTATS to see the
news-servers which contain articles for this news-group.
|
|
NPMARKRETRIEVED article-number
|
- |
Mark article article-number in the current
news-group as retrieved
(see section below).
|
|
NPPOSTSERVER [server-number]
|
Yes |
Define a news-server as the default posting news-server. This command
can be used to dynamically change the news-server set
by the etc\servers.ini file. This is a global setting,
valid for the current and all other connections.
Without argument, this command displays the
current default posting news-server.
With argument 0, it disables posting.
|
|
NPREFRESH news-group-name
|
Yes |
Start exploring the indicated specific news-group on all news-servers.
Use this command if you feel you need to refresh
NewsPlex's idea about it. Note that this command does
not activate the news-group implicitly.
|
|
NPRENUMBER level
|
Yes |
This command helps dealing with unavailable
news-servers (asynchronous article retrieval is another way).
If no news-server having an article is reachable, by
default NewsPlex will send to the news-reader
500 No server having article is reachable
Some news-readers however do not
like this message and do not request further articles,
or even disconnect.
If NPRENUMBER is activated, but is not at level 3,
NewsPlex will instead send
423 no such article number in this news-group
which makes the news-reader think the article has simply been
deleted. Most news-readers will continue retrieving other
articles correctly.
NewsPlex will however create a new reference for the article
which will be seen by the news-readers the next time they asks for
new articles. There are 2 possible ways for creating this
new reference:
-
Moving the article under a new number (NPRENUMBER 1).
This is clean, but some news-readers check for cross-posted
articles
using Message-IDs and will ignore articles which have
the same Message-ID as an old article, even if this
old article has been signaled as deleted previously.
-
Also changing the Message-ID (NPRENUMBER 2).
This allows to deal with the previous issue. NewsPlex
also alters the Message-ID to make the article look new.
However, the article will not appear in the correct
place in the thread to which it belongs: it will lose
its followups.
If level 3 is requested and the article cannot be provided,
NewsPlex will send a "timeout" notice and close the connection
to the news-reader.
It is possible to revert to the normal operation by
sending NPRENUMBER 0.
|
|
NPREWRITEGROUP
|
Yes |
Integrate the content of the update file into the index
file for the current group, and delete too old zombies.
This command is useful for quickly trimming a news-group,
notably after setting a shorter NPZOMBIEDAYS value.
|
|
NPRESTART
|
Yes |
Shutdown NewsPlex and restart it immediately.
Read-only configuration files will be re-read.
The original command-line options will remain active.
Once the NewsPlex welcome message is displayed
again, it is possible to enter further commands.
The previous context of the connection (current news-group,
current article, etc.) is lost however.
|
|
NPSERVERS
|
Yes |
Display information about the usage of news-servers.
For each news-server, NewsPlex will display whether it has already
taken article descriptions from it during the current
session or was able to connect at all.
Other information is the time since the last successful exploration
(0 if none yet),
the current speed, the number of articles and article bytes retrieved
and the old-style flags (as in the etc\servers.ini file
documentation above).
|
|
NPSHUT
|
Yes |
Shutdown NewsPlex. NewsPlex will terminate.
This command can take a while to execute,
both because some operations are
not easily interruptible, and because
lots of data may need to be written to
disk.
|
|
NPTASKS
|
Yes |
Display the list of currently running and scheduled tasks.
A task is something to do asynchronously and not necessarily
immediately; tasks are categorized and only a limited
number of tasks in the same category are performed in parallel.
For each task are displayed:
- an internal task handle
- the time remaining until execution. For running or
overdue tasks, the time since the task has been
running or should have been running
- the state of the tasks:
- the category of the task
- a description of the task
In addition, a list of categories is displayed, and
for each of them:
- the name of category
- the count of currently running tasks in category
- the maximum number of tasks for the category
|
|
NPTRIMPOPULAR days [evenRetrieved]
|
No |
Allows to remove certain not really interesting news-group entries
from the etc\popular.ini file.
If only days are given,
the command removes information about inactive news-groups from
which articles have never been retrieved and which have not
been accessed in days days. Certain
news-readers occasionally issue hundreds or thousands of random
GROUP requests,
without ever activating the news-groups.
The NPTRIMPOPULAR command allows
to easily forget about that, after some time.
If evenRetrieved is passed as second argument,
even information about
inactive news-groups from which articles were retrieved in the past
is removed.
Entries for active news-groups cannot be removed. If they somehow
vanish, they will be recreated individually at the next
article retrieval and globally at next startup or restart.
There is no lower limit on days.
|
|
NPZOMBIEDAYS [zombiedays]
|
Yes |
Equivalent to the general.zombieDays= setting
in etc\newsplex.ini.
Without argument, this command displays
the current value only.
|
command-line options
NewsPlex accepts the following command-line options at startup.
A list is also provided by
the built-in online help in NewsPlex,
available through the -h command-line option.
| Option |
Description |
|
-c
|
Delete empty files and directories and exit.
|
|
-C
|
Delete all created files and directories and exit.
Use with caution. Only certains files in the etc directory will
be preserved.
|
|
-m
|
Execute in minimal mode. See the description of the
explore.minimal= setting for more details.
Note that this command-line option will force the above setting
in the etc\newsplex.ini file for next runs.
|
|
-d dir
|
Use directory dir as work directory
for files, rather than the
directory from which NewsPlex is started.
|
|
-h
|
NewsPlex will print a short help about command-line options
and exit.
|
|
-i file
|
Import a list of news-server URLs from file and
incorporate it into the etc\servers.ini file.
A given news-server will be added only if it is not
already present (as determined by the login
name, the machine name and the port).
This option is interesting in minimal mode, where
it allows to pass a list of news-servers to explore.
It can eg. be passed together with -m.
Each news-server URL should be on a separate line.
Empty lines and leading or trailing blanks are ignored.
The news-server URL can optionally be followed, on the
same line and separated by blanks, by one or
more URLs of proxies. They become
server.privateProxy= settings for the news-server.
Note that the format of file is not the
same as the previous raw news-server list format.
|
| -sl pattern |
List Windows services whose short or long
names match pattern pattern.
|
| -si |
Install NewsPlex as a Windows service.
|
| -sa |
Start the NewsPlex service.
|
| -sp |
Pause the NewsPlex service.
|
| -sc |
Continue the NewsPlex service.
|
| -so |
Stop the NewsPlex service.
|
| -su |
Uninstall the NewsPlex service.
|
|
-v
|
Print name, version, copyright and exit.
|
In order to optimize asynchronous article retrievals, and notably to obtain a better
connection usage, NewsPlex has two ways of performing such downloads,
direct and server-available. These ways appear
as async and asyncav tasks in the Tasks
list respectively. They also have different async\xxxxxxxx.log files.
A direct download is performed by trying to download each article
from all news-servers which apply. This method is also used when a
news-reader requests an article synchronously.
A server-available download is attempted each time
a news-server connection becomes idle (nobody requests a connection
to this news-server at the moment), NewsPlex judges it is suitable
for downloading the article (for example, the news-server
must have declared having it) and the number of such
downloads already running is less than the value of the
async.serverAvailable= setting. Therefore, there are
never any Late asyncav tasks.
This server-available method does not respect
the categorization of news-servers and does not enter into
the maximum value of asynchronous article retrievals set with the
async.simultaneous= setting.
It however does respect the configured maximum
number of allowed open connections to each news-server.
You should set the reuseForAsync= setting
to 0 for news-servers which you do not want to be used for
server-available asynchronous article retrievals.
You can also disable these downloads globally
by setting the async.serverAvailable= setting
to 0.
Security and access control
By default NewsPlex only allows logins from the machine on which
it runs and all clients can do anything. This applies to both
NNTP and Web accesses.
If the access.otherComputers= setting is set,
NewsPlex will allow NNTP and Web
logins from any machine.
It is possible to protect both NNTP and Web access with passwords.
The passwords are the same for both accesses.
Two login and password couples can be used to separately protect
user and administrator access.
Web access is protected with the administrator login and password if an
administrator login and password are set, and with the user login and
password if the user login and password are set and the administrator
login and password are not set. When the correct login and password
are provided, all functions become available.
If the access.adminLogin= setting and the access.adminPass= setting
are defined, administrator
NNTP access will be protected and only standard
commands will be available to users which did not provide the
correct values. People will notably not be able to see what news-servers
are used by NewsPlex.
If the access.userLogin= setting and the access.userPass= setting
are defined, even normal
user access will be protected and only the authentication command will
be available until correct authentication data are provided.
If the access.user...= settings are defined
but not the access.admin...= settings, every
user will be privileged as soon as he logs in. By defining
both the access.user...= settings and the
access.admin...= settings, one can separately protect both normal
user access and administrator access.
If a client news-reader does not have administrator access,
retrieved article headers are stripped of Path:
and Xref: entries, which give the identity of
the news-servers from which the articles come. The Path:
entry is useless normally and the Xref: entry
mostly too, since it contains article numbers on the
originating news-server rather than article numbers on NewsPlex.
Note that in the asynchronous article retrieval case, the stripping is
done on the fly, depending on the privilege of the
news-reader, and the async\xxxxxxxx.ok files on disk are complete.
Adding and deleting news-servers
NewsPlex must be stopped for a news-server to be added to the
etc\servers.ini file. Then it should be restarted.
To delete a news-server, for example because it has
been unusable for a certain time, first delete the article descriptions
which still point to it, using the NPDELETESERVER
command, then delete or comment out its entry
in the config\servers
file and restart NewsPlex.
NewsPlex has a feature which can help you to avoid retrieving
the same article twice if you:
- unsubscribe and re-subscribe to a news-group and presumably lose
the state information about it, or
- change your news-reader, or
- lose some of the news-reader configuration information, or
- use several news-readers at the same time, or
- add a new news-server containing old articles to the list (see below).
This feature is enabled by default starting from version 3.8.
It can be controlled with the
general.retrievedLog= setting,
general.retrievedMark= setting and
clients.retrievedShow= setting.
It works as follows:
Each time you retrieve an article successfully,
NewsPlex stores its Message-ID into the etc\retrievd file,
and marks the article in the article database.
If a news-reader later requests a full list of articles
for a news-group, it will get modified article descriptions: NewsPlex
will add a "/r " prefix to the
From: field of the article descriptions.
If an article was previously from John Doe <john@doe.com>
it will become an article from /r John Doe <john@doe.com>.
The articles themselves are not modified when they are
actually retrieved.
Normally, news-readers only request new article descriptions,
so they do not see the modified article descriptions unless they
request everything.
The etc\retrievd file allows to keep the information
even after the article has vanished from all news-servers where it
was present (and the zombie has expired too, or zombies
were not enabled), and hence the article description, containing
the retrieved status has been deleted.
The startup.applyRetrievd=1
setting makes NewsPlex read the
etc\retrievd file on startup or restart and mark as retrieved all the
articles whose Message-IDs are listed in this file.
This setting is useful if you add a new news-server to the config\servers
file and it has articles which you have already retrieved in
the past, but which do not exist in the article database anymore.
Except for the old date, such articles would appear as new.
If the startup.applyRetrievd=1 is
specified, NewsPlex will mark these old articles with
"/r " and you will be able to avoid retrieving
them again.
There is presently no way of doing the opposite, that is
transferring the Message-IDs of previously retrieved
articles from the article database into a file.
Migrating to NewsPlex version 3.5 or later from earlier releases
Warning: this chapter does not apply to version 4.0 and later anymore
and needs to be rewritten. What I did myself was to
write the new etc\servers.ini, etc\newsplex.ini and etc\filters.ini
files by hand, using the old files from the config
directory.
Versions starting with 3.5 do not import the data files of
versions 3.4 and earlier, and will refuse to start if such
files are present. There are currently no plans to provide
this conversion in the future, because of differences in
NewsPlex operation principles.
In order to migrate to version 3.5 manually,
you could perform the following steps:
-
You can try the new auto-configuration feature and start NewsPlex
without any config file and without any arguments, in an empty
directory. NewsPlex should find some of your previously used news-servers
and will assume you want all news-groups. This is fine, since news-groups are
activated only when requested and handling the full news-group list is
now very effective (although it does consume the RAM necessary
to store all names; this will be improved in the future).
-
Conversely, you can import by hand some of the files from an
older NewsPlex setup:
| File | Purpose |
| config\groups.yes |
If you want to limit the memory usage
and are not interested in the full group
list |
| config\servers |
If you have additional news-servers |
| config\filters |
If you defined some filters previously |
| etc\retrievd |
If you want to retain the information about
which article have been read |
Do not keep the config\groups.no or the config\groups.fix files, as they as no
more necessary. config\groups.no now just hides groups and consumes
additional memory for groups which might not even exist anymore.
config\groups.fix is no more used at all.
- Once NewsPlex has been started, leave some time until all news-servers
have been explored initially and their status becomes Done.
As this is a fresh start, and no news-group is active yet, this will
be limited to getting just the news-groups list from each news-server and
constructing the etc\groups file.
- Now you need to activate the news-groups which interest you.
You can just unsubscribe and immediately re-subscribe to every
news-group you are interested in. Then, request new articles
to activate the news-groups.
- If you want to keep the "retrieved" status of articles:
- perform the above steps as indicated
- copy or move the etc\retrievd file from a previous
version of NewsPlex into the etc directory.
You can do this while NewsPlex is already running
- for the 2nd time, unsubscribe and re-subscribe to
every news-group. This time, do not enter them or request
new "headers" (article descriptions) yet
- wait until NewsPlex gets the article descriptions for every active group.
This can take some time; watch the log files in
the explore directory
- perform the NPAPPLYRETRIEVD command, so that
article descriptions of already read articles are marked with
/r in the From: field
- request headers for subscribed groups
- delete or mark as read all articles which appear marked
with /r in the From: field.
Exit codes
When NewsPlex terminates, it returns a specific exit code,
which expresses the reason for the termination. Presently,
the following exit codes are possible.
Note that some values are missing; this is because
they are no more used.
| Code | Meaning |
| 0 | "No problem" |
| 1 | "Help was printed" |
| 2 | "Bad option was passed" |
| 3 | "Missing work directory" |
| 4 | "Could not open the journal file" |
| 5 | "Another server already running on same port" |
| 10 | "Could not create the logs directory" |
| 11 | "Could not create the etc directory" |
| 12 | "Could not create the list directory" |
| 13 | "Could not create the explore directory" |
| 14 | "Could not create the async directory" |
| 15 | "Option -t not specified but disk is 8.3 only" |
| 16 | "Could not create the newsrc2 directory" |
| 17 | "Could not create the index directory" |
| 18 | "Could not create the dataset directory" |
| 19 | "Could not create the logs/unusable file" |
| 20 | "Error in the etc/servers.ini file" |
| 21 | "Error when processing the etc/groups file" |
| 22 | "Error when initializing asynchronous retrieval" |
| 23 | "Could not establish an NNTP server" |
| 24 | "Could not establish a Web server" |
| 25 | "Could not create async retrieval threads" |
| 26 | "Error when converting the databases" |
| 27 | "Shutdown requested during startup" |
| 28 | "Could not create the NNTP server thread" |
| 29 | "Could not create the Web server thread" |
| 30 | "Could not create the compaction task" |
| 32 | "Could not create the memory monitor task" |
| 33 |
"Article noticed as corrupted during article free operation" |
| 34 |
"Article noticed as corrupted during article save operation" |
| 35 | "Error during synchronization with main server" |
| 36 | "Internet not present" |
| 37 |
"An async retrieval task could not be created" |
| 38 | "The log file for NNTP connection could not be created" |
| 39 | "The NPSHUT command has been performed" |
| 40 | "Cannot initialize the logs/clients file" |
| 41 | "Cannot initialize the logs/web file" |
| 42 | "Shutdown requested from the web interface" |
| 43 | "Shutdown requested by signal" |
| 45 | "Could not create the update directory" |
| 46 |
"Article noticed as corrupted during Message-ID compare" |
| 47 | "Auto-configuration failed" |
| 48 | "Could not create the server update task" |
| 49 | "Automatic shutdown after exploring all servers in minimal mode" |
| 50 | "Could not read the etc/popular.ini file" |
| 51 | "Could not repair the article database" |
| 52 | "NNTP server and Web server ports not different" |
| 53 | "Internal restart requested from the web interface" |
| 54 | "Error when processing the etc/newsplex.ini file" |
| 55 | "Auto-configuration done" |
| 56 | "Error when importing servers from file" |
| 57 | "Internal restart on panic" |
| 58 | "Could not create the connect directory" |
| 59 | "Service shutdown" |
| 60 | "Service operation failed" |
You can create a shortcut for NewsPlex on the Windows desktop,
passing the desired command-line options in standard.
Drag the NewsPlex icon onto the desktop from the directory where
the distribution has been unpacked; this creates a shortcut
for the program. Select Properties from the shortcut's
right-mouse-button menu, click the Shortcut tab, find
the Target input box and add a blank and all the necessary
command-line options
at the end of the command associated with the shortcut.
In the Start in input box enter the name of the
work directory where you created the etc directory and
the .ini files. You can also pass
the name of this directory with the -d command-line option.
From the Run list, select Minimized to avoid Windows
switching to full-screen when starting NewsPlex (this happens on
Windows 95).
Since version 2.8, the NewsPlex executable has its own icon,
but if you do not like it, use the dialog box associated
with the Change Icon button to change the icon
to something else.
Finally, you can rename the shortcut into NewsPlex,
either from the right mouse button menu, if the Rename option
is available there, or
by changing the name of the shortcut file to NewsPlex.lnk.
The shortcut file is located in the Desktop subdirectory
of the Windows installation directory on Windows 95. On Windows NT,
it is located in the Desktop directory of your profile.
On Windows 2000 and XP, the Desktop directory is located
in your user profile directory (indicated eg. by the USERPROFILE
environment variable).
Web resources related to NewsPlex
Please send me email at the mirREMOVETHIS@jalunaREMOVETHIS.com
address for all questions.
There is currently no real NewsPlex web page, but there are
a few places where either the latest Windows and Linux versions or
user-contributed materials can be found.
The
http://newsplex.webstylists.com/download/
directory is the place where I currently upload new
releases (courtesy of Mark Thompson).
You can also check
http://newsplex.webstylists.com/ directly
in case I decide to start a real web page.
Dave Warren offers a mirror of the files at
http://www.intarnut.com/newsplex/,
while Pavel Stratil
(http://triceron.com)
offered a page at
http://triceron.com/project/newsplex.
Andrew Starr proposes a page at
http://www.newsreaders.com/link/newsplex.php.
Check all these places if you feel the next release
does not come soon enough!
Stable new Windows versions were in the past uploaded to the
ftp://ftp.cdrom.com/pub/simtelnet/news site
(Simtel.Net),
and sometimes to the
http://www.winsite.com site (CICA).
In the first case, an announcement was automatically posted
to
comp.archives.ms-windows.announce.
Stable new OS/2 versions were occasionally uploaded to the
ftp://ftp-os2.nmsu.edu/pub/os2/apps/internet/news/server
site.
The Solaris and FreeBSD versions can only be obtained from me
directly, by email.
NewsPlex is sometimes mentioned or discussed in the
news-groups (
alt.usenet.offline-reader.forte-agent,
news.software.readers,
it.comp.software.newsreader
and others).
You can use
http://groups.google.com/
and enter newsplex as search keyword to locate them
(or simply
click this link).
Joseph Morlan has started a Yahoo Group
(mailing list with Web-access) dedicated to NewsPlex
at
http://groups.yahoo.com/group/NewsPlex/
in December 2002.
More recently, a German-language NewsPlex discussion forum
has been established at
http://www.newsserverguide.de/thbboard/board.php?boardid=13
Some people maintain references to NewsPlex on their
pages. There is
also an Italian translation of the manual:
History of updates
Major improvements are in bold.
Version 4.4 (20 November 2005)
In NpPlay
- Added a -N option (randomize), which changes
the random sequence every time
NpPlay is run.
In NpSync
- In synchronize mode (-S) we no more compare
files in the reverse scan, which was pointless: unique files
are deleted, the other ones are not considered.
- The -C option now makes NpSync skip files
whose names contain characters invalid on Windows.
This option can be helpful when syncing with a Unix
filesystem mounted by NFS.
In NpTunnel
- Introduced 3 new settings:
- reallyConnect= setting, if set to 0,
makes NpTunnel not connect to the destination and just
observe what the client requests or sends.
- forwardLocalData= setting, if set to 0,
makes NpTunnel not forward local client's data to the
remote server. It will still log them, if requested.
- returnRemoteData= setting, if set to 0,
makes NpTunnel not return the data from the remote
server back to local client. It will still log them,
if requested.
In NewsPlex
- Introduced the access.maxNntp= setting and the access.maxWeb= setting
which allow to define how many incoming client connections of each
type are allowed.
- Introduced the access.nntpQueueRequests= setting and the
access.webQueueRequests= setting which allow to define
whether NewsPlex should wait till a "connection slot"
becomes free in overload conditions or reject an incoming
connection immediately.
By default there is no waiting; this is a change
from previous versions. Note that NewsPlex
does not do a very good job of queuing. It will
reject connections very soon. This setting is mostly
there to allow reverting to the traditional behavior rather
than to introduce a specific feature.
- Introduced the clients.logPostedBodies= setting, which allows
to decide whether bodies of posted articles should be logged.
- A error in the etc\servers.ini file, for example a duplicated
id= setting, would crash NewsPlex rather than just terminating
with an error code. This problem appeared in the previous
version.
- NewsPlex could crash if server-available asynchronous article retrievals were used together with the
general.verbose= setting.
- NewsPlex would often improperly display the status of connections
which were kept-alive as just idle.
- The connect.maxConnectTasks= setting is really named
connect.maxTasks=
- Introduced the access.allowedIP= setting, the
access.allowedHostName= setting and the
access.hostNameRequired= setting which allow to better control
who is allowed to connect to NewsPlex. The two first settings
can be repeated, can contain wildcards and can also specify a
rejection if the ! character is used at the beginning
of the pattern.
- Changed the Too many EOFs in XOVER message in
the logs into more accurate Too many EOFs in XOVER,
XHDR or XPAT.
- Too old or filtered out articles are now indicated
with a simple - in the logs rather than
will a full article description dump, to save on file size.
- During the exploration of a news-group, in the
Message-ID matching phase, NewsPlex would retry
the same interval after an error. This
was not suitable for the initial exploration
of very large groups, which could never
succeed in one go.
- When applying the etc\retrievd or etc\hidden
files to news-groups, the timestamp was improperly displayed
in the logs, between the news-group names and
the application statuses.
- When exploring a yet unknown news-group on a news-server, NewsPlex
will no more ask for article numbers before asking
for number-to-Message-ID mappings. This served no useful
purpose, yet slowed down the first exploration of
a news-server.
- NewsPlex will now save the full active news-group list to the newsrc2
file (with 0 as last exploration timestamps) immediately after
getting it from the news-server and before actually exploring the
news-groups. Previously, the newsrc2 file was only updated
as each news-group was explored and if the explore failed for some
reason or was interrupted, the next time NewsPlex would
only look at the news-groups previously explored. This would
persist until the time to reget a full news-group list came.
- Fixed a problem where index or dataset2 could get
corrupted with apparently correctly constructed
but misnumbered lines. This resulted in Number
not greater than previous error messages when
the corresponding news-group was accessed.
The problem only occurred on Windows and was due to
the system ignoring and implicitly stripping trailing
dots in filenames (Windows considers e.g. filename...
and filename as the same file and if filename...
is referenced, filename will be accessed implicitly).
So if a news-group's name ended with one or more dots, then
NewsPlex
would actually access the files for the news-group without the
trailing dots, and such parallel access would corrupt them
on update. Now such news-group names are rejected as invalid.
- Introduced the groups.noByPattern= setting, which allows to
exclude broad categories of news-groups by name patterns. The older
groups.no= setting has been renamed to groups.noByName=.
- NewsPlex can now be installed as a Windows service (on
Windows NT/2000/XP/2003), using
the new -si command-line option. The newsplex.exe executable can also be used
to start (-sa), stop (-so), pause (-sp),
continue (-sc) and uninstall (-su) this
service. The -sl pattern command-line option can be used
to list Windows services whose names match the pattern.
- Added two new per-news-server settings allowing to properly explore
some broken-by-design news-servers.
The server.xhdrMessageIdAllowNumberNotGreater= setting makes
NewsPlex stop requiring that the list of article number-Message-ID
mappings returned by XHDR MESSAGE-ID has strictly
progressing article numbers,
while the server.xoverAllowNumberNotGreater= setting
does the same for the list returned by XOVER.
- Introduced a clients.addPostedHeaderLeading= setting,
a clients.addPostedHeaderTrailing= setting,
a clients.addPostedBodyLeading= setting and
a clients.addPostedBodyTrailing= setting,
which allow to insert either header or body lines into posted
articles, at either the first/leading or the last/trailing
position, for example in order to identify postings.
- Fixed a problem with asynchronous article retrievals getting delayed without apparent
reason in version 4.3, unless server-available asynchronous article retrievals (asyncav tasks)
were disabled on news-servers where exploration was turned off.
The problem was actually old, but remained latent
as NewsPlex was not managing idle connections well enough.
The server-available asynchronous article retrieval code tries to download an article
if it is explicitly present on the news-server to which a connection has
just become free. But this code was disturbing the normal
direct asynchronous article retrieval, by pushing it one minute into the future if
the news-server was not listed as having the article in the database.
Previously server-available asynchronous article retrievals
were only done after finishing exploring a news-server, after finishing
downloading an article by number and after posting
an article to the news-server. The news-server was necessarily explored in the
first two cases, so the server-available asynchronous article retrievals had a good chance to find
the article as "present on the server" in the database and to
proceeed with the download. In 4.3, thanks to the introduction
of "server waiting", NewsPlex could better decide when a connection
was no more needed, so server-available asynchronous article retrievals were attempted in other
circumstances as well. Most of the time server-available asynchronous article retrievals silently failed,
pushing away direct asynchronous article retrievals in time.
Now, we reschedule the direct asynchronous article retrievals at the originally scheduled
time if a server-available asynchronous article retrieval fails.
- Shutting down NewsPlex just after activating many news-groups
would generate a number of traces in
the journal file, about not completed late explore
tasks, and about users remaining for news-servers, approximately
equal to 1 plus the number of not yet explored news-groups.
Version 4.3 (19 March 2005)
In NpTunnel
- NpTunnel is a new utility. It allows to automatically establish
various kinds of tunnels accross the Internet when you
connect to a port on the machine running NpTunnel.
- NpTunnel is driven by an nptunnel.ini
configuration file. A sample file is generated at the first
run, showing the various possibilities. All sample
tunnels are initially disabled (tunnel.disabled= setting).
- Tunnels can involve going thru arbitrarily long proxy
chains in order to reach the target server (tunnel.proxy= settings).
- Tunnels can be
- either auto-dialing, where the simple
fact of connecting to a port on the machine running NpTunnel
connects you to another predefined machine (tunnel.localUrl= setting
equal to telnet://localhost:port and
tunnel.remoteUrl= setting equal to
telnet://any-other-host:port)
- or they can
offer a SOCKS4 or SOCKS5 interface (tunnel.localUrl= setting
equal to eg. socks5://localhost:port),
allowing to dial anywhere.
Both types of SOCKS connections are accepted indifferently,
with one exception: if a login/password is defined for the
interface, SOCKS4 connections are not accepted.
- Tunnels can be public or accessible only from the machine
running NpTunnel (tunnel.otherComputers= setting).
- NpTunnel can login your automatically to a Unix machine by
"typing in" your login name and password (tunnel.autoLogin= setting).
- NpTunnel can act as a proxy for an IRC program and
automatically process "DCC SEND" requests issued
by IRC file servers (tunnel.irc= setting).
- A special "piping" mode makes NpTunnel expect incoming
connections on both ends of the tunnel and later route
packets both ways (tunnel.piping= setting).
- Traffic can be logged to the per-connection log file
(tunnel.logTraffic= setting),
or separately, per source (tunnel.localLog= setting and
tunnel.remoteLog= setting) or both.
- Logging can be either immediate (higher overhead), or
slightly deferred, according to the tunnel.logSyncWrites= setting,
the tunnel.localLogSyncWrites= setting and the
tunnel.remoteLogSyncWrites= setting.
- It is possible to run in background (using the
global.runInBackground= setting and the
global.hideIfBackground= setting).
In NpSync
- NpSync is a new utility. It allows to compare and optionally
synchronize two directory trees.
In NpPlay
- The new -n command-line option causes random playback
of files, rather than a linear one. Each file
will be played once (possibly repeated the number
of times specified by the -l option, if passed)
and the program will terminate.
The set of files to play is determined at program
startup, so adding a new file into the directory
will not cause its playback until NpPlay is
run again.
- NpPlay now watches system events like Ctrl-C keys
or window close requests and stops playback and
releases the multimedia device by itself, rather
that relying on the system to cleanup properly,
which could lead to some peripherals remaining
"busy" until the computer was rebooted.
- The wildcard parser no longer accepts the [...]
syntax (for sets and ranges of characters), as it prevented
playback of single files whose name contained the
[ character.
In NpRename
- Add the -u string command,
which allows to globally remove unwanted strings
from file names.
Such strings could for example be the name of a Web
site.
It is possible to have blanks in string,
if it is quoted using double-quotes
(-u "some unwanted string").
In NpJPEG
- Add the -i command-line option,
which allows to continue scanning the directory
tree during recursive operations when some
directories are not accessible.
In all utilities
- Fixed the scanning of directories, which could
miss certain files or directories because of
a bug in the mechanism which makes sure every
file is only processed once.
In NewsPlex
- Introduced the async.serverAvailable= setting
in order to allow tunning how many server-available
asynchronous article retrievals are allowed.
- Fixed the NPFORCETASK command which only
correctly processed its first argument.
- When an article was being hidden as the result of filtering,
and the hiddenLog= setting was set, the etc\hidden file was
not updated until shutdown. This prevented having the new
Message-IDs seen by the NPAPPLYHIDDEN command.
- If the symbolic name of news-server could be resolved into an IP
address, but this IP address could not be connected to,
NewsPlex will not cache the IP address anymore and will
resolve the name again at next connection attempt.
Previously, NewsPlex would cache the IP address indefinitely,
which causes bad behavior in at least two circumstances:
first if the IP address changed dynamically, and second,
if an incorrect (or obsolete) IP address was provided
at the time when the name was resolved.
- Introduced 3 new settings,
xrefLogGroupNotActive=,
xrefLogHadArticle= and
xrefLogAddedArticle=,
which allow to reenable the corresponding frequent log traces
related to cross-reference management during explorations.
These traces are no more issued by default.
- Implemented a parallel connect and prioritized news-server waiting
mechanism. When asked about an article, NewsPlex will now connect
to several news-servers in parallel rather than to one after another.
It will also immediately use a connection which has been
released by some other activity in the meantime.
Therefore a news-server which is slow to connect to will not delay an article
retrieval process because the connection will now progress
asynchronously while NewsPlex attempts to use other news-servers.
Note that NewsPlex does not try to retrieve the same
article from several news-servers at the same time, it just
connects to them in parallel.
Categorization is respected in that NewsPlex will wait for
a user-configurable number of seconds before requesting
a higher category news-server. This time can be adjusted thru the new
connect.maxCategoryWait= setting, located in the new
[connect] section of the etc\newsplex.ini file.
There is a new category of tasks, connect
tasks, which are used to perform news-server connections. They are
visible in the task list. Their number can be controlled
by the new connect.maxConnectTasks= setting.
New directory connect is where the news-server connection
logs are stored by the tasks. This directory can be
automatically deleted on exit using the new
shutdown.deleteConnect= setting.
Waiting for a news-server is prioritized, in that some requesters are
considered more important than others. It is possible to ajust
the relative priorities of direct retrievals, async retrievals and
explorations by the means of connect.priorityDirect=,
connect.priorityAsync=, and connect.priorityExplore=
setttings. By default direct retrievals are the
most important and explorations the least.
The absolute priority of a news-server request is the sum of
the request time and of the priority, which prevents
starvation of less important requests as long
as the values of relative priorities are not too
different from each other.
- The list of news-server connections displayed by the Connected
Servers web page and by the NPCONNECTED telnet
command now contains a more detailed and (for the Web
page) more explicit status
for each connection, like Connecting,
Direct retrieval or Kept-alive.
No TCP connects column is displayed anymore, because it
does not have sense with the async connect mechanism. The
Bytes Sent and Bytes Received values are accurate; previously
these values were reset when a connection was re-used for
exploring.
- For explorations, we now log a TCP reconnect count rather
than a TCP connect one and the count of the exchanged bytes
remains correct even if we switch to a new TCP connection
in the middle of the exploration.
- The blindLogin= setting was not operating properly
when used for servers which are explored in addition
to being used for article retrievals.
- Introduced the explore.numbersCollapseMaxRanges= setting,
the server.explore.numbersCollapseMaxRanges= setting,
the explore.numbersCollapseMinDistance= setting
and the server.numbersCollapseMinDistance= setting,
which allow to control how NewsPlex should try to
reduce the number of requests issued to news-servers in presence
of fragmented article sets.
- Timeout notices sent by news-servers before they close the
connection are recognized in more places and cause
a reconnect and retry rather than an error.
- If a news-servers is only willing to provide the news-group list thru the
XGTITLE request and refuses subsequent information
about article ranges for each news-group, then we keep the list,
incomplete, rather than erroring. This prevents from downloading
the complete list again at next explore.
- Maximum-length IP addresses (eg. 123.123.123.123) could be
displayed or logged without the last digit on some Unix versions.
This also impacted the ability to connect using HTTPS proxies
in rare situations when NewsPlex solved the hostname by itself.
- Introduced the general.timeStampLogs= setting, enabled by
default, which makes NewsPlex precede every log line with
a time-stamp.
- Unix versions of NewsPlex were not using the thread-safe
version of the routine which converts seconds into day
and time, and hence could generate wrong time-stamps
sometimes.
- Added rudimentary ignoring of telnet escape sequences which
some telnet clients send just after connecting.
Version 4.2 (7 March 2004)
In NpUud
- The error consisting in having the last line of an
uuencoded file to be too long, the spurious chars
being the end of the previous line, is now specifically
detected, and does not enter the more general
line too long category anymore. The new
-P command-line option allows to ignore this error situation.
- Added X-Trace-PostClient-IP: to the set
of recognized header lines. This modification
also applies to NpPost.
In NewsPlex
- Fixed the bug which caused the
Assertion failed: code != AG_RUNNING || ag->code != AG_RUNNING,
file newsplex.c, line digits panic.
It has been introduced in version 3.2, when zombie
retrievals have been moved to a separate task.
- It is no more possible to set a disabled news-server as the posting one
using the telnet interface.
- The server.retrieveArticles= setting was ineffective
if an article contained references to the news-server.
The server.disabled= setting was not taken
into account in this case either.
- If asynchronous article retrieval was enabled for all articles, trying to retrieve an
inexisting article by Message-ID while a current news-group has been set
would panic NewsPlex. The panic file content would be
Assertion failed: article != NULL, file newsplex.c, line 19317.
- Introduced the access.bannerOkForVersion= setting and the
access.bannerOkAlways= setting in order
to prevent NewsPlex from displaying the same old banner, which
might not even have been customized, if a new executable is
used with an old installation. The bannerOkForVersion= setting
defines the NewsPlex version
for which the banner= setting is ok. If you want to keep the
banner= setting after upgrading NewsPlex, you will need to
adjust this setting, unless the boolean bannerOkAlways= setting
is set.
- Too many disconnects occurring when getting article descriptions from a news-group
do not stop the overall exploration process anymore; NewsPlex
will skip to the next news-group. This alleviates the need of
using the server.ignoreGroup= setting.
- If a news-server gives a rejection message at a connection attempt,
and no other connections are open to it yet, NewsPlex will
now assume it is overloaded in situations where previously
it would consider that the maximum allowed number of connections
from a single IP address has been reached. This gives quicker
retries.
- The -d command-line option was not taken into account
when a cleanup (-c) or a destroy (-C) command
was passed; NewsPlex was always cleaning the current directory.
- Added a new command, NPTRIMPOPULAR <days> [evenRetrieved]
which allows to remove unwanted news-group entries from the etc\popular.ini
file.
- Introduced the notion of invalid news-group names, in addition
to unwanted ones.
NewsPlex no longer accepts async as a news-group name
on news-servers, since this conflicts with the internal async
news-group name and caused malfunction. It also disallows news-group names
which would make invalid filenames on one or more of the
supported operating systems (namely,
containing the : \ / " < > | * or ?
characters), plus names
which contain , or ; characters.
The : and , are impossible in nature
because they are used for separating news-group names from
one another or from article numbers in article headers
and article descriptions. The other characters would not allow
the creation of news-group database files, or they appear
as resulting from user typos in articles posted
to news-servers which accept and create any news-group name.
About 225 news-groups became invalid this way in a "full",
over 180,000 entries news-group list.
The etc\popular.ini file is now automatically cleaned of entries
corresponding to invalid news-groups; it does keep entries for unwanted
news-groups.
- news-server references to disabled news-servers were not removed from the article database
during NPCHECKGROUPS.
- If NewsPlex was shutdown during article database compaction at startup
time, the exit code and error message were incorrectly
51 and Could not repair the article database
rather than Shutdown requested by ....
- Added a "waiters" column to NPDATASETS and
to the corresponding array in the Web page. Fixed
column alignment in the "(history)" line.
Added a "Contentions: number" line in NPCLIENTS
display and after the corresponding array in the Web page; this
value just measures internal parallelism and has no importance to
users.
- Fixed the problem of etc\groups not being reconstructed
properly on Unix-type systems if it ever vanishes; because
of a missing buffer flush accross a fork system call,
the file could
contain the list of active news-groups, or part of it, twice.
This file will now be automatically deleted and reconstructed
if found corrupted.
- The clients.junkPostedHeader= setting was not processed
properly. Only the first 3 characters were used for name
matching, so eg. X-No-Archive: got eliminated
too if junking of X-Newsreader: was requested.
Version 4.1 (15 January 2004)
In NewsPlex
- Ambiguous characters in URLs, typically a @
escaped as %40 in the login name, were rewritten
in etc\servers.ini without proper escaping, so NewsPlex could
not reread the file later and generated errors like
Ignoring entry url of type url because Invalid format:
url=user@emailhost:pass@newshost:port
Server id does not have an URL.
NewsPlex is terminating with code 20: Error in the etc\servers.ini file.
- Fixed problems related to the async retrieval of articles
not belonging to any news-group. Note that they run indefinitely,
and must be cancelled manually.
- Disabled news-servers now have a server-number, and their server-disk-names must be unique
as well. This allows to still reference them if dynamic
enabling and disabling is implemented one day and also
prevents from having the same news-server mistakenly present
several times in the etc\servers.ini file.
- Introduced the clients.provideXrefs= setting in
etc\newsplex.ini, which should
allow using NewsPlex with news-readers which require that article descriptions
provided by the XOVER command include the
Xref: field.
- Introduced the boolean explore.useXrefs= setting in
etc\newsplex.ini, whose default value is 1 or
true, to complement the per-news-server
server.useXrefs= settings. In some setups,
involving probably very large news-groups, managing
cross-references received from news-servers caused
excessive memory usage and system trashing.
This new setting allows to disable it globally,
rather than having to disable it individually
for each news-server.
- Added a Support web link on the web interface.
- NewsPlex could panic and terminate with an
Assertion failed: code != AG_RUNNING || ag->code != AG_RUNNING,
file newsplex.c, line digits message in the panic
file. This meant that a duplicate parallel retrieval was
internally attempted for an article scheduled for asynchronous article retrieval.
Such a situation will now cause an
internal restart, which might recover it.
Debug information is logged to the journal file.
- Added the general.mutexUnlockBeforeCondSignal= setting,
which allows to deal with certain buggy Linux pthread
libraries. If NewsPlex hangs on Ctrl-C
instead of shutting down, then try this setting.
Version 4.0 (6 January 2004)
In NpCRCs
- Added a new -c command-line option, which makes NpCRCs compute
the CRCs of all files (or just those matching the specified
patterns) in current directory or optionally subdirectories
as well.
- Introduced 2 new command-line options. -f fileName
or Display lines from fileName containing matching CRCs
makes NpCRCs look into the fileName file
each time it has computed the CRC for a file,
in order to find lines which might contain this CRC
as a string. Such lines will be displayed.
This allows to decide if a file
found on disk matches a list of files already
known. The companion -m command-line option
(Only display file information if match against fileName)
prevents NpCRCs from displaying anything for files
whose CRC has not been found in fileName.
CRCs can be stored in lower or upper case
in fileName, but they must have
1 or more leading zeroes if otherwise they would have
less than 8 hexadecimal digits.
In NpJPEG
- Added a new command-line option, -n or recover from spurious trailing
NUL chars automatically.
One particular possible usage is to automate the removal
of ending junk from files
which have been recovered by CHKDSK from corrupted FAT/FAT32
partitions, for example after a brutal machine reset. The size
of files recovered from "lost cluster chains" is always multiple
of the disk cluster size, since the exact value is only stored in
the (presumably lost) directory. NpJPEG can bring such files back
to original conditions, by removing the data which were originally
in the so-called slack area of files (unused space in last cluster)
and did not belong to files from the logical point of view.
In NpMerge
- NpMerge has a new change part number width
command-line option, -w width, which allows to
merge parts which are numbered differently than
.001, .002, ..., .010, etc. By specifying width 0,
NpMerge will look for .1, .2, ..., .10, etc. files;
if the width is set to 4, it will merge .0001, .0002, ...,
.0010, etc. files. The default width is 3.
In NpHdrSep
- NpHdrSep can now handle binary files, that is, files containing
binary zeros. Normally, news/mails are not supposed to contain
them, but modern news software is able to pass them if somebody
mistakenly sends a binary "attachment" directly, without
using any encoding. Since the previous version, NewsPlex also
passes zeros intact. The main problem today with sending
binaries directly is that of line lengths and line endings.
- NpHdrSep now checks for disk overflows when separating posts.
In NpRename
- Added the -l command, for removing leading non-alphanumeric
and non-dot characters from file names.
In NpUud
- Specifying / as target directory thru the -t
command-line option did not work on Windows.
- The -Dy and -Dy command-line options were not documented
in online help.
-
Added the -T command-line option, or put the files into a subdirectory
named after the Date: line.
If this option is specified, the decoded files and the headers
will go to a subdirectory named after the Date: line inside
the file. The name of this directory is Year-Month-Day.
If the -t command-line option is specified too, the date
subdirectory is created inside the requested target directory
rather than inside the current directory.
- If a line in an uuencoded file, for example the last line,
had additional trailing characters, which did not result
from some recognizable type of corruption leading to
excessive characters in a line, then the error message
confused the actual length of the line and the expected
one and proposed to pass the -p command-line option (pad too
short lines) in order to ignore the problem. This did
not help however. Now in this situation, the new -x
command-line option is proposed (ignore extra characters in too long
lines) and it actually works.
- If one of the source files had the same name as the computed
cleaned .hdr file, then both files would be mistakenly
deleted after extracting the encoded content.
- More advertisement lines are recognized at the end of
parts in multipart postings being decoded.
- The -a or allow truncation command-line option is now
accepted for yDecoding as well. NpUud will log the
truncation to the generated .hdr file.
- Added the -b command-line option which allows to ignore the
error situation where file sizes declared in =ybegin
and =yend lines do not match but the file matches
the size declared in the =ybegin line.
Such an error can eg. happen if several files are
yEncoded at once, and the second size is mistakenly
the sum of the sizes of all preceding files.
- Added the -N or Interactive ignoring command-line option,
which, if specified together with the -j command-line option,
makes NpUud display offending lines and ask whether
to ignore them (this time or always). This allows to easily deal with
uuencoded files where comments are intermixed with
the encoded context.
- Fixed the processing of corrupted yEncoded files.
If a part contained errors, NpUud could mistakenly
delete the .tmp file which contained previously
decoded parts. If a decoding error occurred at the
first part, a pretty useless .dec file would
be left over. Made certain error messages more explicit.
- NpUud now automatically detects a corruption
consisting in inserting one or more DEFANGED_
strings into encoded content. It will issue a specific
error, and if the user passes the new -F command-line option,
it will automatically fix the problem.
In NewsPlex
- Using the Group Availability commands could crash NewsPlex
if there were news-servers with server-numbers higher than 127.
- In minimal mode, NewsPlex would crash if a news-group activation
was attempted.
- More junk header lines are eliminated from the headers of
posted articles.
Update: this has become the
clients.junkPostedHeader= setting
before the release.
- Added the -G command-line option, ignore another server
running on the NNTP port. It allows to start
NewsPlex when some funny proxies or firewalls are
already running on the computer.
Update: this command-line option has been converted into the
startup.ignoreAnother= setting inside the
new etc\newsplex.ini file (cf. below) before the release.
- NewsPlex did not properly reconstruct a missing index file
for a news-group from the dataset2 file at startup time if
article renumbering has been performed for that news-group
previously. The index file would contain duplicate entries,
the news-reader would receive a 412 No news group has been
selected message when trying to access the group,
and a Tree node is duplicate error message
would be visible in log files.
- Systematized the format of certain error messages, to be
"<string>: <errorMsg>.<newline>" rather than
"<string>, <errorMsg>.<newline>"
or "<string> (<errorMsg>).<newline>", and to have an
ending dot.
A few messages have been grouped on a single line.
- Re-arranged the output of the news-server deletion commands
for better readability: fixed-width columns
like article counts are now displayed first
and aligned.
-
Added a new per-news-server flag,
l(group-name1 group-name2 ...)
or use the LISTGROUP request instead of
GROUP to select the specified
news-groups on the news-server.
This option sometimes allows to access specific news-groups
on news-servers which normally forbid entering them thru the
standard GROUP request, although
they do have them.
Update: this flag has become the
server.listgroupGroup= setting
before the release.
- Enlarged the maximum legal article size from 5 to 6 megabytes.
- Commands NPCANCEL, NPDEACTIVATE,
NPFORCETASK, NPREFRESH are now
documented by the HELP command in the telnet interface.
- The handling of blind login (n flag) news-servers
has been improved. NewsPlex will now ignore a late positive
welcome message and will also reconnect and retry an article request
command if it gets a late negative welcome message.
Update: this is now the blindLogin= setting.
- NewsPlex would sometimes log an incorrect message,
Range 60575-60574 will be explored again,
when getting article descriptions and the news-server delivered data outside
of the requested range.
- Introduced the etc\newsplex.ini file and eliminated
most of command-line options.
Also eliminated the config\authinfo, config\banner,
config\groups.yes and config\groups.no files, which have
become settings inside the etc\newsplex.ini file.
- Introduced the webHtm=, webUrl=, telnetHtm=,
telnetUrl=, newsHtm= and newsUrl=
settings in the [access] section of the etc\newsplex.ini
file. They allow to disable
the creation of the corresponding bookmark files.
- When a news-server is deleted, traces are no more produced
for news-groups not having articles from that news-server.
- After a new news-server has been added to the list, when exploring it
for the first time, for certain news-groups NewsPlex could log a
confusing Got X server refs, Y new, Z reget trace
to the explore\server-disk-name file.
The reget word suggested that the article database already contained
news-server references to the new news-server. In fact, NewsPlex was counting as regets
incoming article descriptions already marked as deleted in the article database but
not yet physically removed. Now such incoming
article descriptions are accounted as already deleted.
- When counting the various small fixes performed on
article descriptions obtained from news-servers, NewsPlex was considering
even those performed in lines which have been
ultimately rejected because of a bigger error
encountered later in processing. This gave the
false impression that a lot of fixes have been
performed in what has been finally added to the
article database (assuming the entry was new).
- Introduced many shutdown.delete...= settings,
which allow to specify that NewsPlex should automatically
delete certain specific files and directories,
otherwise left as-is on exit.
- Replaced the config\filters file with the more flexible
etc\filters.ini file. Additional filtering criteria
have been added too.
It is also now possible to hide an article
rather than deleting it from the article database. This
avoids having it appear again later thru other
news-servers. The new etc\hidden file logs hidden Message-IDs.
- Replaced the config\servers file with the more flexible
etc\servers.ini file. Server flags
have been replaced with news-server settings.
Several new settings have been introduced.
The new -i file command-line option
allows to import a raw news-server
list into the etc\servers.ini file at startup.
- The config directory is no more used or created, since there are
no more read-only configuration files in NewsPlex.
- NewsPlex now stops after the auto-configuration,
to allow you to modify the default settings
before starting normal operations.
- It is now possible to have several posting news-servers. The selection is
done dynamically according to news-groups being posted to, using the new
server.postingGroup= settings in etc\servers.ini.
- It is now possible to have disabled news-servers.
They do not have server-number anymore, and appear in the
list with a Disab status and in grey on the
Web interface. This replaces
commenting news-servers out in the old config\servers file.
- Old style news-server flags are still displayed in the
server list (web page and NPSERVERS
command), because they are compact.
The display is even more compact now, as flags
which previously could be repeated are now displayed
just once, with a count behind.
- NPDEACTIVATE forgot to provide a status response
line on success.
- If the news-server gave an unexpected error in response to the XHDR
MESSAGE-ID command (or to the XPAT MESSAGE-ID
replacement), NewsPlex would stop exploring it. Now, NewsPlex just
ignores the condition and gets full article descriptions using XOVER.
This allows to use news-servers which artificially restrict certain
commands. This restriction policy does not seem very smart, given
that news-readers, and NewsPlex in particular, use the XHDR
MESSAGE-ID command in order to avoid having to use
XOVER on every news-server.
- If a news-server exploration is requested manually, NewsPlex will
now try to force the main exploration task for the news-server to
run immediately again, rather than creating a new task.
This has the advantage that in case of a failure, the
next exploration will start at the time indicated
by the error message, rather than at the time when
the main exploration task was scheduled to run again
originally.
- The auto-configuration process has been improved to find more
news-servers at the ISP and on the local network. More detailed and
timely progress information is provided.
It also takes less time to interrupt this operation
if desired.
- Automatic decoding of files with NpUud would not work
if the pathname of NewsPlex's working directory contained
blanks, eg. was C:\Program Files\NewsPlex.
This is because NewsPlex passes the full pathname of the
async\xxxxxxxx.tmp files to NpUud thru the command line, and blanks
were interpreted as argument separators. Now if the pathname
contains blanks, it is passed double-quoted, which makes it
a single argument.
- Implemented article retrieval by Message-ID (the ARTICLE,
HEAD, STAT and BODY commands) even
if the current news-group was not yet set by the news-reader or if the
Message-ID is not present in it. Such articles are considered
as a variety of zombies; the same rules apply for deciding
which news-servers will be used for downloading.
The retrieval can be disabled with the new
clients.globalMsgIdRetrieval= setting. It is enabled by default.
If the article cannot be obtained, it is simply reported
as inexisting.
- Replaced the etc\popular file with the more flexible
and uniformized etc\popular.ini file. It is now sorted
by news-group name and contains even info about news-groups from
which articles have not yet been retrieved.
- Added a -v command-line option which just makes NewsPlex
print the banner and terminate, without asking for
a final key press.
- Introduced the server.zombies= setting which can be
used to disable having zombies from news-servers which are the sole
source of their articles.
- The log traces for article retrieval are now
clearer. The Server preference order list
became a table and
indicates whether a given news-server was added because
the article is a zombie (? in first column)
or because the news-server has the attemptMsgId= setting
(+ in first column). Articles with nothing
in first column are normally present on news-server.
The Added server XXX to server references
(attemptMsgId=1) traces are not performed
separately anymore.
- Implemented the XPAT and DATE standard
commands.
- Cancelling an asynchronous article retrieval while a retrieval is in progress
is not taken into account immediately. Previously
however, it mistakenly caused the article to remain
in the list until the next retrieval attempt.
Now, cancelling a running asynchronous article retrieval will be effective as
soon as the current retrieval attempt terminates.
- The NPCANCEL and NPFORCETASK
commands now accept several arguments.
A separate response line will be produced
for each argument.
- Introduced cross-post management. NewsPlex now uses
the cross-post/cross-reference information (Xref:
tags or lines) in retrieved
article descriptions in order to add articles to all locally-active
news-groups to which the articles have been cross-posted,
before the news-groups are explictly explored themselves.
This can save some network traffic. Log traces
allow to see what non-active news-groups articles
have also been cross-posted to.
The new server.useXrefs= setting, enabled by
default, allows to disable the usage
of cross-reference information for specific
news-servers, which for example do not provide
correct news-groups or correct numbers.
- Some news-servers refuse the GROUP request on
specific news-groups, but accept LISTGROUP
instead. The new server.listgroupIfGroupFails= setting
tells NewsPlex to use LISTGROUP to try to
enter a news-group if GROUP fails for any reason.
- The popularity web page now also remembers the last
time the GROUP request has been used for
a given news-group. This allows to decide about the opportunity
of deactivating it, as absence of article retrievals might be simply
due to the news-group not having had new articles for a long time.
The etc\popular.ini file stores this information
as group.lastGroupSecs= settings.
- Fixed the database compaction code to not display Warning:
No dataset for article xxx messages with fantasy numbers
like 0 or -219098 anymore when there were corruptions, typically
resulting from previous disk full errors.
This bug was caused by the introduction of self-balancing
binary trees in version 3.5; the compaction code has not
been fully updated.
- The compaction code now also removes such problematic
records from the database, and when they happen, also
removes the information about the already retrieved
article descriptions regarding the corresponding news-group from
the newsrc2 files. This allows to recover the database
more or less cleanly during the next exploration of news-servers.
Recovered articles will appear as new ones.
- Added real-time article filtering. If a news-server has
the new filterArticles= setting, filters will
be applied to incoming article descriptions and articles
will be either immediately rejected or immediately
marked as hidden.
- Added the server.retrieveArticles= setting, which can be
used to prevent NewsPlex from retrieving articles from
specific news-servers.
- Moved the messages about the scheduling of explores
from the journal file to the per-news-server log files in the
explore directory, in order to unclutter the file and
to avoid having it growing indefinitely.
- Articles whose Subject: lines start with Re:
or contain (0/1) are no more considered
as containing binaries by default. This behavior
can be adjusted using the async.binaryFilter= settings.
- More information is collected and logged about
the exploration history. The Web page and the
NPSERVERS command now display the time
since the last successful explore rather than from
the previous tentative.
- Messages about scanning intervals of article
numbers now indicate how many ranges remain to
be processed.
- The news-groups on newly added news-servers are now explored
in the popularity order.
- If there was no ,list entry in the newsrc2
file for the currently explored news-server, notably when
the file itself did not (yet) exist, the message
saying why a full news-group list was being requested
from the news-server incorrectly said
etc/newsplex.ini updated.
Now it says no ,list entry in newsrc2 file.
- Introduced the explore.quitAfter= setting which makes NewsPlex
close news-server connections immediately after finishing explorations.
You can specify this option when NewsPlex is only occasionally
accessed by news-readers, in order to decrease news-server usage.
- Added *.m2v* to default binary patterns.
- New hideIfBackground= setting, only used and useful on Windows,
changes the way in which NewsPlex switches to background
mode. It makes NewsPlex hide its own console window instead of
destroying it. This allows NewsPlex to still get system signals,
notably about system shutdowns, and to terminate gracefully.
Version 3.9 (11 January 2003)
In NpPost
- The default posting news-server is now simply news.
In NewsPlex
- The telnet link on the Web interface now contains the IP
address of the computer on which NewsPlex runs, rather
than the localhost name, so that it is
possible to use it even when NewsPlex runs on another
machine. Multi-homing is taken into account: NewsPlex
gives the IP address of the network interface thru which
the Web browser actually connected in.
- NewsPlex will no more mistakenly open more connections to
a given news-server than allowed by the configuration setting.
Connection counting has also been fixed, so the
Too many connections to server attempted error
will not appear for some news-servers without reason after some
time of operation. NewsPlex was also mistakenly using the
above error message for 2 different error conditions,
purely internal and server-induced limitations, so it was
not very obvious to see where the error came from (hint: if
the explore\server-disk-name file was not modified,
the error was purely internal). Now, trying to go over
the internal limitation (set with the R and
r flags) is indicated thru the new More connections
to server attempted than configured error message.
- If an article was corrupted and lines contained binary zeros,
then the client was only sent the portions of lines
till the zero. This had the bad effect that if such
a corruption occurred on the last line, the client
would not get the carriage-return + newline character
combination preceding the final single-dot line,
and hence think the article did not yet end. It
would therefore hang, waiting for more data to come.
Now, it will get the junk in its entirety (depending
on how it analyzes the data, it might still not be
able to notice the end of data).
- Introduced 64-bit integers for counting the total
number of bytes scheduled for asynchronous article retrieval and also the total
number of bytes transferred with news-servers. This avoids
overflows, which show up as negative numbers, if you
schedule very large batches of asynchronous article retrievals.
- In the Web pages, the + characters in news-group names
were not escaped in URLs, so it was eg. impossible to display
the Stats or the Articles for comp.lang.c++ on
the Active Groups page.
- Added code which pretends that NewsPlex supports the so-called
"Secure Password Authentication" (a proprietary protocol used
by MSN news-servers). Some future version might be able to use
such servers as a client.
- The Group Popularity web page now also shows active news-groups
from which articles have never been retrieved.
The memory usage of the feature has been reduced.
The color scheme is different:
| Line color |
Meaning |
| Green |
active news-groups from which some articles have already been
retrieved |
| Blue | active news-groups from which
articles have never been retrieved (and hence are candidates
for deactivation) |
| Grey | no more active
news-groups from which some articles have been retrieved
in the past |
Version 3.8 (19 December 2002)
This release of the NewsPlex package introduces a series
of companion tools
which can be used eg. for managing files retrieved from
the Internet.
In NpPost
- NpPost is a new utility for posting Usenet articles. It can be
used to post text or binary files, or to repost existing articles.
It will transform either the indicated file or its standard
input into something which is acceptable as a news.
In NpCRCs
- NpCRCs is a new utility. It checks the CRCs of files
according to lists stored in text files, typically having
extensions .crc, .csv or .sfv.
The tool is able to process virtually any format CRC list,
as long as the name and the CRC are stored on the same line
for every entry.
In NpMove
- NpMove is a new utility. It moves files to predefined directories
based on name patterns. These files have presumably been
decoded from news articles using NpUud. It also moves the
associated .hdr
files, if any, deletes duplicates and otherwise makes names unique
in the destination directories.
In NpShow00
- NpShow00 is a new utility. It can show the content of .000 files
accompanying certain multipart postings on Usenet, and proving
the attributes of transmitted files, either intrinsic (eg.
the file size or its CRC), for verification, or attributes
related to the way the file has been posted (eg. the part size
used and the resulting number of parts).
In NpMerge
- NpMerge is a new utility. It can be used to merge a collection of
file.XXX files, where XXX
are numbers, presumably fixed-size parts of a large file,
into the original large file. It is the opposite of NpSplit.
In NpPop3
- NpPop3 is a new utility. It can be used to retrieve the
email messages from one or more POP3 servers into local
mailbox files, or just to display them.
In NpJPEG
- NpJPEG is a new utility. It can be used for checking
whether JPEG files are correct, and can
also fix certain corruptions and clean the files
from trash.
In NpSplit
- NpSplit is a new utility. It splits files
into fixed-size file.XXX parts
where XXX are part numbers.
It is the opposite of NpMerge.
In NpHdrSep
- NpHdrSep is a new utility. It deals with collections
of Usenet news articles, where individual articles are
separated by either ======== or From ... lines.
It allows to separate them into individual Usenet news
articles.
The Usenet news articles can be for example the .hdr
files which result from separating a news article from
its binary attachments.
In NpHdrCat
- NpHdrCat is a new utility. It merges all .hdr
news articles in current directory into a single
directoryName.hdr collection of
Usenet articles, named after the directory.
In NpPlay
- NpPlay is a new utility. This is a spartiate multimedia file
player, but able to do some particular stuff like resetting
your MIDI synthesizer to default conditions before playing
the next file, so that the file sounds correctly,
or skipping the current file if you press 5 on the numeric
keypad.
In NpPrtCmp
- NpPrtCmp is a new utility. It is able to check
whether a file named file.XXX,
where XXX are digits,
is really part XXX of another file,
assuming it has been split into equal size parts.
In NpRename
- NpRename is a new utility. It can examine a series of news or mail
files and optionally rename them according to their Message-ID:
or to their Subject:. It can also optionally set the
timestamp of these files to the value of their Date:
line.
In NpNNTP
- This is the new name for the previous GetNNTP tool.
- The environment variable is now NPNNTP.
- Options and commands now start with - rather
than with /, for consistency with other tools.
- Slightly re-arranged the built-in help.
- The group set with the -g option was not taken
into account for the -b arbitrary-string
command.
- The command could crash if a login was passed without a
password in the URL.
In NpUud
- For yEncoded files, NpUud forgot to set the date
of decoded content according to the Date:
line of enclosing news/mails.
- Added the -g position command-line option, which allows
to decode uuencoded fragments of a file. You need to
indicate, thru the position argument, which
XXX
integer in the Subject: line of the file should
be used as part number (usually the first one). NpUud
will decode the partial content and put it into
a file named part.XXX. If the content
does not have a final end line,
you will also need to pass the -a (allow
truncation) option.
- New -Du command-line option disables the recognition of
uuencoded content in processed files.
- New -Dy command-line option disables the recognition of
yEncoded content in processed files.
- New -S command-line option disables size and CRC checking
for yEncoded content.
- Now .par and .pXX extensions, where X
is a digit, are retained when computing the name of the .hdr
file.
- More news/mail header lines are automatically recognized and
skipped.
- New -I command-line option makes NpUud continue decoding other
files (if any) if the current file could not be decoded.
By default, NpUud will now stop processing further files
on error. Previously, NpUud would not stop on certain
"benign" errors.
- If a complete decoded file already exists, NpUud will now
refuse to start a new yDec parts assembly process. Previously
this was possible, but when the last part has been processed,
NpUud would complain that it could not rename the temporary
.tmp file into the complete decoded filename.
- If a single error occurred when yDecoding several files,
NpUud would consider that every decode process following
the failing one has failed, and not remove the yEncoded
content from the mail/news file.
In GetNNTP
- The tool has been renamed into NpNNTP.
In NewsPlex
- Fixed a failed assertion occurring when exploring
a news-server which returns extra article descriptions when asked for just one.
- If a disk write error occurred when appending new data to
index and update files, these files could get destroyed.
- Whether news-servers provide articles with a correct Message-ID
is now checked during all article retrievals, even those by number,
because some news-servers provide wrong articles even in normal
circumstances. The Message-ID is now also checked in the
status reply line, which precedes the article itself.
This allows to switch to another news-server without disconnecting
the news-reader.
Note that this prevents chaining two or more
NewsPlex programs if article renumbering is enabled at
level 2 in the upstream one, because the Message-ID in the
article body is still the original one, and not
the one which has been altered by NewsPlex to make
an article appear as new. Enabling renumbering does
not however make sense except in the closest/downstream
NewsPlex, the one used by the news-reader directly.
- NewsPlex would stop exploring a news-server for a few minutes,
but not close the connection if it received a
420 No article(s) selected response to an
XOVER 0-number request. Now it will
just consider that the 0..number range is empty.
- Additional article description truncations are now accepted when
exploring news-servers.
- When listing Message-IDs, NewsPlex now reconnects in case of
a timeout notice from the news-server.
- Specifying 0 as the argument of the -a command-line option
now disables the retrieval of articles scheduled
for asynchronous article retrieval. Previously, passing 0 was equivalent to
passing the default value (4)
and it was not possible to disable the asynchronous article retrieval
of already scheduled articles.
- Improved dealing with news-servers which send binary junk when
asked for article descriptions. NewsPlex now better tries to detect
the end of such output, so as to avoid getting lost
and reconnecting. The log file for explorations can
now contain binary zeros, if such were present in
bad responses from the news-server.
- Added a new command-line option, -y days and
a new per-news-server flag, ydays,
which can be used to limit the age of article descriptions added
to the article database during news-server explorations. By default,
the age is not limited.
- Introduced dynamic deactivation of news-groups, thru
the new NPDEACTIVATE command and thru
the web interface.
Note: Because, for now, the newsrc2
files are cleaned off non-active news-groups at next
exploration only, it is better to shutdown NewsPlex
before re-activating a news-group, or
the news-group will not be re-populated with news-server references correctly.
- Fixed rare corruptions occurring when saving index
files, where some entries were saved several times.
This happened when activating large groups from the
Web interface.
- Some news-groups could not be handled from the Web
interface because NewsPlex did not process
the escape sequences for ambiguous characters
in names sent by Web browsers.
- The NPDELETEOLD was not skipping articles
already internally marked as deleted, so it
could issue inappropriate but harmless messages sometimes.
It now also collects and prints
statistics, and logs messages when ignoring an error.
- A news-server is now always identified using the text
server-disk-name (server-number)
in all messages, except those which put these two components
into separate columns. Previously, depending on the message,
NewsPlex sometimes only showed the
server-disk-name or the server-number.
- Added a workaround allowing to use buggy HTTPS proxy servers,
which use only newline characters, without preceding carriage
return characters, to separate lines in their connection response.
Previously, using such servers would lead to infinite waits and
hence connection timeouts.
- Added a new per-news-server option,
g(group-name1 group-name2 ...),
which allows to specify a list of news-groups
which should not be explored on the news-server.
- More news-server connection responses are recognized as a hint
to try another proxy from the same group to reach them.
- Fewer internal data structures, but still some, are
locked against concurrent access when NewsPlex sends replies to
the news-reader (which can take some time, depending on the speed of
the network connection and on the willingness of the news-reader to
read incoming data).
- Article numbers greater than 214,748,364 are now correctly handled.
Previously, NewsPlex would perform endless "tenfold leap" recoveries
when retrieving full article descriptions.
- Article numbering gaps during the retrieval of news-server references are much better
dealt with. Previously, a tenfold gap would make NewsPlex
ignore all the subsequent references till the end of interval,
yet print an error trace for each one. Also added printing of
dots during this retrieval.
- Introduced the config\banner file, which can define
a replacement welcome message for NewsPlex.
- Introduced a new way of dealing with unreachable news-servers. Rather
than returning a specific error message or pretending that the
article has been deleted (and renumbering it under a new reference),
NewsPlex now allows to specify that the connection to the news-reader be
simply closed, as the result of a "timeout".
- Added the -F command-line option which makes NewsPlex not show the
activation announcement articles when a news-group is activated;
the news-group appears totally empty initially.
- More binary file patterns are recognized in Subject: header lines.
- NewsPlex would quickly terminate with the Error during
synchronization with main server exit status the first
time it was run if a news-server was marked as "main".
- If the U flag (do not explore) was indicated for a
news-server, it was also not possible to explore this news-server manually.
- Traces are now issued to log files when a login failure
is ignored (as requested by the i flag).
- If an HTTPS proxy replies 404 Not Found to a connection
request by host name, NewsPlex (and other network utilities) will
retry using the IP address.
- If the config\groups.yes file contained real news-group names, without
wild-cards, and if the news-server refused to change the current news-group to one
of these news-groups and returned a 480 permission denied error
message, NewsPlex would stop the exploration very early. Now it
will just continue with the other news-groups and/or patterns.
BTW, a workaround was to set the L flag for that news-server.
- The new n per-news-server flag (blind login) asks
NewsPlex not to wait for the news-server welcome message before issuing commands.
This flag is useful with certain news-servers only, those which issue
the welcome message with a delay, and in the meantime accept other commands.
- It is now possible to cancel an asynchronous article retrieval from either the telnet
interface, using the new NPCANCEL command, or
from the Web interface.
- Changed the "Async retrieval" Web page to display the
table of downloads even when it is empty.
- If the news-server sends a 502 error code to refuse the XHDR
MESSAGE-ID command, NewsPlex will no more stop exploring the
news-server. It will first try the equivalent XPAT
MESSAGE-ID command, and if this fails as well, it will
fail-over to using a plain XOVER for getting new article
information.
- When exploring news-servers, NewsPlex now avoids getting the full list of
news-groups matching the config\groups.yes file each time, and instead asks just
for the news-groups which appeared since the previous exploration (minus
24 hours, to account for time zone differences). This allows to
decrease the amount of data transferred with the news-servers during the
exploration very considerably, sometimes over 20 times. The full
list of matching news-groups is requested every 24 hours, to allow
deleting news-groups which do not exist on the news-servers anymore. An
appropriate time-stamp is now stored inside newsrc2 files.
In order to force the retrieval of a full news-group list
from news-servers, one can update the config\groups.yes file.
- When a news-group is activated, NewsPlex does not store it in the newsrc2
file anymore if it does not actually exist on the news-server. This avoids
getting spurious news-group vanished from news-server messages at next
exploration.
- Implemented an empty LIST NEWSGROUPS command to avoid
getting warnings with news-readers which issue it.
- If a logs\cli-host-port file was deleted (only possible on Unix), then
NewsPlex would endless try to append it to the logs\clients file
(before deleting it), preventing other activities from doing
the same thing. Now, errors like this one are considered
permanent and NewsPlex will simply ignore them. Also, if
an error occur when appending temporary log files to
a global log file (eg. resource exhaustions), NewsPlex will
allow other activities to access the global file while it
is retrying.
- Some responses from MS news-servers are non-standard, and
made NewsPlex either stop the exploration or loop
endlessly on bad GROUP request responses.
For this second problem a double security has been
implemented: the number of loops is now limited
and bad responses are recognized directly.
- Introduced a Group Popularity web page. It shows the usage
information otherwise maintained in the etc\popular file, and
offers links to read and deactivate groups.
Also improved the functionality and looks of other news-group-related
pages, notably by converting news-group names into links allowing
to read them.
- When an article scheduled for asynchronous article retrieval was being reported as
deleted, it was not marked as such in the article database
until the actual retrieval has started. Now it is marked
immediately, so if your news-reader requests the full article list
(eg. because if you unsubscribe and re-subscribe to the news-group),
you will immediately see the articles marked with /a in
From: column. This allows deleting all previously
read or scheduled for download articles.
- When compacting the article database, NewsPlex was
deleting the last entry of datasets, while the last
entry in the corresponding index must be maintained
to correctly number the following articles. This
triggered spurious (but harmless) database compactions
at each startup for the corresponding news-groups.
- Added buttons to close idle connections on the "Connected servers"
Web page. They correspond to the NPCLOSE telnet command.
- The remembering of retrieved articles is now done by default
but is more configurable. The -R command-line option now takes a
flags argument which specifies the different
aspects.
- Introduced the NPFORCETASK handle telnet command
and added buttons on the Tasks web page. They allow to force
the immediate execution of a specific task, for example an async
download.
- Introduced a new category notion for news-servers, defined thru
the new tcategory flag. It allows to enforce the
order in which news-servers are used for downloading articles.
NewsPlex will not use a news-server with a higher category until it has
tried to get the article from news-servers of lower categories.
- The activation of a news-group from the Web interface now takes
the same 3 second delay as from a news-reader or the telnet interface,
in order to allow for the news-group to become populated with some
articles before it is offered for access, and to counter
possible abuse.
- NewsPlex would panic if an unrecoverable error occurred during the
posting of an article. The message in the panic file would be
"SOCK_VALID (sock)". Unrecoverable errors are either the client or
the news-server closing the connection or a shutdown being requested.
- Fixed the problem of table cell borders sometimes being not drawn
in HTML tables when the cell was empty.
- In the Accessed news-groups table and in the NPACCESSED
command output, the MOD/Modified column has been removed and the
information made available as an M flag in the Flags
column.
- The NPDELETEOLD command is now available from the
Actions Web page too. The minimal age has been changed from 8
to 4 days.
- The restart is now possible from the Actions web page.
- The NPDELETESERVER command is now available from
the Servers web page as a per-news-server Delete button
in the new Refs column.
- The NPFILTER command is now available from
the Active Groups web page as Filter buttons
in the new Spam column.
- The NPGLOBALSTATS command is now available
from the Web interface as a Group availability
page.
- The list of articles in the Web interface is now massaged to
avoid too wide columns, thru intelligent insertion of blanks
in cells, which allow web browsers to wrap lines. This concerns
the From, Subject and Message-ID columns.
- Removed the link to a Post web page till the functionality
gets implemented.
- Added a Post column to the Servers web page table, which
allows to define the posting/main news-server. The No posting
button in the title bar of the table allows to disable
posting. The NPPOSTSERVER telnet command,
when passed 0 will disable posting now, rather than just
display the current posting news-server (this is still possible
by not passing any argument at all).
- The NPREWRITEGROUP command is now available from
the Active Groups web page as Rewrite buttons
in the new Rewrite column.
- With the above change, all telnet commands are now
available thru the Web interface as well (apart for
the exotic NPMARKRETRIEVED).
Version 3.7 (27 March 2002)
In GetNNTP
- GetNNTP accepts two new command-line options: /c or console mode,
which makes it not create any files (this is practical for
issuing commands to NewsPlex), and /w
or wait for a key press at end, which is practical for
displaying some results from NewsPlex in a temporary window.
- The files generated by GetNNTP now include the url of the
proxy in their names. This allows to run in parallel several
GetNNTP commands issuing a request to the same news-server, but
using different proxies. The first line of the log file
now includes the name of the file.
- GetNNTP now checks that the proxy has been specified with a valid
type.
- GetNNTP now accepts a new command-line option
/m list-file-name column-number
which allows to request several articles by Message-ID
from a list located in a file. This file can be for example
etc\done or etc\scheduld (column-number should be 5 then),
or a list of Message-ID lines extracted from news articles
(column-number should be 2).
- GetNNTP now accepts incomplete proxy URLs and logs the time necessary
to obtain the connection.
- The tunnel proxy type introduced in NewsPlex (see below) is
also supported in GetNNTP, although it does not make much sense to
use it.
- Added the /i article-file-name option, which makes
GetNNTP read the news-group and Message-ID information from the indicated
file (only the header of the 1st article is read), and request
the article using this information. You can use this option to
request a new copy of asynchronously retrieved articles
if you notice the current copy is for example corrupted.
- If the GETNNTP environment variable is set,
it will be used as the default news-server name.
In NpUud
- NpUud recognizes more mail and news header types.
- NpUud now also preserves .[r-z]<digits> extensions
of files when computing the names of .hdr files.
- NpUud now recognizes mail header extension lines, and does not
choke on them anymore (if -j is set).
- NpUud now accepts file lists in place of ordinary files to decode,
if the new -@ option is passed on the command-line.
Such file names must be prefixed with the @ character,
eg. npuud -j -f -@ @listfile. This allows to uudecode
files from hundreds of successive parts, whose names would not
fit on the command line.
The deferred file deletion table has been enlarged, so that
larger multiparts can fit.
- It is now possible to tell NpUud to recognize additional mail/news
header lines when uudecoding files. The -m string
command-line option allows to add a string, which if found at the beginning of
a line, will make NpUud consider this line as a mail/news
header, and hence skip it if skipping was enabled with -j.
- NpUud, when switching to the next file in order to continue
decoding a file, would sometimes jump to the file after it
instead.
- Added the -r option to NpUud, which makes it
ignore errors consisting of repeated line endings.
Typically the last line might sometimes have extra 4
chars at the end, these extra chars being the same
as the preceding 4 chars.
- More advertisement lines are recognized at the end of
parts in multipart postings being decoded.
- Added the -e command-line option, which allows to continue parsing
the uuencoded file in spite of encoding errors, to print all
such errors and to measure how much the file is damaged. The
total of errors is printed at the end.
Note that this command-line option does not make NpUud accept or
automatically fix the encountered errors. For that to happen,
appropriate command-line options must be set individually. If some non-ignored
error happens, NpUud will not keep the decoded file and
leave the source file unmodified.
- Added support for yEncoded content. Just like in the uudecoding
case, encoded files are separated into content and .hdr
files containing the envelope. For multiparts, the
unique .hdr file contains the envelopes of all the
parts. Multipart decoding is disabled by default (the -u
option enables them), and fake CRCs of 1 can be accepted
with -C.
It is possible to create separate .XXX files for parts
of a yEncoded multipart posting, rather than merging them into
the complete file, by passing the -U command-line option.
In NewsPlex
- The dialog with proxies is now logged to log files.
- It is now possible to specify a proxy without a type.
NewsPlex will assume the most common type corresponding
to the port value. If neither a type nor a port is
provided, NewsPlex will assume type https on port 80.
- Using the new o option, it is possible to specify
per-news-server proxies, which do not need to be numbered. So instead
of for example writing:
proxy https://proxyhost:80,2
proxy socks5://proxyhost2,2
5 newshost,2
one can simply write:
5 newshost o(https://proxyhost:80 socks5://proxyhost2)
or even, given the new default typing:
5 newshost o(proxyhost socks5://proxyhost2)
- If a news-server gives a plain 502 error (which means that
you, or the initial
proxy used, are not in its service area), NewsPlex now tries another
proxy, if any.
- The X flag (extra time on connect) can now be repeated.
- If a proxy has been specified with the wrong type, NewsPlex will
now switch to the next one from the same group.
- If a news-server gives an empty group list, NewsPlex quits the connection
immediately rather than after a delay. It also tries to guess
whether an empty group list is not the result of forgotten
authentication. Finally, it distinguishes between the
disappearance of all news-groups and the disappearance of just the
news-groups matched by config\groups.yes file. In the first case, NewsPlex will
still retry later, while in the second case, it will purge the
databases of entries corresponding to the now empty news-server and
consider the news-server does not have active news-groups for the moment.
- The default maximum number of connections opened to a single
news-server is now 4 instead of 8. It can still be freely changed through
R and r flags, except the r flag
now decreases the maximum by 1 instead of 2, which allows to
achieve a granularity of 1 instead of 2. A warning is
logged if the resulting value is less than 1.
- Articles without Subject: still caused invalid entries
in etc\done and etc\scheduld files. This time the fix should be
good.
- More binary file patterns are recognized in Subject: header lines.
- Shutdown request through signal is taken into account much faster
during the auto-configuration process.
- The config\filters file now allows a third column, for defining
patterns for subjects.
- Database checking was performed too late in the initialization
process. If some indices needed to be reconstructed from
datasets, the corresponding groups would not be considered
as active until NewsPlex was restarted.
- etc\retrievd will now be automatically applied at startup if some
indices needed to be reconstructed.
- Certain critical errors occurring during database checking will now
make NewsPlex terminate with the new 51 code.
- Via the telnet interface, it is now possible to pass a substring of
a server-disk-name to the NPEXPLORESERVER, NPCLOSE,
NPDELETESERVER and NPPOSTSERVER commands, in place
of a server-number. This substring must contain something else than
digits (otherwise it will be considered as a server-number), and must
identify the news-server in a unique way: it is not very
likely that a com or news string will be good.
- Added a new command-line option -Z count, which allows to
change the number of simultaneous zombie retries
(default is 1).
- New command-line option -O makes NewsPlex compact all the databases
and rewrite all index files at startup.
- Added a new per-news-server flag: i or ignore login
failures. If it is set, NewsPlex will attempt to use a
news-server even if the login sequence failed.
- Introduced a systematic timeout on proxy responses.
Previously, if NewsPlex decided not to timeout the
TCP connections, it would also not timeout the proxy
responses, so if a proxy did not respond yet left
the connection open, NewsPlex could wait indefinitely.
- Introduced the -E command-line option, which makes
NewsPlex show only active groups to the news-readers.
- Accelerated the retrieval of article descriptions from news-servers and reduced
the number of bytes transferred.
NewsPlex now retrieves full article descriptions only for articles
which it does not yet know. If you have many news-servers
for a news-group and there are long threads of discussion
inside, the gain can be more than tenfold.
- NewsPlex now serializes connection attempts to each news-server.
This allows to switch to another news-server much faster if the
current one has a long connection time.
- The way of selecting a news-server for retrieving an article has
changed. NewsPlex will now use one of the already open news-server
connections before attempting to open new connections to
potentially faster news-servers.
- The Internet detection code is more verbose about the
reason why it thinks the machine is not connected.
It also now considers all 10.0.0.xxx addresses
as local.
- If the last line of an XOVER response has an out-of-range article
number, and at the same time the dot ending the list appears at the
end of this line rather than on the following line, NewsPlex will no
more wait for more lines, timeout and retry.
- If the welcome message from a news-server seems corrupted, NewsPlex will
log the entire response.
- The config\groups.yes and config\servers files were mistakenly kept open
while NewsPlex was running.
- Updated the content of the automatically generated default
config\servers file.
- It was not possible to connect to machines whose names started
with a digit, yet were not IP addresses.
- Introduced a new type of proxy, the tunnel:// proxy,
which allows to directly access a specific news-server by connecting
to a machine different from the one where this news-server actually runs.
- If the news-server timed out when asked for the list of news-groups, NewsPlex
could sometimes reconnect indefinitely rather than abandoning
after a few retries and waiting some time.
- When a zombie article is scheduled for asynchronous article retrieval,
its retrieval retries are now started immediately, rather
than being postponed by 5 minutes, as in prior versions.
- NewsPlex now also produces telnet.url and web.url files, containing
Internet Explorer links to its Telnet and Web interfaces.
- Added checking of Message-IDs in retrieved articles. Sometimes, news-servers
provide incorrect articles when asked by Message-ID or even return
junk instead of a valid article.
Such articles will not be accepted anymore during asynchronous article retrieval,
and during direct retrievals will cause
the connection to the news-reader to be broken, because there is
no other way to inform the news-reader of a problem.
The next time the news-reader asks for
the same article, another news-server will be used as source
preferably.
- It was not possible to have backslashes (\) in login names,
because NewsPlex forgot to replace them with underscores
when constructing file names.
- In minimal mode, NewsPlex will now systematically limit
the number of news-groups from which it attempts to retrieve
test articles. Previously, getting only "article deleted"
errors would make him test all news-groups.
- If a shutdown is performed in minimal mode before an article
could be retrieved successfully, NewsPlex will no more move
the explore log to the logs\unusable file.
- The name and port of client connections are now stored inside
the client log files themselves. After file content was moved
into logs\clients, it was no more possible to see whom a given session
belonged to.
- NewsPlex does not lower its execution priority by default anymore.
This should fix the occasional slow download speed problems.
The -o command-line option, which used to maintain the execution
priority, is now ignored. The new -oi and -ol
command-line options allow to lower the priority, if desired.
- The Web interface has a new, frames-based format.
It is possible to perform new actions, like changing
the zombie days, applying etc\retrievd and checking the
database. The line threshold for asynchronous article retrievals is settable.
The tables are displayed even when
empty and have a slightly different aspect.
- At startup, NewsPlex now checks whether the NNTP and Web
server ports are different.
- New command-line option -N makes NewsPlex not wait for a final
key press before exiting.
- Specific group access errors when exploring a news-server will not
stop the exploration anymore.
- Introduced the news.htm and news.htm files. They allow
to start your news-reader just by clicking on them.
- The NPCLIENTS command now lists Web clients
as well.
- The Web server is now multitasking, and accepts
several requests at the same time. Web sessions are
now logged to separate logs\web-host-port files
rather than to the journal file, and collected to
the previously unused logs\web file when closed.
The New client traces issued to the journal
file now tell whether this a web browser or a news-reader and fit
on a single line.
- Added better dealing with pseudo-news-servers, which sometimes
are temporarily not able to provide access to some news-groups.
In such cases, during an exploration, NewsPlex will
now switch to the next group rather than stopping
the exploration.
- Active news-groups offered by a given news-server are now listed separately
in the exploration log file.
- If when an article is requested a news-server returns 502 and
closes the connection, presumably because some limit has been
trespassed, NewsPlex will now reconnect less frequently.
- If the config\groups.yes file was modified in such a way that
a file in the index directory would not match anymore,
NewsPlex would refuse to start, complaining that
Could not mark as active the groups present in index,
Group does not match requested pattern. NewsPlex
will now also properly delete the index and dataset2 files
for no more wanted groups.
Version 3.6 (27 August 2001)
- Fixed the problem of the first news-group listed by the news-server
during the exploration not being explored if active,
and causing a lost memory block warning at shutdown time.
- The full news-group list is no more logged to per-client log files
if it is requested, as it is too long and of little interest
(duplicates etc\groups), except if the -v (verbose)
command-line option is set. Active news-groups are logged instead, as well as the count
of returned entries.
- Fixed the problem of NewsPlex sometimes returning a wrong
article on Unix versions (non-reentrancy of strtok).
- Provided the LIST OVERVIEW.FMT command.
- The Sender: header field is now stripped during posting,
as with some news-readers it often contains a non-spam-protected email.
- The GetNNTP utility accepts two new command-line options:
/b some-string, which allows
to send an arbitrary command to the news-server, and
/e seconds, which
allows to wait before sending anything. In the 1st case,
the name of the generated
log file includes the command string.
- The NPACTIVE command forgot to send a 215
status line as the first line.
- The NEWGROUPS command is now really implemented.
The -N command-line option does not exist anymore.
- Improved proxy error handling. All negotiations are now subject
to timeouts and cancellations. Timeouts and unexpected closures
are differentiated. Sending errors are a new and separate condition.
- Articles without Subject: no longer cause invalid entries
in etc\done and etc\scheduld files on startup.
- Revised the on-line help content. It is now printed to the standard
output rather than to the standard error output if the
-h command-line option is passed.
- If it is not possible to connect to a proxy at TCP level, NewsPlex
will switch to the next proxy from the same proxy group, if any.
- A NpUud utility is now provided. This is a cleaning
uudecoder, which extracts uuencoded content from a file,
and moves whatever remains (Mail or News headers, or just
text) into a .hdr file, named after the first uuencoded
file extracted: the file extension is replaced with .hdr
if it is not a number, otherwise .hdr is appended to
the original file name.
- Unix versions now properly implement socket cancellations,
so shutdowns have become as fast as on Windows, and do
not wait for all news-readers to disconnect first anymore.
Version 3.5 (21 August 2001)
- NewsPlex is now able to efficiently manage the full Usenet
news-group list, thanks to improved data structures and algorithms.
Up to a few thousand news-groups can then be activated by
news-readers before the performances drop, mostly because of
non-scalable directory management in operating systems
(there is a file for each active news-group in the index, dataset2 and
update directories). Introduced the etc\groups file, which
contains the list of all news-groups managed by NewsPlex. Empty
files in the index directory are no more used for inactive
news-groups. The etc\groups.new is not generated
anymore, since news-group addition times are now stored in the
etc\groups file.
- NewsPlex now tries to auto-configure itself if at startup it
does not find a config directory, a config\servers file or a
config\groups.yes file. It will try to locate news-servers on
your local network, it will look at files in your
computer trying to find out which news-servers you are already
using through other tools, and will complete the news-server list with
a few public access news-servers. By default, it will try to
take all news-groups from all news-servers.
- If the group list is large for a news-server, it is no more logged
to the log file in the explore directory.
- Accelerated the performance of news-group operations by using
self-balancing binary-trees. The node linkage is no more
stored in index files.
- Added the -o command-line option which makes NewsPlex not
lower its priority.
- Changed the format of dataset files, adding the Message-ID
field to the entries. This allows to check whether
a dataset entry really matches the index entry,
and also to reconstruct the
index files in case some get destroyed, typically by
a brutal reboot. In such cases, the newsrc files
are cleaned of entries corresponding to the lost
index files, so that the corresponding news-groups get explored
on all news-servers again and new article retrievals are constructed. In
the meantime, articles are temporarily zombies.
The directory dataset has been renamed to dataset2.
- news-servers which do not have active news-groups are now explored
less frequently.
- The config\servers file now requires a flag
(m) to signal the main
server, rather than a negative server-number. This also makes
the main news-server recognizable as such in the news-servers lists.
- Introduced a new config\servers flag,
O or LISTGROUP
does not set the current news-group, which allows to deal with
news-servers which do not adjust the current news-group when receiving the
LISTGROUP news-group request. This is not so easy to
detect automatically, hence this flag.
- Eliminated the usage of the config\groups.fix file.
Now, the notion of active news-groups replaces the notion
of fixed news-groups and statistics are computed based on
this.
- Introduced the -X program-name
command-line option, which allows to run a program or a command
(eg. a uudecoder) each time a new async\xxxxxxxx.ok
file is created.
- Removed the 2 second delay when NPSHUT is entered.
- Fixed a problem introduced in version 3.2, together
with the update files: NewsPlex would mistakenly delete
the existing update file for a news-group, when syncing this
news-group back to disk, if there were no updates (additions
or deletions of news-server references) to existing
article descriptions to be saved, and only new article descriptions have been added.
So the next time the news-group index was loaded from disk,
it would contain partially obsolete information: some
news-server references would be missing and some previously deleted
news-server references would reappear. However no article descriptions would be lost.
This problem was most visible when deleting a news-server,
as news-server references to this news-server would re-appear for
some news-groups soon after. NPCHECKGROUPS would also
show many invalid news-server references.
- The LIST ACTIVE wildmat command is now
implemented.
- If the config\authinfo file had empty lines, NewsPlex would crash.
- XHDR field and XOVER issued without
argument would not print information about current article,
but rather print an empty list. XHDR also did not
process the case of the argument being a Message-ID. NewsPlex will
now accept an Message-ID argument for XOVER, which is an
extension of the standard syntax.
- Improved the checking of the validity of arguments on telnet
and web interface. Crashes should be avoided. Some telnet
error codes have been fixed, syntax error messages containing
some help are now generated when necessary.
- Implemented the XGTITLE command. It currently does
not return real descriptions, but can be for example
used instead of LIST ACTIVE.
- LISTGROUP without argument did not work if the current
news-group was async.
- NPMARKRETRIEVED and NPFILTER issued an incorrect
error message (412 No news group has been selected
rather than 500 not implemented) if the current news-group
was async.
- If NewsPlex was connected to itself or to another NewsPlex,
it would choke and reconnect when article numbers suddenly
jump from a small value to 1001, which happens with deferred
news-group activation. Now this jump is accepted without reconnecting.
- Created the NPACTIVE command, for listing just
active news-groups. Added also a link on the Web page.
- Some commands were not mentioned in the HELP command output.
- The Web page now contains the telnet link.
- Introduced the cost per-news-server flag (cvalue).
- X-Newsposter lines are eliminated from headers of
posted articles.
- Certain memory exhaustions occurring during news-server exploration
were not recognized as local resource problems and caused useless
re-connections to the news-server, as if they were corruptions.
- When an article mistakenly exists under two numbers in the
same news-group on a news-server, NewsPlex now logs both numbers, as well as
the number in NewsPlex. Previously, the original number on news-server
was not provided.
- When deleting news-server references to a specific news-server from a given news-group, because
that news-server no longer carries the news-group or because it is being deleted
globally (NPDELETESERVER), we now check whether we could
perform this operation correctly. For example, sometimes there is
not enough memory to access the news-group. If news-server references could not be removed
from some news-groups, we leave appropriate content in the newsrc2 file.
If the deletion was not complete, the server-number should not
be re-used for another news-server.
- Added the x per-news-server flag, which allows to accelerate the
retrieval of article descriptions from certain news-servers.
- The -T command-line option, which limits the number of simultaneous
parallel news-server explorations works again.
- The full group list on the Web interface is now printed
without using a table, so that news-readers display it much faster
and use much less memory. For non-active news-groups, only an
activation link is proposed.
- NewsPlex now accepts article descriptions where every field is preceded with
a spurious blank, and automatically eliminates these blanks.
This allows to use news-servers which would previously be unusable,
but might have been fine otherwise.
- Fixed the automatic shutdown in minimal mode, which did not
happen anymore for the past few versions. There is now a
specific exit code to indicate an exit after the end of
minimal explorations.
- Replaced all update words in configuration files
and messages issued by NewsPlex by explore, when
they referred to exploring news-servers. Previously both
words were used interchangeably for this purpose.
The dontexplore keyword must now be used
instead of dontupdate in the config\servers file.
The U per-news-server flag remains.
- Introduced a new per-news-server flag: a or
attempt retrieval of articles, by Message-ID, even if news-server does
not have the news-group or the article in the news-group.
If this flag is set, NewsPlex will attempt
to always retrieve an article from the
news-server, even if the news-server did not say it had it.
- If the -l command-line option is passed, or if the L
per-news-server flag is set, NewsPlex will not use GROUP
requests anymore to check the existence of a news-group when
listing news-groups on news-servers, and will always filter locally
the full news-group list obtained from the news-server. NewsPlex
used the GROUP request, as an optimization,
if a pattern in the config\groups.yes file did not contain
wild-cards.
- If an article is a zombie, NewsPlex will now attempt to
retrieve it from all the news-servers before reporting
it as a zombie to the news-reader. This sometimes allows to obtain
an article, in spite of it being apparently deleted from
everywhere. Reporting a zombie will often make the news-reader
stop retrieving the following articles automatically,
so we have nothing to lose and everything to gain.
- A time-stamp is now put as the first field of the comment
entry in the generated logs\results file. NewsPlex shutdown is
no more logged there as a news-server exploration condition.
- In minimal mode, after failing to retrieve an article in
100 news-groups, NewsPlex will stop trying to get one.
- Some error traces, like a 503 timeout, were not logged
during the listing of available news-groups, so it was difficult
to understand why NewsPlex had to reconnect.
- When retrieving article descriptions from a news-group, NewsPlex now merges the new
article numbers into 32 intervals at most, while this was 256
previously. This allows to minimize the number of requests
issued to news-servers with incoherent article databases, and to spend
much less time overall. The price is getting slightly more
regets.
- The etc\popular file is now processed with full error checking.
- NewsPlex now systematically checks after a failed file open
whether this was due to the file not existing, or just to
a resource exhaustion. Some exotic or ancient compilers
only authorize a few dozen open files at a time, and NewsPlex
could lose a newsrc2 file this way; it rewrote it, thinking
it did not exist before.
- Some log messages produced during news-server exploration have been
made more specific. When encountering corrupted single-number
ranges, NewsPlex will not promise to recover by re-exploration,
because this is not done, nor possible. When processing a news-group
which was previously empty on news-server, NewsPlex will no more
announce a New news-group but rather a Previously empty
news-group.
- Created the NPREWRITEGROUP command.
- Many more binary file patterns are recognized in Subject:
lines.
- It is now allowed to have a given news-server listed several times
in the config\servers file, as long as the login or the port
are different. File names in the explore, list,
newsrc2 and xhdr directories, as well as the displayed
and logged server names now include the login and the port
number if these are non-default.
- Distinct proxy syntax errors are now produced, depending on
whether they occur immediately, which might mean the proxy is
not of the expected type, or later, when the type of the proxy
has already been confirmed.
- Added support for buggy SOCKS4 proxies
(proxy socks4b://server-name)
and for HTTPS proxies
(proxy https://server-name).
- Fixed crashes which occurred if a SOCKS5 or SOCKS5b proxy asked
for authentication, while no login/password were defined for it.
Version 3.4 (5 April 2001)
- In the logs\results file, extra info between parentheses, which is
most of the time the last error message from news-server, is no more
printed if the final status is Ok or if this info is
the same as the main diagnostic, that is, has been generated
internally. Same simplification has been performed for the
Connect failed and Reconnect failed log traces.
- NPCONNECTED could display non-pertinent diagnostic messages
for servers which were otherwise quite fine. A similar problem
appeared in the logs\results file.
- If the server temporarily returned an empty news-groups list,
NewsPlex would assert fail (regression).
- We now avoid printing error codes. Only text messages are provided,
which should be unique. Error messages are systematically of the form
situation: standard-error-string dot newline
or
situation: error-msg-from-server newline
- Accelerated NewsPlex shutdown. The downside of the new implementation
is that less error information is now available for failed TCP
connections.
- If an article description ends just after the Message-ID, NewsPlex will now report a
correct error (No tab after Message-ID rather than
Message-ID lacks ending bracket).
- The above error can be ignored if the new I flag
(allow article description truncation after Message-ID) is set for the
news-server. This flag can also recover truncations in the middle
of article threading references.
- The NPCLIENTS command now displays the loaded/unloaded
status for the current news-group in a separate L column.
- Fixed all places in the code where buffer overflows caused the
termination of NewsPlex. Now buffer overflows cause either an
internal error, or data are silently truncated.
- Introduced the XHDR NPSUBJECT command.
- Renamed the XHDR SERVREFS command into
XHDR NPSERVREFS, since it is specific
to NewsPlex.
- Introduced a new news-server flag, D, meaning do not reuse
the news-server for an asynchronous article retrieval after it becomes free. This flag
should give the news-reader less 500 No server having article is
reachable errors if the news-reader tries to retrieve some articles
directly when asynchronous article retrievals are enabled.
Version 3.3 (2 March 2001)
- Some items in the Web interface did not work anymore.
- In the connected servers list, some news-server status messages
were mistakenly reproduced with the ending newline.
- The NPGLOBALSTATS command did not stop on news-reader
disconnect and kept printing the group names and headers
to the log file. Also enlarged the ARTS and UNIQ columns
for this one and the NPGROUPSTATS command.
Version 3.2 (1 March 2001)
- Fixed the code which emulates XOVER using HEAD.
Introduced the H flag in the config\servers file, which can
force emulation. We also accept servers where LISTGROUP
sometimes does not set the current article in news-groups. We deal
with tabs in article headers. Shutdown is now processed immediately
during the emulation.
- If AUTHINFO replies are preceded with junk, the junk
is now skipped. This avoids delaying the next exploration by hours.
- Introduced the update directory and incremental saving of
index files. We now append new article descriptions to the existing
index files and save updates about articles (addition
or deletion of news-server references)
into an update file, except for small index files and when
update files grow too large, in which case a rewrite of the
index file is performed.
- Introduced the R and r flags for news-servers,
which allow to adjust the number of connections allowed.
- NPCLOSE can now be passed 0, which closes all
idle news-server connections.
- Shutdown is now taken into account when a news-server is being
deleted.
- Since version 3.0, NewsPlex could sometimes forget that
it already managed a news-group and start a fresh index file
for it. It however appended new article data at the end
of the old dataset file, corrupting it. Non-recoverable
errors would appear at the following compaction.
- Only one zombie article is now retried at the same time.
This allows to reduce the number of news-servers to which NewsPlex
is keeping open connections to.
- Introduced deferred news-group handling. A news-group is now handled only
after a news-reader enters it for the first time and requests
the list of articles.
- NewsPlex would not print a correct (history) line
and could even crash if the NPDATASETS command was
performed.
- After an article has been posted, NewsPlex will now attempt to
schedule an update of the news-group where it has been posted, on the news-server
to which it has been posted (that is, the current main news-server).
This should make the article visible immediately in the list of
articles, as long as the news-server does not delay the posting by
itself.
Version 3.1 (21 January 2001)
- NewsPlex now commits database files to disk after writing to
them. This allows to better deal with panics in the OS.
- Added the -L command-line option, to report articles scheduled
for asynchronous article retrieval as deleted.
- Zombie articles are no more considered as permanently
unavailable when articles are retrieved asynchronously.
This is a consequence of the etc\done and etc\scheduld files now
being cleaned of finished entries at each restart;
it is no more a problem to have entries there for a long
time, until the zombie expires.
Zombies appear with a new Zom status in the
list produced by NPASYNC.
- If there are many outstanding asynchronous article retrievals, shutdown should
now be faster.
- index files are no more systematically lingering in memory
for some time after usage; lingering now depends on the
situation. This decreases the memory usage and limits the
number of news-groups displayed as accessed.
- Increased the number of file extensions recognized as
representing binaries.
- The error message Ignoring GROUP error because
retrieval by msgid was sometimes issued while
the connection could not be obtained at all.
- When NewsPlex was using LISTGROUP to change the
current news-group (as a workaround for news-server bugs), it
printed (null) followed by dots. Now, only
dots are printed; they represent the retrieved article
numbers.
- Zombies are now checked every 30 minutes, by Message-ID,
on all news-servers except those which could not be explored successfully
during the last attempt and those which are currently being
explored. This often allows to get an
article in spite of it being declared as deleted
before.
- news-servers scoring now takes into account the number of articles
already retrieved from them. This allows to better appreciate
their value when all the previously retrieved articles
have been too small to reliably determine the speed.
- The shutdown condition is now detected when switching to
another news-server for article retrieval. This allows to produce less
log messages.
- The 420 response code for
XOVER first-last
requests was incorrectly considered as an error.
- Before trying to reconnect to a news-server after a disconnect, NewsPlex
will now first check if there is not a spare connection already
open to the same news-server and use it instead. This increases
the speed and reduces the number of connections open to news-servers.
- Articles scheduled for article retrieval are now tagged with an A flag
in index files, and with "/a " (or "/ra " if read)
in the From: field when retrieving article descriptions.
- Introduced the telnet.htm and web.htm files.
- The logs\clients and logs\summary files are now limited in size.
A new file is started and the old one is renamed to .bak
when they grow over a certain size.
- The NPCONNECTED command and the Web page now display
four additional data about each connected news-server: the state of
the connection (0 means not yet connected and 31 means
connected successfully; additional states are possible too),
the number of TCP connects performed using this entry, the number
of bytes sent, and the number of bytes received.
- This help file now shows the correct pathname separators, given
the OS for which it is targeted. Previously, Unix-style forward
slashes were used all the time.
- If a temporary news-server overload condition appears when NewsPlex
is trying to reconnect after a disconnect during an update,
it will wait 10 seconds and retry up to
50 times rather than abandoning the
whole update operation. This allows to use news-servers which
experience such overload conditions frequently.
Version 3.0 (11 December 2000)
- Some rare article description corruptions involving a premature end-of-list
mark from news-server were handled sub-optimally. The error message
issued did
not provide the offending article description and NewsPlex would not
recover till the next news-server exploration.
- Introduced a new organization for the article database,
while allows to dramatically (4-5 times) decrease the amount of
memory used by NewsPlex and to speed operations.
The previous single database directory has been replaced
with two directories, dataset and index.
Only index files are loaded into memory. Also, much less
memory is now used to store the information from them.
Additionally, binary tree information is saved to index
files, which allows to avoid the recomputing of
it at next load time.
The newsrc directory has been renamed into newsrc2,
so that if by accident you run an older version of
NewsPlex in a directory set up with the current NewsPlex,
the article database does not get corrupted.
The format of files inside did not change.
NewsPlex will automatically convert the old
article databases into the new format at startup time.
The old database and newsrc directories will
be renamed into *.old.
- Added the possibility of retrieving articles by Message-ID
from the async news-group. If a news-reader has seen an article
in the async news-group, and this article has been
deleted since (by hand or by another news-reader), it might
try to get it by Message-ID. NewsPlex now replies this
request with a clean deleted status rather
than with a not implemented status. Of course,
if the article is still there, it will be provided.
- Added the XHDR SERVREFS command, which
displays the news-server references for articles
in current news-group.
- If NPRENUMBER was used, the binary tree
used to locate articles by Message-ID would progressively
get corrupted. This could cause duplicate addition of
new article descriptions to the article database if the renumbering occurred
while a news-group update process was running for the same
news-group.
- In case of startup errors, NewsPlex will now ask the operator
to press the Enter key before terminating. This allows
to read the error messages before a window is closed, for example.
These messages are otherwise logged to the journal file.
- The NPDELETESERVER command is more verbose.
- During news-server explorations, some errors causing an interruption
were not correctly reported and the next exploration would
occur quite late, as if everything went fine.
- A new locking scheme in the article database allows full concurrency
between different operations concerning different news-groups
and a correct reporting of corruptions inside index files.
The NPACCESSED command and the Web interface
show 2 additional fields for each news-group: the number of
threads waiting to access it and the status flags.
- The NPCHECKGROUPS command now also deletes references
to news-servers no more present in the config\servers file.
NPDELETESERVER accepts even non-existing
news-server numbers, and allows to clean single invalid
news-server references. Performing NPCHECKGROUPS
is like performing NPDELETESERVER for all
invalid references.
- If during asynchronous article retrieval NewsPlex notices an invalid news-server number
for an article, it will clean all invalid references
in the current news-group.
- Shutdown requests are now recognized during the following
operations:
- marking as retrieved of articles logged in
etc\retrievd (-M command-line option)
- news-group filtering (NPFILTER)
- news-group listing (LIST)
- computation of global and per-news-group statistics
(NPGLOBALSTATS and NPGROUPSTATS)
- age trimming of news-groups (NPDELETEOLD)
- NewsPlex will no more crash if a too long news-group name
is entered.
- NewsPlex now detects articles which on a given news-server appear
a second time in the same news-group, under a different number.
They will be considered as the same article.
- Further corruptions are detected in article descriptions: article
numbers not greater than the previous one, article
numbers out of requested range.
- Implemented the previously forgotten XHDR REFERENCES
command.
- The NPRESTART command no longer closes the current
connection. Once the NewsPlex welcome message is displayed
again, it is possible to enter further commands.
The previous context of the connection (current news-group,
current article, etc.) is lost however.
- Added a new command, NPAPPLYRETRIEVD, which is the
runtime equivalent of the -M
command-line option.
- After NPRESTART, NewsPlex would forget the logins and
passwords set through the -P and -U
command-line options and stop requiring them.
- Improved log messages. Notably, when printing dots to
signal incoming article descriptions, NewsPlex will better handle
error messages.
- NPFILTER now prints how many filters have been applied.
- If at startup time there are still some asynchronous article retrievals left,
NewsPlex will write a new etc\scheduld file, containing only
those entries and delete the etc\done file. The whole process
should take much less time now. The information about
articles in async\xxxxxxxx.log file is also more readable now.
- Added the -v (verbose) command-line option.
- NewsPlex will now collapse neighboring ranges of article numbers
to explore on news-server when it finds there are more than 256 of them.
This allows to issue much less requests to news-servers, at
the price of sometimes getting an article description
twice (reget).
- Fixed the operation with SOCKS5 proxies which require a login
and a password.
- Added the -c and -C command-line options for cleanup.
- New command, NPTASKS for listing both currently running
and scheduled tasks.
- The -T command-line option now really does what it is supposed
to do. Previously, it would limit the total number of
threads used, and not only the number of threads used to
explore news-servers.
- NewsPlex now correctly detects the internet presence if you
have an ADSL modem.
- The asynchronously retrieved articles are now deleted from
the async directory only after 300 seconds.
This allows to potentially retrieve them several times
in case of problems, and to support news-readers which do not
cache retrieved articles.
- The newsrc2 files are now written in a fault-tolerant way
and checks for success are systematically performed.
- The Flags field in the config\servers file is now documented.
Flags are now letters rather than a number. Whether
a news-server allows posting or disallows is now displayed as
a flag (P or N), rather than in a specific column.
- Now if a client news-reader does not have administrator access,
retrieved article headers are stripped of Path:
and Xref: entries, which give the identity of
the news-servers from which the articles come.
- The temporary files in the newsrc2 directory are now
written progressively, as the news-server update process progresses,
rather than being periodically rewritten completely. This
reduces the number of disk writes and allows full recovery
in case of crashes during the update. Temporary files are
recovered the next time the main newsrc2 file is used.
NewsPlex also deals with duplicate news-group name entries in
newsrc2 files now, by merging the article numbers.
- When listing news-groups on a news-server using patterns, NewsPlex now checks
whether the news-group names returned by the news-server match what was asked
for. This is because some news-servers sometimes ignore the mask
and return their full news-groups list instead.
- NPCHECKGROUPS now deletes the index and dataset
files corresponding to unwanted news-groups.
- If some articles are scheduled for asynchronous article retrieval,
and not currently being retrieved, NewsPlex will now try to
retrieve them as soon as a news-server is no more used internally.
This allows to get much faster article retrievals from news-server which
allow few connections at the same time.
- NewsPlex now checks the available disk space when writing
articles to disk during asynchronous article retrieval, and
when writing the list files for news-server.
- Added the -l command-line option, to force requesting
the full news-groups list from news-servers when exploring them and perform
local filtering of interesting news-groups.
- The -x command-line option does not cause the echoing
of the G flag to the logs\results file for each news-server anymore.
- In minimal mode, the number of tentatives of getting an article
from a news-group has been limited to 10.
- The logs\cliXXX files have been replaced with logs\cli-host-port files, for
better observability.
- NewsPlex now notices the disconnects of client news-readers even when
itself being in the process of connecting to news-servers, and stops
connecting immediately.
- If article descriptions are short, and do not contain the Lines information,
NewsPlex will still accept them.
- Limited the number of open connections to a news-servers to 8.
- The exit code can now also reflect situations occurring after
NewsPlex startup. For example, requesting a shutdown with
NPSHUT will make NewsPlex exit with code 39.
- The etc\done, etc\scheduld and logs\summary files have been moved out of
the async directory.
- NewsPlex will now try to use LISTGROUP if GROUP
returns that the group does not exist. It will also ignore
GROUP errors when trying to retrieve an article by Message-ID.
Version 2.9 (24 Sep 2000)
- The final dot on a line by itself in fact collated to the
preceding article description corruption (see comment for version 2.7)
is now also detected for short lines, which would previously
be considered as split lines. This avoids a long and useless
waiting for next article descriptions and a news-server connection loss.
- More article description corruptions occurring during news-server explorations are
now recovered without reconnecting.
- More news-server welcome messages are recognized as throttling rather
than as overload and cause less frequent exploration attempts.
The descriptions of more ancient updates are available in help
files provided with pre-3.9 versions of NewsPlex. Note that all
still useful content has been incorporated into the main body
of the document.