diff options
author | Ton Voon <ton.voon@opsera.com> | 2010-06-21 15:19:50 +0100 |
---|---|---|
committer | Ton Voon <ton.voon@opsera.com> | 2010-06-21 15:19:50 +0100 |
commit | 833fd7ca04ae1e746db1feafae3bae1bbf4a10c3 (patch) | |
tree | 0b184a88181177e20a68bdf7f0e3fdf87f793399 /lib | |
parent | b190391c76f86a3a513af7b07207f96b7553dd96 (diff) | |
download | monitoring-plugins-833fd7ca04ae1e746db1feafae3bae1bbf4a10c3.tar.gz |
Added sha1 from gnulib. Also filled out _np_state_generate_key()
Diffstat (limited to 'lib')
-rw-r--r-- | lib/tests/test_utils.c | 19 | ||||
-rw-r--r-- | lib/utils_base.c | 25 | ||||
-rw-r--r-- | lib/utils_base.h | 6 |
3 files changed, 42 insertions, 8 deletions
diff --git a/lib/tests/test_utils.c b/lib/tests/test_utils.c index ffab7486..ccc4a52c 100644 --- a/lib/tests/test_utils.c +++ b/lib/tests/test_utils.c | |||
@@ -39,12 +39,13 @@ main (int argc, char **argv) | |||
39 | nagios_plugin *temp_nagios_plugin; | 39 | nagios_plugin *temp_nagios_plugin; |
40 | FILE *temp_fp; | 40 | FILE *temp_fp; |
41 | 41 | ||
42 | plan_tests(134); | 42 | plan_tests(138); |
43 | 43 | ||
44 | _get_nagios_plugin( &temp_nagios_plugin ); | 44 | _get_nagios_plugin( &temp_nagios_plugin ); |
45 | ok( temp_nagios_plugin==NULL, "nagios_plugin not initialised"); | 45 | ok( temp_nagios_plugin==NULL, "nagios_plugin not initialised"); |
46 | 46 | ||
47 | np_init( "check_test" ); | 47 | np_init( "check_test", argc, argv ); |
48 | |||
48 | _get_nagios_plugin( &temp_nagios_plugin ); | 49 | _get_nagios_plugin( &temp_nagios_plugin ); |
49 | ok( temp_nagios_plugin!=NULL, "nagios_plugin now initialised"); | 50 | ok( temp_nagios_plugin!=NULL, "nagios_plugin now initialised"); |
50 | ok( !strcmp(temp_nagios_plugin->plugin_name, "check_test"), "plugin name initialised" ); | 51 | ok( !strcmp(temp_nagios_plugin->plugin_name, "check_test"), "plugin name initialised" ); |
@@ -271,10 +272,18 @@ main (int argc, char **argv) | |||
271 | ok(!test, "Empty string return NULL"); | 272 | ok(!test, "Empty string return NULL"); |
272 | 273 | ||
273 | 274 | ||
275 | /* This is the result of running ./test_utils */ | ||
274 | temp_string = (char *) _np_state_generate_key(); | 276 | temp_string = (char *) _np_state_generate_key(); |
275 | ok(!strcmp(temp_string, "Ahash"), "Got hash" ); | 277 | ok(!strcmp(temp_string, "83d877b6cdfefb5d6f06101fd6fe76762f21792c"), "Got hash with exe and no parameters" ); |
276 | 278 | ||
277 | 279 | ||
280 | temp_nagios_plugin->argc=4; | ||
281 | temp_nagios_plugin->argv[0] = "./test_utils"; | ||
282 | temp_nagios_plugin->argv[1] = "here"; | ||
283 | temp_nagios_plugin->argv[2] = "--and"; | ||
284 | temp_nagios_plugin->argv[3] = "now"; | ||
285 | temp_string = (char *) _np_state_generate_key(); | ||
286 | ok(!strcmp(temp_string, "94b5e17bf5abf51cb15aff5f69b96f2f8dac5ecd"), "Got based on expected argv" ); | ||
278 | 287 | ||
279 | unsetenv("NAGIOS_PLUGIN_STATE_DIRECTORY"); | 288 | unsetenv("NAGIOS_PLUGIN_STATE_DIRECTORY"); |
280 | temp_string = (char *) _np_state_calculate_location_prefix(); | 289 | temp_string = (char *) _np_state_calculate_location_prefix(); |
@@ -292,10 +301,12 @@ main (int argc, char **argv) | |||
292 | 301 | ||
293 | ok(temp_state_key==NULL, "temp_state_key initially empty"); | 302 | ok(temp_state_key==NULL, "temp_state_key initially empty"); |
294 | 303 | ||
304 | temp_nagios_plugin->argc=1; | ||
305 | temp_nagios_plugin->argv[0] = "./test_utils"; | ||
295 | np_enable_state(NULL, 51); | 306 | np_enable_state(NULL, 51); |
296 | temp_state_key = temp_nagios_plugin->state; | 307 | temp_state_key = temp_nagios_plugin->state; |
297 | ok( !strcmp(temp_state_key->plugin_name, "check_test"), "Got plugin name" ); | 308 | ok( !strcmp(temp_state_key->plugin_name, "check_test"), "Got plugin name" ); |
298 | ok( !strcmp(temp_state_key->name, "Ahash"), "Got key name" ); | 309 | ok( !strcmp(temp_state_key->name, "83d877b6cdfefb5d6f06101fd6fe76762f21792c"), "Got generated filename" ); |
299 | 310 | ||
300 | 311 | ||
301 | np_enable_state("bad^chars$in@here", 77); | 312 | np_enable_state("bad^chars$in@here", 77); |
diff --git a/lib/utils_base.c b/lib/utils_base.c index b86ba737..cfff7cb9 100644 --- a/lib/utils_base.c +++ b/lib/utils_base.c | |||
@@ -33,7 +33,7 @@ | |||
33 | 33 | ||
34 | nagios_plugin *this_nagios_plugin=NULL; | 34 | nagios_plugin *this_nagios_plugin=NULL; |
35 | 35 | ||
36 | void np_init( char *plugin_name ) { | 36 | void np_init( char *plugin_name, int argc, char **argv ) { |
37 | if (this_nagios_plugin==NULL) { | 37 | if (this_nagios_plugin==NULL) { |
38 | this_nagios_plugin = malloc(sizeof(nagios_plugin)); | 38 | this_nagios_plugin = malloc(sizeof(nagios_plugin)); |
39 | if (this_nagios_plugin==NULL) { | 39 | if (this_nagios_plugin==NULL) { |
@@ -41,6 +41,8 @@ void np_init( char *plugin_name ) { | |||
41 | strerror(errno)); | 41 | strerror(errno)); |
42 | } | 42 | } |
43 | this_nagios_plugin->plugin_name = strdup(plugin_name); | 43 | this_nagios_plugin->plugin_name = strdup(plugin_name); |
44 | this_nagios_plugin->argc = argc; | ||
45 | this_nagios_plugin->argv = argv; | ||
44 | } | 46 | } |
45 | } | 47 | } |
46 | 48 | ||
@@ -354,7 +356,26 @@ char *np_extract_value(const char *varlist, const char *name, char sep) { | |||
354 | * parse of argv, so that uniqueness in parameters are reflected there. | 356 | * parse of argv, so that uniqueness in parameters are reflected there. |
355 | */ | 357 | */ |
356 | char *_np_state_generate_key() { | 358 | char *_np_state_generate_key() { |
357 | return strdup("Ahash"); | 359 | struct sha1_ctx ctx; |
360 | int i; | ||
361 | char **argv = this_nagios_plugin->argv; | ||
362 | unsigned char result[20]; | ||
363 | char keyname[41]; | ||
364 | |||
365 | sha1_init_ctx(&ctx); | ||
366 | |||
367 | for(i=0; i<this_nagios_plugin->argc; i++) { | ||
368 | sha1_process_bytes(argv[i], strlen(argv[i]), &ctx); | ||
369 | } | ||
370 | |||
371 | sha1_finish_ctx(&ctx, &result); | ||
372 | |||
373 | for (i=0; i<20; ++i) { | ||
374 | sprintf(&keyname[2*i], "%02x", result[i]); | ||
375 | } | ||
376 | keyname[40]='\0'; | ||
377 | |||
378 | return strdup(keyname); | ||
358 | } | 379 | } |
359 | 380 | ||
360 | void _cleanup_state_data() { | 381 | void _cleanup_state_data() { |
diff --git a/lib/utils_base.h b/lib/utils_base.h index 8f2f6649..0037b7b5 100644 --- a/lib/utils_base.h +++ b/lib/utils_base.h | |||
@@ -2,6 +2,7 @@ | |||
2 | #define _UTILS_BASE_ | 2 | #define _UTILS_BASE_ |
3 | /* Header file for nagios plugins utils_base.c */ | 3 | /* Header file for nagios plugins utils_base.c */ |
4 | 4 | ||
5 | #include "sha1.h" | ||
5 | 6 | ||
6 | /* This file holds header information for thresholds - use this in preference to | 7 | /* This file holds header information for thresholds - use this in preference to |
7 | individual plugin logic */ | 8 | individual plugin logic */ |
@@ -50,7 +51,8 @@ typedef struct state_key_struct { | |||
50 | typedef struct np_struct { | 51 | typedef struct np_struct { |
51 | char *plugin_name; | 52 | char *plugin_name; |
52 | state_key *state; | 53 | state_key *state; |
53 | char **expanded_argv; | 54 | int argc; |
55 | char **argv; | ||
54 | } nagios_plugin; | 56 | } nagios_plugin; |
55 | 57 | ||
56 | range *parse_range_string (char *); | 58 | range *parse_range_string (char *); |
@@ -97,7 +99,7 @@ void np_enable_state(char *, int); | |||
97 | state_data *np_state_read(); | 99 | state_data *np_state_read(); |
98 | void np_state_write_string(time_t, char *); | 100 | void np_state_write_string(time_t, char *); |
99 | 101 | ||
100 | void np_init(char *); | 102 | void np_init(char *, int argc, char **argv); |
101 | void np_cleanup(); | 103 | void np_cleanup(); |
102 | 104 | ||
103 | #endif /* _UTILS_BASE_ */ | 105 | #endif /* _UTILS_BASE_ */ |