Koha/misc/plack/koha.psgi
Colin Campbell 515e2d7c9d Bug 16106 Correct loose to lose in comment
Comment was using incorrect (but similarly spelled) word, obscuring
the meaning slightly. Also corrected the release note altering the
grammar there additionally as it should have been 3rd person singular
so that it now reads more clearly

Signed-off-by: Mark Tompsett <mtompset@hotmail.com>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Brendan Gallagher brendan@bywatersolutions.com
2016-03-22 01:47:53 +00:00

98 lines
2.8 KiB
Perl

#!/usr/bin/perl
use Plack::Builder;
use Plack::App::CGIBin;
use lib qw( ./lib );
use Plack::Middleware::Debug;
use Plack::App::Directory;
use CGI qw(-utf8 ); # we will lose -utf8 under plack
{
no warnings 'redefine';
my $old_new = \&CGI::new;
*CGI::new = sub {
my $q = $old_new->( @_ );
$CGI::PARAM_UTF8 = 1;
C4::Context->clear_syspref_L1_cache();
return $q;
};
}
BEGIN {
# override configuration from startup script below:
# (requires --reload option)
$ENV{PLACK_DEBUG} = 1; # toggle debugging
# memcache change requires restart
$ENV{MEMCACHED_SERVERS} = "localhost:11211";
#$ENV{MEMCACHED_DEBUG} = 0;
$ENV{PROFILE_PER_PAGE} = 1; # reset persistent and profile counters after each page, like CGI
#$ENV{INTRANET} = 1; # usually passed from script
#$ENV{DBI_AUTOPROXY}='dbi:Gofer:transport=null;cache=DBI::Util::CacheMemory'
} # BEGIN
use C4::Context;
use C4::Languages;
use C4::Members;
use C4::Boolean;
use C4::Letters;
use C4::Koha;
use C4::XSLT;
use C4::Branch;
use C4::Category;
use Koha::DateUtils;
=for preload
use C4::Tags; # FIXME
=cut
use Devel::Size 0.77; # 0.71 doesn't work for Koha
my $watch_capture_regex = '(C4|Koha)';
sub watch_for_size {
my @watch =
map { s/^.*$watch_capture_regex/$1/; s/\//::/g; s/\.pm$//; $_ } # fix paths
grep { /$watch_capture_regex/ }
keys %INC
;
warn "# watch_for_size ",join(' ',@watch);
return @watch;
};
my $CGI_ROOT = $ENV{INTRANET} ? $ENV{INTRANETDIR} : $ENV{OPACDIR};
warn "# using Koha ", $ENV{INTRANET} ? 'intranet' : 'OPAC', " CGI from $CGI_ROOT\n";
my $app=Plack::App::CGIBin->new(root => $CGI_ROOT);
my $home = sub {
return [ 302, [ Location => '/cgi-bin/koha/' . ( $ENV{INTRANET} ? 'mainpage.pl' : 'opac-main.pl' ) ] ];
};
builder {
# please don't use plugins which are under enable_if $ENV{PLACK_DEBUG} in production!
# they are known to leek memory
enable_if { $ENV{PLACK_DEBUG} } 'Debug', panels => [
qw(Environment Response Timer Memory),
# optional plugins (uncomment to enable) are sorted according to performance implact
# [ 'Devel::Size', for => \&watch_for_size ], # https://github.com/dpavlin/p5-plack-devel-debug-devel-size
# [ 'DBIProfile', profile => 2 ],
# [ 'DBITrace', level => 1 ], # a LOT of fine-graded SQL trace
# [ 'Profiler::NYTProf', exclude => [qw(.*\.css .*\.png .*\.ico .*\.js .*\.gif)] ],
];
# don't enable this plugin in production, since stack traces reveal too much information
# about system to potential attackers!
enable_if { $ENV{PLACK_DEBUG} } 'StackTrace';
# this enables plackup or starman to serve static files and provide working plack
# setup without need for front-end web server to serve static files
enable_if { $ENV{INTRANETDIR} } "Plack::Middleware::Static",
path => qr{^/(intranet|opac)-tmpl/},
root => "$ENV{INTRANETDIR}/koha-tmpl/";
mount "/cgi-bin/koha" => $app;
mount "/" => $home;
};