diff options
author | Holger Weiss <holger@zedat.fu-berlin.de> | 2013-09-30 00:03:24 +0200 |
---|---|---|
committer | Holger Weiss <holger@zedat.fu-berlin.de> | 2013-09-30 00:03:24 +0200 |
commit | 0b6423f9c99d9edf8c96fefd0f6c453859395aa1 (patch) | |
tree | 1c2b6b21704a294940f87c7892676998d8371707 /web/attachments/37324-nagiosplugins-netutils-20021210.diff | |
download | site-0b6423f9c99d9edf8c96fefd0f6c453859395aa1.tar.gz |
Import Nagios Plugins site
Import the Nagios Plugins web site, Cronjobs, infrastructure scripts,
and configuration files.
Diffstat (limited to 'web/attachments/37324-nagiosplugins-netutils-20021210.diff')
-rw-r--r-- | web/attachments/37324-nagiosplugins-netutils-20021210.diff | 434 |
1 files changed, 434 insertions, 0 deletions
diff --git a/web/attachments/37324-nagiosplugins-netutils-20021210.diff b/web/attachments/37324-nagiosplugins-netutils-20021210.diff new file mode 100644 index 0000000..06cdcbb --- /dev/null +++ b/web/attachments/37324-nagiosplugins-netutils-20021210.diff | |||
@@ -0,0 +1,434 @@ | |||
1 | Index: netutils.c | ||
2 | =================================================================== | ||
3 | RCS file: /cvsroot/nagiosplug/nagiosplug/plugins/netutils.c,v | ||
4 | retrieving revision 1.1.1.1 | ||
5 | diff -u -r1.1.1.1 netutils.c | ||
6 | --- netutils.c 28 Feb 2002 06:42:59 -0000 1.1.1.1 | ||
7 | +++ netutils.c 11 Dec 2002 02:38:43 -0000 | ||
8 | @@ -42,13 +42,11 @@ | ||
9 | int process_tcp_request2 (char *, int, char *, char *, int); | ||
10 | int process_tcp_request (char *, int, char *, char *, int); | ||
11 | int process_udp_request (char *, int, char *, char *, int); | ||
12 | -int process_request (char *, int, char *, char *, char *, int); | ||
13 | +int process_request (char *, int, int, char *, char *, int); | ||
14 | |||
15 | int my_tcp_connect (char *, int, int *); | ||
16 | int my_udp_connect (char *, int, int *); | ||
17 | -int my_connect (char *, int, int *, char *); | ||
18 | - | ||
19 | -int my_inet_aton (register const char *, struct in_addr *); | ||
20 | +int my_connect (char *, int, int *, int); | ||
21 | |||
22 | /* handles socket timeouts */ | ||
23 | void | ||
24 | @@ -64,47 +62,29 @@ | ||
25 | /* connects to a host on a specified TCP port, sends a string, | ||
26 | and gets a response */ | ||
27 | int | ||
28 | -process_tcp_request (char *server_address, | ||
29 | - int server_port, | ||
30 | - char *send_buffer, char *recv_buffer, int recv_size) | ||
31 | +process_tcp_request (char *server_address, int server_port, | ||
32 | + char *send_buffer, char *recv_buffer, int recv_size) | ||
33 | { | ||
34 | - int result; | ||
35 | - char proto[4] = "tcp"; | ||
36 | - | ||
37 | - result = process_request (server_address, | ||
38 | - server_port, | ||
39 | - proto, send_buffer, recv_buffer, recv_size); | ||
40 | - | ||
41 | - return result; | ||
42 | + return process_request (server_address, server_port, IPPROTO_TCP, | ||
43 | + send_buffer, recv_buffer, recv_size); | ||
44 | } | ||
45 | |||
46 | - | ||
47 | /* connects to a host on a specified UDP port, sends a string, and gets a | ||
48 | response */ | ||
49 | int | ||
50 | -process_udp_request (char *server_address, | ||
51 | - int server_port, | ||
52 | - char *send_buffer, char *recv_buffer, int recv_size) | ||
53 | +process_udp_request (char *server_address, int server_port, | ||
54 | + char *send_buffer, char *recv_buffer, int recv_size) | ||
55 | { | ||
56 | - int result; | ||
57 | - char proto[4] = "udp"; | ||
58 | - | ||
59 | - result = process_request (server_address, | ||
60 | - server_port, | ||
61 | - proto, send_buffer, recv_buffer, recv_size); | ||
62 | - | ||
63 | - return result; | ||
64 | + return process_request (server_address, server_port, IPPROTO_UDP, | ||
65 | + send_buffer, recv_buffer, recv_size); | ||
66 | } | ||
67 | |||
68 | - | ||
69 | - | ||
70 | /* connects to a host on a specified tcp port, sends a string, and gets a | ||
71 | response. loops on select-recv until timeout or eof to get all of a | ||
72 | multi-packet answer */ | ||
73 | int | ||
74 | -process_tcp_request2 (char *server_address, | ||
75 | - int server_port, | ||
76 | - char *send_buffer, char *recv_buffer, int recv_size) | ||
77 | +process_tcp_request2 (char *server_address, int server_port, | ||
78 | + char *send_buffer, char *recv_buffer, int recv_size) | ||
79 | { | ||
80 | |||
81 | int result; | ||
82 | @@ -115,7 +95,7 @@ | ||
83 | fd_set readfds; | ||
84 | int recv_length = 0; | ||
85 | |||
86 | - result = my_connect (server_address, server_port, &sd, "tcp"); | ||
87 | + result = my_connect (server_address, server_port, &sd, IPPROTO_TCP); | ||
88 | if (result != STATE_OK) | ||
89 | return STATE_CRITICAL; | ||
90 | |||
91 | @@ -149,24 +129,30 @@ | ||
92 | else { /* it has */ | ||
93 | recv_result = | ||
94 | recv (sd, recv_buffer + recv_length, recv_size - recv_length - 1, 0); | ||
95 | - if (recv_result == -1) { /* recv failed, bail out */ | ||
96 | + if (recv_result == -1) { | ||
97 | + /* recv failed, bail out */ | ||
98 | strcpy (recv_buffer + recv_length, ""); | ||
99 | result = STATE_WARNING; | ||
100 | break; | ||
101 | } | ||
102 | - else if (recv_result == 0) { /* end of file ? */ | ||
103 | + else if (recv_result == 0) { | ||
104 | + /* end of file ? */ | ||
105 | recv_buffer[recv_length] = 0; | ||
106 | break; | ||
107 | } | ||
108 | - else { /* we got data! */ | ||
109 | + else { | ||
110 | + /* we got data! */ | ||
111 | recv_length += recv_result; | ||
112 | - if (recv_length >= recv_size - 1) { /* buffer full, we're done */ | ||
113 | + if (recv_length >= recv_size - 1) { | ||
114 | + /* buffer full, we're done */ | ||
115 | recv_buffer[recv_size - 1] = 0; | ||
116 | break; | ||
117 | } | ||
118 | } | ||
119 | - } /* end if(!FD_ISSET(sd,&readfds)) */ | ||
120 | - } /* end while(1) */ | ||
121 | + } | ||
122 | + /* end if(!FD_ISSET(sd,&readfds)) */ | ||
123 | + } | ||
124 | + /* end while(1) */ | ||
125 | |||
126 | close (sd); | ||
127 | return result; | ||
128 | @@ -175,10 +161,8 @@ | ||
129 | /* connects to a host on a specified port, sends a string, and gets a | ||
130 | response */ | ||
131 | int | ||
132 | -process_request (char *server_address, | ||
133 | - int server_port, | ||
134 | - char *proto, | ||
135 | - char *send_buffer, char *recv_buffer, int recv_size) | ||
136 | +process_request (char *server_address, int server_port, int proto, | ||
137 | + char *send_buffer, char *recv_buffer, int recv_size) | ||
138 | { | ||
139 | int result; | ||
140 | int send_result; | ||
141 | @@ -218,7 +202,7 @@ | ||
142 | recv_result = recv (sd, recv_buffer, recv_size - 1, 0); | ||
143 | if (recv_result == -1) { | ||
144 | strcpy (recv_buffer, ""); | ||
145 | - if (!strcmp (proto, "tcp")) | ||
146 | + if (proto != IPPROTO_TCP) | ||
147 | printf ("recv() failed\n"); | ||
148 | result = STATE_WARNING; | ||
149 | } | ||
150 | @@ -236,196 +220,74 @@ | ||
151 | |||
152 | |||
153 | /* opens a connection to a remote host/tcp port */ | ||
154 | + | ||
155 | int | ||
156 | my_tcp_connect (char *host_name, int port, int *sd) | ||
157 | { | ||
158 | - int result; | ||
159 | - char proto[4] = "tcp"; | ||
160 | - | ||
161 | - result = my_connect (host_name, port, sd, proto); | ||
162 | - | ||
163 | - return result; | ||
164 | + return my_connect (host_name, port, sd, IPPROTO_TCP); | ||
165 | } | ||
166 | |||
167 | - | ||
168 | /* opens a connection to a remote host/udp port */ | ||
169 | int | ||
170 | my_udp_connect (char *host_name, int port, int *sd) | ||
171 | { | ||
172 | - int result; | ||
173 | - char proto[4] = "udp"; | ||
174 | - | ||
175 | - result = my_connect (host_name, port, sd, proto); | ||
176 | - | ||
177 | - return result; | ||
178 | + return my_connect (host_name, port, sd, IPPROTO_UDP); | ||
179 | } | ||
180 | |||
181 | |||
182 | /* opens a tcp or udp connection to a remote host */ | ||
183 | int | ||
184 | -my_connect (char *host_name, int port, int *sd, char *proto) | ||
185 | -{ | ||
186 | - struct sockaddr_in servaddr; | ||
187 | - struct hostent *hp; | ||
188 | - struct protoent *ptrp; | ||
189 | - int result; | ||
190 | - | ||
191 | - bzero ((char *) &servaddr, sizeof (servaddr)); | ||
192 | - servaddr.sin_family = AF_INET; | ||
193 | - servaddr.sin_port = htons (port); | ||
194 | - | ||
195 | - /* try to bypass using a DNS lookup if this is just an IP address */ | ||
196 | - if (!my_inet_aton (host_name, &servaddr.sin_addr)) { | ||
197 | - | ||
198 | - /* else do a DNS lookup */ | ||
199 | - hp = gethostbyname ((const char *) host_name); | ||
200 | - if (hp == NULL) { | ||
201 | - printf ("Invalid host name '%s'\n", host_name); | ||
202 | - return STATE_UNKNOWN; | ||
203 | - } | ||
204 | - | ||
205 | - memcpy (&servaddr.sin_addr, hp->h_addr, hp->h_length); | ||
206 | - } | ||
207 | - | ||
208 | - /* map transport protocol name to protocol number */ | ||
209 | - if ((ptrp = getprotobyname (proto)) == NULL) { | ||
210 | - printf ("Cannot map \"%s\" to protocol number\n", proto); | ||
211 | - return STATE_UNKNOWN; | ||
212 | - } | ||
213 | - | ||
214 | - /* create a socket */ | ||
215 | - *sd = | ||
216 | - socket (PF_INET, (!strcmp (proto, "udp")) ? SOCK_DGRAM : SOCK_STREAM, | ||
217 | - ptrp->p_proto); | ||
218 | - if (*sd < 0) { | ||
219 | - printf ("Socket creation failed\n"); | ||
220 | - return STATE_UNKNOWN; | ||
221 | - } | ||
222 | - | ||
223 | - /* open a connection */ | ||
224 | - result = connect (*sd, (struct sockaddr *) &servaddr, sizeof (servaddr)); | ||
225 | - if (result < 0) { | ||
226 | - switch (errno) { | ||
227 | - case ECONNREFUSED: | ||
228 | - printf ("Connection refused by host\n"); | ||
229 | - break; | ||
230 | - case ETIMEDOUT: | ||
231 | - printf ("Timeout while attempting connection\n"); | ||
232 | - break; | ||
233 | - case ENETUNREACH: | ||
234 | - printf ("Network is unreachable\n"); | ||
235 | - break; | ||
236 | - default: | ||
237 | - printf ("Connection refused or timed out\n"); | ||
238 | - } | ||
239 | - | ||
240 | - return STATE_CRITICAL; | ||
241 | - } | ||
242 | - | ||
243 | - return STATE_OK; | ||
244 | -} | ||
245 | - | ||
246 | - | ||
247 | - | ||
248 | -/* This code was taken from Fyodor's nmap utility, which was originally | ||
249 | - taken from the GLIBC 2.0.6 libraries because Solaris doesn't contain | ||
250 | - the inet_aton() funtion. */ | ||
251 | -int | ||
252 | -my_inet_aton (register const char *cp, struct in_addr *addr) | ||
253 | +my_connect (char *host_name, int port, int *sd, int proto) | ||
254 | { | ||
255 | - register unsigned int val; /* changed from u_long --david */ | ||
256 | - register int base, n; | ||
257 | - register char c; | ||
258 | - u_int parts[4]; | ||
259 | - register u_int *pp = parts; | ||
260 | - | ||
261 | - c = *cp; | ||
262 | - | ||
263 | - for (;;) { | ||
264 | - | ||
265 | - /* | ||
266 | - * Collect number up to ``.''. | ||
267 | - * Values are specified as for C: | ||
268 | - * 0x=hex, 0=octal, isdigit=decimal. | ||
269 | - */ | ||
270 | - if (!isdigit ((int) c)) | ||
271 | - return (0); | ||
272 | - val = 0; | ||
273 | - base = 10; | ||
274 | - | ||
275 | - if (c == '0') { | ||
276 | - c = *++cp; | ||
277 | - if (c == 'x' || c == 'X') | ||
278 | - base = 16, c = *++cp; | ||
279 | - else | ||
280 | - base = 8; | ||
281 | - } | ||
282 | - | ||
283 | - for (;;) { | ||
284 | - if (isascii ((int) c) && isdigit ((int) c)) { | ||
285 | - val = (val * base) + (c - '0'); | ||
286 | - c = *++cp; | ||
287 | - } | ||
288 | - else if (base == 16 && isascii ((int) c) && isxdigit ((int) c)) { | ||
289 | - val = (val << 4) | (c + 10 - (islower ((int) c) ? 'a' : 'A')); | ||
290 | - c = *++cp; | ||
291 | - } | ||
292 | - else | ||
293 | - break; | ||
294 | - } | ||
295 | - | ||
296 | - if (c == '.') { | ||
297 | - | ||
298 | - /* | ||
299 | - * Internet format: | ||
300 | - * a.b.c.d | ||
301 | - * a.b.c (with c treated as 16 bits) | ||
302 | - * a.b (with b treated as 24 bits) | ||
303 | - */ | ||
304 | - if (pp >= parts + 3) | ||
305 | - return (0); | ||
306 | - *pp++ = val; | ||
307 | - c = *++cp; | ||
308 | - } | ||
309 | - else | ||
310 | - break; | ||
311 | - } | ||
312 | - | ||
313 | - /* Check for trailing characters */ | ||
314 | - if (c != '\0' && (!isascii ((int) c) || !isspace ((int) c))) | ||
315 | - return (0); | ||
316 | - | ||
317 | - /* Concoct the address according to the number of parts specified */ | ||
318 | - n = pp - parts + 1; | ||
319 | - switch (n) { | ||
320 | - | ||
321 | - case 0: | ||
322 | - return (0); /* initial nondigit */ | ||
323 | - | ||
324 | - case 1: /* a -- 32 bits */ | ||
325 | - break; | ||
326 | - | ||
327 | - case 2: /* a.b -- 8.24 bits */ | ||
328 | - if (val > 0xffffff) | ||
329 | - return (0); | ||
330 | - val |= parts[0] << 24; | ||
331 | - break; | ||
332 | - | ||
333 | - case 3: /* a.b.c -- 8.8.16 bits */ | ||
334 | - if (val > 0xffff) | ||
335 | - return (0); | ||
336 | - val |= (parts[0] << 24) | (parts[1] << 16); | ||
337 | - break; | ||
338 | - | ||
339 | - case 4: /* a.b.c.d -- 8.8.8.8 bits */ | ||
340 | - if (val > 0xff) | ||
341 | - return (0); | ||
342 | - val |= (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8); | ||
343 | - break; | ||
344 | - } | ||
345 | - | ||
346 | - if (addr) | ||
347 | - addr->s_addr = htonl (val); | ||
348 | - | ||
349 | - return (1); | ||
350 | + struct addrinfo hints; | ||
351 | + struct addrinfo *res; | ||
352 | + struct protoent *ptrp; | ||
353 | + char port_str[6]; | ||
354 | + int result; | ||
355 | + | ||
356 | + memset (&hints, 0, sizeof (hints)); | ||
357 | + hints.ai_family = PF_UNSPEC; | ||
358 | + hints.ai_protocol = proto; | ||
359 | + | ||
360 | + snprintf(port_str, sizeof(port_str), "%d", port); | ||
361 | + /* nice clean AF-independent code doesn't matter if passed hostname or IP address */ | ||
362 | + result = getaddrinfo (host_name, port_str, &hints, &res); | ||
363 | + | ||
364 | + if (result != 0) | ||
365 | + { | ||
366 | + printf ("%s\n", gai_strerror (result)); | ||
367 | + return STATE_UNKNOWN; | ||
368 | + } | ||
369 | + else | ||
370 | + { | ||
371 | + while (res) | ||
372 | + { | ||
373 | + /* attempt to create a socket */ | ||
374 | + *sd = socket (res->ai_family, (proto == IPPROTO_UDP) ? SOCK_DGRAM : SOCK_STREAM, res->ai_protocol); | ||
375 | + | ||
376 | + if (*sd < 0) { | ||
377 | + printf ("Socket creation failed\n"); | ||
378 | + freeaddrinfo (res); | ||
379 | + return STATE_UNKNOWN; | ||
380 | + } | ||
381 | + | ||
382 | + /* attempt to open a connection */ | ||
383 | + result = connect (*sd, res->ai_addr, res->ai_addrlen); | ||
384 | + | ||
385 | + if (result == 0) | ||
386 | + break; | ||
387 | + | ||
388 | + close(*sd); | ||
389 | + res = res->ai_next; | ||
390 | + } | ||
391 | + freeaddrinfo (res); | ||
392 | + } | ||
393 | + | ||
394 | + if (result == 0) | ||
395 | + return STATE_OK; | ||
396 | + else | ||
397 | + { | ||
398 | + printf ("%s\n", strerror(errno)); | ||
399 | + return STATE_CRITICAL; | ||
400 | + } | ||
401 | } | ||
402 | Index: netutils.h.in | ||
403 | =================================================================== | ||
404 | RCS file: /cvsroot/nagiosplug/nagiosplug/plugins/netutils.h.in,v | ||
405 | retrieving revision 1.1.1.1 | ||
406 | diff -u -r1.1.1.1 netutils.h.in | ||
407 | --- netutils.h.in 28 Feb 2002 06:42:59 -0000 1.1.1.1 | ||
408 | +++ netutils.h.in 11 Dec 2002 02:38:43 -0000 | ||
409 | @@ -42,19 +42,17 @@ | ||
410 | void socket_timeout_alarm_handler (int); | ||
411 | |||
412 | int process_tcp_request2 (char *address, int port, char *sbuffer, | ||
413 | - char *rbuffer, int rsize); | ||
414 | + char *rbuffer, int rsize); | ||
415 | int process_tcp_request (char *address, int port, char *sbuffer, | ||
416 | - char *rbuffer, int rsize); | ||
417 | + char *rbuffer, int rsize); | ||
418 | int process_udp_request (char *address, int port, char *sbuffer, | ||
419 | - char *rbuffer, int rsize); | ||
420 | -int process_request (char *address, int port, char *proto, char *sbuffer, | ||
421 | - char *rbuffer, int rsize); | ||
422 | + char *rbuffer, int rsize); | ||
423 | +int process_request (char *address, int port, int proto, char *sbuffer, | ||
424 | + char *rbuffer, int rsize); | ||
425 | |||
426 | int my_tcp_connect (char *address, int port, int *sd); | ||
427 | int my_udp_connect (char *address, int port, int *sd); | ||
428 | -int my_connect (char *address, int port, int *sd, char *proto); | ||
429 | - | ||
430 | -int my_inet_aton (register const char *cp, struct in_addr *addr); | ||
431 | +int my_connect (char *address, int port, int *sd, int proto); | ||
432 | |||
433 | #ifndef DEFAULT_SOCKET_TIMEOUT | ||
434 | #include "config.h" | ||