-
Notifications
You must be signed in to change notification settings - Fork 4.8k
/
path_transformation.proto
58 lines (47 loc) · 2.5 KB
/
path_transformation.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
syntax = "proto3";
package envoy.type.http.v3;
import "udpa/annotations/status.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.type.http.v3";
option java_outer_classname = "PathTransformationProto";
option java_multiple_files = true;
option go_package = "github.com/envoyproxy/go-control-plane/envoy/type/http/v3;httpv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Path Transformations API]
// PathTransformation defines an API to apply a sequence of operations that can be used to alter
// text before it is used for matching or routing. Multiple actions can be applied in the same
// Transformation, forming a sequential pipeline. The transformations will be performed in the order
// that they appear.
//
// This API is a work in progress.
message PathTransformation {
// A type of operation to alter text.
message Operation {
// Should text be normalized according to RFC 3986? This typically is used for path headers
// before any processing of requests by HTTP filters or routing. This applies percent-encoded
// normalization and path segment normalization. Fails on characters disallowed in URLs
// (e.g. NULLs). See `Normalization and Comparison
// <https://tools.ietf.org/html/rfc3986#section-6>`_ for details of normalization. Note that
// this options does not perform `case normalization
// <https://tools.ietf.org/html/rfc3986#section-6.2.2.1>`_
message NormalizePathRFC3986 {
}
// Determines if adjacent slashes are merged into one. A common use case is for a request path
// header. Using this option in `:ref: PathNormalizationOptions
// <envoy_v3_api_msg_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.PathNormalizationOptions>`
// will allow incoming requests with path `//dir///file` to match against route with `prefix`
// match set to `/dir`. When using for header transformations, note that slash merging is not
// part of `HTTP spec <https://tools.ietf.org/html/rfc3986>`_ and is provided for convenience.
message MergeSlashes {
}
oneof operation_specifier {
option (validate.required) = true;
// Enable path normalization per RFC 3986.
NormalizePathRFC3986 normalize_path_rfc_3986 = 2;
// Enable merging adjacent slashes.
MergeSlashes merge_slashes = 3;
}
}
// A list of operations to apply. Transformations will be performed in the order that they appear.
repeated Operation operations = 1;
}