WIP - Append checkHeaders function (#1658)
This commit is contained in:
parent
557539805a
commit
e296d1d407
|
@ -1,7 +1,7 @@
|
|||
# Main running methods file
|
||||
package Lemonldap::NG::Handler::Main::Run;
|
||||
|
||||
our $VERSION = '2.0.2';
|
||||
our $VERSION = '2.0.3';
|
||||
|
||||
package Lemonldap::NG::Handler::Main;
|
||||
|
||||
|
@ -44,17 +44,17 @@ sub getStatus {
|
|||
if ( $ENV{LLNGSTATUSHOST} ) {
|
||||
require IO::Socket::INET;
|
||||
foreach ( 64322 .. 64331 ) {
|
||||
if ( $statusOut =
|
||||
IO::Socket::INET->new( Proto => 'udp', LocalPort => $_ ) )
|
||||
if ( $statusOut
|
||||
= IO::Socket::INET->new( Proto => 'udp', LocalPort => $_ ) )
|
||||
{
|
||||
$args =
|
||||
' host=' . ( $ENV{LLNGSTATUSCLIENT} || 'localhost' ) . ":$_";
|
||||
$args = ' host='
|
||||
. ( $ENV{LLNGSTATUSCLIENT} || 'localhost' ) . ":$_";
|
||||
last;
|
||||
}
|
||||
}
|
||||
return $class->abort( $req,
|
||||
"$class: status page can not be displayed, unable to open socket" )
|
||||
unless ($statusOut);
|
||||
"$class: status page can not be displayed, unable to open socket"
|
||||
) unless ($statusOut);
|
||||
}
|
||||
return $class->abort( $req, "$class: status page can not be displayed" )
|
||||
unless ( $statusPipe and $statusOut );
|
||||
|
@ -243,8 +243,8 @@ sub lmLog {
|
|||
sub checkMaintenanceMode {
|
||||
my ( $class, $req ) = @_;
|
||||
my $vhost = $class->resolveAlias($req);
|
||||
my $_maintenance =
|
||||
( defined $class->tsv->{maintenance}->{$vhost} )
|
||||
my $_maintenance
|
||||
= ( defined $class->tsv->{maintenance}->{$vhost} )
|
||||
? $class->tsv->{maintenance}->{$vhost}
|
||||
: $class->tsv->{maintenance}->{_};
|
||||
|
||||
|
@ -272,8 +272,8 @@ sub grant {
|
|||
}
|
||||
}
|
||||
for (
|
||||
my $i = 0 ;
|
||||
$i < ( $class->tsv->{locationCount}->{$vhost} || 0 ) ;
|
||||
my $i = 0;
|
||||
$i < ( $class->tsv->{locationCount}->{$vhost} || 0 );
|
||||
$i++
|
||||
)
|
||||
{
|
||||
|
@ -405,8 +405,8 @@ sub fetchId {
|
|||
my $lookForHttpCookie = ( $class->tsv->{securedCookie} =~ /^(2|3)$/
|
||||
and not $class->_isHttps( $req, $vhost ) );
|
||||
my $cn = $class->tsv->{cookieName};
|
||||
my $value =
|
||||
$lookForHttpCookie
|
||||
my $value
|
||||
= $lookForHttpCookie
|
||||
? ( $t =~ /${cn}http=([^,; ]+)/o ? $1 : 0 )
|
||||
: ( $t =~ /$cn=([^,; ]+)/o ? $1 : 0 );
|
||||
|
||||
|
@ -446,8 +446,8 @@ sub retrieveSession {
|
|||
|
||||
# 2. Get the session from cache or backend
|
||||
my $session = $req->data->{session} = (
|
||||
Lemonldap::NG::Common::Session->new( {
|
||||
storageModule => $class->tsv->{sessionStorageModule},
|
||||
Lemonldap::NG::Common::Session->new(
|
||||
{ storageModule => $class->tsv->{sessionStorageModule},
|
||||
storageModuleOptions => $class->tsv->{sessionStorageOptions},
|
||||
cacheModule => $class->tsv->{sessionCacheModule},
|
||||
cacheModuleOptions => $class->tsv->{sessionCacheOptions},
|
||||
|
@ -464,11 +464,12 @@ sub retrieveSession {
|
|||
|
||||
# Verify that session is valid
|
||||
$class->logger->error(
|
||||
"_utime is not defined. This should not happen. Check if it is well transmitted to handler"
|
||||
"_utime is not defined. This should not happen. Check if it is well transmitted to handler"
|
||||
) unless $session->data->{_utime};
|
||||
|
||||
$class->logger->debug("Check session validity from Handler");
|
||||
$class->logger->debug( "Session timeout -> " . $class->tsv->{timeout} );
|
||||
$class->logger->debug(
|
||||
"Session timeout -> " . $class->tsv->{timeout} );
|
||||
$class->logger->debug( "Session timeoutActivity -> "
|
||||
. $class->tsv->{timeoutActivity}
|
||||
. "s" )
|
||||
|
@ -488,8 +489,7 @@ sub retrieveSession {
|
|||
my $ttl = $class->tsv->{timeout} - $now + $session->data->{_utime};
|
||||
$class->logger->debug( "Session TTL = " . $ttl );
|
||||
|
||||
if (
|
||||
$now - $session->data->{_utime} > $class->tsv->{timeout}
|
||||
if ($now - $session->data->{_utime} > $class->tsv->{timeout}
|
||||
or ( $class->tsv->{timeoutActivity}
|
||||
and $session->data->{_lastSeen}
|
||||
and $delta > $class->tsv->{timeoutActivity} )
|
||||
|
@ -503,10 +503,9 @@ sub retrieveSession {
|
|||
}
|
||||
|
||||
# Update the session to notify activity, if necessary
|
||||
if (
|
||||
$class->tsv->{timeoutActivity}
|
||||
and ( $now - $session->data->{_lastSeen} >
|
||||
$class->tsv->{timeoutActivityInterval} )
|
||||
if ($class->tsv->{timeoutActivity}
|
||||
and ( $now - $session->data->{_lastSeen}
|
||||
> $class->tsv->{timeoutActivityInterval} )
|
||||
)
|
||||
{
|
||||
$req->data->{session}->update( { '_lastSeen' => $now } );
|
||||
|
@ -612,8 +611,8 @@ sub isUnprotected {
|
|||
my ( $class, $req, $uri ) = @_;
|
||||
my $vhost = $class->resolveAlias($req);
|
||||
for (
|
||||
my $i = 0 ;
|
||||
$i < ( $class->tsv->{locationCount}->{$vhost} || 0 ) ;
|
||||
my $i = 0;
|
||||
$i < ( $class->tsv->{locationCount}->{$vhost} || 0 );
|
||||
$i++
|
||||
)
|
||||
{
|
||||
|
@ -632,8 +631,8 @@ sub sendHeaders {
|
|||
if ( defined $class->tsv->{forgeHeaders}->{$vhost} ) {
|
||||
|
||||
# Log headers in debug mode
|
||||
my %headers =
|
||||
$class->tsv->{forgeHeaders}->{$vhost}->( $req, $session );
|
||||
my %headers
|
||||
= $class->tsv->{forgeHeaders}->{$vhost}->( $req, $session );
|
||||
foreach my $h ( sort keys %headers ) {
|
||||
if ( defined( my $v = $headers{$h} ) ) {
|
||||
$class->logger->debug("Send header $h with value $v");
|
||||
|
@ -646,6 +645,23 @@ sub sendHeaders {
|
|||
}
|
||||
}
|
||||
|
||||
sub checkHeaders {
|
||||
my ( $class, $req, $session ) = @_;
|
||||
my $vhost = $class->resolveAlias($req);
|
||||
my $array_headers = [];
|
||||
if ( defined $class->tsv->{forgeHeaders}->{$vhost} ) {
|
||||
|
||||
# Create array of hashes with headers
|
||||
my %headers
|
||||
= $class->tsv->{forgeHeaders}->{$vhost}->( $req, $session );
|
||||
foreach my $h ( sort keys %headers ) {
|
||||
push @$array_headers, { key => $h, value => $headers{$h} }
|
||||
if ( defined $headers{$h} );
|
||||
}
|
||||
}
|
||||
return $array_headers;
|
||||
}
|
||||
|
||||
## @rmethod void cleanHeaders()
|
||||
# Unset HTTP headers, when sendHeaders is skipped
|
||||
sub cleanHeaders {
|
||||
|
@ -738,8 +754,8 @@ sub postOutputFilter {
|
|||
$class->logger->debug("Filling a html form with fake data");
|
||||
|
||||
$class->unset_header_in( $req, "Accept-Encoding" );
|
||||
my %postdata =
|
||||
$class->tsv->{outputPostData}->{$vhost}->{$uri}->( $req, $session );
|
||||
my %postdata = $class->tsv->{outputPostData}->{$vhost}->{$uri}
|
||||
->( $req, $session );
|
||||
my $formParams = $class->tsv->{postFormParams}->{$vhost}->{$uri};
|
||||
my $js = $class->postJavascript( $req, \%postdata, $formParams );
|
||||
$class->addToHtmlHead( $req, $js );
|
||||
|
@ -756,8 +772,8 @@ sub postInputFilter {
|
|||
if ( defined( $class->tsv->{inputPostData}->{$vhost}->{$uri} ) ) {
|
||||
$class->logger->debug("Replacing fake data with real form data");
|
||||
|
||||
my %data =
|
||||
$class->tsv->{inputPostData}->{$vhost}->{$uri}->( $req, $session );
|
||||
my %data = $class->tsv->{inputPostData}->{$vhost}->{$uri}
|
||||
->( $req, $session );
|
||||
foreach ( keys %data ) {
|
||||
$data{$_} = uri_escape( $data{$_} );
|
||||
}
|
||||
|
@ -777,18 +793,19 @@ sub postJavascript {
|
|||
foreach my $name ( keys %$data ) {
|
||||
use bytes;
|
||||
my $value = "x" x bytes::length( $data->{$name} );
|
||||
$filler .=
|
||||
"form.find('input[name=\"$name\"], select[name=\"$name\"], textarea[name=\"$name\"]').val('$value')\n";
|
||||
$filler
|
||||
.= "form.find('input[name=\"$name\"], select[name=\"$name\"], textarea[name=\"$name\"]').val('$value')\n";
|
||||
}
|
||||
|
||||
my $submitter =
|
||||
$formParams->{buttonSelector} eq "none" ? ""
|
||||
my $submitter
|
||||
= $formParams->{buttonSelector} eq "none" ? ""
|
||||
: $formParams->{buttonSelector}
|
||||
? "form.find('$formParams->{buttonSelector}').click();\n"
|
||||
: "form.submit();\n";
|
||||
|
||||
my $jqueryUrl = $formParams->{jqueryUrl} || "";
|
||||
$jqueryUrl = &{ $class->tsv->{portal} } . "skins/common/js/jquery-1.10.2.js"
|
||||
$jqueryUrl
|
||||
= &{ $class->tsv->{portal} } . "skins/common/js/jquery-1.10.2.js"
|
||||
if ( $jqueryUrl eq "default" );
|
||||
$jqueryUrl = "<script type='text/javascript' src='$jqueryUrl'></script>\n"
|
||||
if ($jqueryUrl);
|
||||
|
|
Loading…
Reference in New Issue
Block a user