expected-content: add capability to check headers
This commit is contained in:
parent
6d24e1fb36
commit
db50bade74
|
@ -54,6 +54,8 @@ sub custom_content_calc {
|
||||||
|
|
||||||
$self->{result_values}->{content} = $options{new_datas}->{$self->{instance} . '_content'};
|
$self->{result_values}->{content} = $options{new_datas}->{$self->{instance} . '_content'};
|
||||||
$self->{result_values}->{code} = $options{new_datas}->{$self->{instance} . '_code'};
|
$self->{result_values}->{code} = $options{new_datas}->{$self->{instance} . '_code'};
|
||||||
|
$self->{result_values}->{header} = $options{new_datas}->{$self->{instance} . '_header'};
|
||||||
|
$self->{result_values}->{first_header} = $options{new_datas}->{$self->{instance} . '_first_header'};
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,7 +68,7 @@ sub set_counters {
|
||||||
|
|
||||||
$self->{maps_counters}->{global} = [
|
$self->{maps_counters}->{global} = [
|
||||||
{ label => 'content', threshold => 0, set => {
|
{ label => 'content', threshold => 0, set => {
|
||||||
key_values => [ { name => 'content' }, { name => 'code' } ],
|
key_values => [ { name => 'content' }, { name => 'code' }, { name => 'first_header' }, { name => 'header' } ],
|
||||||
closure_custom_output => $self->can('custom_content_output'),
|
closure_custom_output => $self->can('custom_content_output'),
|
||||||
closure_custom_calc => $self->can('custom_content_calc'),
|
closure_custom_calc => $self->can('custom_content_calc'),
|
||||||
closure_custom_perfdata => sub { return 0; },
|
closure_custom_perfdata => sub { return 0; },
|
||||||
|
@ -162,7 +164,13 @@ sub manage_selection {
|
||||||
my $webcontent = $self->{http}->request();
|
my $webcontent = $self->{http}->request();
|
||||||
my $timeelapsed = tv_interval($timing0, [gettimeofday]);
|
my $timeelapsed = tv_interval($timing0, [gettimeofday]);
|
||||||
|
|
||||||
$self->{global} = { time => $timeelapsed, content => $webcontent, code => $self->{http}->get_code() };
|
$self->{global} = {
|
||||||
|
time => $timeelapsed,
|
||||||
|
content => $webcontent,
|
||||||
|
code => $self->{http}->get_code(),
|
||||||
|
header => $self->{http}->get_header(),
|
||||||
|
first_header => $self->{http}->get_first_header(),
|
||||||
|
};
|
||||||
|
|
||||||
if (defined($self->{option_results}->{extracted_pattern}) && $self->{option_results}->{extracted_pattern} ne '' &&
|
if (defined($self->{option_results}->{extracted_pattern}) && $self->{option_results}->{extracted_pattern} ne '' &&
|
||||||
$webcontent =~ /$self->{option_results}->{extracted_pattern}/mi) {
|
$webcontent =~ /$self->{option_results}->{extracted_pattern}/mi) {
|
||||||
|
@ -324,17 +332,17 @@ Threshold critical for extracted value
|
||||||
=item B<--unknown-content>
|
=item B<--unknown-content>
|
||||||
|
|
||||||
Set warning threshold for content page (Default: '').
|
Set warning threshold for content page (Default: '').
|
||||||
Can used special variables like: %{content}, %{code}
|
Can used special variables like: %{content}, %{header}, %{first_header}, %{code}
|
||||||
|
|
||||||
=item B<--warning-content>
|
=item B<--warning-content>
|
||||||
|
|
||||||
Set warning threshold for status (Default: '').
|
Set warning threshold for status (Default: '').
|
||||||
Can used special variables like: %{content}, %{code}
|
Can used special variables like: %{content}, %{header}, %{first_header}, %{code}
|
||||||
|
|
||||||
=item B<--critical-content>
|
=item B<--critical-content>
|
||||||
|
|
||||||
Set critical threshold for content page (Default: '').
|
Set critical threshold for content page (Default: '').
|
||||||
Can used special variables like: %{content}, %{code}
|
Can used special variables like: %{content}, %{header}, %{first_header}, %{code}
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
|
|
|
@ -381,9 +381,27 @@ sub request {
|
||||||
return $self->{response_body};
|
return $self->{response_body};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub get_headers {
|
||||||
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
|
my $headers = '';
|
||||||
|
foreach (keys %{$self->{response_headers}->[$options{nheader}]}) {
|
||||||
|
next if (/response_line/);
|
||||||
|
foreach my $value (@{$self->{response_headers}->[$options{nheader}]->{$_}}) {
|
||||||
|
$headers .= "$_: " . $value . "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $headers;
|
||||||
|
}
|
||||||
|
|
||||||
sub get_first_header {
|
sub get_first_header {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
|
if (!defined($options{name})) {
|
||||||
|
return $self->get_headers(nheader => 0);
|
||||||
|
}
|
||||||
|
|
||||||
return undef
|
return undef
|
||||||
if (!defined($self->{response_headers}->[0]->{ lc($options{name}) }));
|
if (!defined($self->{response_headers}->[0]->{ lc($options{name}) }));
|
||||||
return wantarray ? @{$self->{response_headers}->[0]->{ lc($options{name}) }} : $self->{response_headers}->[0]->{ lc($options{name}) }->[0];
|
return wantarray ? @{$self->{response_headers}->[0]->{ lc($options{name}) }} : $self->{response_headers}->[0]->{ lc($options{name}) }->[0];
|
||||||
|
@ -392,6 +410,10 @@ sub get_first_header {
|
||||||
sub get_header {
|
sub get_header {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
|
if (!defined($options{name})) {
|
||||||
|
return $self->get_headers(nheader => -1);
|
||||||
|
}
|
||||||
|
|
||||||
return undef
|
return undef
|
||||||
if (!defined($self->{response_headers}->[-1]->{ lc($options{name}) }));
|
if (!defined($self->{response_headers}->[-1]->{ lc($options{name}) }));
|
||||||
return wantarray ? @{$self->{response_headers}->[-1]->{ lc($options{name}) }} : $self->{response_headers}->[-1]->{ lc($options{name}) }->[0];
|
return wantarray ? @{$self->{response_headers}->[-1]->{ lc($options{name}) }} : $self->{response_headers}->[-1]->{ lc($options{name}) }->[0];
|
||||||
|
|
|
@ -238,10 +238,24 @@ sub request {
|
||||||
return $self->{response}->content;
|
return $self->{response}->content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub get_headers {
|
||||||
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
|
my $headers = '';
|
||||||
|
foreach ($options{response}->header_field_names()) {
|
||||||
|
$headers .= "$_: " . $options{response}->header($_) . "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
return $headers;
|
||||||
|
}
|
||||||
|
|
||||||
sub get_first_header {
|
sub get_first_header {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
my @redirects = $self->{response}->redirects();
|
my @redirects = $self->{response}->redirects();
|
||||||
|
if (!defined($options{name})) {
|
||||||
|
return $self->get_headers(response => defined($redirects[0]) ? $redirects[0] : $self->{response});
|
||||||
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
defined($redirects[0]) ?
|
defined($redirects[0]) ?
|
||||||
|
@ -253,6 +267,9 @@ sub get_first_header {
|
||||||
sub get_header {
|
sub get_header {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
|
if (!defined($options{name})) {
|
||||||
|
return $self->get_headers(response => $self->{response});
|
||||||
|
}
|
||||||
return $self->{headers}->header($options{name});
|
return $self->{headers}->header($options{name});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue