function serviceescalation_validate($app, $deployment, $serviceEscalationInfo)
{
    foreach ($serviceEscalationInfo as $key => $value) {
        switch ($key) {
            case "service_description":
            case "escalation_period":
                validateForbiddenChars($app, $deployment, '/[^\\w.-]/s', $key, $value);
                break;
            case "escalation_options":
                $opts = validateOptions($app, $deployment, $key, $value, array('w', 'u', 'c', 'r'), true);
                $serviceEscalationInfo[$key] = $opts;
                break;
            case "first_notification":
                validateInterval($app, $deployment, $key, $value, 0, 25);
                break;
            case "last_notification":
                validateInterval($app, $deployment, $key, $value, 0, 100);
                break;
            case "notification_interval":
                validateInterval($app, $deployment, $key, $value, 0, 1440);
                break;
            default:
                break;
        }
    }
    return $serviceEscalationInfo;
}
function servicetemplate_validate($app, $deployment, $serviceTemplateInfo)
{
    foreach ($serviceTemplateInfo as $key => $value) {
        switch ($key) {
            case "use":
            case "check_period":
            case "event_handler":
            case "notification_period":
            case "icon_image":
                validateForbiddenChars($app, $deployment, '/[^\\w.-]/s', $key, $value);
                break;
            case "servicegroups":
                if (is_array($value)) {
                    $value = implode(',', $value);
                }
                validateForbiddenChars($app, $deployment, '/[^\\w.-]/s', $key, $value);
                break;
            case "is_volatile":
            case "active_checks_enabled":
            case "passive_checks_enabled":
            case "obsess_over_service":
            case "check_freshness":
            case "event_handler_enabled":
            case "flap_detection_enabled":
            case "parallelize_check":
            case "process_perf_data":
            case "retain_status_information":
            case "retain_nonstatus_information":
            case "notifications_enabled":
                validateBinary($app, $deployment, $key, $value);
                break;
            case "check_command":
                validateForbiddenChars($app, $deployment, '/[^\\w.-$\\/]/s', $key, $value);
                break;
            case "initial_state":
                $opts = validateOptions($app, $deployment, $key, $value, array('o', 'w', 'u', 'c'), true);
                $serviceTemplateInfo[$key] = $opts;
                break;
            case "max_check_attempts":
                validateInterval($app, $deployment, $key, $value, 1, 20);
                break;
            case "check_interval":
                validateInterval($app, $deployment, $key, $value, 1, 1440);
                break;
            case "retry_interval":
                validateInterval($app, $deployment, $key, $value, 1, 720);
                break;
            case "freshness_threshold":
                validateInterval($app, $deployment, $key, $value, 0, 86400);
                break;
            case "low_flap_threshold":
                validateInterval($app, $deployment, $key, $value, 0, 99);
                break;
            case "high_flap_threshold":
                validateInterval($app, $deployment, $key, $value, 0, 100);
                break;
            case "flap_detection_options":
                $opts = validateOptions($app, $deployment, $key, $value, array('o', 'w', 'c', 'u'), true);
                $serviceTemplateInfo[$key] = $opts;
                break;
            case "notification_interval":
            case "first_notification_delay":
                validateInterval($app, $deployment, $key, $value, 0, 1440);
                break;
            case "notification_options":
                $opts = validateOptions($app, $deployment, $key, $value, array('w', 'u', 'c', 'r', 'f', 's'), true);
                $serviceTemplateInfo[$key] = $opts;
                break;
            case "contacts":
            case "contact_groups":
                if (is_array($value)) {
                    $value = implode(',', $value);
                }
                validateForbiddenChars($app, $deployment, '/[^\\w.-]/s', $key, $value);
                break;
            case "stalking_options":
                $opts = validateOptions($app, $deployment, $key, $value, array('o', 'w', 'u', 'c'), true);
                $serviceTemplateInfo[$key] = $opts;
                break;
            case "icon_image_alt":
                validateForbiddenChars($app, $deployment, '/[^\\w.-\\s]/s', $key, $value);
                break;
            default:
                break;
        }
    }
    // We never want to see single threaded checks running, force this...
    if (!isset($serviceTemplateInfo['parallelize_check']) || empty($serviceTemplateInfo['parallelize_check'])) {
        $serviceTemplateInfo['parallelize_check'] = 1;
    }
    // Don't register since we are a template
    $serviceTemplateInfo['register'] = 0;
    return $serviceTemplateInfo;
}
Example #3
0
         case "host_inter_check_delay_method":
         case "service_inter_check_delay_method":
             validateForbiddenChars($app, $deployment, '/[^\\dnds]/s', $key, $nagiosConfigInfo[$key]);
             break;
         case "max_host_check_spread":
         case "max_service_check_spread":
             validateInterval($app, $deployment, $key, $nagiosConfigInfo[$key], 1, 1440);
             break;
         case "max_debug_file_size":
             validateInterval($app, $deployment, $key, $nagiosConfigInfo[$key], 1, 104857600);
             break;
         case "service_interleave_factor":
             validateForbiddenChars($app, $deployment, '/[^\\ds]/s', $key, $nagiosConfigInfo[$key]);
             break;
         case "sleep_time":
             validateInterval($app, $deployment, $key, $nagiosConfigInfo[$key], 0, 5);
             break;
         case "host_perfdata_file_mode":
         case "service_perfdata_file_mode":
             validateOptions($app, $deployment, $key, $nagiosConfigInfo[$key], array('w', 'a', 'p'));
             break;
         default:
             break;
     }
 }
 check_revision_status($deployment);
 $deployRev = RevDeploy::getDeploymentNextRev($deployment);
 if (RevDeploy::existsDeploymentNagiosCfg($deployment, $deployRev) === true) {
     RevDeploy::modifyDeploymentNagiosCfg($deployment, $nagiosConfigInfo, $deployRev);
     $apiResponse = new APIViewData(0, $deployment, "Successfully Modified Nagios Config");
 } else {
function hosttemplate_validate($app, $deployment, $hostTemplateInfo)
{
    foreach ($hostTemplateInfo as $key => $value) {
        switch ($key) {
            case "check_command":
                validateForbiddenChars($app, $deployment, '/[^\\w.-$\\/]/s', $key, $value);
                break;
            case "initial_state":
                $opts = validateOptions($app, $deployment, $key, $value, array('o', 'd', 'u'), true);
                $hostTemplateInfo[$key] = $opts;
                break;
            case "max_check_attempts":
                validateInterval($app, $deployment, $key, $value, 1, 20);
                break;
            case "check_interval":
            case "notification_interval":
            case "first_notification_delay":
                validateInterval($app, $deployment, $key, $value, 1, 1440);
                break;
            case "retry_interval":
                validateInterval($app, $deployment, $key, $value, 1, 720);
                break;
            case "active_checks_enabled":
            case "passive_checks_enabled":
            case "obsess_over_host":
            case "check_freshness":
            case "event_handler_enabled":
            case "flap_detection_enabled":
            case "process_perf_data":
            case "retain_status_information":
            case "retain_nonstatus_information":
            case "notifications_enabled":
                validateBinary($app, $deployment, $key, $value);
                break;
            case "check_period":
            case "event_handler":
            case "notification_period":
            case "icon_image":
            case "vrml_image":
            case "statusmap_image":
            case "use":
                validateForbiddenChars($app, $deployment, '/[^\\w.-]/s', $key, $value);
                break;
            case "freshness_threshold":
                validateInterval($app, $deployment, $key, $value, 0, 86400);
                break;
            case "low_flap_threshold":
                validateInterval($app, $deployment, $key, $value, 0, 99);
                break;
            case "high_flap_threshold":
                validateInterval($app, $deployment, $key, $value, 0, 100);
                break;
            case "flap_detection_options":
                $opts = validateOptions($app, $deployment, $key, $value, array('o', 'd', 'u'), true);
                $hostTemplateInfo[$key] = $opts;
                break;
            case "notification_options":
                $opts = validateOptions($app, $deployment, $key, $value, array('d', 'u', 'r', 'f', 's'), true);
                $hostTemplateInfo[$key] = $opts;
                break;
            case "stalking_options":
                $opts = validateOptions($app, $deployment, $key, $value, array('o', 'd', 'u'), true);
                $hostTemplateInfo[$key] = $opts;
                break;
            case "notes_url":
            case "action_url":
                validateUrl($app, $deployment, $key, $value);
                break;
            case "icon_image_alt":
            case "notes":
                validateForbiddenChars($app, $deployment, '/[^\\w.-\\s]/s', $key, $value);
                break;
            case "hostgroups":
            case "parents":
                if (is_array($value)) {
                    $value = implode(',', $value);
                }
                validateForbiddenChars($app, $deployment, '/[^\\w.-]/s', $key, $value);
                break;
            default:
                break;
        }
    }
    // Don't register since we are a template
    $hostTemplateInfo['register'] = 0;
    return $hostTemplateInfo;
}