| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #!/usr/bin/perl
- use warnings;
- use strict;
- BEGIN {
- use File::Basename;
- use lib (dirname(__FILE__));
- }
- use IO::Select;
- use IO::Socket;
- use IO::Socket::SSL;
- use Test::More;
- use nrpe;
- my @response;
- if (!supports_ssl()) {
- plan skip_all => 'SSL/TLS support unavailable.';
- }
- plan tests => 16;
- ensure_daemon_running();
- switch_config_file("configs/ssl.cfg");
- restart_daemon();
- # v4
- @response = send_request('port' => 40321);
- is_response(\@response, 'v4 version check');
- @response = send_request('port' => 40321, 'length' => +10);
- is_response(\@response, 'v4 version check - large');
- @response = send_request('port' => 40321, 'length' => -10);
- isnt_response(\@response, "v4 version check - short"); # Expected failure - server read timeout
- @response = send_request('port' => 40321, 'crc' => 0);
- isnt_response(\@response, "v4 version check - invalid crc"); # Expected failure - crc
- @response = send_request('port' => 40321, 'type' => 20);
- isnt_response(\@response, "v4 version check - invalid type"); # Expected failure - invalid type
- # v3
- @response = send_request('port' => 40321, 'version' => 3);
- isnt_response(\@response, 'v3 version check'); # Expected failure
- # v2
- @response = send_request('port' => 40321, 'version' => 2);
- is_response(\@response, 'v2 version check', 'version' => 2);
- # SSL/TLS Connection/Handshake Timeout
- SKIP: {
- my $client = IO::Socket->new(
- Domain => AF_INET,
- Type => SOCK_STREAM,
- proto => 'tcp',
- PeerHost => 'localhost',
- PeerPort => 40321,
- ) || skip 'failed create socket', 1;
- my $sel = IO::Select->new( $client );
- my @c = $sel->can_read(15);
- is(@c, 1, 'SSL/TLS Handshake timeout');
- $client->close();
- }
- # SSL/TLS short header - result (less than common)
- send_and_wait_for_timeout(pack('n!n!N! ', 4, 1, 0), 'v4 missing result');
- # SSL/TLS short header - alignment
- send_and_wait_for_timeout(pack('n!n!N!n! ', 4, 1, 0, 0), 'v4 missing alignmnet');
- # SSL/TLS short header - buffer size
- send_and_wait_for_timeout(pack('n!n!N!n! n!', 4, 1, 0, 0, 0), 'v4 buffer size');
- # SSL/TLS large buffer size
- send_and_wait_for_timeout(pack('n!n!N!n! n! N!', 4, 1, 0, 0, 0, 75*1024), 'v4 large buffer size', 'timeout' => 0);
- done_testing();
|