Example #1
0
function validate_condition($conditiontype, $value)
{
    global $USER_DETAILS;
    switch ($conditiontype) {
        case CONDITION_TYPE_HOST_GROUP:
            $available_groups = get_accessible_groups_by_user($USER_DETAILS, PERM_READ_ONLY, null, get_current_nodeid(true));
            if (!isset($available_groups[$value])) {
                error(S_INCORRECT_GROUP);
                return false;
            }
            break;
        case CONDITION_TYPE_HOST_TEMPLATE:
            $available_hosts = get_accessible_hosts_by_user($USER_DETAILS, PERM_READ_ONLY, null, get_current_nodeid(true));
            if (!isset($available_hosts[$value])) {
                error(S_INCORRECT_HOST);
                return false;
            }
            break;
        case CONDITION_TYPE_TRIGGER:
            if (!DBfetch(DBselect('select triggerid from triggers where triggerid=' . $value)) || !check_right_on_trigger_by_triggerid(PERM_READ_ONLY, $value)) {
                error(S_INCORRECT_TRIGGER);
                return false;
            }
            break;
        case CONDITION_TYPE_HOST:
            $available_hosts = get_accessible_hosts_by_user($USER_DETAILS, PERM_READ_ONLY, null, get_current_nodeid(true));
            if (!isset($available_hosts[$value])) {
                error(S_INCORRECT_HOST);
                return false;
            }
            break;
        case CONDITION_TYPE_TIME_PERIOD:
            if (!validate_period($value)) {
                error(S_INCORRECT_PERIOD . ' [' . $value . ']');
                return false;
            }
            break;
        case CONDITION_TYPE_DHOST_IP:
            if (!validate_ip_range($value)) {
                error(S_INCORRECT_IP . ' [' . $value . ']');
                return false;
            }
            break;
        case CONDITION_TYPE_DSERVICE_TYPE:
            if (S_UNKNOWN == discovery_check_type2str($value)) {
                error(S_INCORRECT_DISCOVERY_CHECK);
                return false;
            }
            break;
        case CONDITION_TYPE_DSERVICE_PORT:
            if (!validate_port_list($value)) {
                error(S_INCORRECT_PORT . ' [' . $value . ']');
                return false;
            }
            break;
        case CONDITION_TYPE_DSTATUS:
            if (S_UNKNOWN == discovery_object_status2str($value)) {
                error(S_INCORRECT_DISCOVERY_STATUS);
                return false;
            }
            break;
        case CONDITION_TYPE_EVENT_ACKNOWLEDGED:
            if (S_UNKNOWN == condition_value2str($conditiontype, $value)) {
                error(S_INCORRECT_DISCOVERY_STATUS);
                return false;
            }
            break;
        case CONDITION_TYPE_TRIGGER_NAME:
        case CONDITION_TYPE_TRIGGER_VALUE:
        case CONDITION_TYPE_TRIGGER_SEVERITY:
        case CONDITION_TYPE_MAINTENANCE:
        case CONDITION_TYPE_DUPTIME:
        case CONDITION_TYPE_DVALUE:
        case CONDITION_TYPE_APPLICATION:
            break;
        default:
            error(S_INCORRECT_CONDITION_TYPE);
            return false;
            break;
    }
    return true;
}
 case CONDITION_TYPE_DHOST_IP:
     $condition = new CTextBox('new_condition[value]', '192.168.0.1-127,192.168.2.1', ZBX_TEXTBOX_STANDARD_SIZE);
     break;
 case CONDITION_TYPE_DSERVICE_TYPE:
     $condition = new CComboBox('new_condition[value]');
     foreach (array(SVC_SSH, SVC_LDAP, SVC_SMTP, SVC_FTP, SVC_HTTP, SVC_HTTPS, SVC_POP, SVC_NNTP, SVC_IMAP, SVC_TCP, SVC_AGENT, SVC_SNMPv1, SVC_SNMPv2c, SVC_SNMPv3, SVC_ICMPPING, SVC_TELNET) as $svc) {
         $condition->addItem($svc, discovery_check_type2str($svc));
     }
     break;
 case CONDITION_TYPE_DSERVICE_PORT:
     $condition = new CTextBox('new_condition[value]', '0-1023,1024-49151', ZBX_TEXTBOX_STANDARD_SIZE);
     break;
 case CONDITION_TYPE_DSTATUS:
     $condition = new CComboBox('new_condition[value]');
     foreach (array(DOBJECT_STATUS_UP, DOBJECT_STATUS_DOWN, DOBJECT_STATUS_DISCOVER, DOBJECT_STATUS_LOST) as $stat) {
         $condition->addItem($stat, discovery_object_status2str($stat));
     }
     break;
 case CONDITION_TYPE_DOBJECT:
     $condition = new CComboBox('new_condition[value]');
     foreach (array(EVENT_OBJECT_DHOST, EVENT_OBJECT_DSERVICE) as $object) {
         $condition->addItem($object, discovery_object2str($object));
     }
     break;
 case CONDITION_TYPE_DUPTIME:
     $condition = new CNumericBox('new_condition[value]', 600, 15);
     break;
 case CONDITION_TYPE_DVALUE:
     $condition = new CTextBox('new_condition[value]', '', ZBX_TEXTBOX_STANDARD_SIZE);
     break;
 case CONDITION_TYPE_APPLICATION:
 /**
  * Returns true if the given $value is valid, or set's an error and returns false otherwise.
  *
  *
  * @param $condition
  *
  * @return bool
  */
 public function validate($condition)
 {
     // build validators
     $timePeriodValidator = new CTimePeriodValidator();
     $discoveryCheckTypeValidator = new CLimitedSetValidator(array('values' => array_keys(discovery_check_type2str())));
     $discoveryObjectStatusValidator = new CLimitedSetValidator(array('values' => array_keys(discovery_object_status2str())));
     $triggerSeverityValidator = new CLimitedSetValidator(array('values' => array(TRIGGER_SEVERITY_NOT_CLASSIFIED, TRIGGER_SEVERITY_INFORMATION, TRIGGER_SEVERITY_WARNING, TRIGGER_SEVERITY_AVERAGE, TRIGGER_SEVERITY_HIGH, TRIGGER_SEVERITY_DISASTER)));
     $discoveryObjectValidator = new CLimitedSetValidator(array('values' => array_keys(discovery_object2str())));
     $triggerValueValidator = new CLimitedSetValidator(array('values' => array_keys(trigger_value2str())));
     $eventTypeValidator = new CLimitedSetValidator(array('values' => array_keys(eventType())));
     $conditionValue = $condition['value'];
     // validate condition values depending on condition type
     switch ($condition['conditiontype']) {
         case CONDITION_TYPE_HOST_GROUP:
             if (!$conditionValue) {
                 $this->setError(_('Empty action condition.'));
             }
             break;
         case CONDITION_TYPE_TEMPLATE:
             if (!$conditionValue) {
                 $this->setError(_('Empty action condition.'));
             }
             break;
         case CONDITION_TYPE_TRIGGER:
             if (!$conditionValue) {
                 $this->setError(_('Empty action condition.'));
             }
             break;
         case CONDITION_TYPE_HOST:
             if (!$conditionValue) {
                 $this->setError(_('Empty action condition.'));
             }
             break;
         case CONDITION_TYPE_DRULE:
             if (!$conditionValue) {
                 $this->setError(_('Empty action condition.'));
             }
             break;
         case CONDITION_TYPE_DCHECK:
             if (!$conditionValue) {
                 $this->setError(_('Empty action condition.'));
             }
             break;
         case CONDITION_TYPE_PROXY:
             if (!$conditionValue) {
                 $this->setError(_('Empty action condition.'));
             }
             break;
         case CONDITION_TYPE_DOBJECT:
             if (zbx_empty($conditionValue)) {
                 $this->setError(_('Empty action condition.'));
             } elseif (!$discoveryObjectValidator->validate($conditionValue)) {
                 $this->setError(_('Incorrect action condition discovery object.'));
             }
             break;
         case CONDITION_TYPE_TIME_PERIOD:
             if (!$timePeriodValidator->validate($conditionValue)) {
                 $this->setError($timePeriodValidator->getError());
             }
             break;
         case CONDITION_TYPE_DHOST_IP:
             $ipRangeValidator = new CIPRangeValidator();
             if (zbx_empty($conditionValue)) {
                 $this->setError(_('Empty action condition.'));
             } elseif (!$ipRangeValidator->validate($conditionValue)) {
                 $this->setError($ipRangeValidator->getError());
             }
             break;
         case CONDITION_TYPE_DSERVICE_TYPE:
             if (zbx_empty($conditionValue)) {
                 $this->setError(_('Empty action condition.'));
             } elseif (!$discoveryCheckTypeValidator->validate($conditionValue)) {
                 $this->setError(_('Incorrect action condition discovery check.'));
             }
             break;
         case CONDITION_TYPE_DSERVICE_PORT:
             if (zbx_empty($conditionValue)) {
                 $this->setError(_('Empty action condition.'));
             } elseif (!validate_port_list($conditionValue)) {
                 $this->setError(_s('Incorrect action condition port "%1$s".', $conditionValue));
             }
             break;
         case CONDITION_TYPE_DSTATUS:
             if (zbx_empty($conditionValue)) {
                 $this->setError(_('Empty action condition.'));
             } elseif (!$discoveryObjectStatusValidator->validate($conditionValue)) {
                 $this->setError(_('Incorrect action condition discovery status.'));
             }
             break;
         case CONDITION_TYPE_MAINTENANCE:
             if (!zbx_empty($conditionValue)) {
                 $this->setError(_('Maintenance action condition value must be empty.'));
             }
             break;
         case CONDITION_TYPE_TRIGGER_SEVERITY:
             if (zbx_empty($conditionValue)) {
                 $this->setError(_('Empty action condition.'));
             } elseif (!$triggerSeverityValidator->validate($conditionValue)) {
                 $this->setError(_('Incorrect action condition trigger severity.'));
             }
             break;
         case CONDITION_TYPE_TRIGGER_VALUE:
             if (zbx_empty($conditionValue)) {
                 $this->setError(_('Empty action condition.'));
             } elseif (!$triggerValueValidator->validate($conditionValue)) {
                 $this->setError(_('Incorrect action condition trigger value.'));
             }
             break;
         case CONDITION_TYPE_EVENT_TYPE:
             if (zbx_empty($conditionValue)) {
                 $this->setError(_('Empty action condition.'));
             } elseif (!$eventTypeValidator->validate($conditionValue)) {
                 $this->setError(_('Incorrect action condition event type.'));
             }
             break;
         case CONDITION_TYPE_TRIGGER_NAME:
         case CONDITION_TYPE_DUPTIME:
         case CONDITION_TYPE_DVALUE:
         case CONDITION_TYPE_APPLICATION:
         case CONDITION_TYPE_HOST_NAME:
         case CONDITION_TYPE_HOST_METADATA:
             if (zbx_empty($conditionValue)) {
                 $this->setError(_('Empty action condition.'));
             }
             break;
         default:
             $this->setError(_('Incorrect action condition type.'));
     }
     // If no error is not set, return true.
     return !(bool) $this->getError();
 }
Example #4
0
function condition_value2str($conditiontype, $value)
{
    switch ($conditiontype) {
        case CONDITION_TYPE_HOST_GROUP:
            $groups = API::HostGroup()->get(array('groupids' => $value, 'output' => array('name'), 'nodeids' => get_current_nodeid(true), 'limit' => 1));
            if ($groups) {
                $group = reset($groups);
                $str_val = '';
                if (id2nodeid($value) != get_current_nodeid()) {
                    $str_val = get_node_name_by_elid($value, true, NAME_DELIMITER);
                }
                $str_val .= $group['name'];
            } else {
                return _('Unknown');
            }
            break;
        case CONDITION_TYPE_TRIGGER:
            $trigs = API::Trigger()->get(array('triggerids' => $value, 'expandDescription' => true, 'output' => array('description'), 'selectHosts' => array('name'), 'nodeids' => get_current_nodeid(true), 'limit' => 1));
            if ($trigs) {
                $trig = reset($trigs);
                $host = reset($trig['hosts']);
                $str_val = '';
                if (id2nodeid($value) != get_current_nodeid()) {
                    $str_val = get_node_name_by_elid($value, true, NAME_DELIMITER);
                }
                $str_val .= $host['name'] . NAME_DELIMITER . $trig['description'];
            } else {
                return _('Unknown');
            }
            break;
        case CONDITION_TYPE_HOST:
        case CONDITION_TYPE_TEMPLATE:
            if ($host = get_host_by_hostid($value)) {
                $str_val = '';
                if (id2nodeid($value) != get_current_nodeid()) {
                    $str_val = get_node_name_by_elid($value, true, NAME_DELIMITER);
                }
                $str_val .= $host['name'];
            } else {
                return _('Unknown');
            }
            break;
        case CONDITION_TYPE_TRIGGER_NAME:
        case CONDITION_TYPE_HOST_METADATA:
        case CONDITION_TYPE_HOST_NAME:
            $str_val = $value;
            break;
        case CONDITION_TYPE_TRIGGER_VALUE:
            $str_val = trigger_value2str($value);
            break;
        case CONDITION_TYPE_TRIGGER_SEVERITY:
            $str_val = getSeverityCaption($value);
            break;
        case CONDITION_TYPE_TIME_PERIOD:
            $str_val = $value;
            break;
        case CONDITION_TYPE_MAINTENANCE:
            $str_val = _('maintenance');
            break;
        case CONDITION_TYPE_NODE:
            if ($node = get_node_by_nodeid($value)) {
                $str_val = $node['name'];
            } else {
                return _('Unknown');
            }
            break;
        case CONDITION_TYPE_DRULE:
            if ($drule = get_discovery_rule_by_druleid($value)) {
                $str_val = $drule['name'];
            } else {
                return _('Unknown');
            }
            break;
        case CONDITION_TYPE_DCHECK:
            $row = DBfetch(DBselect('SELECT dr.name,c.dcheckid,c.type,c.key_,c.ports' . ' FROM drules dr,dchecks c' . ' WHERE dr.druleid=c.druleid' . ' AND c.dcheckid=' . zbx_dbstr($value)));
            if ($row) {
                $str_val = $row['name'] . NAME_DELIMITER . discovery_check2str($row['type'], $row['key_'], $row['ports']);
            } else {
                return _('Unknown');
            }
            break;
        case CONDITION_TYPE_DOBJECT:
            $str_val = discovery_object2str($value);
            break;
        case CONDITION_TYPE_PROXY:
            if ($host = get_host_by_hostid($value)) {
                $str_val = $host['host'];
            } else {
                return _('Unknown');
            }
            break;
        case CONDITION_TYPE_DHOST_IP:
            $str_val = $value;
            break;
        case CONDITION_TYPE_DSERVICE_TYPE:
            $str_val = discovery_check_type2str($value);
            break;
        case CONDITION_TYPE_DSERVICE_PORT:
            $str_val = $value;
            break;
        case CONDITION_TYPE_DSTATUS:
            $str_val = discovery_object_status2str($value);
            break;
        case CONDITION_TYPE_DUPTIME:
            $str_val = $value;
            break;
        case CONDITION_TYPE_DVALUE:
            $str_val = $value;
            break;
        case CONDITION_TYPE_EVENT_ACKNOWLEDGED:
            $str_val = $value ? _('Ack') : _('Not Ack');
            break;
        case CONDITION_TYPE_APPLICATION:
            $str_val = $value;
            break;
        case CONDITION_TYPE_EVENT_TYPE:
            $str_val = eventType($value);
            break;
        default:
            return _('Unknown');
    }
    return $str_val;
}
Example #5
0
 /**
  * Validate conditions.
  *
  * @static
  *
  * @param array $conditions
  * @param int   $conditions['conditiontype']
  * @param array $conditions['value']
  *
  * @return bool
  */
 public static function validateConditions($conditions, $update = false)
 {
     $conditions = zbx_toArray($conditions);
     $hostGroupIdsAll = array();
     $templateIdsAll = array();
     $triggerIdsAll = array();
     $hostIdsAll = array();
     $discoveryRuleIdsAll = array();
     $proxyIdsAll = array();
     $proxyidsAll = array();
     // build validators
     $timePeriodValidator = new CTimePeriodValidator();
     $discoveryCheckTypeValidator = new CSetValidator(array('values' => array_keys(discovery_check_type2str())));
     $discoveryObjectStatusValidator = new CSetValidator(array('values' => array_keys(discovery_object_status2str())));
     $triggerSeverityValidator = new CSetValidator(array('values' => array_keys(getSeverityCaption())));
     $discoveryObjectValidator = new CSetValidator(array('values' => array_keys(discovery_object2str())));
     $triggerValueValidator = new CSetValidator(array('values' => array_keys(trigger_value2str())));
     $eventTypeValidator = new CSetValidator(array('values' => array_keys(eventType())));
     foreach ($conditions as $condition) {
         // on create operator is mandatory and needs validation, but on update it must be validated only if it's set
         if (!$update || $update && isset($condition['operator'])) {
             $operatorValidator = new CSetValidator(array('values' => get_operators_by_conditiontype($condition['conditiontype'])));
             if (!$operatorValidator->validate($condition['operator'])) {
                 self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition operator.'));
             }
         }
         if (!$update || $update && isset($condition['value'])) {
             // validate condition values depending on condition type
             switch ($condition['conditiontype']) {
                 case CONDITION_TYPE_HOST_GROUP:
                     if (!$condition['value']) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, _('Empty action condition.'));
                     }
                     $hostGroupIdsAll[$condition['value']] = $condition['value'];
                     break;
                 case CONDITION_TYPE_TEMPLATE:
                     if (!$condition['value']) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, _('Empty action condition.'));
                     }
                     $templateIdsAll[$condition['value']] = $condition['value'];
                     break;
                 case CONDITION_TYPE_TRIGGER:
                     if (!$condition['value']) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, _('Empty action condition.'));
                     }
                     $triggerIdsAll[$condition['value']] = $condition['value'];
                     break;
                 case CONDITION_TYPE_HOST:
                     if (!$condition['value']) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, _('Empty action condition.'));
                     }
                     $hostIdsAll[$condition['value']] = $condition['value'];
                     break;
                 case CONDITION_TYPE_DRULE:
                     if (!$condition['value']) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, _('Empty action condition.'));
                     }
                     $discoveryRuleIdsAll[$condition['value']] = $condition['value'];
                     break;
                 case CONDITION_TYPE_DCHECK:
                     if (!$condition['value']) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, _('Empty action condition.'));
                     }
                     $proxyIdsAll[$condition['value']] = $condition['value'];
                     break;
                 case CONDITION_TYPE_PROXY:
                     if (!$condition['value']) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, _('Empty action condition.'));
                     }
                     $proxyidsAll[$condition['value']] = $condition['value'];
                     break;
                 case CONDITION_TYPE_DOBJECT:
                     if (zbx_empty($condition['value'])) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, _('Empty action condition.'));
                     } elseif (!$discoveryObjectValidator->validate($condition['value'])) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition discovery object.'));
                     }
                     break;
                 case CONDITION_TYPE_TIME_PERIOD:
                     if (!$timePeriodValidator->validate($condition['value'])) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, $timePeriodValidator->getError());
                     }
                     break;
                 case CONDITION_TYPE_DHOST_IP:
                     if (zbx_empty($condition['value'])) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, _('Empty action condition.'));
                     } else {
                         if (!validate_ip_range($condition['value'])) {
                             self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect action condition ip "%1$s".', $condition['value']));
                         }
                     }
                     break;
                 case CONDITION_TYPE_DSERVICE_TYPE:
                     if (zbx_empty($condition['value'])) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, _('Empty action condition.'));
                     } elseif (!$discoveryCheckTypeValidator->validate($condition['value'])) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition discovery check.'));
                     }
                     break;
                 case CONDITION_TYPE_DSERVICE_PORT:
                     if (zbx_empty($condition['value'])) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, _('Empty action condition.'));
                     } elseif (!validate_port_list($condition['value'])) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect action condition port "%1$s".', $condition['value']));
                     }
                     break;
                 case CONDITION_TYPE_DSTATUS:
                     if (zbx_empty($condition['value'])) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, _('Empty action condition.'));
                     } elseif (!$discoveryObjectStatusValidator->validate($condition['value'])) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition discovery status.'));
                     }
                     break;
                 case CONDITION_TYPE_MAINTENANCE:
                     if (!zbx_empty($condition['value'])) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, _('Maintenance action condition value must be empty.'));
                     }
                     break;
                 case CONDITION_TYPE_TRIGGER_SEVERITY:
                     if (zbx_empty($condition['value'])) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, _('Empty action condition.'));
                     } elseif (!$triggerSeverityValidator->validate($condition['value'])) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition trigger severity.'));
                     }
                     break;
                 case CONDITION_TYPE_TRIGGER_VALUE:
                     if (zbx_empty($condition['value'])) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, _('Empty action condition.'));
                     } elseif (!$triggerValueValidator->validate($condition['value'])) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition trigger value.'));
                     }
                     break;
                 case CONDITION_TYPE_EVENT_TYPE:
                     if (zbx_empty($condition['value'])) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, _('Empty action condition.'));
                     } elseif (!$eventTypeValidator->validate($condition['value'])) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition event type.'));
                     }
                     break;
                 case CONDITION_TYPE_TRIGGER_NAME:
                 case CONDITION_TYPE_NODE:
                 case CONDITION_TYPE_DUPTIME:
                 case CONDITION_TYPE_DVALUE:
                 case CONDITION_TYPE_APPLICATION:
                 case CONDITION_TYPE_HOST_NAME:
                 case CONDITION_TYPE_HOST_METADATA:
                     if (zbx_empty($condition['value'])) {
                         self::exception(ZBX_API_ERROR_PARAMETERS, _('Empty action condition.'));
                     }
                     break;
                 default:
                     self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition type.'));
                     break;
             }
         }
     }
     if (!API::HostGroup()->isWritable($hostGroupIdsAll)) {
         self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition host group. Host group does not exist or you have no access to it.'));
     }
     if (!API::Host()->isWritable($hostIdsAll)) {
         self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition host. Host does not exist or you have no access to it.'));
     }
     if (!API::Template()->isWritable($templateIdsAll)) {
         self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition template. Template does not exist or you have no access to it.'));
     }
     if (!API::Trigger()->isWritable($triggerIdsAll)) {
         self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition trigger. Trigger does not exist or you have no access to it.'));
     }
     if (!API::DRule()->isWritable($discoveryRuleIdsAll)) {
         self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition discovery rule. Discovery rule does not exist or you have no access to it.'));
     }
     if (!API::DCheck()->isWritable($proxyIdsAll)) {
         self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition discovery check. Discovery check does not exist or you have no access to it.'));
     }
     if (!API::Proxy()->isWritable($proxyidsAll)) {
         self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition proxy. Proxy does not exist or you have no access to it.'));
     }
     return true;
 }
Example #6
0
function get_act_new_cond_form($action = null)
{
    $tblCond = new CTable('', 'nowrap');
    if (isset($_REQUEST['actionid']) && empty($action)) {
        $action = get_action_by_actionid($_REQUEST['actionid']);
    }
    if (isset($_REQUEST['actionid']) && !isset($_REQUEST['form_refresh'])) {
        $eventsource = $action['eventsource'];
        $evaltype = $action['evaltype'];
    } else {
        $evaltype = get_request('evaltype');
        $eventsource = get_request('eventsource');
    }
    $allowed_conditions = get_conditions_by_eventsource($eventsource);
    /* init new_condition variable */
    $new_condition = get_request('new_condition', array());
    if (!is_array($new_condition)) {
        $new_condition = array();
    }
    if (!isset($new_condition['type'])) {
        $new_condition['type'] = CONDITION_TYPE_TRIGGER_NAME;
    }
    if (!isset($new_condition['operator'])) {
        $new_condition['operator'] = CONDITION_OPERATOR_LIKE;
    }
    if (!isset($new_condition['value'])) {
        $new_condition['value'] = '';
    }
    if (!str_in_array($new_condition['type'], $allowed_conditions)) {
        $new_condition['type'] = $allowed_conditions[0];
    }
    // NEW CONDITION
    $rowCondition = array();
    // add condition type
    $cmbCondType = new CComboBox('new_condition[type]', $new_condition['type'], 'submit()');
    foreach ($allowed_conditions as $cond) {
        $cmbCondType->addItem($cond, condition_type2str($cond));
    }
    array_push($rowCondition, $cmbCondType);
    // add condition operation
    $cmbCondOp = new CComboBox('new_condition[operator]');
    foreach (get_operators_by_conditiontype($new_condition['type']) as $op) {
        $cmbCondOp->addItem($op, condition_operator2str($op));
    }
    array_push($rowCondition, $cmbCondOp);
    // add condition value
    switch ($new_condition['type']) {
        case CONDITION_TYPE_HOST_GROUP:
            $tblCond->addItem(new CVar('new_condition[value]', '0'));
            $rowCondition[] = array(new CTextBox('group', '', 20, 'yes'), new CButton('btn1', S_SELECT, "return PopUp('popup.php?dstfrm=" . S_ACTION . "&dstfld1=new_condition%5Bvalue%5D&dstfld2=group&srctbl=host_group" . "&srcfld1=groupid&srcfld2=name',450,450);", 'T'));
            break;
        case CONDITION_TYPE_HOST_TEMPLATE:
            $tblCond->addItem(new CVar('new_condition[value]', '0'));
            $rowCondition[] = array(new CTextBox('host', '', 20, 'yes'), new CButton('btn1', S_SELECT, "return PopUp('popup.php?dstfrm=" . S_ACTION . "&dstfld1=new_condition%5Bvalue%5D&dstfld2=host&srctbl=host_templates" . "&srcfld1=hostid&srcfld2=host',450,450);", 'T'));
            break;
        case CONDITION_TYPE_HOST:
            $tblCond->addItem(new CVar('new_condition[value]', '0'));
            $rowCondition[] = array(new CTextBox('host', '', 20, 'yes'), new CButton('btn1', S_SELECT, "return PopUp('popup.php?dstfrm=" . S_ACTION . "&dstfld1=new_condition%5Bvalue%5D&dstfld2=host&srctbl=hosts" . "&srcfld1=hostid&srcfld2=host',450,450);", 'T'));
            break;
        case CONDITION_TYPE_TRIGGER:
            $tblCond->addItem(new CVar('new_condition[value]', '0'));
            $rowCondition[] = array(new CTextBox('trigger', '', 20, 'yes'), new CButton('btn1', S_SELECT, "return PopUp('popup.php?dstfrm=" . S_ACTION . "&dstfld1=new_condition%5Bvalue%5D&dstfld2=trigger&srctbl=triggers" . "&srcfld1=triggerid&srcfld2=description');", 'T'));
            break;
        case CONDITION_TYPE_TRIGGER_NAME:
            $rowCondition[] = new CTextBox('new_condition[value]', "", 40);
            break;
        case CONDITION_TYPE_TRIGGER_VALUE:
            $cmbCondVal = new CComboBox('new_condition[value]');
            foreach (array(TRIGGER_VALUE_FALSE, TRIGGER_VALUE_TRUE) as $tr_val) {
                $cmbCondVal->addItem($tr_val, trigger_value2str($tr_val));
            }
            $rowCondition[] = $cmbCondVal;
            break;
        case CONDITION_TYPE_TIME_PERIOD:
            $rowCondition[] = new CTextBox('new_condition[value]', "1-7,00:00-23:59", 40);
            break;
        case CONDITION_TYPE_TRIGGER_SEVERITY:
            $cmbCondVal = new CComboBox('new_condition[value]');
            foreach (array(TRIGGER_SEVERITY_INFORMATION, TRIGGER_SEVERITY_WARNING, TRIGGER_SEVERITY_AVERAGE, TRIGGER_SEVERITY_HIGH, TRIGGER_SEVERITY_DISASTER) as $id) {
                $cmbCondVal->addItem($id, get_severity_description($id));
            }
            $rowCondition[] = $cmbCondVal;
            break;
        case CONDITION_TYPE_MAINTENANCE:
            $rowCondition[] = new CCol(S_MAINTENANCE_SMALL);
            break;
        case CONDITION_TYPE_DHOST_IP:
            $rowCondition[] = new CTextBox('new_condition[value]', '192.168.0.1-127,192.168.2.1', 50);
            break;
        case CONDITION_TYPE_DSERVICE_TYPE:
            $cmbCondVal = new CComboBox('new_condition[value]');
            foreach (array(SVC_SSH, SVC_LDAP, SVC_SMTP, SVC_FTP, SVC_HTTP, SVC_POP, SVC_NNTP, SVC_IMAP, SVC_TCP, SVC_AGENT, SVC_SNMPv1, SVC_SNMPv2, SVC_ICMPPING) as $svc) {
                $cmbCondVal->addItem($svc, discovery_check_type2str($svc));
            }
            $rowCondition[] = $cmbCondVal;
            break;
        case CONDITION_TYPE_DSERVICE_PORT:
            $rowCondition[] = new CTextBox('new_condition[value]', '0-1023,1024-49151', 40);
            break;
        case CONDITION_TYPE_DSTATUS:
            $cmbCondVal = new CComboBox('new_condition[value]');
            foreach (array(DOBJECT_STATUS_UP, DOBJECT_STATUS_DOWN, DOBJECT_STATUS_DISCOVER, DOBJECT_STATUS_LOST) as $stat) {
                $cmbCondVal->addItem($stat, discovery_object_status2str($stat));
            }
            $rowCondition[] = $cmbCondVal;
            break;
        case CONDITION_TYPE_DUPTIME:
            $rowCondition[] = new CNumericBox('new_condition[value]', '600', 15);
            break;
        case CONDITION_TYPE_DVALUE:
            $rowCondition[] = new CTextBox('new_condition[value]', "", 40);
            break;
        case CONDITION_TYPE_APPLICATION:
            $rowCondition[] = new CTextBox('new_condition[value]', "", 40);
            break;
    }
    $tblCond->addRow($rowCondition);
    $tblConditions = new CTableInfo();
    $tblConditions->addRow($tblCond);
    $td = new CCol(array(new CButton('add_condition', S_ADD), new CButton('cancel_new_condition', S_CANCEL)));
    $td->addOption('colspan', '3');
    $td->addOption('style', 'text-align: right;');
    $tblConditions->SetFooter($td);
    unset($grouped_conditions, $cond_el, $cond_buttons);
    // end of NEW CONDITION
    return $tblConditions;
}
     $rowCondition[] = new CTextBox('new_condition[value]', '192.168.0.1-127,192.168.2.1', ZBX_TEXTBOX_STANDARD_SIZE);
     break;
 case CONDITION_TYPE_DSERVICE_TYPE:
     $conditionValueComboBox = new CComboBox('new_condition[value]');
     foreach (array(SVC_SSH, SVC_LDAP, SVC_SMTP, SVC_FTP, SVC_HTTP, SVC_POP, SVC_NNTP, SVC_IMAP, SVC_TCP, SVC_AGENT, SVC_SNMPv1, SVC_SNMPv2c, SVC_SNMPv3, SVC_ICMPPING) as $svc) {
         $conditionValueComboBox->addItem($svc, discovery_check_type2str($svc));
     }
     $rowCondition[] = $conditionValueComboBox;
     break;
 case CONDITION_TYPE_DSERVICE_PORT:
     $rowCondition[] = new CTextBox('new_condition[value]', '0-1023,1024-49151', ZBX_TEXTBOX_STANDARD_SIZE);
     break;
 case CONDITION_TYPE_DSTATUS:
     $conditionValueComboBox = new CComboBox('new_condition[value]');
     foreach (array(DOBJECT_STATUS_UP, DOBJECT_STATUS_DOWN, DOBJECT_STATUS_DISCOVER, DOBJECT_STATUS_LOST) as $stat) {
         $conditionValueComboBox->addItem($stat, discovery_object_status2str($stat));
     }
     $rowCondition[] = $conditionValueComboBox;
     break;
 case CONDITION_TYPE_DOBJECT:
     $conditionValueComboBox = new CComboBox('new_condition[value]');
     foreach (array(EVENT_OBJECT_DHOST, EVENT_OBJECT_DSERVICE) as $object) {
         $conditionValueComboBox->addItem($object, discovery_object2str($object));
     }
     $rowCondition[] = $conditionValueComboBox;
     break;
 case CONDITION_TYPE_DUPTIME:
     $rowCondition[] = new CNumericBox('new_condition[value]', 600, 15);
     break;
 case CONDITION_TYPE_DVALUE:
     $rowCondition[] = new CTextBox('new_condition[value]', '', ZBX_TEXTBOX_STANDARD_SIZE);
Example #8
0
/**
 * Converts numerical action condition values to their corresponding string values according to action condition type.
 *
 * For action condition types such as: hosts, host groups, templates, proxies, triggers, discovery rules
 * and discovery checks, action condition values contain IDs. All unique IDs are first collected and then queried.
 * For other action condition types values are returned as they are or converted using simple string convertion
 * functions according to action condition type.
 *
 * @param array $actions							array of actions
 * @param array $action['filter']					array containing arrays of action conditions and other data
 * @param array $action['filter']['conditions']		array of action conditions
 * @param array $config								array containing configuration parameters for getting trigger
 *													severity names
 *
 * @return array									returns an array of actions condition string values
 */
function actionConditionValueToString(array $actions, array $config)
{
    $result = [];
    $groupIds = [];
    $triggerIds = [];
    $hostIds = [];
    $templateIds = [];
    $proxyIds = [];
    $dRuleIds = [];
    $dCheckIds = [];
    foreach ($actions as $i => $action) {
        $result[$i] = [];
        foreach ($action['filter']['conditions'] as $j => $condition) {
            // unknown types and all of the default values for other types are 'Unknown'
            $result[$i][$j] = _('Unknown');
            switch ($condition['conditiontype']) {
                case CONDITION_TYPE_HOST_GROUP:
                    $groupIds[$condition['value']] = $condition['value'];
                    break;
                case CONDITION_TYPE_TRIGGER:
                    $triggerIds[$condition['value']] = $condition['value'];
                    break;
                case CONDITION_TYPE_HOST:
                    $hostIds[$condition['value']] = $condition['value'];
                    break;
                case CONDITION_TYPE_TEMPLATE:
                    $templateIds[$condition['value']] = $condition['value'];
                    break;
                case CONDITION_TYPE_PROXY:
                    $proxyIds[$condition['value']] = $condition['value'];
                    break;
                    // return values as is for following condition types
                // return values as is for following condition types
                case CONDITION_TYPE_TRIGGER_NAME:
                case CONDITION_TYPE_HOST_METADATA:
                case CONDITION_TYPE_HOST_NAME:
                case CONDITION_TYPE_TIME_PERIOD:
                case CONDITION_TYPE_DHOST_IP:
                case CONDITION_TYPE_DSERVICE_PORT:
                case CONDITION_TYPE_DUPTIME:
                case CONDITION_TYPE_DVALUE:
                case CONDITION_TYPE_APPLICATION:
                    $result[$i][$j] = $condition['value'];
                    break;
                case CONDITION_TYPE_EVENT_ACKNOWLEDGED:
                    $result[$i][$j] = $condition['value'] ? _('Ack') : _('Not Ack');
                    break;
                case CONDITION_TYPE_MAINTENANCE:
                    $result[$i][$j] = _('maintenance');
                    break;
                case CONDITION_TYPE_TRIGGER_VALUE:
                    $result[$i][$j] = trigger_value2str($condition['value']);
                    break;
                case CONDITION_TYPE_TRIGGER_SEVERITY:
                    $result[$i][$j] = getSeverityName($condition['value'], $config);
                    break;
                case CONDITION_TYPE_DRULE:
                    $dRuleIds[$condition['value']] = $condition['value'];
                    break;
                case CONDITION_TYPE_DCHECK:
                    $dCheckIds[$condition['value']] = $condition['value'];
                    break;
                case CONDITION_TYPE_DOBJECT:
                    $result[$i][$j] = discovery_object2str($condition['value']);
                    break;
                case CONDITION_TYPE_DSERVICE_TYPE:
                    $result[$i][$j] = discovery_check_type2str($condition['value']);
                    break;
                case CONDITION_TYPE_DSTATUS:
                    $result[$i][$j] = discovery_object_status2str($condition['value']);
                    break;
                case CONDITION_TYPE_EVENT_TYPE:
                    $result[$i][$j] = eventType($condition['value']);
                    break;
            }
        }
    }
    $groups = [];
    $triggers = [];
    $hosts = [];
    $templates = [];
    $proxies = [];
    $dRules = [];
    $dChecks = [];
    if ($groupIds) {
        $groups = API::HostGroup()->get(['output' => ['name'], 'groupids' => $groupIds, 'preservekeys' => true]);
    }
    if ($triggerIds) {
        $triggers = API::Trigger()->get(['output' => ['description'], 'triggerids' => $triggerIds, 'expandDescription' => true, 'selectHosts' => ['name'], 'preservekeys' => true]);
    }
    if ($hostIds) {
        $hosts = API::Host()->get(['output' => ['name'], 'hostids' => $hostIds, 'preservekeys' => true]);
    }
    if ($templateIds) {
        $templates = API::Template()->get(['output' => ['name'], 'templateids' => $templateIds, 'preservekeys' => true]);
    }
    if ($proxyIds) {
        $proxies = API::Proxy()->get(['output' => ['host'], 'proxyids' => $proxyIds, 'preservekeys' => true]);
    }
    if ($dRuleIds) {
        $dRules = API::DRule()->get(['output' => ['name'], 'druleids' => $dRuleIds, 'preservekeys' => true]);
    }
    if ($dCheckIds) {
        $dChecks = API::DCheck()->get(['output' => ['type', 'key_', 'ports'], 'dcheckids' => $dCheckIds, 'selectDRules' => ['name'], 'preservekeys' => true]);
    }
    if ($groups || $triggers || $hosts || $templates || $proxies || $dRules || $dChecks) {
        foreach ($actions as $i => $action) {
            foreach ($action['filter']['conditions'] as $j => $condition) {
                $id = $condition['value'];
                switch ($condition['conditiontype']) {
                    case CONDITION_TYPE_HOST_GROUP:
                        if (isset($groups[$id])) {
                            $result[$i][$j] = $groups[$id]['name'];
                        }
                        break;
                    case CONDITION_TYPE_TRIGGER:
                        if (isset($triggers[$id])) {
                            $host = reset($triggers[$id]['hosts']);
                            $result[$i][$j] = $host['name'] . NAME_DELIMITER . $triggers[$id]['description'];
                        }
                        break;
                    case CONDITION_TYPE_HOST:
                        if (isset($hosts[$id])) {
                            $result[$i][$j] = $hosts[$id]['name'];
                        }
                        break;
                    case CONDITION_TYPE_TEMPLATE:
                        if (isset($templates[$id])) {
                            $result[$i][$j] = $templates[$id]['name'];
                        }
                        break;
                    case CONDITION_TYPE_PROXY:
                        if (isset($proxies[$id])) {
                            $result[$i][$j] = $proxies[$id]['host'];
                        }
                        break;
                    case CONDITION_TYPE_DRULE:
                        if (isset($dRules[$id])) {
                            $result[$i][$j] = $dRules[$id]['name'];
                        }
                        break;
                    case CONDITION_TYPE_DCHECK:
                        if (isset($dChecks[$id])) {
                            $drule = reset($dChecks[$id]['drules']);
                            $type = $dChecks[$id]['type'];
                            $key_ = $dChecks[$id]['key_'];
                            $ports = $dChecks[$id]['ports'];
                            $dCheck = discovery_check2str($type, $key_, $ports);
                            $result[$i][$j] = $drule['name'] . NAME_DELIMITER . $dCheck;
                        }
                        break;
                }
            }
        }
    }
    return $result;
}
Example #9
0
function validate_condition($conditiontype, $value)
{
    global $USER_DETAILS;
    switch ($conditiontype) {
        case CONDITION_TYPE_HOST_GROUP:
            $groups = CHostGroup::get(array('groupids' => $value, 'output' => API_OUTPUT_SHORTEN, 'nodeids' => get_current_nodeid(true)));
            if (empty($groups)) {
                error(S_INCORRECT_GROUP);
                return false;
            }
            break;
        case CONDITION_TYPE_HOST_TEMPLATE:
            $templates = CTemplate::get(array('templateids' => $value, 'output' => API_OUTPUT_SHORTEN, 'nodeids' => get_current_nodeid(true)));
            if (empty($templates)) {
                error(S_INCORRECT_HOST);
                return false;
            }
            break;
        case CONDITION_TYPE_TRIGGER:
            $triggers = CTrigger::get(array('triggerids' => $value, 'output' => API_OUTPUT_SHORTEN, 'nodeids' => get_current_nodeid(true)));
            if (empty($triggers)) {
                error(S_INCORRECT_TRIGGER);
                return false;
            }
            break;
        case CONDITION_TYPE_HOST:
            $hosts = CHost::get(array('hostids' => $value, 'output' => API_OUTPUT_SHORTEN, 'nodeids' => get_current_nodeid(true)));
            if (empty($hosts)) {
                error(S_INCORRECT_HOST);
                return false;
            }
            break;
        case CONDITION_TYPE_TIME_PERIOD:
            if (!validate_period($value)) {
                error(S_INCORRECT_PERIOD . ' [' . $value . ']');
                return false;
            }
            break;
        case CONDITION_TYPE_DHOST_IP:
            if (!validate_ip_range($value)) {
                error(S_INCORRECT_IP . ' [' . $value . ']');
                return false;
            }
            break;
        case CONDITION_TYPE_DSERVICE_TYPE:
            if (S_UNKNOWN == discovery_check_type2str($value)) {
                error(S_INCORRECT_DISCOVERY_CHECK);
                return false;
            }
            break;
        case CONDITION_TYPE_DSERVICE_PORT:
            if (!validate_port_list($value)) {
                error(S_INCORRECT_PORT . ' [' . $value . ']');
                return false;
            }
            break;
        case CONDITION_TYPE_DSTATUS:
            if (S_UNKNOWN == discovery_object_status2str($value)) {
                error(S_INCORRECT_DISCOVERY_STATUS);
                return false;
            }
            break;
        case CONDITION_TYPE_EVENT_ACKNOWLEDGED:
            if (S_UNKNOWN == condition_value2str($conditiontype, $value)) {
                error(S_INCORRECT_DISCOVERY_STATUS);
                return false;
            }
            break;
        case CONDITION_TYPE_TRIGGER_NAME:
        case CONDITION_TYPE_TRIGGER_VALUE:
        case CONDITION_TYPE_TRIGGER_SEVERITY:
        case CONDITION_TYPE_MAINTENANCE:
        case CONDITION_TYPE_NODE:
        case CONDITION_TYPE_DRULE:
        case CONDITION_TYPE_DCHECK:
        case CONDITION_TYPE_DOBJECT:
        case CONDITION_TYPE_PROXY:
        case CONDITION_TYPE_DUPTIME:
        case CONDITION_TYPE_DVALUE:
        case CONDITION_TYPE_APPLICATION:
        case CONDITION_TYPE_HOST_NAME:
            break;
        default:
            error(S_INCORRECT_CONDITION_TYPE);
            return false;
            break;
    }
    return true;
}
 /**
  * Validate conditions.
  *
  * @static
  * @param $conditions
  * @return bool
  */
 public static function validateConditions($conditions)
 {
     $conditions = zbx_toArray($conditions);
     $hostGroupidsAll = array();
     $templateidsAll = array();
     $triggeridsAll = array();
     $hostidsAll = array();
     $discoveryRuleidsAll = array();
     $discoveryCheckidsAll = array();
     $proxyidsAll = array();
     $discoveryCheckTypes = discovery_check_type2str();
     $discoveryObjectStatuses = discovery_object_status2str();
     $timePeriodValidator = new CTimePeriodValidator();
     foreach ($conditions as $condition) {
         switch ($condition['conditiontype']) {
             case CONDITION_TYPE_HOST_GROUP:
                 $hostGroupidsAll[$condition['value']] = $condition['value'];
                 break;
             case CONDITION_TYPE_HOST_TEMPLATE:
                 $templateidsAll[$condition['value']] = $condition['value'];
                 break;
             case CONDITION_TYPE_TRIGGER:
                 $triggeridsAll[$condition['value']] = $condition['value'];
                 break;
             case CONDITION_TYPE_HOST:
                 $hostidsAll[$condition['value']] = $condition['value'];
                 break;
             case CONDITION_TYPE_DRULE:
                 $discoveryRuleidsAll[$condition['value']] = $condition['value'];
                 break;
             case CONDITION_TYPE_DCHECK:
                 $discoveryCheckidsAll[$condition['value']] = $condition['value'];
                 break;
             case CONDITION_TYPE_PROXY:
                 $proxyidsAll[$condition['value']] = $condition['value'];
                 break;
             case CONDITION_TYPE_TIME_PERIOD:
                 if (!$timePeriodValidator->validate($condition['value'])) {
                     self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect action condition period "%s".', $condition['value']));
                 }
                 break;
             case CONDITION_TYPE_DHOST_IP:
                 if (!validate_ip_range($condition['value'])) {
                     self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect action condition ip "%s".', $condition['value']));
                 }
                 break;
             case CONDITION_TYPE_DSERVICE_TYPE:
                 if (!isset($discoveryCheckTypes[$condition['value']])) {
                     self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition discovery check.'));
                 }
                 break;
             case CONDITION_TYPE_DSERVICE_PORT:
                 if (!validate_port_list($condition['value'])) {
                     self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect action condition port "%s".', $condition['value']));
                 }
                 break;
             case CONDITION_TYPE_DSTATUS:
                 if (!isset($discoveryObjectStatuses[$condition['value']])) {
                     self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition discovery status.'));
                 }
                 break;
             case CONDITION_TYPE_MAINTENANCE:
                 // maintenance condition has no value...
                 break;
             case CONDITION_TYPE_TRIGGER_NAME:
             case CONDITION_TYPE_TRIGGER_VALUE:
             case CONDITION_TYPE_TRIGGER_SEVERITY:
             case CONDITION_TYPE_NODE:
             case CONDITION_TYPE_DOBJECT:
             case CONDITION_TYPE_DUPTIME:
             case CONDITION_TYPE_DVALUE:
             case CONDITION_TYPE_APPLICATION:
             case CONDITION_TYPE_HOST_NAME:
                 if (zbx_empty($condition['value'])) {
                     self::exception(ZBX_API_ERROR_PARAMETERS, _('Empty action condition.'));
                 }
                 break;
             default:
                 self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition type.'));
                 break;
         }
     }
     if (!API::HostGroup()->isWritable($hostGroupidsAll)) {
         self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition host group. Host group does not exist or you have no access to it.'));
     }
     if (!API::Host()->isWritable($hostidsAll)) {
         self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition host. Host does not exist or you have no access to it.'));
     }
     if (!API::Template()->isWritable($templateidsAll)) {
         self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition template. Template does not exist or you have no access to it.'));
     }
     if (!API::Trigger()->isWritable($triggeridsAll)) {
         self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition trigger. Trigger does not exist or you have no access to it.'));
     }
     if (!API::DRule()->isWritable($discoveryRuleidsAll)) {
         self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition discovery rule. Discovery rule does not exist or you have no access to it.'));
     }
     if (!API::DCheck()->isWritable($discoveryCheckidsAll)) {
         self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition discovery check. Discovery check does not exist or you have no access to it.'));
     }
     if (!API::Proxy()->isWritable($proxyidsAll)) {
         self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect action condition proxy. Proxy does not exist or you have no access to it.'));
     }
     return true;
 }
Example #11
0
     $rowCondition[] = new CTextBox('new_condition[value]', '192.168.0.1-127,192.168.2.1', 50);
     break;
 case CONDITION_TYPE_DSERVICE_TYPE:
     $cmbCondVal = new CComboBox('new_condition[value]');
     foreach (array(SVC_SSH, SVC_LDAP, SVC_SMTP, SVC_FTP, SVC_HTTP, SVC_POP, SVC_NNTP, SVC_IMAP, SVC_TCP, SVC_AGENT, SVC_SNMPv1, SVC_SNMPv2, SVC_SNMPv3, SVC_ICMPPING) as $svc) {
         $cmbCondVal->addItem($svc, discovery_check_type2str($svc));
     }
     $rowCondition[] = $cmbCondVal;
     break;
 case CONDITION_TYPE_DSERVICE_PORT:
     $rowCondition[] = new CTextBox('new_condition[value]', '0-1023,1024-49151', 40);
     break;
 case CONDITION_TYPE_DSTATUS:
     $cmbCondVal = new CComboBox('new_condition[value]');
     foreach (array(DOBJECT_STATUS_UP, DOBJECT_STATUS_DOWN, DOBJECT_STATUS_DISCOVER, DOBJECT_STATUS_LOST) as $stat) {
         $cmbCondVal->addItem($stat, discovery_object_status2str($stat));
     }
     $rowCondition[] = $cmbCondVal;
     break;
 case CONDITION_TYPE_DOBJECT:
     $cmbCondVal = new CComboBox('new_condition[value]');
     foreach (array(EVENT_OBJECT_DHOST, EVENT_OBJECT_DSERVICE) as $object) {
         $cmbCondVal->addItem($object, discovery_object2str($object));
     }
     $rowCondition[] = $cmbCondVal;
     break;
 case CONDITION_TYPE_DUPTIME:
     $rowCondition[] = new CNumericBox('new_condition[value]', '600', 15);
     break;
 case CONDITION_TYPE_DVALUE:
     $rowCondition[] = new CTextBox('new_condition[value]', "", 40);