#!/usr/bin/perl -w # Copyright (C) 2019-2020 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 (development, with auto-reload): # plackup -I lib -o 127.0.0.1 -R lib -r examples/newswww.psgi # # Usage (production, with public-inbox-httpd(1)): # public-inbox-httpd [OPTIONS] /path/to/examples/newsww.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]) } }; }