From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id D333E1F453; Mon, 4 Feb 2019 11:11:48 +0000 (UTC) Date: Mon, 4 Feb 2019 11:11:48 +0000 From: Eric Wong To: Konstantin Ryabitsev Cc: meta@public-inbox.org Subject: [PATCH v2] examples/newswww.psgi: demonstrate standalone NewsWWW usage Message-ID: <20190204111148.asdznzud6oblg3h4@dcvr> References: <20190109114327.1901-1-e@80x24.org> <20190109114327.1901-3-e@80x24.org> <20190127020608.f6yu2j3w4mfcc75b@dcvr> <20190201090056.b5ait6ebaflz3tsq@dcvr> <20190201183113.kacp665geshxxmin@dcvr> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20190201183113.kacp665geshxxmin@dcvr> List-Id: Eric Wong wrote: > Or just use NewsWWW, because nntp:/// 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 +# License: GPL-3.0+ +# +# 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