Skip to content

Commit

Permalink
Merge pull request #24 from nook24/ocsp
Browse files Browse the repository at this point in the history
Add enable_ochp and enable_ocsp broker options
  • Loading branch information
nook24 committed Oct 27, 2016
2 parents 3c37355 + 671719a commit ed6954e
Show file tree
Hide file tree
Showing 5 changed files with 92 additions and 22 deletions.
4 changes: 4 additions & 0 deletions .gitignore
@@ -1 +1,5 @@
statusengine.o
statusengine-naemon-1-0-5.o
statusengine-naemon-1-0-3.o
statusengine-nagios.o
._*
6 changes: 6 additions & 0 deletions README.md
Expand Up @@ -101,6 +101,12 @@ Check the documentation for the [migration guide](https://statusengine.org/getti
- PHP7

##Changelog
**2.0.4**
- Add broker option enable_ochp
- Add broker option enable_ocsp
- Add broker option use_object_data
- Fix that objects will be dumped if use_process_data=0 and use_object_data=1

**2.0.3**
- Add index for object_id in history tables

Expand Down
2 changes: 1 addition & 1 deletion cakephp/app/Config/bootstrap.php
Expand Up @@ -118,7 +118,7 @@
CakePlugin::load('BoostCake');

//Define versions
define('STATUSENIGNE_VERSION', '2.0.3');
define('STATUSENIGNE_VERSION', '2.0.4');
define('PERFDATA_VERSION', '1.2.0');


Expand Down
2 changes: 1 addition & 1 deletion etc/module.cfg
@@ -1 +1 @@
broker_module=/opt/statusengine/statusengine.o use_host_status_data=1 use_service_status_data=1 use_process_data=1 use_service_check_data=1 use_host_check_data=1 use_state_change_data=1 use_log_data=1 use_system_command_data=1 use_comment_data=1 use_external_command_data=1 use_acknowledgement_data=1 use_flapping_data=1 use_downtime_data=1 use_notification_data=1 use_program_status_data=1 use_contact_status_data=1 use_contact_notification_data=1 use_contact_notification_method_data=1 use_event_handler_data=1
broker_module=/opt/statusengine/statusengine.o use_host_status_data=1 use_service_status_data=1 use_process_data=1 use_service_check_data=1 use_host_check_data=1 use_state_change_data=1 use_log_data=1 use_system_command_data=1 use_comment_data=1 use_external_command_data=1 use_acknowledgement_data=1 use_flapping_data=1 use_downtime_data=1 use_notification_data=1 use_program_status_data=1 use_contact_status_data=1 use_contact_notification_data=1 use_contact_notification_method_data=1 use_event_handler_data=1 use_object_data=1 enable_ochp=0 enable_ocsp=0
100 changes: 80 additions & 20 deletions statusengine/src/statusengine.c
Expand Up @@ -191,6 +191,8 @@ extern char *global_service_event_handler;
gearman_return_t ret; //remove me!!!
gearman_client_st gman_client;

gearman_client_st gman_client_ochp;

void *statusengine_module_handle = NULL;

int statusengine_handle_data(int, void *);
Expand Down Expand Up @@ -243,6 +245,12 @@ int use_contact_status_data = 1;
int use_contact_notification_data = 1;
int use_contact_notification_method_data = 1;
int use_event_handler_data = 1;

int use_object_data = 1;

int enable_ochp = 0;
int enable_ocsp = 0;

int statusengine_process_config_var(char *arg);
int statusengine_process_module_args(char *args);

Expand All @@ -256,7 +264,7 @@ int nebmodule_init(int flags, char *args, nebmodule *handle){
neb_set_module_info(statusengine_module_handle, NEBMODULE_MODINFO_TITLE, "Statusengine - the missing event broker");
neb_set_module_info(statusengine_module_handle, NEBMODULE_MODINFO_AUTHOR, "Daniel Ziegler");
neb_set_module_info(statusengine_module_handle, NEBMODULE_MODINFO_TITLE, "Copyright (c) 2014 - present Daniel Ziegler");
neb_set_module_info(statusengine_module_handle, NEBMODULE_MODINFO_VERSION, "1.0.0");
neb_set_module_info(statusengine_module_handle, NEBMODULE_MODINFO_VERSION, "2.0.4");
neb_set_module_info(statusengine_module_handle, NEBMODULE_MODINFO_LICENSE, "GPL v2");
neb_set_module_info(statusengine_module_handle, NEBMODULE_MODINFO_DESC, "A powerful and flexible event broker");

Expand Down Expand Up @@ -305,6 +313,18 @@ int nebmodule_init(int flags, char *args, nebmodule *handle){
if (ret != GEARMAN_SUCCESS){
logswitch(NSLOG_INFO_MESSAGE, (char *)gearman_client_error(&gman_client));
}

if(enable_ochp || enable_ocsp){
//Create gearman client for ochp/ocsp
if (gearman_client_create(&gman_client_ochp) == NULL){
logswitch(NSLOG_INFO_MESSAGE, "[Statusengine] Memory allocation failure on client creation for OCHP/OCSP\n");
}

ret= gearman_client_add_server(&gman_client_ochp, "127.0.0.1", 4730);
if (ret != GEARMAN_SUCCESS){
logswitch(NSLOG_INFO_MESSAGE, (char *)gearman_client_error(&gman_client_ochp));
}
}

return 0;
}
Expand Down Expand Up @@ -344,17 +364,17 @@ int nebmodule_deinit(int flags, int reason){
}

int statusengine_process_module_args(char *args) {
char *ptr = NULL;
char *ptr = NULL;

if (args == NULL) return OK;
if (args == NULL) return OK;

while ((ptr = strsep(&args, " ")) != NULL ) {
if(statusengine_process_config_var(ptr) == ERROR) {
return ERROR;
}
}
while ((ptr = strsep(&args, " ")) != NULL ) {
if(statusengine_process_config_var(ptr) == ERROR) {
return ERROR;
}
}

return OK;
return OK;
}

int statusengine_process_config_var(char *arg) {
Expand Down Expand Up @@ -431,6 +451,15 @@ int statusengine_process_config_var(char *arg) {
} else if (!strcmp(var, "use_event_handler_data")) {
use_event_handler_data = atoi(strdup(val));
logswitch(NSLOG_INFO_MESSAGE, "[Statusengine] start with disabled event_handler_data");
} else if (!strcmp(var, "enable_ochp")) {
enable_ochp = atoi(strdup(val));
logswitch(NSLOG_INFO_MESSAGE, "[Statusengine] start with enabled enable_ochp");
} else if (!strcmp(var, "enable_ocsp")) {
enable_ocsp = atoi(strdup(val));
logswitch(NSLOG_INFO_MESSAGE, "[Statusengine] start with enabled enable_ocsp");
} else if (!strcmp(var, "use_object_data")) {
use_object_data = atoi(strdup(val));
logswitch(NSLOG_INFO_MESSAGE, "[Statusengine] start with enabled use_object_data");
} else {
return ERROR;
}
Expand Down Expand Up @@ -513,15 +542,24 @@ int statusengine_handle_data(int event_type, void *data){
switch(event_type){

case NEBCALLBACK_PROCESS_DATA:
if(!use_process_data) return 0;
if(!use_process_data && !use_object_data){
return 0;
}

programmdata=(nebstruct_process_data *)data;
if(programmdata == NULL){
return 0;
}

//Core process was started, so we need to dump every object
if(programmdata->type == NEBTYPE_PROCESS_START){
dump_object_data();
if(use_object_data){
dump_object_data();
}
}

if(!use_process_data){
return 0;
}

if((programmdata = (nebstruct_process_data *)data)){
Expand All @@ -537,7 +575,7 @@ int statusengine_handle_data(int event_type, void *data){
json_object_object_add(processdata_object, "programmname", json_object_new_string("Nagios"));
#endif
#if defined NAGIOS || defined NAEMON
json_object_object_add(processdata_object, "modification_data", json_object_new_string(get_program_modification_date()));
json_object_object_add(processdata_object, "modification_data", json_object_new_string(get_program_modification_date()));
#endif
#if defined NAEMON105 || defined NAEMONMASTER
json_object_object_add(processdata_object, "modification_data", json_object_new_string("removed"));
Expand Down Expand Up @@ -722,7 +760,9 @@ int statusengine_handle_data(int event_type, void *data){
break;

case NEBCALLBACK_SERVICE_CHECK_DATA:
if (!use_service_check_data) return 0;
if (!use_service_check_data && !enable_ocsp){
return 0;
}
if((servicecheck = (nebstruct_service_check_data *)data)){
if(servicecheck == NULL){
return 0;
Expand Down Expand Up @@ -774,9 +814,18 @@ int statusengine_handle_data(int event_type, void *data){

json_object_object_add(my_object, "servicecheck", servicecheck_object);
const char* json_string = json_object_to_json_string(my_object);
ret= gearman_client_do_background(&gman_client, "statusngin_servicechecks", NULL, (void *)json_string, (size_t)strlen(json_string), NULL);
if (ret != GEARMAN_SUCCESS)
logswitch(NSLOG_INFO_MESSAGE, (char *)gearman_client_error(&gman_client));

if(use_service_check_data){
ret= gearman_client_do_background(&gman_client, "statusngin_servicechecks", NULL, (void *)json_string, (size_t)strlen(json_string), NULL);
if (ret != GEARMAN_SUCCESS)
logswitch(NSLOG_INFO_MESSAGE, (char *)gearman_client_error(&gman_client));
}

if(enable_ocsp){
ret= gearman_client_do_background(&gman_client_ochp, "statusngin_ocsp", NULL, (void *)json_string, (size_t)strlen(json_string), NULL);
if (ret != GEARMAN_SUCCESS)
logswitch(NSLOG_INFO_MESSAGE, (char *)gearman_client_error(&gman_client_ochp));
}

json_object_put(servicecheck_object);
json_object_put(my_object);
Expand All @@ -785,7 +834,9 @@ int statusengine_handle_data(int event_type, void *data){
break;

case NEBCALLBACK_HOST_CHECK_DATA:
if (!use_host_check_data) return 0;
if (!use_host_check_data && !enable_ochp){
return 0;
}
if((hostcheck = (nebstruct_host_check_data *)data)){
if(hostcheck == NULL){
return 0;
Expand Down Expand Up @@ -836,9 +887,18 @@ int statusengine_handle_data(int event_type, void *data){

json_object_object_add(my_object, "hostcheck", hostcheck_object);
const char* json_string = json_object_to_json_string(my_object);
ret= gearman_client_do_background(&gman_client, "statusngin_hostchecks", NULL, (void *)json_string, (size_t)strlen(json_string), NULL);
if (ret != GEARMAN_SUCCESS)
logswitch(NSLOG_INFO_MESSAGE, (char *)gearman_client_error(&gman_client));

if(use_host_check_data){
ret= gearman_client_do_background(&gman_client, "statusngin_hostchecks", NULL, (void *)json_string, (size_t)strlen(json_string), NULL);
if (ret != GEARMAN_SUCCESS)
logswitch(NSLOG_INFO_MESSAGE, (char *)gearman_client_error(&gman_client));
}

if(enable_ochp){
ret= gearman_client_do_background(&gman_client_ochp, "statusngin_ochp", NULL, (void *)json_string, (size_t)strlen(json_string), NULL);
if (ret != GEARMAN_SUCCESS)
logswitch(NSLOG_INFO_MESSAGE, (char *)gearman_client_error(&gman_client_ochp));
}

json_object_put(hostcheck_object);
json_object_put(my_object);
Expand Down

0 comments on commit ed6954e

Please sign in to comment.