You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.1 KiB
65 lines
2.1 KiB
# PSGI app that can replace FastCGI server
|
|
#
|
|
# To use it with uWSGI, use for example:
|
|
#
|
|
# $ uwsgi --plugins psgi --socket :5000 --psgi e2e-tests/llng-server.psgi
|
|
#
|
|
# Set LLNG_DEFAULTCONFFILE if it is not in the right place
|
|
#$ENV{LLNG_DEFAULTCONFFILE} = 'e2e-tests/conf/lemonldap-ng.ini';
|
|
|
|
my %builder = (
|
|
handler => sub {
|
|
require Lemonldap::NG::Handler::Server::Nginx;
|
|
return Lemonldap::NG::Handler::Server::Nginx->run( {} );
|
|
},
|
|
reload => sub {
|
|
require Lemonldap::NG::Handler::Server::Nginx;
|
|
return Lemonldap::NG::Handler::Server::Nginx->reload();
|
|
},
|
|
status => sub {
|
|
require Lemonldap::NG::Handler::Server::Nginx;
|
|
return Lemonldap::NG::Handler::Server::Nginx->status();
|
|
},
|
|
manager => sub {
|
|
require Lemonldap::NG::Manager;
|
|
return Lemonldap::NG::Manager->run( {} );
|
|
},
|
|
cgi => sub {
|
|
require CGI::Emulate::PSGI;
|
|
require CGI::Compile;
|
|
return sub {
|
|
my $script = $_[0]->{SCRIPT_FILENAME};
|
|
return $_apps{$script}->(@_) if ( $_apps{$script} );
|
|
$_apps{$script} =
|
|
CGI::Emulate::PSGI->handler( CGI::Compile->compile($script) );
|
|
return $_apps{$script}->(@_);
|
|
};
|
|
},
|
|
psgi => sub {
|
|
return sub {
|
|
|
|
# Fix PATH_INFO when using Nginx with default uwsgi_params
|
|
# See #2031
|
|
( $_[0]->{PATH_INFO} ) =
|
|
$_[0]->{REQUEST_URI} =~ /^(?:\Q$_[0]->{SCRIPT_NAME}\E)?([^?]*)/;
|
|
|
|
my $script = $_[0]->{SCRIPT_FILENAME};
|
|
return $_apps{$script}->(@_) if ( $_apps{$script} );
|
|
$_apps{$script} = do $script;
|
|
unless ( $_apps{$script} and ref $_apps{$script} ) {
|
|
die "Unable to load $_[0]->{SCRIPT_FILENAME}";
|
|
}
|
|
return $_apps{$script}->(@_);
|
|
}
|
|
},
|
|
);
|
|
|
|
sub {
|
|
my $type = $_[0]->{LLTYPE} || 'handler';
|
|
return $_apps{$type}->(@_) if ( defined $_apps{$type} );
|
|
if ( defined $builder{$type} ) {
|
|
$_apps{$type} = $builder{$type}->();
|
|
return $_apps{$type}->(@_);
|
|
}
|
|
die "Unknown PSGI type $type";
|
|
};
|
|
|