515e2d7c9d
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
98 lines
2.8 KiB
Perl
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;
|
|
|
|
};
|