summaryrefslogtreecommitdiffstats
path: root/app.psgi
diff options
context:
space:
mode:
authorDylan William Hardison <dylan@hardison.net>2018-03-04 02:18:33 +0100
committerDylan William Hardison <dylan@hardison.net>2018-03-10 21:54:38 +0100
commitd6bc2a79456a319fe073a470d1643721bf7adf5e (patch)
treec5c087e61e4c075ead2f295931037b30051d7ced /app.psgi
parentf57a87a51e4d3e39a6fc552b963621625b2db899 (diff)
downloadbugzilla-d6bc2a79456a319fe073a470d1643721bf7adf5e.tar.gz
bugzilla-d6bc2a79456a319fe073a470d1643721bf7adf5e.tar.xz
support extensions better
Diffstat (limited to 'app.psgi')
-rw-r--r--app.psgi40
1 files changed, 11 insertions, 29 deletions
diff --git a/app.psgi b/app.psgi
index 1da6d4351..101a85a83 100644
--- a/app.psgi
+++ b/app.psgi
@@ -47,40 +47,24 @@ use Plack::App::URLMap;
use Plack::App::WrapCGI;
use Plack::Response;
-use constant STATIC => qw(
- data/webdot
- docs
- extensions/[^/]+/web
- graphs
- images
- js
- skins
-);
-
-# Pre-load all extensions
-Bugzilla::Extension->load_all();
+# Pre-load all extensions and find their static dirs.
+my @extensions = map { $_->NAME } @{ Bugzilla::Extension->load_all() };
+my @static_dirs = qw( data/webdot docs graphs images js skins static );
+foreach my $name (@extensions) {
+ my $dir = File::Spec->catfile('extensions', $name, 'web');
+ push @static_dirs, $dir if -d $dir;
+}
+
Bugzilla->preload_features();
# Force instantiation of template so Bugzilla::Template::PreloadProvider can do its magic.
Bugzilla->template;
-my $ses_index = builder {
- my $auth_user = Bugzilla->localconfig->{ses_username};
- my $auth_pass = Bugzilla->localconfig->{ses_password};
- enable "Auth::Basic", authenticator => sub {
- my ($username, $password, $env) = @_;
- return ( $auth_user
- && $auth_pass
- && $username
- && $password
- && $username eq $auth_user
- && $password eq $auth_pass );
- };
- compile_cgi("ses/index.cgi");
-};
+use Bugzilla::Sentry;
+
my $bugzilla_app = builder {
- my $static_paths = join( '|', STATIC );
+ my $static_paths = join '|', map quotemeta, sort {length $b <=> length $a || $a cmp $b } @static_dirs;
enable 'Log4perl', category => 'Plack';
@@ -97,8 +81,6 @@ my $bugzilla_app = builder {
$mount{$name} = compile_cgi($script);
}
- $mount{'ses/index.cgi'} = $ses_index;
-
Bugzilla::Hook::process('psgi_builder', { mount => \%mount });
foreach my $name ( keys %mount ) {