summaryrefslogtreecommitdiffstats
path: root/web/attachments/121780-nagiosplug-cvs-check_tcp.diff
diff options
context:
space:
mode:
Diffstat (limited to 'web/attachments/121780-nagiosplug-cvs-check_tcp.diff')
-rw-r--r--web/attachments/121780-nagiosplug-cvs-check_tcp.diff204
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 @@
1diff -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 */