Сoздание файла c правилами#
В разделе приводится описание параметров для создания файла с правилами, описывающего, каким образом заполнять файл шаблона (возможные значения файла шаблона указаны в разделе "Настройка постобработчика", в описании параметра pattern_file).
Обязательные параметры:
rules
Тип параметра: последовательность параметров и их значения.
По умолчанию: не имеет значения по умолчанию.
Опциональные параметры:
condition
Используется в случае:
default is None;
default: false.
Тип параметра: последовательность параметров и их значения.
По умолчанию: не имеет значения по умолчанию.
Обязательные параметры:
var
В значении параметра указывается анализируемая переменная.
- var: $validation_error_code ... - var: $mq_status_code ...Тип параметра: текстовое значение.
По умолчанию: не имеет значения по умолчанию.
operator
В значении параметра указывается операнд сравнения.
Для строк: равенство, неравенство или регулярное выражение.
Для чисел: стандартные операторы сравнения.
Существуют простые операторы вхождения:
in;
not in.
Тип параметра: текстовое значение:
"=" - посимвольное равенство;
"!=" - посимвольное неравенство;
"<=" - меньше или равно, только для числовых значений;
">=" - больше или равно, только для числовых значений;
">" - больше, только для числовых значений;
"<" - меньше, только для числовых значений;
"in" - вхождение в перечисление, элементы задаются через запятую, сравнение с элементами посимвольное;
"not_in" - отсутствие вхождения в перечисление, элементы задаются через запятую, сравнение с элементами посимвольное;
"~" - регулярное выражение с учетом регистра;
"~*" - регулярное выражение без учета регистра;
"!~" - негативное регулярное выражение с учетом регистра;
"!~*" - негативное регулярное выражение без учета регистра.
По умолчанию: не имеет значения по умолчанию.
val
В значении параметра указывается ожидаемое значение анализируемой переменной.
- var: $validation_error_code operator: "=" val: 2 - var: $mq_status_code operator: "in" val: 2131,2141,2151Тип параметра: текстовое значение.
По умолчанию: не имеет значения по умолчанию.
replacements
Тип параметра: последовательность параметров и их значения.
По умолчанию: не имеет значения по умолчанию.
Обязательные параметры:
pattern
В значении параметра задается имя любой подсказки из шаблона.
pattern: errorCodeТип параметра: текстовое значение.
По умолчанию: не имеет значения по умолчанию.
val
В значении параметра определяется значение подсказки.
Тип параметра: текстовое значение.
По умолчанию: не имеет значения по умолчанию.
Пример:
replacements: - pattern: errorCode val: 101 - pattern: errorMessage val: "Could't load schema from file"status
В значении параметра указывается возвращаемый код состояния http или переменная nginx, которая его содержит.
status: 500Тип параметра: текстовое значение.
По умолчанию: не имеет значения по умолчанию.
priority
В значении параметра указывается приоритет условия.
В случае, если совпадают два условия (condition) с одинаковым количеством анализируемых сообщений, то выбирается условие с большим приоритетом.
Обязательно требуется указание приоритета для условий с одинаковым количеством анализируемых сообщений (в противном случае, условия будут вызываться случайным образом).
... priority: 1 ... priority: 2 ... - default: true ...Тип параметра: текстовое значение.
По умолчанию: по умолчанию приоритет имеют условия (conditions) с наибольшим количеством переменных.
default
В значении параметра указывается состояние, которое будет выполняться, если ни одно из условий (condition) не выполнено.
Обязательно в случае:
condition is None.
- default: true replacements: - pattern: errorCode val: 100 - pattern: errorMessage val: "Unknown error"Тип параметра:
true;
false.
По умолчанию: не имеет значения по умолчанию.
(2.1, 2.2) responsePattern
В значении параметра определяется шаблон ответа (или файл с шаблоном ответа, если указан путь к файлу "file: //…").
Обязательно в случае:
redirectUrl is None.
Тип параметра: текстовое значение.
По умолчанию: не имеет значения по умолчанию.
redirectUrl
В значении параметра указывается url перенаправления.
Обязательно в случае:
responsePattern is None.
Тип параметра: текстовое значение. Допускается использование переменных Nginx.
По умолчанию: не имеет значения по умолчанию.
(2.1, 2.2) skipOnDefault
В значении параметра указывается флаг, если необходимо "пропустить" правило "по умолчанию".
Тип параметра: логическое значение:
true;
false.
По умолчанию: не имеет значения по умолчанию.
Пример:
rules:
- condition:
- var: $validation_error_code
operator: "="
val: 1
replacements:
- pattern: errorCode
val: 101
- pattern: errorMessage
val: "Could't load schema from file"
priority: 1
status: 500
- condition:
- var: $validation_error_code
operator: "="
val: 2
- var: $mq_status_code
operator: "in"
val: 2131,2141,2151
replacements:
- pattern: errorCode
val: 102
- pattern: errorMessage
val: "Could't connect to IBMMQ"
priority: 2
status: 500
- default: True
replacements:
- pattern: errorCode
val: 100
- pattern: errorMessage
val: "Unknown error"
status: 503
Пример файла с правилами для версии дистрибутива 2.1 и выше, в котором присутствует поддержка chains.
rules:
- condition:
- var: clj_validation_error_code
operator: ">"
val: 0
- var: clj_processing_phase
operator: "="
val: "REQUEST"
replacements:
- pattern: errorCode_variable
val: "EFSGW-41"
- pattern: errorText_variable
val: "Ошибка валидации запроса"
status: 500
priority: 49
- condition:
- var: clj_validation_error_code
operator: ">"
val: 0
- var: clj_processing_phase
operator: "="
val: "RESPONSE"
replacements:
- pattern: errorCode_variable
val: "EFSGW-42"
- pattern: errorText_variable
val: "Ошибка валидации ответа"
priority: 50
status: 500
- condition:
- var: completion_code
operator: ">"
val: 0
replacements:
- pattern: errorCode_variable
val: "EFSGW-61"
- pattern: errorText_variable
val: "Системная ошибка при работе с менеджером очередей"
- condition:
- var: msc_disruptive
operator: ">"
val: 0
- var: msc_tags
operator: "~"
val: "SQLi"
replacements:
- pattern: errorCode_variable
val: "EFSGW-90"
- pattern: errorText_variable
val: "Ошибка наличия SQL-Injection"
priority: 51
- condition:
- var: status
operator: "="
val: 404
replacements:
- pattern: errorCode_variable
val: "EFSGW-101"
- pattern: errorText_variable
val: "Не найден маршрут"
- condition:
- var: upstream_response_state
operator: "~"
val: "(4[0-9]{2}|50[03])"
- var: status
operator: ">="
val: 0
replacements:
- pattern: errorCode_variable
val: "EFSGW-154"
- pattern: errorText_variable
val: "Некорректный ответ от внешнего сервиса"
status: $upstream_response_state
priority: 154
- condition:
- var: upstream_status
operator: "~"
val: 502
- var: upstream_broken_connection
operator: "="
val: 1
replacements:
- pattern: errorCode_variable
val: "EFSGW-152"
- pattern: errorText_variable
val: "Обрыв HTTP сессии внешним сервисом до таймаута шлюза"
priority: 152
status: 500
- condition:
- var: upstream_status
operator: "~"
val: 504
replacements:
- pattern: errorCode_variable
val: "EFSGW-153"
- pattern: errorText_variable
val: "Не получили ответа от внешнего сервиса за указанный таймаут"
status: 500
- condition:
- var: clj_validation_error_code
operator: "="
val: 3
- var: clj_processing_phase
operator: "="
val: "RESPONSE"
replacements:
- pattern: errorCode_variable
val: "EFSGW-157"
- pattern: errorText_variable
val: "Ответ не является JSON"
priority: 57
status: 500
- condition:
- var: clj_validation_error_code
operator: "="
val: 3
- var: clj_processing_phase
operator: "="
val: "REQUEST"
replacements:
- pattern: errorCode_variable
val: "EFSGW-158"
- pattern: errorText_variable
val: "Запрос не является JSON"
priority: 58
status: 500
- condition:
- var: clj_validation_error_text
operator: "!="
val: ""
- var: clj_trimmed_body
operator: "!="
val: ""
- var: clj_processing_phase
operator: "="
val: "RESPONSE"
replacements:
- pattern: value
val: $clj_trimmed_body
# С помощью этого правила выставляется тело ответа, из которого были удалены дополнительные атрибуты
responsePattern: "{value}"
priority: 55
status: $upstream_status
- condition:
- var: clj_processing_phase
operator: "!="
val: ""
- var: clj_response_chain_result
operator: "in"
val: "ERROR,DENY"
replacements:
- pattern: errorCode_variable
val: "EFSGW-100"
- pattern: errorText_variable
val: "Неизвестная run-time ошибка"
priority: 2
status: 500
- condition:
- var: clj_processing_phase
operator: "!="
val: ""
- var: clj_request_chain_result
operator: "in"
val: "ERROR,DENY"
replacements:
- pattern: errorCode_variable
val: "EFSGW-100"
- pattern: errorText_variable
val: "Неизвестная run-time ошибка"
priority: 1
status: 500
- condition:
- var: status
operator: ">="
val: "400"
replacements:
- pattern: errorCode_variable
val: "EFSGW-100"
- pattern: errorText_variable
val: "Неизвестная run-time ошибка"
priority: 0
status: 500
#TODO: EFSGW1000
- default: True
replacements:
- pattern: errorCode_variable
val: "EFSGW-100"
- pattern: errorText_variable
val: "Неизвестная run-time ошибка"
status: 500
skipOnDefault: True