Welcome to the NewsPlex download site! (a courtesy of Mark Thompson).

Version 4.5 has been released on Monday, June 8th 2009, for Windows and Linux/x86.

Please go to the download page here.
Click here to join NewsPlex
Click to join the NewsPlex group
Subscribe to the NewsPlex group

Here are two excerpts from the manual:

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).

History of updates

Major improvements are in bold.

Version 4.5 (8 June 2009)

In NpMigrat

  • NpMigrat is a new tool which allows to convert the configuration and database files from NewsPlex versions earlier than 4.5 into the 4.5 format, and optionally delete these old files. Run it without arguments for help, pass the -P command-line option to proceed without deleting the old files, or pass -D to also delete the old files. Old files are only deleted if the conversion was fully succesful. It is possible to run NpMigrat several times if necessary; it is idempotent. Note that NewsPlex 4.5 will refuse to start if old files are still found. Also note that conversion works only for a few past releases. Finally, note that the "indexing" process for very large news-groups (with millions of articles) can take half an hour.
  • NpMigrat has been built from newer NewsPlex sources than the 4.4 release, so it has sometimes a different behavior. For example, during dataset compaction, the full entry (line) is now checked for syntax errors and for coherency with the index entry. New possible resulting errors are corrupted dataset entry and Message-ID mismatch. If a dataset line is corrupted, NpMigrat now deletes the corresponding index entry, so that the article description is re-downloaded later.
  • NpMigrat now systematically checks that dataset and index lines end with a newline character, possibly precedded with a carriage-return character, before accepting them. This allows to detect truncated files, for example if the last line was never written to disk entirely.
  • In case of problem during the startup cursory dataset check, NpMigrat now enters a dataset repair mode, which eliminates the truncated line from dataset's end and fixes the index file.
  • During dataset repair, NpMigrat now tries to recover corrupted dataset lines if they consist of a truncated entry appended with the next valid entry. If such a situation is recognized, the appended entry will be considered as a normal one. This allows to preserve the corresponding index line.
  • When fixing an index versus the dataset and having to delete the end of it, NpMigrat will now assure that future new articles will be added with higher numbers than existing article numbers.

In NpTunnel

  • Increased the maximum size of the backlog of incoming TCP connections. This should reduce TCP connection errors when several client connections were attempted to NpTunnel at the same time.
  • Improved logging. Traces are now issued after obtaining the remote connection and before going into routing mode. When a connection terminates, NpTunnel now indicates the number of bytes received from each party.

In NpUud

  • The BinHex format used on Apple Macintoshes is now supported. This support can be disabled using the new -Db command-line option. NpUud will append an extension to the file according to the recorded Type of the file. If there is also a non-empty Resource fork, a separate .rsrc file will be created.

In NpSync

  • The -q option now makes NpSync quiet about matching files. Passing it twice will make NpSync quiet even about non-matching files, apart for the final status. It can be useful on a slow terminal connection.
  • If one of the compared files could not be opened, a specific message will now be printed, rather than just "different". Nothing will be done in case of sychronization.
  • The new -l option will make NpSync not follow symbolic links to directories. This can avoid useless comparizons, and endless loops as well.
  • The new -L option will make NpSync ignore symbolic links during comparizons.
  • In messages, the name of the "otherDir" is now provided.
  • The new -M option causes a deletion of matching files from both trees.
  • The -m option is now more verbose on deletion failures.
  • The display now contains no more useless backspace characters.
  • Added the printout of the effect of the default action, which is just comparing.
  • The new -y option causes automatic confirmation when NpSync asks for it (currently only when deleting some unique files in -u and -S modes).

In NewsPlex

  • Introduced the etc/servdyna.ini file, which stores news-servers-related information which should persist accross NewsPlex sessions. It has the format of a settings file, with sections called [serverDynamic]. The various variables inside will be documented later.
  • The IHAVE command is now accepted if the new clients.allowIHAVE= setting is set, and is equivalent to posting an article to the server selected by the various posting rules.
  • Increased the maximum size of the backlog of incoming TCP connections. This should reduce TCP connection errors when several news-reader connections were attempted to NewsPlex at the same time.
  • When a news-server is "deleted" (ie. currently when its news-server references are deleted), the associated explore files (the normal one and the .bak one) are now deleted as well. The newsrc3 database is deleted as well, if it exists.
  • Absence of active groups on a news-server is no more considered an exploration error from the error accounting point of view.
  • Fixed a missing newline bug in exploration log files, where NewsPlex would sometimes forget to go to a new line after a dot, before issuing a time-stamp and a new dot. This happened when dots and normal traces were intermixed in specific circumstances.
  • The new explore.alwaysFilter= setting in etc/newsplex.ini allows to force filter application on every news-server, even when this is not individually requested by server.filterArticles= settings in etc/servers.ini.
  • Implemented cross-post filtering. It is now possible to define additional filtering criteria, based on the number and names of news-groups to which the article has been posted. New: the filter.xrefsMin= setting, the filter.xrefsMax= setting and the filter.xrefsGroups= setting.
  • If several news-readers were retrieving the same article in parallel, and if problems happened and if renumbering was active, NewsPlex could panic, being unable to find the article under the old number. Now it only renumbers if the article did not get renumbered from another connection in the meantime.
  • All RAM-intensive files have been replaced with on-disk SQLite3 databases which are never loaded into memory entirely. NewsPlex does not maintain any news-group group list in memory anymore, neither the full news-group list, nor the active news-group list, nor the previous "popular groups" list, nor lists of "actual" news-groups related to explored news-servers. Similary, it does not load entirely anything related to active news-groups or to asynchronous article retrieval. Various directory names have had their number component increased, to prevent an old NewsPlex run accidentally in the new environment from destroying the files.
    Storage type Old files and directories New files and directories
    pending article retrievals etc/scheduld
    etc/done
    etc/async.sq3
    Message-ID lists etc/hidden
    etc/retrievd
    etc/hidden.sq3
    etc/retrievd.sq3
    full news-group list etc/groups etc/groups.sq3
    news-group popularity etc/popular.ini
    actual news-group lists   actual
    article database dataset2
    index
    update
    index2
    newsrc newsrc2 newsrc3
  • If a transaction is internally open for a news-group, a new T flag appears in the NPACCESSED list.
  • Introduced three new settings which can prevent NewsPlex from trying to connect to news-servers which do not have a normal IP address. For example, if the hostname of a news-server resolves into IP address 127.0.0.1, NewsPlex will connect to itself, which is undesirable in general and disastrous in case of asynchronous article retrievals, as every tentative of retrieving an article from oneself will seemingly fail, while in reality scheduling another asynchronous article retrieval.
    The connect.forbiddenIP= setting defines an IP address pattern to which NewsPlex should not connect. The default values cover well-known non-routable and private IP addresses.
    The connect.enforceForbiddenIPs= setting controls whether NewsPlex should apply this globally, while the server.enforceForbiddenIPs= setting controls this for a specific news-server. Both of these settings must be non-zero for enforcing to be applied to a given news-server.
    By default, NewsPlex will no more allow connecting to forbidden IP addresses. Existing etc/servers.ini files might need to be adjusted if some news-servers have such IP addresses.
  • Durations are now printed as days, hours, minutes and seconds instead of just seconds in many places.
  • NewsPlex now recognizes more "limit exhausted" errors for GROUP requests, and tries to reconnect rather than aborting the whole request. This helps completing the exploration of some news-servers. When reconnecting, it also better explains the reason.
  • Introduced the clients.reformatDates= setting in etc/newsplex.ini, which makes NewsPlex reformat the date and time information in article descriptions so that it follows a certain predefined standard, rather than being the original value retrieved from news-servers. This avoids errors in news-readers.
  • When deciding about the order in which to explore news-groups on a news-server, the news-group popularity was not taken into account properly and it was in fact ignored; only the time of last exploration was.
  • The lengths of news-group name, Message-ID and subject are no more arbitrarily limited to certain maximums in the asynchronous article retrieval process (and the full list of articles to be retrieved asynchronously is no more entirely stored in memory, but resides in the etc/async.sq3 file).
  • If an article had several news-server references pointing to the same news-server, then depending on their order NewsPlex was not always able to detect a reget and instead would detect a dup and add another reget reference. This could grow the list indefinitely at every explore.
  • Added one more recognition of a situation where the news-server does not accept an XOVER variant but accepts other variants.
  • During exploration of a news-group using HEAD and NEXT requests, if the NEXT command does not provide the next article but rather continues an enumeration started from 1, NewsPlex will now switch to issuing HEAD number requests for all successive numbers.
  • NewsPlex now avoids using XHDR MESSAGE-ID when exploring a news-group if this news-group has just been activated or if the news-server has two times or more articles than NewsPlex does, as logically NewsPlex does not yet have most of these articles and XHDR MESSAGE-ID will only make it lose time and bandwidth, and delay updating the article database with new article information.
  • Introduced the shutdown.deleteActual= setting in etc/newsplex.ini, which makes NewsPlex delete the actual directory and content on shutdown.
  • In log files, the timestamp of messages was separated from the text sometimes.
  • Fixed the diagnostic output on the terminal, which was missing newlines and tabulations in certain conditions.
  • Cleaned the default news-server list of dead news-servers.
  • Fixed processing of groups.noByName= setting, which could crash NewsPlex if a news-group already excluded by groups.noByPattern= settings was also passed through groups.noByName= setting.
  • Article 1 is now systematically deleted once article 1000 has been added during news-group activation. This avoid getting an often empty range of 2-999 article numbers, which makes some news-readers keep wanting to retrieve them.
  • The LISTGROUP request does not return the numbers of deleted or hidden articles anymore.
  • Client disconnecting should be noticed much faster now in circumstances where it was slow previously, like a second parallel access to a news-group being already loaded into memory.