2017-02-16 08:37:40 +01:00
|
|
|
# Main FastCGI handler adapter for LLNG handler
|
|
|
|
#
|
2019-02-04 20:58:04 +01:00
|
|
|
# See https://lemonldap-ng.org/documentation/latest/handlerarch
|
2017-02-11 08:47:22 +01:00
|
|
|
package Lemonldap::NG::Handler::Server::Main;
|
|
|
|
|
|
|
|
use strict;
|
|
|
|
|
2021-01-14 22:17:50 +01:00
|
|
|
our $VERSION = '2.0.10';
|
2017-02-28 21:53:19 +01:00
|
|
|
|
2017-02-11 08:47:22 +01:00
|
|
|
use base 'Lemonldap::NG::Handler::PSGI::Main';
|
|
|
|
|
2017-02-13 12:58:39 +01:00
|
|
|
use constant defaultLogger => 'Lemonldap::NG::Common::Logger::Syslog';
|
|
|
|
|
2017-02-11 08:47:22 +01:00
|
|
|
# In server mode, headers are not passed to a PSGI application but returned
|
|
|
|
# to the server
|
|
|
|
|
|
|
|
## @method void set_header_in(hash headers)
|
|
|
|
# sets or modifies request headers
|
|
|
|
# @param headers hash containing header names => header value
|
|
|
|
sub set_header_in {
|
2017-03-28 23:07:49 +02:00
|
|
|
my ( $class, $req, %headers ) = @_;
|
2017-02-11 08:47:22 +01:00
|
|
|
for my $k ( keys %headers ) {
|
2017-03-28 23:07:49 +02:00
|
|
|
$req->{env}->{ cgiName($k) } = $headers{$k};
|
2017-02-11 08:47:22 +01:00
|
|
|
}
|
2017-03-28 23:07:49 +02:00
|
|
|
push @{ $req->{respHeaders} }, %headers;
|
2017-02-11 08:47:22 +01:00
|
|
|
}
|
|
|
|
|
2021-01-14 22:17:50 +01:00
|
|
|
## @method void unset_header_in(array headers)
|
|
|
|
# deletes request headers and push headers that will be removed by LUA
|
|
|
|
# @param headers array containing header names
|
2017-02-11 08:47:22 +01:00
|
|
|
sub unset_header_in {
|
2021-01-14 11:40:21 +01:00
|
|
|
my ( $class, $req, @headers ) = @_;
|
2021-01-14 13:49:08 +01:00
|
|
|
$req->data->{deleteIndex} //= 1;
|
|
|
|
my $i = $req->data->{deleteIndex};
|
2021-01-14 22:17:50 +01:00
|
|
|
foreach my $header (@headers) {
|
2021-01-14 11:40:21 +01:00
|
|
|
$class->logger->debug("Delete header $header");
|
2021-01-14 22:17:50 +01:00
|
|
|
$req->{respHeaders} =
|
|
|
|
[ grep { $_ ne $header and $_ ne cgiName($header) }
|
2021-01-14 11:40:21 +01:00
|
|
|
@{ $req->{respHeaders} } ];
|
|
|
|
delete $req->{env}->{ cgiName($header) };
|
|
|
|
push @{ $req->{respHeaders} }, "Deleteheader$i", $header;
|
2021-01-14 13:49:08 +01:00
|
|
|
$i++;
|
|
|
|
push @{ $req->{respHeaders} }, "Deleteheader$i", cgiName($header);
|
2021-01-14 11:40:21 +01:00
|
|
|
$header =~ s/-/_/g;
|
|
|
|
delete $req->{env}->{$header};
|
|
|
|
$i++;
|
|
|
|
}
|
2021-01-14 13:49:08 +01:00
|
|
|
$req->data->{deleteIndex} = $i;
|
2017-02-11 08:47:22 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
# Inheritence is broken in this case with Debian >= jessie
|
|
|
|
*checkType = *Lemonldap::NG::Handler::PSGI::Main::checkType;
|
|
|
|
*setServerSignature = *Lemonldap::NG::Handler::PSGI::Main::setServerSignature;
|
|
|
|
*thread_share = *Lemonldap::NG::Handler::PSGI::Main::thread_share;
|
|
|
|
*set_user = *Lemonldap::NG::Handler::PSGI::Main::set_user;
|
2019-08-16 15:22:06 +02:00
|
|
|
*set_custom = *Lemonldap::NG::Handler::PSGI::Main::set_custom;
|
2017-02-11 08:47:22 +01:00
|
|
|
*set_header_out = *Lemonldap::NG::Handler::PSGI::Main::set_header_out;
|
|
|
|
*is_initial_req = *Lemonldap::NG::Handler::PSGI::Main::is_initial_req;
|
|
|
|
*print = *Lemonldap::NG::Handler::PSGI::Main::print;
|
|
|
|
*addToHtmlHead = *Lemonldap::NG::Handler::PSGI::Main::addToHtmlHead;
|
2017-03-28 23:07:49 +02:00
|
|
|
*cgiName = *Lemonldap::NG::Handler::PSGI::Main::cgiName;
|
2019-09-22 19:45:39 +02:00
|
|
|
|
2017-02-11 08:47:22 +01:00
|
|
|
1;
|