diff options
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | THANKS.in | 1 | ||||
-rw-r--r-- | configure.in | 11 | ||||
-rw-r--r-- | plugins/check_radius.c | 55 |
4 files changed, 57 insertions, 13 deletions
@@ -25,7 +25,8 @@ This file documents the major additions and syntax changes between releases. | |||
25 | WARNING: check_disk's -E option must now be passed before -p or -r/-R arguments | 25 | WARNING: check_disk's -E option must now be passed before -p or -r/-R arguments |
26 | Passing -E after -p or -r results in UNKNOWN state, now | 26 | Passing -E after -p or -r results in UNKNOWN state, now |
27 | This is needed due to the new ignore feature | 27 | This is needed due to the new ignore feature |
28 | Fix bug when mixing case sensitive and case insensitive regex arguments | 28 | Fix check_disk bug when mixing case sensitive and case insensitive regex arguments |
29 | Check_radius now supports radiusclient-ng | ||
29 | 30 | ||
30 | 1.4.9 4th June 2006 | 31 | 1.4.9 4th June 2006 |
31 | Inclusion of contrib/check_cluster2 as check_cluster with some improvements | 32 | Inclusion of contrib/check_cluster2 as check_cluster with some improvements |
@@ -224,3 +224,4 @@ Aurelien Bompard | |||
224 | Christoph Schell | 224 | Christoph Schell |
225 | Andrew Elwell | 225 | Andrew Elwell |
226 | Heiti Ernits | 226 | Heiti Ernits |
227 | Sebastien Guay | ||
diff --git a/configure.in b/configure.in index dc89b05..ee928d4 100644 --- a/configure.in +++ b/configure.in | |||
@@ -218,8 +218,15 @@ if test "$ac_cv_lib_radiusclient_rc_read_config" = "yes"; then | |||
218 | RADIUSLIBS="-lradiusclient" | 218 | RADIUSLIBS="-lradiusclient" |
219 | AC_SUBST(RADIUSLIBS) | 219 | AC_SUBST(RADIUSLIBS) |
220 | else | 220 | else |
221 | AC_MSG_WARN([Skipping radius plugin]) | 221 | AC_CHECK_LIB(radiusclient-ng,rc_read_config) |
222 | AC_MSG_WARN([install radius libs to compile this plugin (see REQUIREMENTS).]) | 222 | if test "$ac_cv_lib_radiusclient_ng_rc_read_config" = "yes"; then |
223 | EXTRAS="$EXTRAS check_radius" | ||
224 | RADIUSLIBS="-lradiusclient-ng" | ||
225 | AC_SUBST(RADIUSLIBS) | ||
226 | else | ||
227 | AC_MSG_WARN([Skipping radius plugin]) | ||
228 | AC_MSG_WARN([install radius libs to compile this plugin (see REQUIREMENTS).]) | ||
229 | fi | ||
223 | fi | 230 | fi |
224 | LIBS="$_SAVEDLIBS" | 231 | LIBS="$_SAVEDLIBS" |
225 | 232 | ||
diff --git a/plugins/check_radius.c b/plugins/check_radius.c index 4b340c3..32af91f 100644 --- a/plugins/check_radius.c +++ b/plugins/check_radius.c | |||
@@ -43,12 +43,35 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net"; | |||
43 | #include "utils.h" | 43 | #include "utils.h" |
44 | #include "netutils.h" | 44 | #include "netutils.h" |
45 | 45 | ||
46 | #ifdef HAVE_LIBRADIUSCLIENT_NG | ||
47 | #include <radiusclient-ng.h> | ||
48 | rc_handle *rch = NULL; | ||
49 | #else | ||
46 | #include <radiusclient.h> | 50 | #include <radiusclient.h> |
51 | #endif | ||
47 | 52 | ||
48 | int process_arguments (int, char **); | 53 | int process_arguments (int, char **); |
49 | void print_help (void); | 54 | void print_help (void); |
50 | void print_usage (void); | 55 | void print_usage (void); |
51 | 56 | ||
57 | /* libradiusclient(-ng) wrapper functions */ | ||
58 | #ifdef HAVE_LIBRADIUSCLIENT_NG | ||
59 | #define my_rc_conf_str(a) rc_conf_str(rch,a) | ||
60 | #define my_rc_send_server(a,b) rc_send_server(rch,a,b) | ||
61 | #define my_rc_buildreq(a,b,c,d,e,f) rc_buildreq(rch,a,b,c,d,e,f) | ||
62 | #define my_rc_own_ipaddress() rc_own_ipaddress(rch) | ||
63 | #define my_rc_avpair_add(a,b,c,d) rc_avpair_add(rch,a,b,c,-1,d) | ||
64 | #define my_rc_read_dictionary(a) rc_read_dictionary(rch, a) | ||
65 | #else | ||
66 | #define my_rc_conf_str(a) rc_conf_str(a) | ||
67 | #define my_rc_send_server(a,b) rc_send_server(a, b) | ||
68 | #define my_rc_buildreq(a,b,c,d,e,f) rc_buildreq(a,b,c,d,e,f) | ||
69 | #define my_rc_own_ipaddress() rc_own_ipaddress() | ||
70 | #define my_rc_avpair_add(a,b,c,d) rc_avpair_add(a, b, c, d) | ||
71 | #define my_rc_read_dictionary(a) rc_read_dictionary(a) | ||
72 | #endif | ||
73 | int my_rc_read_config(char *); | ||
74 | |||
52 | char *server = NULL; | 75 | char *server = NULL; |
53 | char *username = NULL; | 76 | char *username = NULL; |
54 | char *password = NULL; | 77 | char *password = NULL; |
@@ -133,33 +156,33 @@ main (int argc, char **argv) | |||
133 | usage4 (_("Could not parse arguments")); | 156 | usage4 (_("Could not parse arguments")); |
134 | 157 | ||
135 | str = strdup ("dictionary"); | 158 | str = strdup ("dictionary"); |
136 | if ((config_file && rc_read_config (config_file)) || | 159 | if ((config_file && my_rc_read_config (config_file)) || |
137 | rc_read_dictionary (rc_conf_str (str))) | 160 | my_rc_read_dictionary (my_rc_conf_str (str))) |
138 | die (STATE_UNKNOWN, _("Config file error")); | 161 | die (STATE_UNKNOWN, _("Config file error")); |
139 | 162 | ||
140 | service = PW_AUTHENTICATE_ONLY; | 163 | service = PW_AUTHENTICATE_ONLY; |
141 | 164 | ||
142 | memset (&data, 0, sizeof(data)); | 165 | memset (&data, 0, sizeof(data)); |
143 | if (!(rc_avpair_add (&data.send_pairs, PW_SERVICE_TYPE, &service, 0) && | 166 | if (!(my_rc_avpair_add (&data.send_pairs, PW_SERVICE_TYPE, &service, 0) && |
144 | rc_avpair_add (&data.send_pairs, PW_USER_NAME, username, 0) && | 167 | my_rc_avpair_add (&data.send_pairs, PW_USER_NAME, username, 0) && |
145 | rc_avpair_add (&data.send_pairs, PW_USER_PASSWORD, password, 0) && | 168 | my_rc_avpair_add (&data.send_pairs, PW_USER_PASSWORD, password, 0) && |
146 | (nasid==NULL || rc_avpair_add (&data.send_pairs, PW_NAS_IDENTIFIER, nasid, 0)))) | 169 | (nasid==NULL || my_rc_avpair_add (&data.send_pairs, PW_NAS_IDENTIFIER, nasid, 0)))) |
147 | die (STATE_UNKNOWN, _("Out of Memory?")); | 170 | die (STATE_UNKNOWN, _("Out of Memory?")); |
148 | 171 | ||
149 | /* | 172 | /* |
150 | * Fill in NAS-IP-Address | 173 | * Fill in NAS-IP-Address |
151 | */ | 174 | */ |
152 | 175 | ||
153 | if ((client_id = rc_own_ipaddress ()) == 0) | 176 | if ((client_id = my_rc_own_ipaddress ()) == 0) |
154 | return (ERROR_RC); | 177 | return (ERROR_RC); |
155 | 178 | ||
156 | if (rc_avpair_add (&(data.send_pairs), PW_NAS_IP_ADDRESS, &client_id, 0) == | 179 | if (my_rc_avpair_add (&(data.send_pairs), PW_NAS_IP_ADDRESS, &client_id, 0) == |
157 | NULL) return (ERROR_RC); | 180 | NULL) return (ERROR_RC); |
158 | 181 | ||
159 | rc_buildreq (&data, PW_ACCESS_REQUEST, server, port, (int)timeout_interval, | 182 | my_rc_buildreq (&data, PW_ACCESS_REQUEST, server, port, (int)timeout_interval, |
160 | retries); | 183 | retries); |
161 | 184 | ||
162 | result = rc_send_server (&data, msg); | 185 | result = my_rc_send_server (&data, msg); |
163 | rc_avpair_free (data.send_pairs); | 186 | rc_avpair_free (data.send_pairs); |
164 | if (data.receive_pairs) | 187 | if (data.receive_pairs) |
165 | rc_avpair_free (data.receive_pairs); | 188 | rc_avpair_free (data.receive_pairs); |
@@ -350,3 +373,15 @@ print_usage (void) | |||
350 | printf ("%s -H host -F config_file -u username -p password [-n nas-id] [-P port]\n\ | 373 | printf ("%s -H host -F config_file -u username -p password [-n nas-id] [-P port]\n\ |
351 | [-t timeout] [-r retries] [-e expect]\n", progname); | 374 | [-t timeout] [-r retries] [-e expect]\n", progname); |
352 | } | 375 | } |
376 | |||
377 | |||
378 | |||
379 | int my_rc_read_config(char * a) | ||
380 | { | ||
381 | #ifdef HAVE_LIBRADIUSCLIENT_NG | ||
382 | rch = rc_read_config(a); | ||
383 | return (rch == NULL) ? 1 : 0; | ||
384 | #else | ||
385 | return rc_read_config(a); | ||
386 | #endif | ||
387 | } | ||