Line 0
Link Here
|
|
|
1 |
#!/usr/bin/perl |
2 |
use Plack::Builder; |
3 |
use Plack::App::CGIBin; |
4 |
use lib qw( ./lib ); |
5 |
use Plack::Middleware::Debug; |
6 |
use Plack::App::Directory; |
7 |
|
8 |
BEGIN { |
9 |
|
10 |
# override configuration from startup script below: |
11 |
# (requires --reload option) |
12 |
|
13 |
$ENV{PLACK_DEBUG} = 1; # toggle debugging |
14 |
|
15 |
# memcache change requires restart |
16 |
$ENV{MEMCACHED_SERVERS} = "localhost:11211"; |
17 |
#$ENV{MEMCACHED_DEBUG} = 0; |
18 |
|
19 |
$ENV{PROFILE_PER_PAGE} = 1; # reset persistant and profile counters after each page, like CGI |
20 |
#$ENV{INTRANET} = 1; # usually passed from script |
21 |
|
22 |
#$ENV{DBI_AUTOPROXY}='dbi:Gofer:transport=null;cache=DBI::Util::CacheMemory' |
23 |
|
24 |
} # BEGIN |
25 |
|
26 |
use C4::Context; |
27 |
use C4::Languages; |
28 |
use C4::Members; |
29 |
use C4::Dates; |
30 |
use C4::Boolean; |
31 |
use C4::Letters; |
32 |
use C4::Koha; |
33 |
use C4::XSLT; |
34 |
use C4::Branch; |
35 |
use C4::Category; |
36 |
=for preload |
37 |
use C4::Tags; # FIXME |
38 |
=cut |
39 |
|
40 |
use Devel::Size 0.77; # 0.71 doesn't work for Koha |
41 |
my $watch_capture_regex = '(C4|Koha)'; |
42 |
|
43 |
sub watch_for_size { |
44 |
my @watch = |
45 |
map { s/^.*$watch_capture_regex/$1/; s/\//::/g; s/\.pm$//; $_ } # fix paths |
46 |
grep { /$watch_capture_regex/ } |
47 |
keys %INC |
48 |
; |
49 |
warn "# watch_for_size ",join(' ',@watch); |
50 |
return @watch; |
51 |
}; |
52 |
|
53 |
my $CGI_ROOT = $ENV{INTRANET} ? $ENV{INTRANETDIR} : $ENV{OPACDIR}; |
54 |
warn "# using Koha ", $ENV{INTRANET} ? 'intranet' : 'OPAC', " CGI from $CGI_ROOT\n"; |
55 |
my $app=Plack::App::CGIBin->new(root => $CGI_ROOT); |
56 |
my $home = sub { |
57 |
return [ 302, [ Location => '/cgi-bin/koha/' . ( $ENV{INTRANET} ? 'mainpage.pl' : 'opac-main.pl' ) ] ]; |
58 |
}; |
59 |
|
60 |
builder { |
61 |
|
62 |
# please don't use plugins which are under enable_if $ENV{PLACK_DEBUG} in production! |
63 |
# they are known to leek memory |
64 |
enable_if { $ENV{PLACK_DEBUG} } 'Debug', panels => [ |
65 |
qw(Environment Response Timer Memory), |
66 |
# optional plugins (uncomment to enable) are sorted according to performance implact |
67 |
# [ 'Devel::Size', for => \&watch_for_size ], # https://github.com/dpavlin/p5-plack-devel-debug-devel-size |
68 |
# [ 'DBIProfile', profile => 2 ], |
69 |
# [ 'DBITrace', level => 1 ], # a LOT of fine-graded SQL trace |
70 |
# [ 'Profiler::NYTProf', exclude => [qw(.*\.css .*\.png .*\.ico .*\.js .*\.gif)] ], |
71 |
]; |
72 |
|
73 |
# don't enable this plugin in production, since stack traces reveal too much information |
74 |
# about system to potential attackers! |
75 |
enable_if { $ENV{PLACK_DEBUG} } 'StackTrace'; |
76 |
|
77 |
# this enables plackup or starman to serve static files and provide working plack |
78 |
# setup without need for front-end web server to serve static files |
79 |
enable_if { $ENV{INTRANETDIR} } "Plack::Middleware::Static", |
80 |
path => qr{^/(intranet|opac)-tmpl/}, |
81 |
root => "$ENV{INTRANETDIR}/koha-tmpl/"; |
82 |
|
83 |
mount "/cgi-bin/koha" => $app; |
84 |
mount "/" => $home; |
85 |
|
86 |
}; |