Parser
microgateway.airlock.com/v1alpha1
Parser contains the configuration for content parsers (default and custom).
apiVersion: microgateway.airlock.com/v1alpha1
kind: Parser
metadata:
name: parser-example
spec:
request:
# Set the content-type to 'application/json' if no content-type header is sent.
defaultContentType: application/json
parsers:
json:
enable: true
mediaTypePattern: .*json.*
form:
enable: true
mediaTypePattern: .*form-urlencoded.*
multipart:
enable: true
mediaTypePattern: .*multipart.*
custom:
rules:
# The POST request to '/company/contact.php' contains a JSON payload
# but has an incorrect content-type header.
# These requests should be treated as JSON.
- requestConditions:
method:
- POST
path:
matcher:
exact: /company/contact.php
action:
parse:
json: {}
# The request to '/support/upload.php' contains a binary payload
# but has an incorrect content-type header 'application/json'.
# These requests should not be parsed (security filters such as deny rules,
# limits, ... should not be applied).
- requestConditions:
path:
matcher:
exact: /support/upload.php
action:
skip: {}apiVersion: microgateway.airlock.com/v1alpha1
kind: Parser
metadata:
name: default
spec:
request:
parsers:
json:
enable: true
mediaTypePattern: ".*json.*"
form:
enable: true
mediaTypePattern: ".*urlencoded.*"
multipart:
enable: true
mediaTypePattern: ".*multipart.*"
defaultContentType: "application/x-www-form-urlencoded"
custom: {}Parser
| Field | Type | Description | Required | Default | Allowed Values |
|---|---|---|---|---|---|
metadata |
ObjectMeta | Refer to Kubernetes API documentation for fields of metadata |
yes | ||
| spec | object | Specification of the desired parser behavior. | no |
Parser.spec
| Field | Type | Description | Required | Default | Allowed Values |
|---|---|---|---|---|---|
| request | object | Request defines the parsing for downstream requests. | no |
Parser.spec.request
| Field | Type | Description | Required | Default | Allowed Values |
|---|---|---|---|---|---|
| custom | object | Custom allows configuring additional rules for parser selection. | no | ||
defaultContentType |
string | DefaultContentType specifies the content-type header which should be injected into the request before parser selection if it is not already present and the request has a body. | no | application/x-www-form-urlencoded |
|
| parsers | object | Parsers defines the configuration for the available content parsers. | no |
Parser.spec.request.custom
| Field | Type | Description | Required | Default | Allowed Values |
|---|---|---|---|---|---|
| rules | object[] | Rules defines a custom set prepended before built-in rules of enabled request parsers. Disable all built-in parsers to overrule them completely. |
no |
Parser.spec.request.custom.rules[]
| Field | Type | Description | Required | Default | Allowed Values |
|---|---|---|---|---|---|
| action | object | Action specifies what should happen when a request condition matches. Only one of parse or skip can be set. |
yes | parse{}, skip{} |
|
| requestConditions | object | RequestConditions defines additional request properties which must all be matched in order for this rule to apply. | yes |
Parser.spec.request.custom.rules[].action
| Field | Type | Description | Required | Default | Allowed Values |
|---|---|---|---|---|---|
| parse | object | Parse activates the configured parser. | no | form{}, json{}, multipart{} |
|
| skip | object | Skip disables any content parsing | no |
Parser.spec.request.custom.rules[].action.parse
| Field | Type | Description | Required | Default | Allowed Values |
|---|---|---|---|---|---|
| form | object | Form activates the Form parser. | no | ||
| json | object | JSON activates the JSON parser. | no | ||
| multipart | object | Multipart activates the multipart parser. | no |
Parser.spec.request.custom.rules[].requestConditions
| Field | Type | Description | Required | Default | Allowed Values |
|---|---|---|---|---|---|
| header | object | Header defines the matching headers of a request. | no | ||
invert |
bool | Invert indicates whether the request condition should be inverted. | no | false |
true, false |
| mediaType | object | MediaType defines the matching media type from the content-type header of a request. | no | ||
method |
enum[] | Method defines the matching methods of a request. | no | CONNECT, DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT, TRACE |
|
| path | object | Path defines the matching path of a request. | no | ||
| remoteIP | object | RemoteIP defines the matching remote IPs of a request. Note: Depending on your setup you may need to adapt the remoteIP configuration in the SidecarGateway / GatewayParameters resource to ensure correct client IP detection. |
no |
Parser.spec.request.custom.rules[].requestConditions.header
| Field | Type | Description | Required | Default | Allowed Values |
|---|---|---|---|---|---|
| name | object | Name defines the name of a header. | no | ||
| value | object | Value defines the value of a header. | no |
Parser.spec.request.custom.rules[].requestConditions.header.name
| Field | Type | Description | Required | Default | Allowed Values |
|---|---|---|---|---|---|
| matcher | object | Matcher defines the way to match a string. In comparison to a normal StringMatcher, a value is always matched ignoring the case and can’t be inverted. | yes | contains{}, exact{}, prefix{}, regex{}, suffix{} |
Parser.spec.request.custom.rules[].requestConditions.header.name.matcher
| Field | Type | Description | Required | Default | Allowed Values |
|---|---|---|---|---|---|
contains |
string | Contains defines a substring match on the substring specified here. Empty contains match is not allowed, please use regex instead. Only one of exact, prefix, suffix, regex or contains can be set. |
no | ||
exact |
string | Exact defines an explicit match on the string specified here. Only one of exact, prefix, suffix, regex or contains can be set. |
no | ||
prefix |
string | Prefix defines a prefix match on the prefix specified here. Empty prefix is not allowed, please use regex instead. Only one of exact, prefix, suffix, regex or contains can be set. |
no | ||
regex |
string | Regex defines a regex match on the regular expression specified here. Google’s RE2 regex engine is used. The regex matches only single-line by default, even with “.*”. To match a multi-line string prepend (?s) to your regex. Only one of exact, prefix, suffix, regex or contains can be set. |
no | ||
suffix |
string | Suffix defines a suffix match on the suffix specified here. Empty suffix is not allowed, please use regex instead. Only one of exact, prefix, suffix, regex or contains can be set. |
no |
Parser.spec.request.custom.rules[].requestConditions.header.value
| Field | Type | Description | Required | Default | Allowed Values |
|---|---|---|---|---|---|
| matcher | object | yes | contains{}, exact{}, prefix{}, regex{}, suffix{} |
Parser.spec.request.custom.rules[].requestConditions.header.value.matcher
| Field | Type | Description | Required | Default | Allowed Values |
|---|---|---|---|---|---|
contains |
string | Contains defines a substring match on the substring specified here. Empty contains match is not allowed, please use regex instead. Only one of exact, prefix, suffix, regex or contains can be set. |
no | ||
exact |
string | Exact defines an explicit match on the string specified here. Only one of exact, prefix, suffix, regex or contains can be set. |
no | ||
ignoreCase |
bool | IgnoreCase indicates whether the matching should be case-insensitive. In case of a regex match, the regex gets wrapped with a group (?i:...). |
no | false |
true, false |
prefix |
string | Prefix defines a prefix match on the prefix specified here. Empty prefix is not allowed, please use regex instead. Only one of exact, prefix, suffix, regex or contains can be set. |
no | ||
regex |
string | Regex defines a regex match on the regular expression specified here. Google’s RE2 regex engine is used. The regex matches only single-line by default, even with “.*”. To match a multi-line string prepend (?s) to your regex. Only one of exact, prefix, suffix, regex or contains can be set. |
no | ||
suffix |
string | Suffix defines a suffix match on the suffix specified here. Empty suffix is not allowed, please use regex instead. Only one of exact, prefix, suffix, regex or contains can be set. |
no |
Parser.spec.request.custom.rules[].requestConditions.mediaType
| Field | Type | Description | Required | Default | Allowed Values |
|---|---|---|---|---|---|
| matcher | object | yes | contains{}, exact{}, prefix{}, regex{}, suffix{} |
Parser.spec.request.custom.rules[].requestConditions.mediaType.matcher
| Field | Type | Description | Required | Default | Allowed Values |
|---|---|---|---|---|---|
contains |
string | Contains defines a substring match on the substring specified here. Empty contains match is not allowed, please use regex instead. Only one of exact, prefix, suffix, regex or contains can be set. |
no | ||
exact |
string | Exact defines an explicit match on the string specified here. Only one of exact, prefix, suffix, regex or contains can be set. |
no | ||
prefix |
string | Prefix defines a prefix match on the prefix specified here. Empty prefix is not allowed, please use regex instead. Only one of exact, prefix, suffix, regex or contains can be set. |
no | ||
regex |
string | Regex defines a regex match on the regular expression specified here. Google’s RE2 regex engine is used. The regex matches only single-line by default, even with “.*”. To match a multi-line string prepend (?s) to your regex. Only one of exact, prefix, suffix, regex or contains can be set. |
no | ||
suffix |
string | Suffix defines a suffix match on the suffix specified here. Empty suffix is not allowed, please use regex instead. Only one of exact, prefix, suffix, regex or contains can be set. |
no |
Parser.spec.request.custom.rules[].requestConditions.path
| Field | Type | Description | Required | Default | Allowed Values |
|---|---|---|---|---|---|
| matcher | object | yes | contains{}, exact{}, prefix{}, regex{}, suffix{} |
Parser.spec.request.custom.rules[].requestConditions.path.matcher
| Field | Type | Description | Required | Default | Allowed Values |
|---|---|---|---|---|---|
contains |
string | Contains defines a substring match on the substring specified here. Empty contains match is not allowed, please use regex instead. Only one of exact, prefix, suffix, regex or contains can be set. |
no | ||
exact |
string | Exact defines an explicit match on the string specified here. Only one of exact, prefix, suffix, regex or contains can be set. |
no | ||
ignoreCase |
bool | IgnoreCase indicates whether the matching should be case-insensitive. In case of a regex match, the regex gets wrapped with a group (?i:...). |
no | false |
true, false |
prefix |
string | Prefix defines a prefix match on the prefix specified here. Empty prefix is not allowed, please use regex instead. Only one of exact, prefix, suffix, regex or contains can be set. |
no | ||
regex |
string | Regex defines a regex match on the regular expression specified here. Google’s RE2 regex engine is used. The regex matches only single-line by default, even with “.*”. To match a multi-line string prepend (?s) to your regex. Only one of exact, prefix, suffix, regex or contains can be set. |
no | ||
suffix |
string | Suffix defines a suffix match on the suffix specified here. Empty suffix is not allowed, please use regex instead. Only one of exact, prefix, suffix, regex or contains can be set. |
no |
Parser.spec.request.custom.rules[].requestConditions.remoteIP
| Field | Type | Description | Required | Default | Allowed Values |
|---|---|---|---|---|---|
cidrRanges |
string[] | CIDRRanges defines the IPv4 or IPv6 CIDR ranges, e.g. 196.148.3.128/26 or 2001:db8::/28. |
yes | ||
invert |
bool | Invert indicates whether the match should be inverted. | no | false |
true, false |
Parser.spec.request.parsers
| Field | Type | Description | Required | Default | Allowed Values |
|---|---|---|---|---|---|
| form | object | Form defines the configuration for the form parser. | no | ||
| json | object | JSON defines the configuration for the JSON parser. | no | ||
| multipart | object | Multipart defines the configuration for the multipart parser. | no |
Parser.spec.request.parsers.form
| Field | Type | Description | Required | Default | Allowed Values |
|---|---|---|---|---|---|
enable |
bool | Enable defines whether form payloads are inspected. | no | true |
true, false |
mediaTypePattern |
string | MediaTypePattern is a regex specifying the media types for which the request body should be treated as form arguments. | no | .*urlencoded.* |
Parser.spec.request.parsers.json
| Field | Type | Description | Required | Default | Allowed Values |
|---|---|---|---|---|---|
enable |
bool | Enable defines whether json payloads are inspected. | no | true |
true, false |
mediaTypePattern |
string | MediaTypePattern is a regex specifying the media types for which the request body should be treated as JSON. | no | .*json.* |
Parser.spec.request.parsers.multipart
| Field | Type | Description | Required | Default | Allowed Values |
|---|---|---|---|---|---|
enable |
bool | Enable defines whether multipart payloads are inspected. | no | true |
true, false |
mediaTypePattern |
string | MediaTypePattern is a regex specifying the media types for which the request body should be treated as a multipart payload. | no | .*multipart.* |