diff options
Diffstat (limited to 'web/attachments/121780-nagiosplug-cvs-check_tcp.diff')
-rw-r--r-- | web/attachments/121780-nagiosplug-cvs-check_tcp.diff | 204 |
1 files changed, 204 insertions, 0 deletions
diff --git a/web/attachments/121780-nagiosplug-cvs-check_tcp.diff b/web/attachments/121780-nagiosplug-cvs-check_tcp.diff new file mode 100644 index 0000000..8f80d0e --- /dev/null +++ b/web/attachments/121780-nagiosplug-cvs-check_tcp.diff | |||
@@ -0,0 +1,204 @@ | |||
1 | diff -urN ./plugins/check_tcp.c ../foo/plugins/check_tcp.c | ||
2 | --- ./plugins/check_tcp.c 2005-01-05 21:53:20.000000000 +0100 | ||
3 | +++ ../foo/plugins/check_tcp.c 2005-02-18 16:10:17.000000000 +0100 | ||
4 | @@ -114,138 +114,105 @@ | ||
5 | bindtextdomain (PACKAGE, LOCALEDIR); | ||
6 | textdomain (PACKAGE); | ||
7 | |||
8 | - if (strstr (argv[0], "check_udp")) { | ||
9 | - progname = strdup ("check_udp"); | ||
10 | - SERVICE = strdup ("UDP"); | ||
11 | - SEND = NULL; | ||
12 | - EXPECT = NULL; | ||
13 | - QUIT = NULL; | ||
14 | + progname = strrchr(argv[0], '/'); | ||
15 | + if(progname && strlen(progname) > 1) progname++; | ||
16 | + else progname = argv[0]; | ||
17 | + | ||
18 | + /* determine service, if possible */ | ||
19 | + SERVICE = strrchr(progname, '_'); | ||
20 | + if(SERVICE && strlen(SERVICE) > 1) { | ||
21 | + /* get a unique pointer and upcase it */ | ||
22 | + SERVICE++; | ||
23 | + SERVICE = strdup(SERVICE); | ||
24 | + for(i = 0; i < strlen(SERVICE); i++) | ||
25 | + SERVICE[i] = toupper(SERVICE[i]); | ||
26 | + } | ||
27 | + else SERVICE = "UNKNOWN SERVICE"; | ||
28 | + | ||
29 | + PROTOCOL = TCP_PROTOCOL; /* majority, so default */ | ||
30 | + | ||
31 | + if (!strncmp(SERVICE, "UDP", 3)) { /* strncmp to match check_udp2 also */ | ||
32 | PROTOCOL = UDP_PROTOCOL; | ||
33 | - PORT = 0; | ||
34 | } | ||
35 | - else if (strstr (argv[0], "check_tcp")) { | ||
36 | - progname = strdup ("check_tcp"); | ||
37 | - SERVICE = strdup ("TCP"); | ||
38 | - SEND = NULL; | ||
39 | - EXPECT = NULL; | ||
40 | - QUIT = NULL; | ||
41 | - PROTOCOL = TCP_PROTOCOL; | ||
42 | - PORT = 0; | ||
43 | - } | ||
44 | - else if (strstr (argv[0], "check_ftp")) { | ||
45 | - progname = strdup ("check_ftp"); | ||
46 | - SERVICE = strdup ("FTP"); | ||
47 | - SEND = NULL; | ||
48 | - EXPECT = strdup ("220"); | ||
49 | - QUIT = strdup ("QUIT\r\n"); | ||
50 | - PROTOCOL = TCP_PROTOCOL; | ||
51 | + else if (!strcmp (SERVICE, "FTP")) { | ||
52 | + EXPECT = "220"; | ||
53 | + QUIT = "QUIT\r\n"; | ||
54 | PORT = 21; | ||
55 | } | ||
56 | - else if (strstr (argv[0], "check_smtp")) { | ||
57 | - progname = strdup ("check_smtp"); | ||
58 | - SERVICE = strdup ("SMTP"); | ||
59 | - SEND = NULL; | ||
60 | - EXPECT = strdup ("220"); | ||
61 | - QUIT = strdup ("QUIT\r\n"); | ||
62 | - PROTOCOL = TCP_PROTOCOL; | ||
63 | + else if (!strcmp (SERVICE, "SMTP")) { | ||
64 | + EXPECT = "220"; | ||
65 | + QUIT = "QUIT\r\n"; | ||
66 | PORT = 25; | ||
67 | } | ||
68 | - else if (strstr (argv[0], "check_pop")) { | ||
69 | - progname = strdup ("check_pop"); | ||
70 | - SERVICE = strdup ("POP"); | ||
71 | - SEND = NULL; | ||
72 | - EXPECT = strdup ("+OK"); | ||
73 | - QUIT = strdup ("QUIT\r\n"); | ||
74 | - PROTOCOL = TCP_PROTOCOL; | ||
75 | + else if (!strcmp (SERVICE, "POP")) { | ||
76 | PORT = 110; | ||
77 | } | ||
78 | - else if (strstr (argv[0], "check_imap")) { | ||
79 | - progname = strdup ("check_imap"); | ||
80 | - SERVICE = strdup ("IMAP"); | ||
81 | - SEND = NULL; | ||
82 | - EXPECT = strdup ("* OK"); | ||
83 | - QUIT = strdup ("a1 LOGOUT\r\n"); | ||
84 | - PROTOCOL = TCP_PROTOCOL; | ||
85 | + else if (!strcmp (SERVICE, "IMAP")) { | ||
86 | + SERVICE = "IMAP"; | ||
87 | PORT = 143; | ||
88 | } | ||
89 | #ifdef HAVE_SSL | ||
90 | - else if (strstr(argv[0],"check_simap")) { | ||
91 | - progname = strdup ("check_simap"); | ||
92 | - SERVICE = strdup ("SIMAP"); | ||
93 | - SEND=NULL; | ||
94 | - EXPECT = strdup ("* OK"); | ||
95 | - QUIT = strdup ("a1 LOGOUT\r\n"); | ||
96 | - PROTOCOL=TCP_PROTOCOL; | ||
97 | + else if (!strcmp(SERVICE,"SIMAP")) { | ||
98 | + SERVICE = "SIMAP"; | ||
99 | use_ssl=TRUE; | ||
100 | PORT=993; | ||
101 | } | ||
102 | - else if (strstr(argv[0],"check_spop")) { | ||
103 | - progname = strdup ("check_spop"); | ||
104 | - SERVICE = strdup ("SPOP"); | ||
105 | - SEND=NULL; | ||
106 | - EXPECT = strdup ("+OK"); | ||
107 | - QUIT = strdup ("QUIT\r\n"); | ||
108 | - PROTOCOL=TCP_PROTOCOL; | ||
109 | + else if (!strcmp(SERVICE,"SPOP")) { | ||
110 | use_ssl=TRUE; | ||
111 | PORT=995; | ||
112 | } | ||
113 | - else if (strstr(argv[0],"check_jabber")) { | ||
114 | - progname = strdup("check_jabber"); | ||
115 | - SERVICE = strdup("JABBER"); | ||
116 | - SEND = strdup("<stream:stream to=\'host\' xmlns=\'jabber:client\' xmlns:stream=\'http://etherx.jabber.org/streams\'>\n"); | ||
117 | - EXPECT = strdup("<?xml version=\'1.0\'?><stream:stream xmlns:stream=\'http://etherx.jabber.org/streams\'"); | ||
118 | - QUIT = strdup("</stream:stream>\n"); | ||
119 | - PROTOCOL=TCP_PROTOCOL; | ||
120 | + else if (!strcmp(SERVICE, "JABBER")) { | ||
121 | + SEND = "<stream:stream to=\'host\' xmlns=\'jabber:client\' xmlns:stream=\'http://etherx.jabber.org/streams\'>\n"; | ||
122 | + EXPECT = "<?xml version=\'1.0\'?><stream:stream xmlns:stream=\'http://etherx.jabber.org/streams\'"; | ||
123 | + QUIT = "</stream:stream>\n"; | ||
124 | use_ssl=TRUE; | ||
125 | PORT = 5222; | ||
126 | } | ||
127 | - else if (strstr (argv[0], "check_nntps")) { | ||
128 | - progname = strdup("check_nntps"); | ||
129 | - SERVICE = strdup("NNTPS"); | ||
130 | - SEND = NULL; | ||
131 | - EXPECT = NULL; | ||
132 | - server_expect = realloc (server_expect, ++server_expect_count); | ||
133 | - asprintf (&server_expect[server_expect_count - 1], "200"); | ||
134 | - server_expect = realloc (server_expect, ++server_expect_count); | ||
135 | - asprintf (&server_expect[server_expect_count - 1], "201"); | ||
136 | - QUIT = strdup("QUIT\r\n"); | ||
137 | - PROTOCOL = TCP_PROTOCOL; | ||
138 | + else if (!strcmp (SERVICE, "NNTPS")) { | ||
139 | use_ssl=TRUE; | ||
140 | PORT = 563; | ||
141 | -} | ||
142 | - | ||
143 | + } | ||
144 | #endif | ||
145 | - else if (strstr (argv[0], "check_nntp")) { | ||
146 | - progname = strdup ("check_nntp"); | ||
147 | - SERVICE = strdup ("NNTP"); | ||
148 | - SEND = NULL; | ||
149 | - EXPECT = NULL; | ||
150 | - server_expect = realloc (server_expect, sizeof (char *) * (++server_expect_count)); | ||
151 | - asprintf (&server_expect[server_expect_count - 1], "200"); | ||
152 | - server_expect = realloc (server_expect, sizeof (char *) * (++server_expect_count)); | ||
153 | - asprintf (&server_expect[server_expect_count - 1], "201"); | ||
154 | - asprintf (&QUIT, "QUIT\r\n"); | ||
155 | - PROTOCOL = TCP_PROTOCOL; | ||
156 | + else if (!strcmp (SERVICE, "NNTP")) { | ||
157 | PORT = 119; | ||
158 | } | ||
159 | - else { | ||
160 | - progname = strdup ("check_tcp"); | ||
161 | + else if (strncmp(SERVICE, "TCP", 3)) { | ||
162 | + /* match if NOT called as check_tcp */ | ||
163 | usage (_("CRITICAL - Generic check_tcp called with unknown service\n")); | ||
164 | } | ||
165 | |||
166 | - server_address = strdup ("127.0.0.1"); | ||
167 | + | ||
168 | + /* SSL and plaintext counterparts set here to avoid duplicate code | ||
169 | + * (OSI layer 7 stuff here, layer 3-4 goes above unless protocol doesn't | ||
170 | + * support SSL, in which case we bundle it above to save LOC count */ | ||
171 | + if(!strncmp(SERVICE, "NTTP") || !strcmp(SERVICE, "NNTPS")) { | ||
172 | + server_expect = realloc (server_expect, sizeof(char *) * (server_expect_count + 2)); | ||
173 | + server_expect[server_expect_count++] = "200"; | ||
174 | + server_expect[server_expect_count++] = "201"; | ||
175 | + QUIT = "QUIT\r\n"; | ||
176 | + } | ||
177 | + else if(!strcmp(SERVICE, "IMAP") || !strcmp(SERVICE, "SIMAP")) { | ||
178 | + EXPECT = "* OK"; | ||
179 | + QUIT = "a1 LOGOUT\r\n"; | ||
180 | + } | ||
181 | + else if(!strcmp(SERVICE, "POP") || !strcmp(SERVICE, "SPOP")) { | ||
182 | + EXPECT = "+OK"; | ||
183 | + QUIT = "QUIT\r\n"; | ||
184 | + } | ||
185 | + | ||
186 | + server_address = "127.0.0.1"; | ||
187 | server_port = PORT; | ||
188 | server_send = SEND; | ||
189 | server_quit = QUIT; | ||
190 | - status = strdup (""); | ||
191 | + status = ""; | ||
192 | |||
193 | if (process_arguments (argc, argv) == ERROR) | ||
194 | usage4 (_("Could not parse arguments")); | ||
195 | |||
196 | /* use default expect if none listed in process_arguments() */ | ||
197 | if (EXPECT && server_expect_count == 0) { | ||
198 | - server_expect = malloc (sizeof (char *) * (++server_expect_count)); | ||
199 | - server_expect[server_expect_count - 1] = EXPECT; | ||
200 | + server_expect = malloc (sizeof (char *)); | ||
201 | + server_expect[server_expect_count++] = EXPECT; | ||
202 | } | ||
203 | |||
204 | /* initialize alarm signal handling */ | ||