X-Git-Url: http://git.rot13.org/?p=bookreader.git;a=blobdiff_plain;f=plack%2Fbookreader.psgi;h=ae9ba89bec54c5b389396e9f8c555ea78e706503;hp=3181ff87029968dcbd2c1d59b94438cd56670e32;hb=HEAD;hpb=f86d5cb9b4a0c6b50ca9655df993635a490be205 diff --git a/plack/bookreader.psgi b/plack/bookreader.psgi index 3181ff8..ae9ba89 100644 --- a/plack/bookreader.psgi +++ b/plack/bookreader.psgi @@ -10,6 +10,29 @@ use Plack::App::BookReader; builder { + # use proxy headers for client IP address + enable sub { + my ( $app, $env ) = @_; + return sub { + my $env = shift; + my $client_ip = $env->{HTTP_X_REAL_IP} || $env->{HTTP_X_FORWARDED_FOR}; + if ( $client_ip ) { + my $proxy_ip = $env->{REMOTE_ADDR}; + die "request not from authorized proxy $proxy_ip" if $proxy_ip !~ /\Q127.0.0.1\E$/; + warn "# rewrite $proxy_ip -> $client_ip\n"; + $env->{REMOTE_ADDR} = $client_ip; + } + + $app->( $env ); + } + }; + + enable "Plack::Middleware::ServerStatus::Lite", + path => '/server-status', +# allow => [ '127.0.0.1', '10.60.0.0/16', '193.198.0.0/16', '0.0.0.0/32' ], # FIXME doesn't work for IPv6 + counter_file => '/tmp/counter_file', + scoreboard => '/tmp/server-status'; + enable 'Debug', panels => [ qw(Environment Response Timer Memory), ]; @@ -19,16 +42,24 @@ builder { enable 'StackTrace'; + enable "ConditionalGET"; + enable "Plack::Middleware::ETag", file_etag => [ "inode", "size", "mtime" ]; + mount '/BookReader' => Plack::App::Directory->new({ root => "../BookReader" })->to_app; + mount '/cache/' => + Plack::App::BookReader->new({ root => "cache" })->to_app; + + # resouces + mount '/dk.nsk.hr' => - Plack::App::BookReader->new({ root => "/home/dpavlin/dk.nsk.hr" })->to_app; + Plack::App::BookReader->new({ root => "/srv/dk.nsk.hr" })->to_app; mount '/share' => Plack::App::BookReader->new({ root => "/mnt/share" })->to_app; - mount '/NSK' => - Plack::App::Directory->new({ root => "NSK" })->to_app; + mount '/jstore' => + Plack::App::BookReader->new({ root => "/mnt/jstore" })->to_app; }