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.
66 lines
2.0 KiB
66 lines
2.0 KiB
# Plack app to use with Nginx
|
|
#
|
|
# This app can remplace FastCGI server using Starman, Twiggy, uWSGI-Plugin-PSGI,
|
|
# Feersum,...
|
|
|
|
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 {
|
|
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}->(@_);
|
|
}
|
|
},
|
|
);
|
|
|
|
unless ($>) {
|
|
die "Refuse to run as root. Aborting";
|
|
}
|
|
|
|
# Hook for customFunctions initialization
|
|
Lemonldap::NG::Handler::Main->onReload(
|
|
bless( {}, 'Lemonldap::NG::Handler::FastCGI::Loader' ),
|
|
'loadCustomHandlers' );
|
|
|
|
# Main routine
|
|
sub {
|
|
my $type = $_[0]->{LLTYPE} || 'handler';
|
|
return $_apps{$type}->(@_) if ( defined $_apps{$type} );
|
|
if ( defined $builder{$type} ) {
|
|
$_apps{$type} = $builder{$type}->();
|
|
return $_apps{$type}->(@_);
|
|
}
|
|
return [ 500, [], ["Unknown PSGI type $type"] ];
|
|
};
|
|
|
|
|