NAME
news - a web fron-end to a local news server
SYNOPSIS
news
DESCRIPTION
news
connects to the local news server via NNTP on port 119 and offers a web interface for it.
For each group, only the most recent posts are shown. The From field is stripped of anything in angled brackets in an effort to remove email addresses: \s*<.*
> and \s*"\S+@\S+"
.
For each article, an attempt is made to scrip email addresses by removing anything in angled brackets: \s*<\S*?@.*?
> and \s*"\S*?@.*?"
.
Authentication
When posting or replying, the username and password provided by the user are passed along to the news server. If that allows the user to post, it just works.
Environment variables
The news server is determined by Net::NNTP: If no host is passed then two environment variables are checked NNTPSERVER
then NEWSHOST
, then Net::Config is checked, and if a host is not found then news
is used.
NEWS_INTRO_ID
can be set to a message id for a "start here" message. By default, no such link is shown. This must be a message-id and cannot be a message number (that would require a group, too).
NEWS_MODE
can be set to "NOAUTH" in order to hide username and password on the post form in case your newsserver isn't public and requires no authorisation; if set to "NOPOST" then posting links are hidden.
Systemd
To install as a service, use a news.service
file like the following:
[Unit]
Description=News (a web front-end)
After=network-online.target
Wants=network-online.target
[Install]
WantedBy=multi-user.target
[Service]
Type=simple
DynamicUser=true
Restart=always
MemoryHigh=80M
MemoryMax=100M
Environment="NNTPSERVER=localhost"
Environment="NEWS_INTRO_ID=<u4d0i0$n72d$1@sibirocobombus.campaignwiki>"
ExecStart=/home/alex/perl5/perlbrew/perls/perl-5.32.0/bin/perl /home/alex/perl5/perlbrew/perls/perl-5.32.0/bin/news daemon
Cookies and Sessions
The web app stores a user's name, username and password in a cookie, using Mojolicious::Sessions. It is stored in the user's browser and expires after a week if it isn't used. When the web app is restarted, these cookies are invalidated, too.
Caching
The web app caches all the data it gets from the news server in a cache, using Mojo::Cache. By default, this cache is small (100 items). Each cached item is cached with a timestamp and cache hits are only used if they aren't older than 5min.
EXAMPLES
The local news server requires no authorisation.
NNTPSERVER=localhost NEWS_MODE=NOAUTH news daemon
As a developer, run it under morbo
so that we can make changes to the script. Provide the path to the script. This time with regular authorisation.
NNTPSERVER=localhost morbo script/news
The remote news server requires authorisation and we want to point visitors to a first post. We assume that NNTPSERVER or NEWSHOST is set.
NEWS_INTRO_ID='<u4d0i0$n72d$1@sibirocobombus.campaignwiki>' news daemon
SEE ALSO
The Tildeverse also runs news. https://news.tildeverse.org/
LICENSE
GNU Affero General Public License