|
|
|
@ -33,6 +33,7 @@ has displayEmptyValuesRule => ( is => 'rw', default => sub { 0 } ); |
|
|
|
|
has displayEmptyHeadersRule => ( is => 'rw', default => sub { 0 } ); |
|
|
|
|
has displayPersistentInfoRule => ( is => 'rw', default => sub { 0 } ); |
|
|
|
|
has displayComputedSessionRule => ( is => 'rw', default => sub { 0 } ); |
|
|
|
|
has displayNormalizedHeadersRule => ( is => 'rw', default => sub { 0 } ); |
|
|
|
|
has idRule => ( is => 'rw', default => sub { 1 } ); |
|
|
|
|
has sorted => ( is => 'rw', default => sub { 0 } ); |
|
|
|
|
has merged => ( is => 'rw', default => '' ); |
|
|
|
@ -96,6 +97,13 @@ sub init { |
|
|
|
|
) |
|
|
|
|
); |
|
|
|
|
return 0 unless $self->displayComputedSessionRule; |
|
|
|
|
$self->displayNormalizedHeadersRule( |
|
|
|
|
$self->p->buildRule( |
|
|
|
|
$self->conf->{checkUserDisplayNormalizedHeaders}, |
|
|
|
|
'checkUserDisplayNormalizedHeaders' |
|
|
|
|
) |
|
|
|
|
); |
|
|
|
|
return 0 unless $self->displayNormalizedHeadersRule; |
|
|
|
|
|
|
|
|
|
# Init. other options |
|
|
|
|
$self->sorted( $self->conf->{impersonationRule} |
|
|
|
@ -495,7 +503,7 @@ sub _headers { |
|
|
|
|
if ( $keysToRemove |
|
|
|
|
&& $self->conf->{checkUserHiddenHeaders}->{$vhost} =~ /\w+/ ); |
|
|
|
|
|
|
|
|
|
if ( $keysToRemove eq '__all__' ) { |
|
|
|
|
if ( $keysToRemove && $keysToRemove eq '__all__' ) { |
|
|
|
|
$self->logger->debug( |
|
|
|
|
"Overwrite for VirtualHost: $vhost ALL valued header(s)..."); |
|
|
|
|
@$headers = map { |
|
|
|
@ -504,7 +512,7 @@ sub _headers { |
|
|
|
|
: $_ |
|
|
|
|
} @$headers; |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
elsif ($keysToRemove) { |
|
|
|
|
$self->logger->debug( |
|
|
|
|
"Mask hidden header(s) for VirtualHost: $vhost"); |
|
|
|
|
my $hash = { map { $_->{key} => $_->{value} } @$headers }; |
|
|
|
@ -522,6 +530,19 @@ sub _headers { |
|
|
|
|
$self->logger->debug("Remove empty headers..."); |
|
|
|
|
@$headers = grep $_->{value} =~ /.+/, @$headers; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
# Normalize headers name if required |
|
|
|
|
if ( $self->displayNormalizedHeadersRule->( $req, $savedUserData ) ) { |
|
|
|
|
$self->logger->debug("Normalize headers..."); |
|
|
|
|
@$headers = map { |
|
|
|
|
no strict 'refs'; |
|
|
|
|
{ |
|
|
|
|
key => &{ $self->p->HANDLER . '::cgiName' }( $_->{key} ), |
|
|
|
|
value => $_->{value} |
|
|
|
|
} |
|
|
|
|
} @$headers; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$self->logger->debug( |
|
|
|
|
"Return \"$attrs->{ $self->{conf}->{whatToTrace} }\" headers"); |
|
|
|
|
|
|
|
|
@ -533,7 +554,7 @@ sub _createArray { |
|
|
|
|
my $array_attrs = []; |
|
|
|
|
|
|
|
|
|
if ( $self->displayEmptyValuesRule->( $req, $userData ) ) { |
|
|
|
|
$self->logger->debug("Delete hidden attributes"); |
|
|
|
|
$self->logger->debug("Delete hidden attributes..."); |
|
|
|
|
foreach my $k ( sort keys %$attrs ) { |
|
|
|
|
|
|
|
|
|
# Ignore hidden attributes |
|
|
|
@ -542,7 +563,7 @@ sub _createArray { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
$self->logger->debug("Delete hidden and empty attributes"); |
|
|
|
|
$self->logger->debug("Delete hidden and empty attributes..."); |
|
|
|
|
foreach my $k ( sort keys %$attrs ) { |
|
|
|
|
|
|
|
|
|
# Ignore hidden attributes and empty values |
|
|
|
@ -615,13 +636,13 @@ sub _removeKeys { |
|
|
|
|
|
|
|
|
|
$self->logger->debug($msg); |
|
|
|
|
if ($mask) { |
|
|
|
|
$self->userLogger->info('Hide some headers'); |
|
|
|
|
$self->userLogger->info('Hide some headers...'); |
|
|
|
|
foreach (@keys) { |
|
|
|
|
$attrs->{$_} = '******' if $attrs->{$_} =~ /\w+/; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
$self->userLogger->info('Remove some headers'); |
|
|
|
|
$self->userLogger->info('Remove some headers...'); |
|
|
|
|
delete @$attrs{@keys}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|