public function stage() { $viewData = new ViewData(); $deployment = $this->getDeployment('nagios_cfg_error'); $modrevision = RevDeploy::getDeploymentNextRev($deployment); if (!isset($_SESSION[$deployment]) || !is_array($_SESSION[$deployment])) { $_SESSION[$deployment] = array(); } $_SESSION[$deployment]['brokermods'] = array(); if (RevDeploy::existsDeploymentNagiosCfg($deployment, $modrevision) === true) { $viewData->nagcfg = RevDeploy::getDeploymentNagiosCfg($deployment, $modrevision); foreach ($viewData->nagcfg as $key => $value) { if (preg_match('/^broker_module_/', $key)) { $_SESSION[$deployment]['brokermods'][md5($value)] = $value; } } } else { $cfg = array(); $cfg['accept_passive_host_checks'] = 1; $cfg['accept_passive_service_checks'] = 1; $cfg['cached_host_check_horizon'] = 15; $cfg['cached_service_check_horizon'] = 15; $cfg['cfg_dir'] = base64_encode('/usr/local/nagios/etc/objects'); $cfg['check_external_commands'] = 1; $cfg['check_for_orphaned_hosts'] = 1; $cfg['check_for_orphaned_services'] = 1; $cfg['check_host_freshness'] = 1; $cfg['check_result_path'] = base64_encode('/usr/local/nagios/var/spool/checkresults'); $cfg['check_result_reaper_frequency'] = 10; $cfg['check_service_freshness'] = 1; $cfg['command_check_interval'] = -1; $cfg['command_file'] = base64_encode('/usr/local/nagios/var/rw/nagios.cmd'); $cfg['enable_event_handlers'] = 1; $cfg['enable_notifications'] = 1; $cfg['enable_predictive_host_dependency_checks'] = 1; $cfg['enable_predictive_service_dependency_checks'] = 1; $cfg['event_broker_options'] = -1; $cfg['event_handler_timeout'] = 30; $cfg['execute_host_checks'] = 1; $cfg['execute_service_checks'] = 1; $cfg['external_command_buffer_slots'] = 4096; $cfg['host_check_timeout'] = 30; $cfg['host_freshness_check_interval'] = 60; $cfg['illegal_macro_output_chars'] = base64_encode('`~$&|\'"<>'); $cfg['illegal_object_name_chars'] = base64_encode('`~!$%^&*|\'"<>?,()='); $cfg['lock_file'] = base64_encode('/usr/local/nagios/var/nagios.lock'); $cfg['log_archive_path'] = base64_encode('/usr/local/nagios/var/archives'); $cfg['log_event_handlers'] = 1; $cfg['log_external_commands'] = 1; $cfg['log_file'] = base64_encode('/usr/local/nagios/var/nagios.log'); $cfg['log_host_retries'] = 1; $cfg['log_initial_states'] = 0; $cfg['log_notifications'] = 1; $cfg['log_passive_checks'] = 1; $cfg['log_rotation_method'] = 'd'; $cfg['log_service_retries'] = 1; $cfg['max_check_result_file_age'] = 3600; $cfg['max_check_result_reaper_time'] = 30; $cfg['nagios_group'] = 'nagios'; $cfg['nagios_user'] = '******'; $cfg['notification_timeout'] = 30; $cfg['object_cache_file'] = base64_encode('/usr/local/nagios/var/objects.cache'); $cfg['precached_object_file'] = base64_encode('/usr/local/nagios/var/objects.precache'); $cfg['resource_file'] = base64_encode('/usr/local/nagios/etc/resource.cfg'); $cfg['retain_state_information'] = 1; $cfg['retention_update_interval'] = 60; $cfg['service_check_timeout'] = 60; $cfg['service_freshness_check_interval'] = 60; $cfg['soft_state_dependencies'] = 0; $cfg['state_retention_file'] = base64_encode('/usr/local/nagios/var/retention.dat'); $cfg['status_file'] = base64_encode('/usr/local/nagios/var/status.dat'); $cfg['status_update_interval'] = 10; $cfg['temp_file'] = base64_encode('/usr/local/nagios/var/nagios.tmp'); $cfg['temp_path'] = base64_encode('/tmp'); $cfg['use_large_installation_tweaks'] = 0; $cfg['use_retained_program_state'] = 1; $cfg['use_retained_scheduling_info'] = 1; $cfg['use_syslog'] = 1; $cfg['additional_freshness_latency'] = 15; $cfg['admin_email'] = 'nagios@localhost'; $cfg['admin_pager'] = 'pagenagios@localhost'; $cfg['auto_reschedule_checks'] = 0; $cfg['auto_rescheduling_interval'] = 30; $cfg['auto_rescheduling_window'] = 180; $cfg['bare_update_check'] = 0; $cfg['check_for_updates'] = 1; $cfg['daemon_dumps_core'] = 0; $cfg['date_format'] = 'us'; $cfg['debug_file'] = base64_encode('/usr/local/nagios/var/nagios.debug'); $cfg['debug_level'] = 0; $cfg['debug_verbosity'] = 1; $cfg['enable_embedded_perl'] = 1; $cfg['enable_environment_macros'] = 0; $cfg['enable_flap_detection'] = 0; $cfg['high_host_flap_threshold'] = 20.0; $cfg['high_service_flap_threshold'] = 20.0; $cfg['host_inter_check_delay_method'] = 's'; $cfg['interval_length'] = 60; $cfg['low_host_flap_threshold'] = 5.0; $cfg['low_service_flap_threshold'] = 5.0; $cfg['max_concurrent_checks'] = 0; $cfg['max_host_check_spread'] = 30; $cfg['max_service_check_spread'] = 30; $cfg['max_debug_file_size'] = 1000000; $cfg['obsess_over_hosts'] = 0; $cfg['obsess_over_services'] = 0; $cfg['ocsp_timeout'] = 5; $cfg['ochp_timeout'] = 5; $cfg['p1_file'] = base64_encode('/usr/local/nagios/bin/p1.pl'); $cfg['passive_host_checks_are_soft'] = 0; $cfg['retained_contact_host_attribute_mask'] = 0; $cfg['retained_contact_service_attribute_mask'] = 0; $cfg['retained_host_attribute_mask'] = 0; $cfg['retained_process_host_attribute_mask'] = 0; $cfg['retained_process_service_attribute_mask'] = 0; $cfg['retained_service_attribute_mask'] = 0; $cfg['service_inter_check_delay_method'] = 's'; $cfg['service_interleave_factor'] = 's'; $cfg['sleep_time'] = 0.25; $cfg['translate_passive_host_checks'] = 0; $cfg['use_aggressive_host_checking'] = 0; $cfg['use_embedded_perl_implicitly'] = 1; $cfg['use_regexp_matching'] = 0; $cfg['use_true_regexp_matching'] = 0; $cfg['process_performance_data'] = 0; $cfg['perfdata_timeout'] = 5; $cfg['host_perfdata_command'] = base64_encode('process-host-perfdata'); $cfg['service_perfdata_command'] = base64_encode('process-service-perfdata'); $cfg['host_perfdata_file'] = base64_encode('/tmp/host-perfdata'); $cfg['service_perfdata_file'] = base64_encode('/tmp/service-perfdata'); $cfg['host_perfdata_file_template'] = base64_encode('[HOSTPERFDATA]\\t$TIMET$\\t$HOSTNAME$\\t$HOSTEXECUTIONTIME$\\t$HOSTOUTPUT$\\t$HOSTPERFDATA$'); $cfg['service_perfdata_file_template'] = base64_encode('[SERVICEPERFDATA]\\t$TIMET$\\t$HOSTNAME$\\t$SERVICEDESC$\\t$SERVICEEXECUTIONTIME$\\t$SERVICELATENCY$\\t$SERVICEOUTPUT$\\t$SERVICEPERFDATA$'); $cfg['host_perfdata_file_mode'] = 'a'; $cfg['service_perfdata_file_mode'] = 'a'; $cfg['host_perfdata_file_processing_interval'] = 0; $cfg['service_perfdata_file_processing_interval'] = 0; $cfg['host_perfdata_file_processing_command'] = base64_encode('process-host-perfdata-file'); $cfg['service_perfdata_file_processing_command'] = base64_encode('process-service-perfdata-file'); $viewData->nagcfg = $cfg; } $viewData->contacts = RevDeploy::getCommonMergedDeploymentContacts($deployment, $modrevision); $viewData->deployment = $deployment; $this->sendResponse('nagios_cfg_stage', $viewData); }
public static function copyDeploymentRevision($deployment, $fromrev, $torev) { if (self::$init === false) { self::init(); } self::$m_commonrepo = RevDeploy::getDeploymentCommonRepo($deployment); $results = array(); $results['timeperiods'] = RevDeploy::getCommonMergedDeploymentTimeperiodswData($deployment, $fromrev); $results['commands'] = RevDeploy::getCommonMergedDeploymentCommands($deployment, $fromrev, false); $results['contacttemplates'] = RevDeploy::getCommonMergedDeploymentContactTemplates($deployment, $fromrev); $results['contactgroups'] = RevDeploy::getCommonMergedDeploymentContactGroups($deployment, $fromrev); $results['contacts'] = RevDeploy::getCommonMergedDeploymentContacts($deployment, $fromrev); $results['hosttemplates'] = RevDeploy::getCommonMergedDeploymentHostTemplates($deployment, $fromrev); $results['hostgroups'] = RevDeploy::getCommonMergedDeploymentHostGroups($deployment, $fromrev); $results['servicetemplates'] = RevDeploy::getCommonMergedDeploymentSvcTemplates($deployment, $fromrev); $results['servicegroups'] = RevDeploy::getCommonMergedDeploymentSvcGroups($deployment, $fromrev); $results['servicedependencies'] = RevDeploy::getCommonMergedDeploymentSvcDependencies($deployment, $fromrev); $results['serviceescalations'] = RevDeploy::getDeploymentSvcEscalationswInfo($deployment, $fromrev); $results['services'] = RevDeploy::getCommonMergedDeploymentSvcs($deployment, $fromrev); $results['nodetemplates'] = RevDeploy::getDeploymentNodeTemplateswInfo($deployment, $fromrev); $results['resourcecfg'] = RevDeploy::getDeploymentResourceCfg($deployment, $fromrev); $results['cgicfg'] = RevDeploy::getDeploymentCgiCfg($deployment, $fromrev); $results['modgearmancfg'] = RevDeploy::getDeploymentModgearmanCfg($deployment, $fromrev); $results['nagioscfg'] = RevDeploy::getDeploymentNagiosCfg($deployment, $fromrev); $results['nrpecmds'] = RevDeploy::getDeploymentNRPECmdswInfo($deployment, $fromrev); $results['nrpecfg'] = RevDeploy::getDeploymentNRPECfg($deployment, $fromrev); $results['nrpeplugins'] = RevDeploy::getDeploymentNRPEPluginswData($deployment, $fromrev); $results['supnrpecfg'] = RevDeploy::getDeploymentSupNRPECfg($deployment, $fromrev); $results['supnrpeplugins'] = RevDeploy::getDeploymentSupNRPEPluginswData($deployment, $fromrev); $results['nagiosplugins'] = RevDeploy::getDeploymentNagiosPluginswData($deployment, $fromrev); foreach ($results as $key => $value) { if (empty($value)) { continue; } switch ($key) { case 'timeperiods': self::copyTimeperiods($deployment, $torev, $results['timeperiods']); break; case 'commands': self::copyCommands($deployment, $torev, $results['commands']); break; case 'contacttemplates': self::copyContactTemplates($deployment, $torev, $results['contacttemplates']); break; case 'contactgroups': self::copyContactGroups($deployment, $torev, $results['contactgroups']); break; case 'contacts': self::copyContacts($deployment, $torev, $results['contacts']); break; case 'hosttemplates': self::copyHostTemplates($deployment, $torev, $results['hosttemplates']); break; case 'hostgroups': self::copyHostGroups($deployment, $torev, $results['hostgroups']); break; case 'servicetemplates': self::copyServiceTemplates($deployment, $torev, $results['servicetemplates']); break; case 'servicegroups': self::copyServiceGroups($deployment, $torev, $results['servicegroups']); break; case 'servicedependencies': self::copyServiceDependencies($deployment, $torev, $results['servicedependencies']); break; case 'serviceescalations': self::copyServiceEscalations($deployment, $torev, $results['serviceescalations']); break; case 'services': self::copyServices($deployment, $torev, $results['services']); break; case 'nodetemplates': self::copyNodeTemplates($deployment, $torev, $results['nodetemplates']); break; case 'resourcecfg': self::copyResourceCfg($deployment, $torev, $results['resourcecfg']); break; case 'cgicfg': self::copyCGICfg($deployment, $torev, $results['cgicfg']); break; case 'modgearmancfg': self::copyModgearmanCfg($deployment, $torev, $results['modgearmancfg']); break; case 'nagioscfg': self::copyNagiosCfg($deployment, $torev, $results['nagioscfg']); break; case 'nrpecmds': self::copyNRPECmds($deployment, $torev, $results['nrpecmds']); break; case 'nrpecfg': self::copyNRPECfg($deployment, $torev, $results['nrpecfg']); break; case 'nrpeplugins': self::copyNRPEPlugins($deployment, $torev, $results['nrpeplugins']); break; case 'supnrpecfg': self::copySupNRPECfg($deployment, $torev, $results['supnrpecfg']); break; case 'supnrpeplugins': self::copySupNRPEPlugins($deployment, $torev, $results['supnrpeplugins']); break; case 'nagiosplugins': self::copyNagiosPlugins($deployment, $torev, $results['nagiosplugins']); break; default: break; } } }
*/ $app->get('/sapi/configs/:deployment/nagios(/:staged)', function ($deployment, $staged = false) use($app) { check_deployment_exists($app, $deployment); // Load up Current Commands or Staged Commands if ($staged == 1) { $deployRev = RevDeploy::getDeploymentNextRev($deployment); if ($deployRev === false) { $apiResponse = new APIViewData(1, $deployment, "Unable to detect staged revision to reference"); $app->halt(404, $apiResponse->returnJson()); } } else { $deployRev = RevDeploy::getDeploymentRev($deployment); } $apiResponse = new APIViewData(0, $deployment, false); if (RevDeploy::existsDeploymentNagiosCfg($deployment, $deployRev) === true) { $apiResponse->setExtraResponseData('nagios_config', RevDeploy::getDeploymentNagiosCfg($deployment, $deployRev)); } else { $apiResponse->setExtraResponseData('nagios_config', array('accept_passive_host_checks' => 1, 'accept_passive_service_checks' => 1, 'cached_host_check_horizon' => 15, 'cached_service_check_horizon' => 15, 'cfg_dir' => base64_encode('/usr/local/nagios/etc/objects'), 'check_external_commands' => 1, 'check_for_orphaned_hosts' => 1, 'check_for_orphaned_services' => 1, 'check_host_freshness' => 1, 'check_result_path' => base64_encode('/usr/local/nagios/var/spool/checkresults'), 'check_result_reaper_frequency' => 10, 'check_service_freshness' => 1, 'command_check_interval' => -1, 'command_file' => base64_encode('/usr/local/nagios/var/rw/nagios.cmd'), 'enable_event_handlers' => 1, 'enable_notifications' => 1, 'enable_predictive_host_dependency_checks' => 1, 'enable_predictive_service_dependency_checks' => 1, 'event_broker_options' => -1, 'event_handler_timeout' => 30, 'execute_host_checks' => 1, 'execute_service_checks' => 1, 'external_command_buffer_slots' => 4096, 'host_check_timeout' => 30, 'host_freshness_check_interval' => 60, 'illegal_macro_output_chars' => base64_encode('`~$&|\'"<>'), 'illegal_object_name_chars' => base64_encode('`~!$%^&*|\'"<>?,()='), 'lock_file' => base64_encode('/usr/local/nagios/var/nagios.lock'), 'log_archive_path' => base64_encode('/usr/local/nagios/var/archives'), 'log_event_handlers' => 1, 'log_external_commands' => 1, 'log_file' => base64_encode('/usr/local/nagios/var/nagios.log'), 'log_host_retries' => 1, 'log_initial_states' => 0, 'log_notifications' => 1, 'log_passive_checks' => 1, 'log_rotation_method' => 'd', 'log_service_retries' => 1, 'max_check_result_file_age' => 3600, 'max_check_result_reaper_time' => 30, 'nagios_group' => 'nagios', 'nagios_user' => 'nagios', 'notification_timeout' => 30, 'object_cache_file' => base64_encode('/usr/local/nagios/var/objects.cache'), 'precached_object_file' => base64_encode('/usr/local/nagios/var/objects.precache'), 'resource_file' => base64_encode('/usr/local/nagios/etc/resource.cfg'), 'retain_state_information' => 1, 'retention_update_interval' => 60, 'service_check_timeout' => 60, 'service_freshness_check_interval' => 60, 'soft_state_dependencies' => 0, 'state_retention_file' => base64_encode('/usr/local/nagios/var/retention.dat'), 'status_file' => base64_encode('/usr/local/nagios/var/status.dat'), 'status_update_interval' => 10, 'temp_file' => base64_encode('/usr/local/nagios/var/nagios.tmp'), 'temp_path' => base64_encode('/tmp'), 'use_large_installation_tweaks' => 0, 'use_retained_program_state' => 1, 'use_retained_scheduling_info' => 1, 'use_syslog' => 1, 'additional_freshness_latency' => 15, 'admin_email' => '*****@*****.**', 'admin_pager' => '*****@*****.**', 'auto_reschedule_checks' => 0, 'auto_rescheduling_interval' => 30, 'auto_rescheduling_window' => 180, 'bare_update_check' => 0, 'check_for_updates' => 0, 'daemon_dumps_core' => 0, 'date_format' => 'us', 'debug_file' => base64_encode('/usr/local/nagios/var/nagios.debug'), 'debug_level' => 0, 'debug_verbosity' => 1, 'enable_embedded_perl' => 1, 'enable_environment_macros' => 0, 'enable_flap_detection' => 0, 'high_host_flap_threshold' => 20.0, 'high_service_flap_threshold' => 20.0, 'host_inter_check_delay_method' => 's', 'interval_length' => 60, 'low_host_flap_threshold' => 5.0, 'low_service_flap_threshold' => 5.0, 'max_concurrent_checks' => 0, 'max_host_check_spread' => 30, 'max_service_check_spread' => 30, 'max_debug_file_size' => 1000000, 'obsess_over_hosts' => 0, 'obsess_over_services' => 0, 'ocsp_timeout' => 5, 'ochp_timeout' => 5, 'ocsp_command' => base64_encode('ocsp_command'), 'ochp_command' => base64_encode('ochp_command'), 'p1_file' => base64_encode('/usr/local/nagios/bin/p1.pl'), 'passive_host_checks_are_soft' => 0, 'retained_contact_host_attribute_mask' => 0, 'retained_contact_service_attribute_mask' => 0, 'retained_host_attribute_mask' => 0, 'retained_process_host_attribute_mask' => 0, 'retained_process_service_attribute_mask' => 0, 'retained_service_attribute_mask' => 0, 'service_inter_check_delay_method' => 's', 'service_interleave_factor' => 's', 'sleep_time' => 0.25, 'translate_passive_host_checks' => 0, 'use_aggressive_host_checking' => 0, 'use_embedded_perl_implicitly' => 1, 'use_regexp_matching' => 0, 'use_true_regexp_matching' => 0, 'process_performance_data' => 0, 'perfdata_timeout' => 5, 'host_perfdata_command' => base64_encode('process-host-perfdata'), 'service_perfdata_command' => base64_encode('process-service-perfdata'), 'host_perfdata_file' => base64_encode('/tmp/host-perfdata'), 'service_perfdata_file' => base64_encode('/tmp/service-perfdata'), 'host_perfdata_file_template' => base64_encode('[HOSTPERFDATA]\\t$TIMET$\\t$HOSTNAME$\\t$HOSTEXECUTIONTIME$\\t$HOSTOUTPUT$\\t$HOSTPERFDATA$'), 'service_perfdata_file_template' => base64_encode('[SERVICEPERFDATA]\\t$TIMET$\\t$HOSTNAME$\\t$SERVICEDESC$\\t$SERVICEEXECUTIONTIME$\\t$SERVICELATENCY$\\t$SERVICEOUTPUT$\\t$SERVICEPERFDATA$'), 'host_perfdata_file_mode' => 'a', 'service_perfdata_file_mode' => 'a', 'host_perfdata_file_processing_interval' => 0, 'service_perfdata_file_processing_interval' => 0, 'host_perfdata_file_processing_command' => base64_encode('process-host-perfdata-file'), 'service_perfdata_file_processing_command' => base64_encode('process-service-perfdata-file'))); } $apiResponse->printJson(); })->name('saigon-api-get-nagios-config'); $app->post('/sapi/configs/:deployment/nagios', function ($deployment) use($app) { check_deployment_exists($app, $deployment); check_auth($app, $deployment); $keys = array('accept_passive_host_checks', 'accept_passive_service_checks', 'cached_host_check_horizon', 'cached_service_check_horizon', 'cfg_dir', 'check_external_commands', 'check_for_orphaned_hosts', 'check_for_orphaned_services', 'check_host_freshness', 'check_result_path', 'check_result_reaper_frequency', 'check_service_freshness', 'command_check_interval', 'command_file', 'enable_event_handlers', 'enable_notifications', 'enable_predictive_host_dependency_checks', 'enable_predictive_service_dependency_checks', 'event_broker_options', 'event_handler_timeout', 'execute_host_checks', 'execute_service_checks', 'external_command_buffer_slots', 'host_check_timeout', 'host_freshness_check_interval', 'illegal_macro_output_chars', 'illegal_object_name_chars', 'lock_file', 'log_archive_path', 'log_event_handlers', 'log_external_commands', 'log_file', 'log_host_retries', 'log_initial_states', 'log_notifications', 'log_passive_checks', 'log_rotation_method', 'log_service_retries', 'max_check_result_file_age', 'max_check_result_reaper_time', 'nagios_group', 'nagios_user', 'notification_timeout', 'object_cache_file', 'precached_object_file', 'resource_file', 'retain_state_information', 'retention_update_interval', 'service_check_timeout', 'service_freshness_check_interval', 'soft_state_dependencies', 'state_retention_file', 'status_file', 'status_update_interval', 'temp_file', 'temp_path', 'use_large_installation_tweaks', 'use_retained_program_state', 'use_retained_scheduling_info', 'use_syslog', 'additional_freshness_latency', 'admin_email', 'admin_pager', 'auto_reschedule_checks', 'auto_rescheduling_interval', 'auto_rescheduling_window', 'bare_update_check', 'check_for_updates', 'daemon_dumps_core', 'date_format', 'debug_file', 'debug_level', 'debug_verbosity', 'enable_embedded_perl', 'enable_environment_macros', 'enable_flap_detection', 'high_host_flap_threshold', 'high_service_flap_threshold', 'host_inter_check_delay_method', 'interval_length', 'low_host_flap_threshold', 'low_service_flap_threshold', 'max_concurrent_checks', 'max_host_check_spread', 'max_service_check_spread', 'max_debug_file_size', 'obsess_over_hosts', 'obsess_over_services', 'ocsp_timeout', 'ochp_timeout', 'ocsp_command', 'ochp_command', 'p1_file', 'passive_host_checks_are_soft', 'retained_contact_host_attribute_mask', 'retained_contact_service_attribute_mask', 'retained_host_attribute_mask', 'retained_process_host_attribute_mask', 'retained_process_service_attribute_mask', 'retained_service_attribute_mask', 'service_inter_check_delay_method', 'service_interleave_factor', 'sleep_time', 'translate_passive_host_checks', 'use_aggressive_host_checking', 'use_embedded_perl_implicitly', 'use_regexp_matching', 'use_true_regexp_matching', 'process_performance_data', 'perfdata_timeout', 'host_perfdata_command', 'service_perfdata_command', 'host_perfdata_file', 'service_perfdata_file', 'host_perfdata_file_template', 'service_perfdata_file_template', 'host_perfdata_file_mode', 'service_perfdata_file_mode', 'host_perfdata_file_processing_interval', 'service_perfdata_file_processing_interval', 'host_perfdata_file_processing_command', 'service_perfdata_file_processing_command', 'broker_modules'); $request = $app->request(); $contentType = $request->headers('Content-Type'); if ($contentType == 'application/json') { $nagiosConfigInfo = $request->getBody(); $nagiosConfigInfo = json_decode($nagiosConfigInfo, true); } elseif (preg_match("/form-(data|urlencoded)/", $contentType)) {