3 no warnings qw(redefine once);
8 use Test::More tests => 7;
14 require './l7directord';
17 our $module_error = 0;
18 eval { require Net::LDAP; };
23 #...............................................
27 skip q{Can't locate Net/LDAP.pm in @INC}, 1 if $module_error;
29 my $sock = create_sock($port);
30 skip 'cannot create socket', 1 if !$sock;
31 # 30 0C 02 01 01 61 07 0A 01 00 04 00 04 00 __ __ 0....a........
32 my $normal_response = pack 'H*', '300C02010161070A010004000400';
33 my $pid = prepare_child($sock, [$normal_response]);
35 my $v = { negotiatetimeout => 3, };
36 my $r = { server => {ip => '127.0.0.1', port => $port }, fail_counts => 0 };
37 my $got = check_ldap($v, $r);
38 is $got, $main::SERVICE_UP, 'check_ldap - connect ok';
43 skip q{Can't locate Net/LDAP.pm in @INC}, 1 if $module_error;
45 my $sock = create_sock($port);
46 skip 'cannot create socket', 1 if !$sock;
47 # 30 0C 02 01 01 61 07 0A 01 00 04 00 04 00 __ __ 0....a........
48 my $normal_response = pack 'H*', '300C02010161070A010004000400';
49 my $pid = prepare_child($sock, [$normal_response]);
51 my $v = { negotiatetimeout => 3, checkport => $port };
52 my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
53 my $got = check_ldap($v, $r);
54 is $got, $main::SERVICE_UP, 'check_ldap - checkport connect ok';
59 skip q{Can't locate Net/LDAP.pm in @INC}, 1 if $module_error;
61 my $sock = create_sock($port);
62 skip 'cannot create socket', 1 if !$sock;
63 # 30 0C 02 01 01 61 07 0A 01 00 04 00 04 00 __ __ 0....a........
64 my $normal_response = pack 'H*', '300C02010161070A010004000400';
65 # 30 64 02 01 02 64 5F 04 11 64 63 3D 65 78 61 6D 0d...d_..dc=exam
66 # 70 6C 65 2C 64 63 3D 63 6F 6D 30 4A 30 27 04 0B ple,dc=com0J0'..
67 # 6F 62 6A 65 63 74 43 6C 61 73 73 31 18 04 08 64 objectClass1...d
68 # 63 4F 62 6A 65 63 74 04 0C 6F 72 67 61 6E 69 7A cObject..organiz
69 # 61 74 69 6F 6E 30 0F 04 02 64 63 31 09 04 07 65 ation0...dc1...e
70 # 78 61 6D 70 6C 65 30 0E 04 01 6F 31 09 04 07 65 xample0...o1...e
71 # 78 61 6D 70 6C 65 __ __ __ __ __ __ __ __ __ __ xample
72 my $search_response = pack 'H*',
73 '3064020102645F041164633D6578616D706C652C64633D636F6D304A3027040B' .
74 '6F626A656374436C6173733118040864634F626A656374040C6F7267616E697A' .
75 '6174696F6E300F04026463310904076578616D706C65300E04016F3109040765' .
77 my $pid = prepare_child($sock, [$normal_response, $search_response]);
79 my $v = {negotiatetimeout => 3, };
80 my $r = { server => {ip => '127.0.0.1', port => $port}, request => 'dc=example,dc=com' , fail_counts => 0 };
81 my $got = check_ldap($v, $r);
82 is $got, $main::SERVICE_UP, 'check_ldap - search ok';
87 skip q{Can't locate Net/LDAP.pm in @INC}, 1 if $module_error;
89 my $sock = create_sock($port);
90 skip 'cannot create socket', 1 if !$sock;
91 # 30 0C 02 01 01 61 07 0A 01 00 04 00 04 00 __ __ 0....a........
92 my $normal_response = pack 'H*', '300C02010161070A010004000400';
93 # 30 64 02 01 02 64 5F 04 11 64 63 3D 65 78 61 6D 0d...d_..dc=exam
94 # 70 6C 65 2C 64 63 3D 63 6F 6D 30 4A 30 27 04 0B ple,dc=com0J0'..
95 # 6F 62 6A 65 63 74 43 6C 61 73 73 31 18 04 08 64 objectClass1...d
96 # 63 4F 62 6A 65 63 74 04 0C 6F 72 67 61 6E 69 7A cObject..organiz
97 # 61 74 69 6F 6E 30 0F 04 02 64 63 31 09 04 07 65 ation0...dc1...e
98 # 78 61 6D 70 6C 65 30 0E 04 01 6F 31 09 04 07 65 xample0...o1...e
99 # 78 61 6D 70 6C 65 __ __ __ __ __ __ __ __ __ __ xample
100 my $search_response = pack 'H*',
101 '3064020102645F041164633D6578616D706C652C64633D636F6D304A3027040B' .
102 '6F626A656374436C6173733118040864634F626A656374040C6F7267616E697A' .
103 '6174696F6E300F04026463310904076578616D706C65300E04016F3109040765' .
105 my $pid = prepare_child($sock, [$normal_response, $search_response]);
107 my $v = {negotiatetimeout => 3};
108 my $r = { server => {ip => '127.0.0.1', port => $port}, request => 'dc=example,dc=com', receive => 'example' , fail_counts => 0 };
109 my $got = check_ldap($v, $r);
110 is $got, $main::SERVICE_UP, 'check_ldap - response check ok';
115 skip q{Can't locate Net/LDAP.pm in @INC}, 1 if $module_error;
117 my $sock = create_sock($port);
118 skip 'cannot create socket', 1 if !$sock;
119 # 30 0C 02 01 01 61 07 0A 01 00 04 00 04 00 __ __ 0....a........
120 my $normal_response = pack 'H*', '300C02010161070A010004000400';
121 my $pid = prepare_child($sock, [$normal_response], 2);
123 my $v = {negotiatetimeout => 1};
124 my $r = { server => {ip => '127.0.0.1', port => $port}, request => 'dc=example,dc=com', receive => 'example' , fail_counts => 0 };
125 my $got = check_ldap($v, $r);
126 is $got, $main::SERVICE_DOWN, 'check_ldap - timeout';
131 skip q{Can't locate Net/LDAP.pm in @INC}, 1 if $module_error;
133 my $sock = create_sock($port);
134 skip 'cannot create socket', 1 if !$sock;
135 # 30 0C 02 01 01 61 07 0A 01 00 04 00 04 00 __ __ 0....a........
136 my $normal_response = pack 'H*', '300C02010161070A010004000400';
137 # 30 64 02 01 02 64 5F 04 11 64 63 3D 65 78 61 6D 0d...d_..dc=exam
138 # 70 6C 65 2C 64 63 3D 63 6F 6D 30 4A 30 27 04 0B ple,dc=com0J0'..
139 # 6F 62 6A 65 63 74 43 6C 61 73 73 31 18 04 08 64 objectClass1...d
140 # 63 4F 62 6A 65 63 74 04 0C 6F 72 67 61 6E 69 7A cObject..organiz
141 # 61 74 69 6F 6E 30 0F 04 02 64 63 31 09 04 07 65 ation0...dc1...e
142 # 78 61 6D 70 6C 65 30 0E 04 01 6F 31 09 04 07 65 xample0...o1...e
143 # 78 61 6D 70 6C 65 __ __ __ __ __ __ __ __ __ __ xample
144 my $search_response = pack 'H*',
145 '3064020102645F041164633D6578616D706C652C64633D636F6D304A3027040B' .
146 '6F626A656374436C6173733118040864634F626A656374040C6F7267616E697A' .
147 '6174696F6E300F04026463310904076578616D706C65300E04016F3109040765' .
149 my $pid = prepare_child($sock, [$normal_response, $search_response]);
151 my $v = {negotiatetimeout => 3};
152 my $r = { server => {ip => '127.0.0.1', port => $port}, request => 'dc=example,dc=com', receive => 'foo' , fail_counts => 0 };
153 my $got = check_ldap($v, $r);
154 is $got, $main::SERVICE_DOWN, 'check_ldap - response error';
159 skip q{Can't locate Net/LDAP.pm in @INC}, 1 if $module_error;
162 my $v = {negotiatetimeout => 1, checkport => $port };
163 my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
164 my $got = check_ldap($v, $r);
165 is $got, $main::SERVICE_DOWN, 'check_ldap - connect error';
168 #...............................................
174 my $sock = IO::Socket::INET->new(
176 LocalAddr => 'localhost',
188 my $s = $sock->accept;
190 if ($sleep) { sleep $sleep; }
191 for my $response (@$res) {
195 $length = unpack('C', $length);
196 #print "read length: $length\n";
198 read $s, $req, $length;
199 #print "read: ", unpack('H*', $req), "\n";
200 my $num = substr $req, 2, 1;
201 $response =~ s/^(....)./$1$num/;
217 *ld_log = \&__ld_log;
218 *get_status = \&__get_status;
221 return $main::SERVICE_UP;