Eric Wong <e...@80x24.org> wrote: > Or just use NewsWWW, because nntp://<HOSTNAME>/<Message-ID> is valid. > Going to think about it while I eat and do other things, but > will very likely merge it to master, soon.
Yep. It's in NewsWWW, now. Also going to add this. I think it'll be helpful for nntp.lore.kernel.org to have this on 80/443 because somebody could share NNTP URLs and some software somewhere will interpret it as "HTTP" --------8<------- Subject: [PATCH] examples/newswww.psgi: demonstrate standalone NewsWWW usage Plack::Builder allows "mounting" on with hostnames as well as path names to enable virtual hosting. This example demonstrates how port 80/443 for "news.example.com" can redirect browser requests when somebody attempts to use a "nntp://" URL and the software assumes "http://" --- examples/newswww.psgi | 48 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 examples/newswww.psgi diff --git a/examples/newswww.psgi b/examples/newswww.psgi new file mode 100644 index 0000000..0f66782 --- /dev/null +++ b/examples/newswww.psgi @@ -0,0 +1,48 @@ +#!/usr/bin/perl -w +# Copyright (C) 2019 all contributors <meta@public-inbox.org> +# License: GPL-3.0+ <https://www.gnu.org/licenses/gpl-3.0.txt> +# +# NewsWWW may be used independently of WWW. This can be useful +# for mapping HTTP/HTTPS requests to the hostname of an NNTP server +# to redirect users to the proper HTTP/HTTPS endpoint for a given +# inbox. NewsWWW exists because people (or software) can mishandle +# "nntp://" or "news://" URLs as "http://" (or "https://") +# +# Usage: +# plackup -I lib -o 127.0.0.1 -R lib -r examples/newswww.psgi +use strict; +use warnings; +use Plack::Builder; +use PublicInbox::WWW; +use PublicInbox::NewsWWW; + +my $newswww = PublicInbox::NewsWWW->new; + +# Optional, (you may drop the "mount '/'" section below) +my $www = PublicInbox::WWW->new; +$www->preload; + +builder { + # HTTP/1.1 requests to "Host: news.example.com" will hit this: + mount 'http://news.example.com/' => builder { + enable 'Head'; + sub { $newswww->call($_[0]) }; + }; + + # rest of requests will hit this (optional) part for the + # regular PublicInbox::WWW code: + # see comments in examples/public-inbox.psgi for more info: + mount '/' => builder { + eval { + enable 'Deflater', + content_type => [ qw( + text/html + text/plain + application/atom+xml + )] + }; + eval { enable 'ReverseProxy' }; + enable 'Head'; + sub { $www->call($_[0]) } + }; +} -- EW -- unsubscribe: meta+unsubscr...@public-inbox.org archive: https://public-inbox.org/meta/