Geoip filter (#24318)
Signed-off-by: Kateryna Nezdolii <nezdolik@spotify.com> Mirrored from https://github.com/envoyproxy/envoy @ 46aecfca0e8930375ebedc2444471332f5b23783pull/626/head
parent
6c06e515fb
commit
09674a7549
4 changed files with 105 additions and 0 deletions
@ -0,0 +1,13 @@ |
|||||||
|
# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py. |
||||||
|
|
||||||
|
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package") |
||||||
|
|
||||||
|
licenses(["notice"]) # Apache 2 |
||||||
|
|
||||||
|
api_proto_package( |
||||||
|
deps = [ |
||||||
|
"//envoy/config/core/v3:pkg", |
||||||
|
"@com_github_cncf_udpa//udpa/annotations:pkg", |
||||||
|
"@com_github_cncf_udpa//xds/annotations/v3:pkg", |
||||||
|
], |
||||||
|
) |
@ -0,0 +1,90 @@ |
|||||||
|
syntax = "proto3"; |
||||||
|
|
||||||
|
package envoy.extensions.filters.http.geoip.v3; |
||||||
|
|
||||||
|
import "envoy/config/core/v3/extension.proto"; |
||||||
|
|
||||||
|
import "xds/annotations/v3/status.proto"; |
||||||
|
|
||||||
|
import "udpa/annotations/status.proto"; |
||||||
|
import "validate/validate.proto"; |
||||||
|
|
||||||
|
option java_package = "io.envoyproxy.envoy.extensions.filters.http.geoip.v3"; |
||||||
|
option java_outer_classname = "GeoipProto"; |
||||||
|
option java_multiple_files = true; |
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/geoip/v3;geoipv3"; |
||||||
|
option (udpa.annotations.file_status).package_version_status = ACTIVE; |
||||||
|
option (xds.annotations.v3.file_status).work_in_progress = true; |
||||||
|
|
||||||
|
// [#protodoc-title: Geoip] |
||||||
|
// Geoip :ref:`configuration overview <config_http_filters_geoip>`. |
||||||
|
// [#extension: envoy.filters.http.geoip] |
||||||
|
|
||||||
|
message Geoip { |
||||||
|
// The set of geolocation headers to add to request. If any of the configured headers is present |
||||||
|
// in the incoming request, it will be overridden by Geoip filter. |
||||||
|
// [#next-free-field: 10] |
||||||
|
message GeolocationHeadersToAdd { |
||||||
|
// If set, the header will be used to populate the country ISO code associated with the IP address. |
||||||
|
string country = 1 |
||||||
|
[(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}]; |
||||||
|
|
||||||
|
// If set, the header will be used to populate the city associated with the IP address. |
||||||
|
string city = 2 |
||||||
|
[(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}]; |
||||||
|
|
||||||
|
// If set, the header will be used to populate the region ISO code associated with the IP address. |
||||||
|
string region = 3 |
||||||
|
[(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}]; |
||||||
|
|
||||||
|
// If set, the header will be used to populate the ASN associated with the IP address. |
||||||
|
string asn = 4 |
||||||
|
[(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}]; |
||||||
|
|
||||||
|
// If set, the IP address will be checked if it belongs to any type of anonymization network (e.g. VPN, public proxy etc) |
||||||
|
// and header will be populated with the check result. Header value will be set to either "true" or "false" depending on the check result. |
||||||
|
string is_anon = 5 |
||||||
|
[(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}]; |
||||||
|
|
||||||
|
// If set, the IP address will be checked if it belongs to a VPN and header will be populated with the check result. |
||||||
|
// Header value will be set to either "true" or "false" depending on the check result. |
||||||
|
string anon_vpn = 6 |
||||||
|
[(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}]; |
||||||
|
|
||||||
|
// If set, the IP address will be checked if it belongs to a hosting provider and header will be populated with the check result. |
||||||
|
// Header value will be set to either "true" or "false" depending on the check result. |
||||||
|
string anon_hosting = 7 |
||||||
|
[(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}]; |
||||||
|
|
||||||
|
// If set, the IP address will be checked if it belongs to a TOR exit node and header will be populated with the check result. |
||||||
|
// Header value will be set to either "true" or "false" depending on the check result. |
||||||
|
string anon_tor = 8 |
||||||
|
[(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}]; |
||||||
|
|
||||||
|
// If set, the IP address will be checked if it belongs to a public proxy and header will be populated with the check result. |
||||||
|
// Header value will be set to either "true" or "false" depending on the check result. |
||||||
|
string anon_proxy = 9 |
||||||
|
[(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}]; |
||||||
|
} |
||||||
|
|
||||||
|
message XffConfig { |
||||||
|
// The number of additional ingress proxy hops from the right side of the |
||||||
|
// :ref:`config_http_conn_man_headers_x-forwarded-for` HTTP header to trust when |
||||||
|
// determining the origin client's IP address. The default is zero if this option |
||||||
|
// is not specified. See the documentation for |
||||||
|
// :ref:`config_http_conn_man_headers_x-forwarded-for` for more information. |
||||||
|
uint32 xff_num_trusted_hops = 1; |
||||||
|
} |
||||||
|
|
||||||
|
// If set, the :ref:`xff_num_trusted_hops <envoy_v3_api_field_extensions.filters.http.geoip.v3.Geoip.XffConfig.xff_num_trusted_hops>` field will be used to determine |
||||||
|
// trusted client address from `x-forwarded-for` header. |
||||||
|
// Otherwise, the immediate downstream connection source address will be used. |
||||||
|
// [#next-free-field: 2] |
||||||
|
XffConfig xff_config = 1; |
||||||
|
|
||||||
|
// Configuration for geolocation headers to add to request. |
||||||
|
GeolocationHeadersToAdd geo_headers_to_add = 2 [(validate.rules).message = {required: true}]; |
||||||
|
|
||||||
|
// Geolocation provider specific configuration. |
||||||
|
config.core.v3.TypedExtensionConfig provider = 3 [(validate.rules).message = {required: true}]; |
||||||
|
} |
Loading…
Reference in new issue