function check_type(&$field, $flags, &$var, $type, $caption = null) { if (is_null($caption)) { $caption = $field; } if (is_array($var) && $type != T_ZBX_IP) { $err = ZBX_VALID_OK; foreach ($var as $el) { $err |= check_type($field, $flags, $el, $type); } return $err; } if ($type == T_ZBX_IP) { if (!validate_ip($var, $arr)) { if ($flags & P_SYS) { info(_s('Critical error. Field "%1$s" is not IP.', $field)); return ZBX_VALID_ERROR; } else { info(_s('Warning. Field "%1$s" is not IP.', $field)); return ZBX_VALID_WARNING; } } return ZBX_VALID_OK; } if ($type == T_ZBX_IP_RANGE) { if (!validate_ip_range($var)) { if ($flags & P_SYS) { info(_s('Critical error. Field "%1$s" is not IP range.', $field)); return ZBX_VALID_ERROR; } else { info(_s('Warning. Field "%1$s" is not IP range.', $field)); return ZBX_VALID_WARNING; } } return ZBX_VALID_OK; } if ($type == T_ZBX_INT_RANGE) { if (!is_int_range($var)) { if ($flags & P_SYS) { info(_s('Critical error. Field "%1$s" is not integer list or range.', $field)); return ZBX_VALID_ERROR; } else { info(_s('Warning. Field "%1$s" is not integer list or range.', $field)); return ZBX_VALID_WARNING; } } return ZBX_VALID_OK; } if ($type == T_ZBX_INT && !zbx_is_int($var)) { if ($flags & P_SYS) { info(_s('Critical error. Field "%1$s" is not integer.', $field)); return ZBX_VALID_ERROR; } else { info(_s('Warning. Field "%1$s" is not integer.', $field)); return ZBX_VALID_WARNING; } } if ($type == T_ZBX_DBL && !is_numeric($var)) { if ($flags & P_SYS) { info(_s('Critical error. Field "%1$s" is not decimal number.', $field)); return ZBX_VALID_ERROR; } else { info(_s('Warning. Field "%1$s" is not decimal number.', $field)); return ZBX_VALID_WARNING; } } if ($type == T_ZBX_STR && !is_string($var)) { if ($flags & P_SYS) { info(_s('Critical error. Field "%1$s" is not string.', $field)); return ZBX_VALID_ERROR; } else { info(_s('Warning. Field "%1$s" is not string.', $field)); return ZBX_VALID_WARNING; } } if ($type == T_ZBX_STR && !defined('ZBX_ALLOW_UNICODE') && zbx_strlen($var) != zbx_strlen($var)) { if ($flags & P_SYS) { info(_s('Critical error. Field "%1$s" contains Multibyte chars.', $field)); return ZBX_VALID_ERROR; } else { info(_s('Warning. Field "%1$s" multibyte chars are restricted.', $field)); return ZBX_VALID_ERROR; } } if ($type == T_ZBX_CLR && !is_hex_color($var)) { $var = 'FFFFFF'; if ($flags & P_SYS) { info(_s('Critical error. Field "%1$s" is not a colour.', $field)); return ZBX_VALID_ERROR; } else { info(_s('Warning. Field "%1$s" is not a colour.', $caption)); return ZBX_VALID_WARNING; } } return ZBX_VALID_OK; }
function check_type(&$field, $flags, &$var, $type) { if (is_array($var) && $type != T_ZBX_IP) { $err = ZBX_VALID_OK; foreach ($var as $el) { $err |= check_type($field, $flags, $el, $type); } return $err; } if ($type == T_ZBX_IP) { if (!validate_ip($var, $arr)) { if ($flags & P_SYS) { info("Critical error. Field [" . $field . "] is not IP"); return ZBX_VALID_ERROR; } else { info("Warning. Field [" . $field . "] is not IP"); return ZBX_VALID_WARNING; } } return ZBX_VALID_OK; } if ($type == T_ZBX_IP_RANGE) { if (!validate_ip_range($var)) { if ($flags & P_SYS) { info("Critical error. Field [" . $field . "] is not IP range"); return ZBX_VALID_ERROR; } else { info("Warning. Field [" . $field . "] is not IP range"); return ZBX_VALID_WARNING; } } return ZBX_VALID_OK; } if ($type == T_ZBX_PORTS) { $err = ZBX_VALID_OK; foreach (explode(',', $var) as $el) { foreach (explode('-', $el) as $p) { $err |= check_type($field, $flags, $p, T_ZBX_INT); } } return $err; } if ($type == T_ZBX_INT_RANGE) { if (!is_int_range($var)) { if ($flags & P_SYS) { info("Critical error. Field [" . $field . "] is not integer range"); return ZBX_VALID_ERROR; } else { info("Warning. Field [" . $field . "] is not integer range"); return ZBX_VALID_WARNING; } } return ZBX_VALID_OK; } if ($type == T_ZBX_INT && !is_numeric($var)) { if ($flags & P_SYS) { info("Critical error. Field [" . $field . "] is not integer"); return ZBX_VALID_ERROR; } else { info("Warning. Field [" . $field . "] is not integer"); return ZBX_VALID_WARNING; } } if ($type == T_ZBX_DBL && !is_numeric($var)) { if ($flags & P_SYS) { info("Critical error. Field [" . $field . "] is not double"); return ZBX_VALID_ERROR; } else { info("Warning. Field [" . $field . "] is not double"); return ZBX_VALID_WARNING; } } if ($type == T_ZBX_STR && !is_string($var)) { if ($flags & P_SYS) { info("Critical error. Field [" . $field . "] is not string"); return ZBX_VALID_ERROR; } else { info("Warning. Field [" . $field . "] is not string"); return ZBX_VALID_WARNING; } } //* if ($type == T_ZBX_STR && !defined('ZBX_ALLOW_UNICODE') && strlen($var) != zbx_strlen($var)) { if ($flags & P_SYS) { info("Critical error. Field [" . $field . "] contains Multibyte chars"); return ZBX_VALID_ERROR; } else { info("Warning. Field [" . $field . "] - multibyte chars are restricted"); return ZBX_VALID_ERROR; } } //*/ if ($type == T_ZBX_CLR && !is_hex_color($var)) { $var = 'FFFFFF'; if ($flags & P_SYS) { info("Critical error. Field [" . $field . "] is not a colour"); return ZBX_VALID_ERROR; } else { info("Warning. Field [" . $field . "] is not a colour"); return ZBX_VALID_WARNING; } } return ZBX_VALID_OK; }
function check_type(&$field, $flags, &$var, $type) { if (is_array($var) && $type != T_ZBX_IP) { $err = ZBX_VALID_OK; foreach ($var as $el) { $err |= check_type($field, $flags, $el, $type); } return $err; } if ($type == T_ZBX_IP) { if (!validate_ip($var, $arr)) { if ($flags & P_SYS) { info('Critical error. Field [' . $field . '] is not IP'); return ZBX_VALID_ERROR; } else { info('Warning. Field [' . $field . '] is not IP'); return ZBX_VALID_WARNING; } } return ZBX_VALID_OK; } if ($type == T_ZBX_IP_RANGE) { if (!validate_ip_range($var)) { if ($flags & P_SYS) { info(S_CRITICAL_ERROR . '.' . SPACE . S_FIELD . SPACE . '[' . $field . ']' . SPACE . S_IS_NOT_IP_RANGE_SMALL); return ZBX_VALID_ERROR; } else { info(S_WARNING . '.' . SPACE . S_FIELD . SPACE . '[' . $field . ']' . SPACE . S_IS_NOT_IP_RANGE_SMALL); return ZBX_VALID_WARNING; } } return ZBX_VALID_OK; } if ($type == T_ZBX_PORTS) { $err = ZBX_VALID_OK; $type = $flags & P_SYS ? ZBX_VALID_ERROR : ZBX_VALID_WARNING; foreach (explode(',', $var) as $el) { foreach (explode('-', $el) as $p) { $err |= check_type($field, $flags, $p, T_ZBX_INT); if ($p > 65535 || $p < 0) { $err |= $type; } } } if ($err == ZBX_VALID_ERROR) { info(S_CRITICAL_ERROR . '.' . SPACE . S_FIELD . SPACE . '[' . $field . ']' . SPACE . S_IS_NOT_PORT_RANGE_SMALL); } else { if ($err == ZBX_VALID_WARNING) { info(S_WARNING . '.' . SPACE . S_FIELD . SPACE . '[' . $field . ']' . SPACE . S_IS_NOT_PORT_RANGE_SMALL); } } return $err; } if ($type == T_ZBX_INT_RANGE) { if (!is_int_range($var)) { if ($flags & P_SYS) { info(S_CRITICAL_ERROR . '.' . SPACE . S_FIELD . SPACE . '[' . $field . ']' . SPACE . S_IS_NOT_INTEGER_RANGE_SMALL); return ZBX_VALID_ERROR; } else { info(S_WARNING . '.' . SPACE . S_FIELD . SPACE . '[' . $field . ']' . SPACE . S_IS_NOT_INTEGER_RANGE_SMALL); return ZBX_VALID_WARNING; } } return ZBX_VALID_OK; } if ($type == T_ZBX_INT && !zbx_is_int($var)) { if ($flags & P_SYS) { info(S_CRITICAL_ERROR . '.' . SPACE . S_FIELD . SPACE . '[' . $field . ']' . SPACE . S_IS_NOT_INTEGER_SMALL); return ZBX_VALID_ERROR; } else { info(S_WARNING . '.' . SPACE . S_FIELD . SPACE . '[' . $field . ']' . SPACE . S_IS_NOT_INTEGER_SMALL); return ZBX_VALID_WARNING; } } if ($type == T_ZBX_DBL && !is_numeric($var)) { if ($flags & P_SYS) { info(S_CRITICAL_ERROR . '.' . SPACE . S_FIELD . SPACE . '[' . $field . ']' . SPACE . S_IS_NOT_DOUBLE_SMALL); return ZBX_VALID_ERROR; } else { info(S_WARNING . '.' . SPACE . S_FIELD . SPACE . '[' . $field . ']' . SPACE . S_IS_NOT_DOUBLE_SMALL); return ZBX_VALID_WARNING; } } if ($type == T_ZBX_STR && !is_string($var)) { if ($flags & P_SYS) { info(S_CRITICAL_ERROR . '.' . SPACE . S_FIELD . SPACE . '[' . $field . ']' . SPACE . S_IS_NOT_STRING_SMALL); return ZBX_VALID_ERROR; } else { info(S_WARNING . '.' . SPACE . S_FIELD . SPACE . '[' . $field . ']' . SPACE . S_IS_NOT_STRING_SMALL); return ZBX_VALID_WARNING; } } //* if ($type == T_ZBX_STR && !defined('ZBX_ALLOW_UNICODE') && zbx_strlen($var) != zbx_strlen($var)) { if ($flags & P_SYS) { info(S_CRITICAL_ERROR . '.' . SPACE . S_FIELD . SPACE . '[' . $field . ']' . SPACE . S_CONTAINS_MULTIBYTE_CHARS_SMALL); return ZBX_VALID_ERROR; } else { info(S_WARNING . '.' . SPACE . S_FIELD . SPACE . '[' . $field . '] - ' . S_MULTIBYTE_CHARS_ARE_RESTRICTED_SMALL); return ZBX_VALID_ERROR; } } //*/ if ($type == T_ZBX_CLR && !is_hex_color($var)) { $var = 'FFFFFF'; if ($flags & P_SYS) { info(S_CRITICAL_ERROR . '.' . SPACE . S_FIELD . SPACE . '[' . $field . ']' . SPACE . S_IS_NOT_A_COLOUR_SMALL); return ZBX_VALID_ERROR; } else { info(S_WARNING . '.' . SPACE . S_FIELD . SPACE . '[' . $field . ']' . SPACE . S_IS_NOT_A_COLOUR_SMALL); return ZBX_VALID_WARNING; } } return ZBX_VALID_OK; }