├── .cargo └── config.toml ├── .dockerignore ├── .github ├── release.yml └── workflows │ ├── bench.yml │ ├── build-image.yaml │ ├── coverage.yml │ ├── e2e.yaml │ ├── issues-workflow.yaml │ ├── license-scan.yaml │ ├── release.yaml │ └── rust.yml ├── .gitignore ├── ADOPTERS.md ├── Cargo.lock ├── Cargo.toml ├── Dockerfile ├── Dockerfile.aarch64 ├── LICENSE ├── MAINTAINERS.md ├── README.md ├── RELEASE.md ├── default.profraw ├── doc ├── how-it-works.md ├── migrations │ └── conditions.md ├── server │ └── configuration.md └── topologies.md ├── limitador-server ├── CHANGELOG.md ├── Cargo.toml ├── README.md ├── build.rs ├── default.profraw ├── docs │ └── http_server_spec.json ├── e2e │ └── file-watcher │ │ ├── configmap.yaml │ │ ├── configmap_updated.yaml │ │ ├── deployment.yaml │ │ ├── service.yaml │ │ ├── watch-env.sh │ │ └── watch-pod-resource.sh ├── examples │ ├── envoy.yaml │ └── limits.yaml ├── kubernetes │ ├── README.md │ ├── centos-pod.yaml │ ├── kuard-deployment.yaml │ ├── kuard-envoy-config-configmap.yaml │ ├── kuard-envoyproxy-sidecar-metrics-dashboard-screenshot.png │ ├── kuard-podmonitor.yaml │ ├── kuard-service.yaml │ ├── limitador-config-configmap.yaml │ ├── limitador-deployment.yaml │ ├── limitador-grafanadashboard.json │ ├── limitador-metrics-dashboard-screenshot.png │ ├── limitador-podmonitor.yaml │ ├── limitador-service.yaml │ ├── ratelimit.svg │ ├── redis-service.yaml │ └── redis-statefulset.yaml ├── sandbox │ ├── .gitignore │ ├── Makefile │ ├── README.md │ ├── docker-compose-envoy-3-node.yaml │ ├── docker-compose-envoy.yaml │ ├── docker-compose-limitador-disk.yaml │ ├── docker-compose-limitador-distributed-3-node.yaml │ ├── docker-compose-limitador-distributed.yaml │ ├── docker-compose-limitador-memory.yaml │ ├── docker-compose-limitador-redis-cached.yaml │ ├── docker-compose-limitador-redis-otel.yaml │ ├── docker-compose-limitador-redis-tls.yaml │ ├── docker-compose-limitador-redis.yaml │ ├── envoy.yaml │ ├── envoy2.yaml │ ├── envoy3.yaml │ ├── limits.yaml │ ├── load-test.json │ ├── loadtest │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── redis-otel │ │ └── README.md │ └── redis-tls │ │ ├── README.md │ │ └── redis-config.conf ├── script │ ├── kind-cluster.yaml │ └── kind-setup.sh ├── src │ ├── config.rs │ ├── envoy_rls │ │ ├── envoy_types.rs │ │ ├── mod.rs │ │ └── server.rs │ ├── http_api │ │ ├── mod.rs │ │ ├── request_types.rs │ │ └── server.rs │ ├── main.rs │ ├── metrics.rs │ └── prometheus_metrics.rs └── vendor │ └── protobufs │ ├── README.md │ ├── data-plane-api │ └── envoy │ │ ├── admin │ │ ├── v2alpha │ │ │ ├── certs.proto │ │ │ ├── clusters.proto │ │ │ ├── config_dump.proto │ │ │ ├── listeners.proto │ │ │ ├── memory.proto │ │ │ ├── metrics.proto │ │ │ ├── mutex_stats.proto │ │ │ ├── server_info.proto │ │ │ └── tap.proto │ │ ├── v3 │ │ │ ├── certs.proto │ │ │ ├── clusters.proto │ │ │ ├── config_dump.proto │ │ │ ├── init_dump.proto │ │ │ ├── listeners.proto │ │ │ ├── memory.proto │ │ │ ├── metrics.proto │ │ │ ├── mutex_stats.proto │ │ │ ├── server_info.proto │ │ │ └── tap.proto │ │ └── v4alpha │ │ │ ├── certs.proto │ │ │ ├── clusters.proto │ │ │ ├── config_dump.proto │ │ │ ├── listeners.proto │ │ │ ├── memory.proto │ │ │ ├── metrics.proto │ │ │ ├── mutex_stats.proto │ │ │ ├── server_info.proto │ │ │ └── tap.proto │ │ ├── annotations │ │ ├── deprecation.proto │ │ └── resource.proto │ │ ├── api │ │ └── v2 │ │ │ ├── auth │ │ │ ├── cert.proto │ │ │ ├── common.proto │ │ │ ├── secret.proto │ │ │ └── tls.proto │ │ │ ├── cds.proto │ │ │ ├── cluster.proto │ │ │ ├── cluster │ │ │ ├── circuit_breaker.proto │ │ │ ├── filter.proto │ │ │ └── outlier_detection.proto │ │ │ ├── core │ │ │ ├── address.proto │ │ │ ├── backoff.proto │ │ │ ├── base.proto │ │ │ ├── config_source.proto │ │ │ ├── event_service_config.proto │ │ │ ├── grpc_method_list.proto │ │ │ ├── grpc_service.proto │ │ │ ├── health_check.proto │ │ │ ├── http_uri.proto │ │ │ ├── protocol.proto │ │ │ └── socket_option.proto │ │ │ ├── discovery.proto │ │ │ ├── eds.proto │ │ │ ├── endpoint.proto │ │ │ ├── endpoint │ │ │ ├── endpoint.proto │ │ │ ├── endpoint_components.proto │ │ │ └── load_report.proto │ │ │ ├── lds.proto │ │ │ ├── listener.proto │ │ │ ├── listener │ │ │ ├── listener.proto │ │ │ ├── listener_components.proto │ │ │ ├── quic_config.proto │ │ │ └── udp_listener_config.proto │ │ │ ├── ratelimit │ │ │ └── ratelimit.proto │ │ │ ├── rds.proto │ │ │ ├── route.proto │ │ │ ├── route │ │ │ ├── route.proto │ │ │ └── route_components.proto │ │ │ ├── scoped_route.proto │ │ │ └── srds.proto │ │ ├── config │ │ ├── accesslog │ │ │ ├── v2 │ │ │ │ ├── als.proto │ │ │ │ └── file.proto │ │ │ ├── v3 │ │ │ │ └── accesslog.proto │ │ │ └── v4alpha │ │ │ │ └── accesslog.proto │ │ ├── bootstrap │ │ │ ├── v2 │ │ │ │ └── bootstrap.proto │ │ │ ├── v3 │ │ │ │ └── bootstrap.proto │ │ │ └── v4alpha │ │ │ │ └── bootstrap.proto │ │ ├── cluster │ │ │ ├── aggregate │ │ │ │ └── v2alpha │ │ │ │ │ └── cluster.proto │ │ │ ├── dynamic_forward_proxy │ │ │ │ └── v2alpha │ │ │ │ │ └── cluster.proto │ │ │ ├── redis │ │ │ │ └── redis_cluster.proto │ │ │ ├── v3 │ │ │ │ ├── circuit_breaker.proto │ │ │ │ ├── cluster.proto │ │ │ │ ├── filter.proto │ │ │ │ └── outlier_detection.proto │ │ │ └── v4alpha │ │ │ │ ├── circuit_breaker.proto │ │ │ │ ├── cluster.proto │ │ │ │ ├── filter.proto │ │ │ │ └── outlier_detection.proto │ │ ├── common │ │ │ ├── dynamic_forward_proxy │ │ │ │ └── v2alpha │ │ │ │ │ └── dns_cache.proto │ │ │ ├── key_value │ │ │ │ └── v3 │ │ │ │ │ └── config.proto │ │ │ ├── matcher │ │ │ │ └── v3 │ │ │ │ │ └── matcher.proto │ │ │ ├── mutation_rules │ │ │ │ └── v3 │ │ │ │ │ └── mutation_rules.proto │ │ │ └── tap │ │ │ │ └── v2alpha │ │ │ │ └── common.proto │ │ ├── core │ │ │ ├── v3 │ │ │ │ ├── address.proto │ │ │ │ ├── backoff.proto │ │ │ │ ├── base.proto │ │ │ │ ├── config_source.proto │ │ │ │ ├── event_service_config.proto │ │ │ │ ├── extension.proto │ │ │ │ ├── grpc_method_list.proto │ │ │ │ ├── grpc_service.proto │ │ │ │ ├── health_check.proto │ │ │ │ ├── http_uri.proto │ │ │ │ ├── protocol.proto │ │ │ │ ├── proxy_protocol.proto │ │ │ │ ├── resolver.proto │ │ │ │ ├── socket_option.proto │ │ │ │ ├── substitution_format_string.proto │ │ │ │ └── udp_socket_config.proto │ │ │ └── v4alpha │ │ │ │ ├── address.proto │ │ │ │ ├── backoff.proto │ │ │ │ ├── base.proto │ │ │ │ ├── config_source.proto │ │ │ │ ├── event_service_config.proto │ │ │ │ ├── extension.proto │ │ │ │ ├── grpc_method_list.proto │ │ │ │ ├── grpc_service.proto │ │ │ │ ├── health_check.proto │ │ │ │ ├── http_uri.proto │ │ │ │ ├── protocol.proto │ │ │ │ ├── proxy_protocol.proto │ │ │ │ ├── socket_option.proto │ │ │ │ └── substitution_format_string.proto │ │ ├── endpoint │ │ │ └── v3 │ │ │ │ ├── endpoint.proto │ │ │ │ ├── endpoint_components.proto │ │ │ │ └── load_report.proto │ │ ├── filter │ │ │ ├── accesslog │ │ │ │ └── v2 │ │ │ │ │ └── accesslog.proto │ │ │ ├── dubbo │ │ │ │ └── router │ │ │ │ │ └── v2alpha1 │ │ │ │ │ └── router.proto │ │ │ ├── fault │ │ │ │ └── v2 │ │ │ │ │ └── fault.proto │ │ │ ├── http │ │ │ │ ├── adaptive_concurrency │ │ │ │ │ └── v2alpha │ │ │ │ │ │ └── adaptive_concurrency.proto │ │ │ │ ├── aws_lambda │ │ │ │ │ └── v2alpha │ │ │ │ │ │ └── aws_lambda.proto │ │ │ │ ├── aws_request_signing │ │ │ │ │ └── v2alpha │ │ │ │ │ │ └── aws_request_signing.proto │ │ │ │ ├── buffer │ │ │ │ │ └── v2 │ │ │ │ │ │ └── buffer.proto │ │ │ │ ├── cache │ │ │ │ │ └── v2alpha │ │ │ │ │ │ └── cache.proto │ │ │ │ ├── compressor │ │ │ │ │ └── v2 │ │ │ │ │ │ └── compressor.proto │ │ │ │ ├── cors │ │ │ │ │ └── v2 │ │ │ │ │ │ └── cors.proto │ │ │ │ ├── csrf │ │ │ │ │ └── v2 │ │ │ │ │ │ └── csrf.proto │ │ │ │ ├── dynamic_forward_proxy │ │ │ │ │ └── v2alpha │ │ │ │ │ │ └── dynamic_forward_proxy.proto │ │ │ │ ├── dynamo │ │ │ │ │ └── v2 │ │ │ │ │ │ └── dynamo.proto │ │ │ │ ├── ext_authz │ │ │ │ │ └── v2 │ │ │ │ │ │ └── ext_authz.proto │ │ │ │ ├── fault │ │ │ │ │ └── v2 │ │ │ │ │ │ └── fault.proto │ │ │ │ ├── grpc_http1_bridge │ │ │ │ │ └── v2 │ │ │ │ │ │ └── config.proto │ │ │ │ ├── grpc_http1_reverse_bridge │ │ │ │ │ └── v2alpha1 │ │ │ │ │ │ └── config.proto │ │ │ │ ├── grpc_stats │ │ │ │ │ └── v2alpha │ │ │ │ │ │ └── config.proto │ │ │ │ ├── grpc_web │ │ │ │ │ └── v2 │ │ │ │ │ │ └── grpc_web.proto │ │ │ │ ├── gzip │ │ │ │ │ └── v2 │ │ │ │ │ │ └── gzip.proto │ │ │ │ ├── header_to_metadata │ │ │ │ │ └── v2 │ │ │ │ │ │ └── header_to_metadata.proto │ │ │ │ ├── health_check │ │ │ │ │ └── v2 │ │ │ │ │ │ └── health_check.proto │ │ │ │ ├── ip_tagging │ │ │ │ │ └── v2 │ │ │ │ │ │ └── ip_tagging.proto │ │ │ │ ├── jwt_authn │ │ │ │ │ └── v2alpha │ │ │ │ │ │ └── config.proto │ │ │ │ ├── lua │ │ │ │ │ └── v2 │ │ │ │ │ │ └── lua.proto │ │ │ │ ├── on_demand │ │ │ │ │ └── v2 │ │ │ │ │ │ └── on_demand.proto │ │ │ │ ├── original_src │ │ │ │ │ └── v2alpha1 │ │ │ │ │ │ └── original_src.proto │ │ │ │ ├── rate_limit │ │ │ │ │ └── v2 │ │ │ │ │ │ └── rate_limit.proto │ │ │ │ ├── rbac │ │ │ │ │ └── v2 │ │ │ │ │ │ └── rbac.proto │ │ │ │ ├── router │ │ │ │ │ └── v2 │ │ │ │ │ │ └── router.proto │ │ │ │ ├── squash │ │ │ │ │ └── v2 │ │ │ │ │ │ └── squash.proto │ │ │ │ ├── tap │ │ │ │ │ └── v2alpha │ │ │ │ │ │ └── tap.proto │ │ │ │ └── transcoder │ │ │ │ │ └── v2 │ │ │ │ │ └── transcoder.proto │ │ │ ├── listener │ │ │ │ ├── http_inspector │ │ │ │ │ └── v2 │ │ │ │ │ │ └── http_inspector.proto │ │ │ │ ├── original_dst │ │ │ │ │ └── v2 │ │ │ │ │ │ └── original_dst.proto │ │ │ │ ├── original_src │ │ │ │ │ └── v2alpha1 │ │ │ │ │ │ └── original_src.proto │ │ │ │ ├── proxy_protocol │ │ │ │ │ └── v2 │ │ │ │ │ │ └── proxy_protocol.proto │ │ │ │ └── tls_inspector │ │ │ │ │ └── v2 │ │ │ │ │ └── tls_inspector.proto │ │ │ ├── network │ │ │ │ ├── client_ssl_auth │ │ │ │ │ └── v2 │ │ │ │ │ │ └── client_ssl_auth.proto │ │ │ │ ├── direct_response │ │ │ │ │ └── v2 │ │ │ │ │ │ └── config.proto │ │ │ │ ├── dubbo_proxy │ │ │ │ │ └── v2alpha1 │ │ │ │ │ │ ├── dubbo_proxy.proto │ │ │ │ │ │ └── route.proto │ │ │ │ ├── echo │ │ │ │ │ └── v2 │ │ │ │ │ │ └── echo.proto │ │ │ │ ├── ext_authz │ │ │ │ │ └── v2 │ │ │ │ │ │ └── ext_authz.proto │ │ │ │ ├── http_connection_manager │ │ │ │ │ └── v2 │ │ │ │ │ │ └── http_connection_manager.proto │ │ │ │ ├── kafka_broker │ │ │ │ │ └── v2alpha1 │ │ │ │ │ │ └── kafka_broker.proto │ │ │ │ ├── local_rate_limit │ │ │ │ │ └── v2alpha │ │ │ │ │ │ └── local_rate_limit.proto │ │ │ │ ├── mongo_proxy │ │ │ │ │ └── v2 │ │ │ │ │ │ └── mongo_proxy.proto │ │ │ │ ├── mysql_proxy │ │ │ │ │ └── v1alpha1 │ │ │ │ │ │ └── mysql_proxy.proto │ │ │ │ ├── rate_limit │ │ │ │ │ └── v2 │ │ │ │ │ │ └── rate_limit.proto │ │ │ │ ├── rbac │ │ │ │ │ └── v2 │ │ │ │ │ │ └── rbac.proto │ │ │ │ ├── redis_proxy │ │ │ │ │ └── v2 │ │ │ │ │ │ └── redis_proxy.proto │ │ │ │ ├── sni_cluster │ │ │ │ │ └── v2 │ │ │ │ │ │ └── sni_cluster.proto │ │ │ │ ├── tcp_proxy │ │ │ │ │ └── v2 │ │ │ │ │ │ └── tcp_proxy.proto │ │ │ │ ├── thrift_proxy │ │ │ │ │ └── v2alpha1 │ │ │ │ │ │ ├── route.proto │ │ │ │ │ │ └── thrift_proxy.proto │ │ │ │ └── zookeeper_proxy │ │ │ │ │ └── v1alpha1 │ │ │ │ │ └── zookeeper_proxy.proto │ │ │ ├── thrift │ │ │ │ ├── rate_limit │ │ │ │ │ └── v2alpha1 │ │ │ │ │ │ └── rate_limit.proto │ │ │ │ └── router │ │ │ │ │ └── v2alpha1 │ │ │ │ │ └── router.proto │ │ │ └── udp │ │ │ │ └── udp_proxy │ │ │ │ └── v2alpha │ │ │ │ └── udp_proxy.proto │ │ ├── grpc_credential │ │ │ ├── v2alpha │ │ │ │ ├── aws_iam.proto │ │ │ │ └── file_based_metadata.proto │ │ │ └── v3 │ │ │ │ ├── aws_iam.proto │ │ │ │ └── file_based_metadata.proto │ │ ├── health_checker │ │ │ └── redis │ │ │ │ └── v2 │ │ │ │ └── redis.proto │ │ ├── listener │ │ │ ├── v2 │ │ │ │ └── api_listener.proto │ │ │ ├── v3 │ │ │ │ ├── api_listener.proto │ │ │ │ ├── listener.proto │ │ │ │ ├── listener_components.proto │ │ │ │ ├── quic_config.proto │ │ │ │ └── udp_listener_config.proto │ │ │ └── v4alpha │ │ │ │ ├── api_listener.proto │ │ │ │ ├── listener.proto │ │ │ │ ├── listener_components.proto │ │ │ │ ├── quic_config.proto │ │ │ │ └── udp_listener_config.proto │ │ ├── metrics │ │ │ ├── v2 │ │ │ │ ├── metrics_service.proto │ │ │ │ └── stats.proto │ │ │ ├── v3 │ │ │ │ ├── metrics_service.proto │ │ │ │ └── stats.proto │ │ │ └── v4alpha │ │ │ │ ├── metrics_service.proto │ │ │ │ └── stats.proto │ │ ├── overload │ │ │ ├── v2alpha │ │ │ │ └── overload.proto │ │ │ └── v3 │ │ │ │ └── overload.proto │ │ ├── ratelimit │ │ │ ├── v2 │ │ │ │ └── rls.proto │ │ │ └── v3 │ │ │ │ └── rls.proto │ │ ├── rbac │ │ │ ├── v2 │ │ │ │ └── rbac.proto │ │ │ ├── v3 │ │ │ │ └── rbac.proto │ │ │ └── v4alpha │ │ │ │ └── rbac.proto │ │ ├── resource_monitor │ │ │ ├── fixed_heap │ │ │ │ └── v2alpha │ │ │ │ │ └── fixed_heap.proto │ │ │ └── injected_resource │ │ │ │ └── v2alpha │ │ │ │ └── injected_resource.proto │ │ ├── retry │ │ │ ├── omit_canary_hosts │ │ │ │ └── v2 │ │ │ │ │ └── omit_canary_hosts.proto │ │ │ ├── omit_host_metadata │ │ │ │ └── v2 │ │ │ │ │ └── omit_host_metadata_config.proto │ │ │ ├── previous_hosts │ │ │ │ └── v2 │ │ │ │ │ └── previous_hosts.proto │ │ │ └── previous_priorities │ │ │ │ └── previous_priorities_config.proto │ │ ├── route │ │ │ ├── v3 │ │ │ │ ├── route.proto │ │ │ │ ├── route_components.proto │ │ │ │ └── scoped_route.proto │ │ │ └── v4alpha │ │ │ │ ├── route.proto │ │ │ │ ├── route_components.proto │ │ │ │ └── scoped_route.proto │ │ ├── tap │ │ │ ├── v3 │ │ │ │ └── common.proto │ │ │ └── v4alpha │ │ │ │ └── common.proto │ │ ├── trace │ │ │ ├── v2 │ │ │ │ ├── datadog.proto │ │ │ │ ├── dynamic_ot.proto │ │ │ │ ├── http_tracer.proto │ │ │ │ ├── lightstep.proto │ │ │ │ ├── opencensus.proto │ │ │ │ ├── service.proto │ │ │ │ ├── trace.proto │ │ │ │ └── zipkin.proto │ │ │ ├── v2alpha │ │ │ │ └── xray.proto │ │ │ ├── v3 │ │ │ │ ├── datadog.proto │ │ │ │ ├── dynamic_ot.proto │ │ │ │ ├── http_tracer.proto │ │ │ │ ├── lightstep.proto │ │ │ │ ├── opencensus.proto │ │ │ │ ├── service.proto │ │ │ │ ├── skywalking.proto │ │ │ │ ├── trace.proto │ │ │ │ ├── xray.proto │ │ │ │ └── zipkin.proto │ │ │ └── v4alpha │ │ │ │ ├── http_tracer.proto │ │ │ │ └── service.proto │ │ └── transport_socket │ │ │ ├── alts │ │ │ └── v2alpha │ │ │ │ └── alts.proto │ │ │ ├── raw_buffer │ │ │ └── v2 │ │ │ │ └── raw_buffer.proto │ │ │ └── tap │ │ │ └── v2alpha │ │ │ └── tap.proto │ │ ├── data │ │ ├── accesslog │ │ │ ├── v2 │ │ │ │ └── accesslog.proto │ │ │ └── v3 │ │ │ │ └── accesslog.proto │ │ ├── cluster │ │ │ ├── v2alpha │ │ │ │ └── outlier_detection_event.proto │ │ │ └── v3 │ │ │ │ └── outlier_detection_event.proto │ │ ├── core │ │ │ ├── v2alpha │ │ │ │ └── health_check_event.proto │ │ │ └── v3 │ │ │ │ └── health_check_event.proto │ │ ├── dns │ │ │ ├── v2alpha │ │ │ │ └── dns_table.proto │ │ │ ├── v3 │ │ │ │ └── dns_table.proto │ │ │ └── v4alpha │ │ │ │ └── dns_table.proto │ │ └── tap │ │ │ ├── v2alpha │ │ │ ├── common.proto │ │ │ ├── http.proto │ │ │ ├── transport.proto │ │ │ └── wrapper.proto │ │ │ └── v3 │ │ │ ├── common.proto │ │ │ ├── http.proto │ │ │ ├── transport.proto │ │ │ └── wrapper.proto │ │ ├── extensions │ │ ├── access_loggers │ │ │ ├── file │ │ │ │ ├── v3 │ │ │ │ │ └── file.proto │ │ │ │ └── v4alpha │ │ │ │ │ └── file.proto │ │ │ ├── filters │ │ │ │ └── cel │ │ │ │ │ └── v3 │ │ │ │ │ └── cel.proto │ │ │ ├── grpc │ │ │ │ └── v3 │ │ │ │ │ └── als.proto │ │ │ ├── open_telemetry │ │ │ │ └── v3 │ │ │ │ │ └── logs_service.proto │ │ │ ├── stream │ │ │ │ └── v3 │ │ │ │ │ └── stream.proto │ │ │ └── wasm │ │ │ │ └── v3 │ │ │ │ └── wasm.proto │ │ ├── cache │ │ │ └── simple_http_cache │ │ │ │ └── v3 │ │ │ │ └── config.proto │ │ ├── clusters │ │ │ ├── aggregate │ │ │ │ └── v3 │ │ │ │ │ └── cluster.proto │ │ │ ├── dynamic_forward_proxy │ │ │ │ └── v3 │ │ │ │ │ └── cluster.proto │ │ │ └── redis │ │ │ │ └── v3 │ │ │ │ └── redis_cluster.proto │ │ ├── common │ │ │ ├── dynamic_forward_proxy │ │ │ │ └── v3 │ │ │ │ │ └── dns_cache.proto │ │ │ ├── matching │ │ │ │ └── v3 │ │ │ │ │ └── extension_matcher.proto │ │ │ ├── ratelimit │ │ │ │ └── v3 │ │ │ │ │ └── ratelimit.proto │ │ │ └── tap │ │ │ │ ├── v3 │ │ │ │ └── common.proto │ │ │ │ └── v4alpha │ │ │ │ └── common.proto │ │ ├── compression │ │ │ ├── brotli │ │ │ │ ├── compressor │ │ │ │ │ └── v3 │ │ │ │ │ │ └── brotli.proto │ │ │ │ └── decompressor │ │ │ │ │ └── v3 │ │ │ │ │ └── brotli.proto │ │ │ └── gzip │ │ │ │ ├── compressor │ │ │ │ └── v3 │ │ │ │ │ └── gzip.proto │ │ │ │ └── decompressor │ │ │ │ └── v3 │ │ │ │ └── gzip.proto │ │ ├── filters │ │ │ ├── common │ │ │ │ ├── dependency │ │ │ │ │ └── v3 │ │ │ │ │ │ └── dependency.proto │ │ │ │ ├── fault │ │ │ │ │ └── v3 │ │ │ │ │ │ └── fault.proto │ │ │ │ └── matcher │ │ │ │ │ └── action │ │ │ │ │ └── v3 │ │ │ │ │ └── skip_action.proto │ │ │ ├── http │ │ │ │ ├── adaptive_concurrency │ │ │ │ │ └── v3 │ │ │ │ │ │ └── adaptive_concurrency.proto │ │ │ │ ├── admission_control │ │ │ │ │ └── v3 │ │ │ │ │ │ └── admission_control.proto │ │ │ │ ├── alternate_protocols_cache │ │ │ │ │ └── v3 │ │ │ │ │ │ └── alternate_protocols_cache.proto │ │ │ │ ├── aws_lambda │ │ │ │ │ └── v3 │ │ │ │ │ │ └── aws_lambda.proto │ │ │ │ ├── aws_request_signing │ │ │ │ │ └── v3 │ │ │ │ │ │ └── aws_request_signing.proto │ │ │ │ ├── bandwidth_limit │ │ │ │ │ └── v3 │ │ │ │ │ │ └── bandwidth_limit.proto │ │ │ │ ├── buffer │ │ │ │ │ └── v3 │ │ │ │ │ │ └── buffer.proto │ │ │ │ ├── cache │ │ │ │ │ ├── v3 │ │ │ │ │ │ └── cache.proto │ │ │ │ │ ├── v3alpha │ │ │ │ │ │ └── cache.proto │ │ │ │ │ └── v4alpha │ │ │ │ │ │ └── cache.proto │ │ │ │ ├── cdn_loop │ │ │ │ │ └── v3 │ │ │ │ │ │ └── cdn_loop.proto │ │ │ │ ├── composite │ │ │ │ │ └── v3 │ │ │ │ │ │ └── composite.proto │ │ │ │ ├── compressor │ │ │ │ │ └── v3 │ │ │ │ │ │ └── compressor.proto │ │ │ │ ├── cors │ │ │ │ │ └── v3 │ │ │ │ │ │ └── cors.proto │ │ │ │ ├── csrf │ │ │ │ │ ├── v3 │ │ │ │ │ │ └── csrf.proto │ │ │ │ │ └── v4alpha │ │ │ │ │ │ └── csrf.proto │ │ │ │ ├── decompressor │ │ │ │ │ └── v3 │ │ │ │ │ │ └── decompressor.proto │ │ │ │ ├── dynamic_forward_proxy │ │ │ │ │ └── v3 │ │ │ │ │ │ └── dynamic_forward_proxy.proto │ │ │ │ ├── dynamo │ │ │ │ │ └── v3 │ │ │ │ │ │ └── dynamo.proto │ │ │ │ ├── ext_authz │ │ │ │ │ ├── v3 │ │ │ │ │ │ └── ext_authz.proto │ │ │ │ │ └── v4alpha │ │ │ │ │ │ └── ext_authz.proto │ │ │ │ ├── ext_proc │ │ │ │ │ └── v3 │ │ │ │ │ │ ├── ext_proc.proto │ │ │ │ │ │ └── processing_mode.proto │ │ │ │ ├── fault │ │ │ │ │ ├── v3 │ │ │ │ │ │ └── fault.proto │ │ │ │ │ └── v4alpha │ │ │ │ │ │ └── fault.proto │ │ │ │ ├── grpc_http1_bridge │ │ │ │ │ └── v3 │ │ │ │ │ │ └── config.proto │ │ │ │ ├── grpc_http1_reverse_bridge │ │ │ │ │ └── v3 │ │ │ │ │ │ └── config.proto │ │ │ │ ├── grpc_json_transcoder │ │ │ │ │ └── v3 │ │ │ │ │ │ └── transcoder.proto │ │ │ │ ├── grpc_stats │ │ │ │ │ └── v3 │ │ │ │ │ │ └── config.proto │ │ │ │ ├── grpc_web │ │ │ │ │ └── v3 │ │ │ │ │ │ └── grpc_web.proto │ │ │ │ ├── gzip │ │ │ │ │ └── v3 │ │ │ │ │ │ └── gzip.proto │ │ │ │ ├── header_to_metadata │ │ │ │ │ └── v3 │ │ │ │ │ │ └── header_to_metadata.proto │ │ │ │ ├── health_check │ │ │ │ │ ├── v3 │ │ │ │ │ │ └── health_check.proto │ │ │ │ │ └── v4alpha │ │ │ │ │ │ └── health_check.proto │ │ │ │ ├── ip_tagging │ │ │ │ │ └── v3 │ │ │ │ │ │ └── ip_tagging.proto │ │ │ │ ├── jwt_authn │ │ │ │ │ ├── v3 │ │ │ │ │ │ └── config.proto │ │ │ │ │ └── v4alpha │ │ │ │ │ │ └── config.proto │ │ │ │ ├── kill_request │ │ │ │ │ └── v3 │ │ │ │ │ │ └── kill_request.proto │ │ │ │ ├── local_ratelimit │ │ │ │ │ └── v3 │ │ │ │ │ │ └── local_rate_limit.proto │ │ │ │ ├── lua │ │ │ │ │ └── v3 │ │ │ │ │ │ └── lua.proto │ │ │ │ ├── oauth2 │ │ │ │ │ └── v3 │ │ │ │ │ │ └── oauth.proto │ │ │ │ ├── on_demand │ │ │ │ │ └── v3 │ │ │ │ │ │ └── on_demand.proto │ │ │ │ ├── original_src │ │ │ │ │ └── v3 │ │ │ │ │ │ └── original_src.proto │ │ │ │ ├── ratelimit │ │ │ │ │ └── v3 │ │ │ │ │ │ └── rate_limit.proto │ │ │ │ ├── rbac │ │ │ │ │ ├── v3 │ │ │ │ │ │ └── rbac.proto │ │ │ │ │ └── v4alpha │ │ │ │ │ │ └── rbac.proto │ │ │ │ ├── router │ │ │ │ │ ├── v3 │ │ │ │ │ │ └── router.proto │ │ │ │ │ └── v4alpha │ │ │ │ │ │ └── router.proto │ │ │ │ ├── set_metadata │ │ │ │ │ └── v3 │ │ │ │ │ │ └── set_metadata.proto │ │ │ │ ├── squash │ │ │ │ │ └── v3 │ │ │ │ │ │ └── squash.proto │ │ │ │ ├── stateful_session │ │ │ │ │ └── v3 │ │ │ │ │ │ └── stateful_session.proto │ │ │ │ ├── tap │ │ │ │ │ ├── v3 │ │ │ │ │ │ └── tap.proto │ │ │ │ │ └── v4alpha │ │ │ │ │ │ └── tap.proto │ │ │ │ └── wasm │ │ │ │ │ └── v3 │ │ │ │ │ └── wasm.proto │ │ │ ├── listener │ │ │ │ ├── http_inspector │ │ │ │ │ └── v3 │ │ │ │ │ │ └── http_inspector.proto │ │ │ │ ├── original_dst │ │ │ │ │ └── v3 │ │ │ │ │ │ └── original_dst.proto │ │ │ │ ├── original_src │ │ │ │ │ └── v3 │ │ │ │ │ │ └── original_src.proto │ │ │ │ ├── proxy_protocol │ │ │ │ │ └── v3 │ │ │ │ │ │ └── proxy_protocol.proto │ │ │ │ └── tls_inspector │ │ │ │ │ └── v3 │ │ │ │ │ └── tls_inspector.proto │ │ │ ├── network │ │ │ │ ├── client_ssl_auth │ │ │ │ │ └── v3 │ │ │ │ │ │ └── client_ssl_auth.proto │ │ │ │ ├── connection_limit │ │ │ │ │ └── v3 │ │ │ │ │ │ └── connection_limit.proto │ │ │ │ ├── direct_response │ │ │ │ │ └── v3 │ │ │ │ │ │ └── config.proto │ │ │ │ ├── dubbo_proxy │ │ │ │ │ ├── router │ │ │ │ │ │ └── v3 │ │ │ │ │ │ │ └── router.proto │ │ │ │ │ ├── v3 │ │ │ │ │ │ ├── dubbo_proxy.proto │ │ │ │ │ │ └── route.proto │ │ │ │ │ └── v4alpha │ │ │ │ │ │ ├── dubbo_proxy.proto │ │ │ │ │ │ └── route.proto │ │ │ │ ├── echo │ │ │ │ │ └── v3 │ │ │ │ │ │ └── echo.proto │ │ │ │ ├── ext_authz │ │ │ │ │ └── v3 │ │ │ │ │ │ └── ext_authz.proto │ │ │ │ ├── http_connection_manager │ │ │ │ │ ├── v3 │ │ │ │ │ │ └── http_connection_manager.proto │ │ │ │ │ └── v4alpha │ │ │ │ │ │ └── http_connection_manager.proto │ │ │ │ ├── kafka_broker │ │ │ │ │ └── v3 │ │ │ │ │ │ └── kafka_broker.proto │ │ │ │ ├── local_ratelimit │ │ │ │ │ └── v3 │ │ │ │ │ │ └── local_rate_limit.proto │ │ │ │ ├── meta_protocol_proxy │ │ │ │ │ ├── matcher │ │ │ │ │ │ ├── action │ │ │ │ │ │ │ └── v3 │ │ │ │ │ │ │ │ └── action.proto │ │ │ │ │ │ └── v3 │ │ │ │ │ │ │ └── matcher.proto │ │ │ │ │ └── v3 │ │ │ │ │ │ ├── meta_protocol_proxy.proto │ │ │ │ │ │ └── route.proto │ │ │ │ ├── mongo_proxy │ │ │ │ │ └── v3 │ │ │ │ │ │ └── mongo_proxy.proto │ │ │ │ ├── mysql_proxy │ │ │ │ │ └── v3 │ │ │ │ │ │ └── mysql_proxy.proto │ │ │ │ ├── postgres_proxy │ │ │ │ │ └── v3alpha │ │ │ │ │ │ └── postgres_proxy.proto │ │ │ │ ├── ratelimit │ │ │ │ │ └── v3 │ │ │ │ │ │ └── rate_limit.proto │ │ │ │ ├── rbac │ │ │ │ │ ├── v3 │ │ │ │ │ │ └── rbac.proto │ │ │ │ │ └── v4alpha │ │ │ │ │ │ └── rbac.proto │ │ │ │ ├── redis_proxy │ │ │ │ │ └── v3 │ │ │ │ │ │ └── redis_proxy.proto │ │ │ │ ├── rocketmq_proxy │ │ │ │ │ ├── v3 │ │ │ │ │ │ ├── rocketmq_proxy.proto │ │ │ │ │ │ └── route.proto │ │ │ │ │ └── v4alpha │ │ │ │ │ │ ├── rocketmq_proxy.proto │ │ │ │ │ │ └── route.proto │ │ │ │ ├── sni_cluster │ │ │ │ │ └── v3 │ │ │ │ │ │ └── sni_cluster.proto │ │ │ │ ├── sni_dynamic_forward_proxy │ │ │ │ │ ├── v3 │ │ │ │ │ │ └── sni_dynamic_forward_proxy.proto │ │ │ │ │ └── v3alpha │ │ │ │ │ │ └── sni_dynamic_forward_proxy.proto │ │ │ │ ├── tcp_proxy │ │ │ │ │ ├── v3 │ │ │ │ │ │ └── tcp_proxy.proto │ │ │ │ │ └── v4alpha │ │ │ │ │ │ └── tcp_proxy.proto │ │ │ │ ├── thrift_proxy │ │ │ │ │ ├── filters │ │ │ │ │ │ ├── header_to_metadata │ │ │ │ │ │ │ └── v3 │ │ │ │ │ │ │ │ └── header_to_metadata.proto │ │ │ │ │ │ └── ratelimit │ │ │ │ │ │ │ └── v3 │ │ │ │ │ │ │ └── rate_limit.proto │ │ │ │ │ ├── router │ │ │ │ │ │ └── v3 │ │ │ │ │ │ │ └── router.proto │ │ │ │ │ ├── v3 │ │ │ │ │ │ ├── route.proto │ │ │ │ │ │ └── thrift_proxy.proto │ │ │ │ │ └── v4alpha │ │ │ │ │ │ ├── route.proto │ │ │ │ │ │ └── thrift_proxy.proto │ │ │ │ ├── wasm │ │ │ │ │ └── v3 │ │ │ │ │ │ └── wasm.proto │ │ │ │ └── zookeeper_proxy │ │ │ │ │ └── v3 │ │ │ │ │ └── zookeeper_proxy.proto │ │ │ └── udp │ │ │ │ ├── dns_filter │ │ │ │ ├── v3 │ │ │ │ │ └── dns_filter.proto │ │ │ │ ├── v3alpha │ │ │ │ │ └── dns_filter.proto │ │ │ │ └── v4alpha │ │ │ │ │ └── dns_filter.proto │ │ │ │ └── udp_proxy │ │ │ │ └── v3 │ │ │ │ └── udp_proxy.proto │ │ ├── formatter │ │ │ ├── metadata │ │ │ │ └── v3 │ │ │ │ │ └── metadata.proto │ │ │ └── req_without_query │ │ │ │ └── v3 │ │ │ │ └── req_without_query.proto │ │ ├── health_checkers │ │ │ └── redis │ │ │ │ └── v3 │ │ │ │ └── redis.proto │ │ ├── http │ │ │ ├── header_formatters │ │ │ │ └── preserve_case │ │ │ │ │ └── v3 │ │ │ │ │ └── preserve_case.proto │ │ │ ├── original_ip_detection │ │ │ │ ├── custom_header │ │ │ │ │ └── v3 │ │ │ │ │ │ └── custom_header.proto │ │ │ │ └── xff │ │ │ │ │ └── v3 │ │ │ │ │ └── xff.proto │ │ │ └── stateful_session │ │ │ │ └── cookie │ │ │ │ └── v3 │ │ │ │ └── cookie.proto │ │ ├── internal_redirect │ │ │ ├── allow_listed_routes │ │ │ │ └── v3 │ │ │ │ │ └── allow_listed_routes_config.proto │ │ │ ├── previous_routes │ │ │ │ └── v3 │ │ │ │ │ └── previous_routes_config.proto │ │ │ └── safe_cross_scheme │ │ │ │ └── v3 │ │ │ │ └── safe_cross_scheme_config.proto │ │ ├── key_value │ │ │ └── file_based │ │ │ │ └── v3 │ │ │ │ └── config.proto │ │ ├── load_balancing_policies │ │ │ ├── round_robin │ │ │ │ └── v3 │ │ │ │ │ └── round_robin.proto │ │ │ └── wrr_locality │ │ │ │ └── v3 │ │ │ │ └── wrr_locality.proto │ │ ├── matching │ │ │ ├── common_inputs │ │ │ │ └── environment_variable │ │ │ │ │ └── v3 │ │ │ │ │ └── input.proto │ │ │ └── input_matchers │ │ │ │ ├── consistent_hashing │ │ │ │ └── v3 │ │ │ │ │ └── consistent_hashing.proto │ │ │ │ └── ip │ │ │ │ └── v3 │ │ │ │ └── ip.proto │ │ ├── network │ │ │ ├── dns_resolver │ │ │ │ ├── apple │ │ │ │ │ └── v3 │ │ │ │ │ │ └── apple_dns_resolver.proto │ │ │ │ └── cares │ │ │ │ │ └── v3 │ │ │ │ │ └── cares_dns_resolver.proto │ │ │ └── socket_interface │ │ │ │ └── v3 │ │ │ │ └── default_socket_interface.proto │ │ ├── quic │ │ │ ├── crypto_stream │ │ │ │ └── v3 │ │ │ │ │ └── crypto_stream.proto │ │ │ └── proof_source │ │ │ │ └── v3 │ │ │ │ └── proof_source.proto │ │ ├── rate_limit_descriptors │ │ │ └── expr │ │ │ │ └── v3 │ │ │ │ └── expr.proto │ │ ├── rbac │ │ │ └── matchers │ │ │ │ └── upstream_ip_port │ │ │ │ └── v3 │ │ │ │ └── upstream_ip_port_matcher.proto │ │ ├── request_id │ │ │ └── uuid │ │ │ │ └── v3 │ │ │ │ └── uuid.proto │ │ ├── resource_monitors │ │ │ ├── fixed_heap │ │ │ │ └── v3 │ │ │ │ │ └── fixed_heap.proto │ │ │ └── injected_resource │ │ │ │ └── v3 │ │ │ │ └── injected_resource.proto │ │ ├── retry │ │ │ ├── host │ │ │ │ ├── omit_canary_hosts │ │ │ │ │ └── v3 │ │ │ │ │ │ └── omit_canary_hosts.proto │ │ │ │ ├── omit_host_metadata │ │ │ │ │ └── v3 │ │ │ │ │ │ └── omit_host_metadata_config.proto │ │ │ │ └── previous_hosts │ │ │ │ │ └── v3 │ │ │ │ │ └── previous_hosts.proto │ │ │ └── priority │ │ │ │ └── previous_priorities │ │ │ │ └── v3 │ │ │ │ └── previous_priorities_config.proto │ │ ├── stat_sinks │ │ │ ├── graphite_statsd │ │ │ │ └── v3 │ │ │ │ │ └── graphite_statsd.proto │ │ │ └── wasm │ │ │ │ └── v3 │ │ │ │ └── wasm.proto │ │ ├── tracers │ │ │ ├── datadog │ │ │ │ └── v4alpha │ │ │ │ │ └── datadog.proto │ │ │ ├── dynamic_ot │ │ │ │ └── v4alpha │ │ │ │ │ └── dynamic_ot.proto │ │ │ ├── lightstep │ │ │ │ └── v4alpha │ │ │ │ │ └── lightstep.proto │ │ │ ├── opencensus │ │ │ │ └── v4alpha │ │ │ │ │ └── opencensus.proto │ │ │ ├── xray │ │ │ │ └── v4alpha │ │ │ │ │ └── xray.proto │ │ │ └── zipkin │ │ │ │ └── v4alpha │ │ │ │ └── zipkin.proto │ │ ├── transport_sockets │ │ │ ├── alts │ │ │ │ └── v3 │ │ │ │ │ └── alts.proto │ │ │ ├── proxy_protocol │ │ │ │ └── v3 │ │ │ │ │ └── upstream_proxy_protocol.proto │ │ │ ├── quic │ │ │ │ └── v3 │ │ │ │ │ └── quic_transport.proto │ │ │ ├── raw_buffer │ │ │ │ └── v3 │ │ │ │ │ └── raw_buffer.proto │ │ │ ├── s2a │ │ │ │ └── v3 │ │ │ │ │ └── s2a.proto │ │ │ ├── starttls │ │ │ │ └── v3 │ │ │ │ │ └── starttls.proto │ │ │ ├── tap │ │ │ │ ├── v3 │ │ │ │ │ └── tap.proto │ │ │ │ └── v4alpha │ │ │ │ │ └── tap.proto │ │ │ ├── tcp_stats │ │ │ │ └── v3 │ │ │ │ │ └── tcp_stats.proto │ │ │ └── tls │ │ │ │ ├── v3 │ │ │ │ ├── cert.proto │ │ │ │ ├── common.proto │ │ │ │ ├── secret.proto │ │ │ │ ├── tls.proto │ │ │ │ └── tls_spiffe_validator_config.proto │ │ │ │ └── v4alpha │ │ │ │ ├── common.proto │ │ │ │ ├── secret.proto │ │ │ │ └── tls.proto │ │ ├── upstreams │ │ │ ├── http │ │ │ │ ├── generic │ │ │ │ │ └── v3 │ │ │ │ │ │ └── generic_connection_pool.proto │ │ │ │ ├── http │ │ │ │ │ └── v3 │ │ │ │ │ │ └── http_connection_pool.proto │ │ │ │ ├── tcp │ │ │ │ │ └── v3 │ │ │ │ │ │ └── tcp_connection_pool.proto │ │ │ │ └── v3 │ │ │ │ │ └── http_protocol_options.proto │ │ │ └── tcp │ │ │ │ └── generic │ │ │ │ └── v3 │ │ │ │ └── generic_connection_pool.proto │ │ ├── wasm │ │ │ └── v3 │ │ │ │ └── wasm.proto │ │ └── watchdog │ │ │ └── profile_action │ │ │ └── v3 │ │ │ └── profile_action.proto │ │ ├── service │ │ ├── accesslog │ │ │ ├── v2 │ │ │ │ └── als.proto │ │ │ └── v3 │ │ │ │ └── als.proto │ │ ├── auth │ │ │ ├── v2 │ │ │ │ ├── attribute_context.proto │ │ │ │ └── external_auth.proto │ │ │ ├── v2alpha │ │ │ │ └── external_auth.proto │ │ │ └── v3 │ │ │ │ ├── attribute_context.proto │ │ │ │ └── external_auth.proto │ │ ├── cluster │ │ │ └── v3 │ │ │ │ └── cds.proto │ │ ├── discovery │ │ │ ├── v2 │ │ │ │ ├── ads.proto │ │ │ │ ├── hds.proto │ │ │ │ ├── rtds.proto │ │ │ │ └── sds.proto │ │ │ └── v3 │ │ │ │ ├── ads.proto │ │ │ │ └── discovery.proto │ │ ├── endpoint │ │ │ └── v3 │ │ │ │ ├── eds.proto │ │ │ │ └── leds.proto │ │ ├── event_reporting │ │ │ ├── v2alpha │ │ │ │ └── event_reporting_service.proto │ │ │ └── v3 │ │ │ │ └── event_reporting_service.proto │ │ ├── ext_proc │ │ │ └── v3 │ │ │ │ └── external_processor.proto │ │ ├── extension │ │ │ └── v3 │ │ │ │ └── config_discovery.proto │ │ ├── health │ │ │ ├── v3 │ │ │ │ └── hds.proto │ │ │ └── v4alpha │ │ │ │ └── hds.proto │ │ ├── listener │ │ │ └── v3 │ │ │ │ └── lds.proto │ │ ├── load_stats │ │ │ ├── v2 │ │ │ │ └── lrs.proto │ │ │ └── v3 │ │ │ │ └── lrs.proto │ │ ├── metrics │ │ │ ├── v2 │ │ │ │ └── metrics_service.proto │ │ │ └── v3 │ │ │ │ └── metrics_service.proto │ │ ├── ratelimit │ │ │ ├── v2 │ │ │ │ └── rls.proto │ │ │ └── v3 │ │ │ │ └── rls.proto │ │ ├── route │ │ │ └── v3 │ │ │ │ ├── rds.proto │ │ │ │ └── srds.proto │ │ ├── runtime │ │ │ └── v3 │ │ │ │ └── rtds.proto │ │ ├── secret │ │ │ └── v3 │ │ │ │ └── sds.proto │ │ ├── status │ │ │ ├── v2 │ │ │ │ └── csds.proto │ │ │ ├── v3 │ │ │ │ └── csds.proto │ │ │ └── v4alpha │ │ │ │ └── csds.proto │ │ ├── tap │ │ │ ├── v2alpha │ │ │ │ ├── common.proto │ │ │ │ ├── tap.proto │ │ │ │ └── tapds.proto │ │ │ ├── v3 │ │ │ │ ├── tap.proto │ │ │ │ └── tapds.proto │ │ │ └── v4alpha │ │ │ │ ├── tap.proto │ │ │ │ └── tapds.proto │ │ └── trace │ │ │ ├── v2 │ │ │ └── trace_service.proto │ │ │ └── v3 │ │ │ └── trace_service.proto │ │ ├── type │ │ ├── hash_policy.proto │ │ ├── http.proto │ │ ├── http │ │ │ └── v3 │ │ │ │ ├── cookie.proto │ │ │ │ └── path_transformation.proto │ │ ├── http_status.proto │ │ ├── matcher │ │ │ ├── metadata.proto │ │ │ ├── node.proto │ │ │ ├── number.proto │ │ │ ├── path.proto │ │ │ ├── regex.proto │ │ │ ├── string.proto │ │ │ ├── struct.proto │ │ │ ├── v3 │ │ │ │ ├── http_inputs.proto │ │ │ │ ├── metadata.proto │ │ │ │ ├── node.proto │ │ │ │ ├── number.proto │ │ │ │ ├── path.proto │ │ │ │ ├── regex.proto │ │ │ │ ├── string.proto │ │ │ │ ├── struct.proto │ │ │ │ └── value.proto │ │ │ ├── v4alpha │ │ │ │ ├── metadata.proto │ │ │ │ ├── node.proto │ │ │ │ ├── number.proto │ │ │ │ ├── path.proto │ │ │ │ ├── regex.proto │ │ │ │ ├── string.proto │ │ │ │ ├── struct.proto │ │ │ │ └── value.proto │ │ │ └── value.proto │ │ ├── metadata │ │ │ ├── v2 │ │ │ │ └── metadata.proto │ │ │ └── v3 │ │ │ │ └── metadata.proto │ │ ├── percent.proto │ │ ├── range.proto │ │ ├── semantic_version.proto │ │ ├── token_bucket.proto │ │ ├── tracing │ │ │ ├── v2 │ │ │ │ └── custom_tag.proto │ │ │ └── v3 │ │ │ │ └── custom_tag.proto │ │ └── v3 │ │ │ ├── hash_policy.proto │ │ │ ├── http.proto │ │ │ ├── http_status.proto │ │ │ ├── percent.proto │ │ │ ├── range.proto │ │ │ ├── ratelimit_unit.proto │ │ │ ├── semantic_version.proto │ │ │ └── token_bucket.proto │ │ └── watchdog │ │ └── v3 │ │ └── abort_action.proto │ ├── protoc-gen-validate │ ├── example-workspace │ │ └── foo │ │ │ ├── bar.proto │ │ │ └── subdir_without_package │ │ │ └── baz.proto │ ├── gogoproto │ │ └── gogo.proto │ ├── java │ │ ├── pgv-java-grpc │ │ │ └── src │ │ │ │ └── test │ │ │ │ └── proto │ │ │ │ ├── GooDBYe.proto │ │ │ │ └── hello.proto │ │ └── pgv-java-stub │ │ │ └── src │ │ │ └── test │ │ │ └── proto │ │ │ ├── embedded.proto │ │ │ ├── enum.proto │ │ │ └── underscoreName.proto │ ├── tests │ │ ├── generation │ │ │ └── multi_file_java_test │ │ │ │ └── test.proto │ │ └── harness │ │ │ ├── cases │ │ │ ├── bool.proto │ │ │ ├── bytes.proto │ │ │ ├── enums.proto │ │ │ ├── filename-with-dash.proto │ │ │ ├── kitchen_sink.proto │ │ │ ├── maps.proto │ │ │ ├── messages.proto │ │ │ ├── numbers.proto │ │ │ ├── oneofs.proto │ │ │ ├── other_package │ │ │ │ └── embed.proto │ │ │ ├── repeated.proto │ │ │ ├── strings.proto │ │ │ ├── subdirectory │ │ │ │ └── in_subdirectory.proto │ │ │ ├── wkt_any.proto │ │ │ ├── wkt_duration.proto │ │ │ ├── wkt_nested.proto │ │ │ ├── wkt_timestamp.proto │ │ │ ├── wkt_wrappers.proto │ │ │ └── yet_another_package │ │ │ │ └── embed.proto │ │ │ └── harness.proto │ ├── validate │ │ └── validate.proto │ └── vendor │ │ └── github.com │ │ ├── gogo │ │ └── protobuf │ │ │ ├── conformance │ │ │ └── internal │ │ │ │ └── conformance_proto │ │ │ │ └── conformance.proto │ │ │ ├── gogoproto │ │ │ └── gogo.proto │ │ │ ├── jsonpb │ │ │ └── jsonpb_test_proto │ │ │ │ ├── more_test_objects.proto │ │ │ │ └── test_objects.proto │ │ │ ├── proto │ │ │ ├── proto3_proto │ │ │ │ └── proto3.proto │ │ │ └── test_proto │ │ │ │ └── test.proto │ │ │ ├── protobuf │ │ │ └── google │ │ │ │ └── protobuf │ │ │ │ ├── any.proto │ │ │ │ ├── api.proto │ │ │ │ ├── compiler │ │ │ │ └── plugin.proto │ │ │ │ ├── descriptor.proto │ │ │ │ ├── duration.proto │ │ │ │ ├── empty.proto │ │ │ │ ├── field_mask.proto │ │ │ │ ├── source_context.proto │ │ │ │ ├── struct.proto │ │ │ │ ├── timestamp.proto │ │ │ │ ├── type.proto │ │ │ │ └── wrappers.proto │ │ │ ├── protoc-gen-gogo │ │ │ └── testdata │ │ │ │ ├── deprecated │ │ │ │ └── deprecated.proto │ │ │ │ ├── extension_base │ │ │ │ └── extension_base.proto │ │ │ │ ├── extension_extra │ │ │ │ └── extension_extra.proto │ │ │ │ ├── extension_user │ │ │ │ └── extension_user.proto │ │ │ │ ├── grpc │ │ │ │ └── grpc.proto │ │ │ │ ├── import_public │ │ │ │ ├── a.proto │ │ │ │ ├── b.proto │ │ │ │ └── sub │ │ │ │ │ ├── a.proto │ │ │ │ │ └── b.proto │ │ │ │ ├── imports │ │ │ │ ├── fmt │ │ │ │ │ └── m.proto │ │ │ │ ├── test_a_1 │ │ │ │ │ ├── m1.proto │ │ │ │ │ └── m2.proto │ │ │ │ ├── test_a_2 │ │ │ │ │ ├── m3.proto │ │ │ │ │ └── m4.proto │ │ │ │ ├── test_b_1 │ │ │ │ │ ├── m1.proto │ │ │ │ │ └── m2.proto │ │ │ │ ├── test_import_a1m1.proto │ │ │ │ ├── test_import_a1m2.proto │ │ │ │ └── test_import_all.proto │ │ │ │ ├── multi │ │ │ │ ├── multi1.proto │ │ │ │ ├── multi2.proto │ │ │ │ └── multi3.proto │ │ │ │ ├── my_test │ │ │ │ └── test.proto │ │ │ │ └── proto3 │ │ │ │ └── proto3.proto │ │ │ ├── test │ │ │ ├── asymetric-issue125 │ │ │ │ └── asym.proto │ │ │ ├── cachedsize │ │ │ │ └── cachedsize.proto │ │ │ ├── casttype │ │ │ │ ├── casttype.proto │ │ │ │ └── combos │ │ │ │ │ ├── both │ │ │ │ │ └── casttype.proto │ │ │ │ │ ├── marshaler │ │ │ │ │ └── casttype.proto │ │ │ │ │ ├── neither │ │ │ │ │ └── casttype.proto │ │ │ │ │ └── unmarshaler │ │ │ │ │ └── casttype.proto │ │ │ ├── castvalue │ │ │ │ ├── castvalue.proto │ │ │ │ └── combos │ │ │ │ │ ├── both │ │ │ │ │ └── castvalue.proto │ │ │ │ │ ├── marshaler │ │ │ │ │ └── castvalue.proto │ │ │ │ │ └── unmarshaler │ │ │ │ │ └── castvalue.proto │ │ │ ├── combos │ │ │ │ ├── both │ │ │ │ │ └── thetest.proto │ │ │ │ ├── marshaler │ │ │ │ │ └── thetest.proto │ │ │ │ └── unmarshaler │ │ │ │ │ └── thetest.proto │ │ │ ├── custombytesnonstruct │ │ │ │ └── proto.proto │ │ │ ├── dashfilename │ │ │ │ └── dash-filename.proto │ │ │ ├── data │ │ │ │ └── data.proto │ │ │ ├── defaultconflict │ │ │ │ ├── df.proto │ │ │ │ ├── dg.proto │ │ │ │ ├── nc.proto │ │ │ │ ├── ne.proto │ │ │ │ └── nx.proto │ │ │ ├── deterministic │ │ │ │ └── deterministic.proto │ │ │ ├── embedconflict │ │ │ │ ├── eb.proto │ │ │ │ ├── ec.proto │ │ │ │ ├── ee.proto │ │ │ │ ├── em.proto │ │ │ │ ├── en.proto │ │ │ │ └── er.proto │ │ │ ├── empty-issue70 │ │ │ │ └── empty.proto │ │ │ ├── enumcustomname │ │ │ │ └── enumcustomname.proto │ │ │ ├── enumdecl │ │ │ │ └── enumdecl.proto │ │ │ ├── enumdecl_all │ │ │ │ └── enumdeclall.proto │ │ │ ├── enumprefix │ │ │ │ └── enumprefix.proto │ │ │ ├── enumstringer │ │ │ │ └── enumstringer.proto │ │ │ ├── example │ │ │ │ └── example.proto │ │ │ ├── filedotname │ │ │ │ └── file.dot.proto │ │ │ ├── fuzztests │ │ │ │ └── fuzz.proto │ │ │ ├── group │ │ │ │ └── group.proto │ │ │ ├── importcustom-issue389 │ │ │ │ ├── imported │ │ │ │ │ └── a.proto │ │ │ │ └── importing │ │ │ │ │ └── c.proto │ │ │ ├── importdedup │ │ │ │ ├── proto.proto │ │ │ │ └── subpkg │ │ │ │ │ └── subproto.proto │ │ │ ├── importduplicate │ │ │ │ ├── importduplicate.proto │ │ │ │ ├── proto │ │ │ │ │ └── proto.proto │ │ │ │ └── sortkeys │ │ │ │ │ └── sortable.proto │ │ │ ├── indeximport-issue72 │ │ │ │ ├── index │ │ │ │ │ └── index.proto │ │ │ │ └── indeximport.proto │ │ │ ├── int64support │ │ │ │ └── object.proto │ │ │ ├── issue260 │ │ │ │ └── issue260.proto │ │ │ ├── issue261 │ │ │ │ └── issue261.proto │ │ │ ├── issue262 │ │ │ │ └── timefail.proto │ │ │ ├── issue270 │ │ │ │ ├── a │ │ │ │ │ ├── a1.proto │ │ │ │ │ └── a2.proto │ │ │ │ └── b │ │ │ │ │ └── b.proto │ │ │ ├── issue312 │ │ │ │ ├── events │ │ │ │ │ └── events.proto │ │ │ │ └── issue312.proto │ │ │ ├── issue322 │ │ │ │ └── issue322.proto │ │ │ ├── issue330 │ │ │ │ └── issue330.proto │ │ │ ├── issue34 │ │ │ │ └── proto.proto │ │ │ ├── issue427 │ │ │ │ └── issue427.proto │ │ │ ├── issue42order │ │ │ │ └── issue42.proto │ │ │ ├── issue8 │ │ │ │ └── proto.proto │ │ │ ├── mapdefaults │ │ │ │ ├── combos │ │ │ │ │ ├── both │ │ │ │ │ │ └── map.proto │ │ │ │ │ ├── marshaler │ │ │ │ │ │ └── map.proto │ │ │ │ │ ├── neither │ │ │ │ │ │ └── map.proto │ │ │ │ │ └── unmarshaler │ │ │ │ │ │ └── map.proto │ │ │ │ └── map.proto │ │ │ ├── mapsproto2 │ │ │ │ ├── combos │ │ │ │ │ ├── both │ │ │ │ │ │ └── mapsproto2.proto │ │ │ │ │ ├── marshaler │ │ │ │ │ │ └── mapsproto2.proto │ │ │ │ │ ├── neither │ │ │ │ │ │ └── mapsproto2.proto │ │ │ │ │ └── unmarshaler │ │ │ │ │ │ └── mapsproto2.proto │ │ │ │ ├── header.proto │ │ │ │ └── mapsproto2.proto │ │ │ ├── merge │ │ │ │ └── merge.proto │ │ │ ├── moredefaults │ │ │ │ └── md.proto │ │ │ ├── nopackage │ │ │ │ └── nopackage.proto │ │ │ ├── oneof │ │ │ │ ├── combos │ │ │ │ │ ├── both │ │ │ │ │ │ └── one.proto │ │ │ │ │ ├── marshaler │ │ │ │ │ │ └── one.proto │ │ │ │ │ ├── neither │ │ │ │ │ │ └── one.proto │ │ │ │ │ └── unmarshaler │ │ │ │ │ │ └── one.proto │ │ │ │ └── one.proto │ │ │ ├── oneof3 │ │ │ │ ├── combos │ │ │ │ │ ├── both │ │ │ │ │ │ └── one.proto │ │ │ │ │ ├── marshaler │ │ │ │ │ │ └── one.proto │ │ │ │ │ ├── neither │ │ │ │ │ │ └── one.proto │ │ │ │ │ └── unmarshaler │ │ │ │ │ │ └── one.proto │ │ │ │ └── one.proto │ │ │ ├── oneofembed │ │ │ │ └── oneofembed.proto │ │ │ ├── packed │ │ │ │ └── packed.proto │ │ │ ├── proto3extension │ │ │ │ └── proto3ext.proto │ │ │ ├── protosize │ │ │ │ └── protosize.proto │ │ │ ├── registration │ │ │ │ └── registration.proto │ │ │ ├── required │ │ │ │ └── requiredexample.proto │ │ │ ├── sizerconflict │ │ │ │ └── sizerconflict.proto │ │ │ ├── sizeunderscore │ │ │ │ └── sizeunderscore.proto │ │ │ ├── stdtypes │ │ │ │ └── stdtypes.proto │ │ │ ├── tags │ │ │ │ └── tags.proto │ │ │ ├── theproto3 │ │ │ │ ├── combos │ │ │ │ │ ├── both │ │ │ │ │ │ └── theproto3.proto │ │ │ │ │ ├── marshaler │ │ │ │ │ │ └── theproto3.proto │ │ │ │ │ ├── neither │ │ │ │ │ │ └── theproto3.proto │ │ │ │ │ └── unmarshaler │ │ │ │ │ │ └── theproto3.proto │ │ │ │ ├── footer.proto │ │ │ │ ├── header.proto │ │ │ │ ├── maps.proto │ │ │ │ └── theproto3.proto │ │ │ ├── thetest.proto │ │ │ ├── typedecl │ │ │ │ └── typedecl.proto │ │ │ ├── typedecl_all │ │ │ │ └── typedeclall.proto │ │ │ ├── typedeclimport │ │ │ │ ├── subpkg │ │ │ │ │ └── subpkg.proto │ │ │ │ └── typedeclimport.proto │ │ │ ├── types │ │ │ │ ├── combos │ │ │ │ │ ├── both │ │ │ │ │ │ └── types.proto │ │ │ │ │ ├── marshaler │ │ │ │ │ │ └── types.proto │ │ │ │ │ ├── neither │ │ │ │ │ │ └── types.proto │ │ │ │ │ └── unmarshaler │ │ │ │ │ │ └── types.proto │ │ │ │ └── types.proto │ │ │ ├── unmarshalmerge │ │ │ │ └── unmarshalmerge.proto │ │ │ ├── unrecognized │ │ │ │ └── unrecognized.proto │ │ │ └── unrecognizedgroup │ │ │ │ └── unrecognizedgroup.proto │ │ │ └── vanity │ │ │ └── test │ │ │ ├── gogovanity.proto │ │ │ ├── proto3.proto │ │ │ └── vanity.proto │ │ ├── golang │ │ └── protobuf │ │ │ ├── jsonpb │ │ │ └── jsonpb_test_proto │ │ │ │ ├── more_test_objects.proto │ │ │ │ └── test_objects.proto │ │ │ ├── proto │ │ │ ├── proto3_proto │ │ │ │ └── proto3.proto │ │ │ └── test_proto │ │ │ │ └── test.proto │ │ │ ├── protoc-gen-go │ │ │ ├── descriptor │ │ │ │ └── descriptor.proto │ │ │ ├── plugin │ │ │ │ └── plugin.proto │ │ │ └── testdata │ │ │ │ ├── deprecated │ │ │ │ └── deprecated.proto │ │ │ │ ├── extension_base │ │ │ │ └── extension_base.proto │ │ │ │ ├── extension_extra │ │ │ │ └── extension_extra.proto │ │ │ │ ├── extension_user │ │ │ │ └── extension_user.proto │ │ │ │ ├── grpc │ │ │ │ └── grpc.proto │ │ │ │ ├── import_public │ │ │ │ ├── a.proto │ │ │ │ ├── b.proto │ │ │ │ ├── importing │ │ │ │ │ └── importing.proto │ │ │ │ └── sub │ │ │ │ │ ├── a.proto │ │ │ │ │ └── b.proto │ │ │ │ ├── imports │ │ │ │ ├── fmt │ │ │ │ │ └── m.proto │ │ │ │ ├── test_a_1 │ │ │ │ │ ├── m1.proto │ │ │ │ │ └── m2.proto │ │ │ │ ├── test_a_2 │ │ │ │ │ ├── m3.proto │ │ │ │ │ └── m4.proto │ │ │ │ ├── test_b_1 │ │ │ │ │ ├── m1.proto │ │ │ │ │ └── m2.proto │ │ │ │ ├── test_import_a1m1.proto │ │ │ │ ├── test_import_a1m2.proto │ │ │ │ └── test_import_all.proto │ │ │ │ ├── issue780_oneof_conflict │ │ │ │ └── test.proto │ │ │ │ ├── multi │ │ │ │ ├── multi1.proto │ │ │ │ ├── multi2.proto │ │ │ │ └── multi3.proto │ │ │ │ ├── my_test │ │ │ │ └── test.proto │ │ │ │ └── proto3 │ │ │ │ └── proto3.proto │ │ │ └── ptypes │ │ │ ├── any │ │ │ └── any.proto │ │ │ ├── duration │ │ │ └── duration.proto │ │ │ ├── empty │ │ │ └── empty.proto │ │ │ ├── struct │ │ │ └── struct.proto │ │ │ ├── timestamp │ │ │ └── timestamp.proto │ │ │ └── wrappers │ │ │ └── wrappers.proto │ │ └── lyft │ │ └── protoc-gen-star │ │ ├── lang │ │ └── go │ │ │ └── testdata │ │ │ ├── names │ │ │ ├── digit │ │ │ │ └── digit.proto │ │ │ ├── entities │ │ │ │ └── entities.proto │ │ │ ├── import │ │ │ │ └── import.proto │ │ │ ├── import_path │ │ │ │ └── import_path.proto │ │ │ ├── import_path_mapped │ │ │ │ └── import_path_mapped.proto │ │ │ ├── keyword │ │ │ │ └── keyword.proto │ │ │ ├── mapped │ │ │ │ └── mapped.proto │ │ │ ├── none │ │ │ │ └── NO.pack--age.name$.proto │ │ │ ├── override │ │ │ │ └── override.proto │ │ │ ├── package │ │ │ │ └── package.proto │ │ │ ├── path_dash │ │ │ │ └── path_dash.proto │ │ │ ├── transitive_package │ │ │ │ ├── other.proto │ │ │ │ └── transitive.proto │ │ │ ├── types │ │ │ │ ├── proto2.proto │ │ │ │ └── proto3.proto │ │ │ └── unnamed │ │ │ │ └── unnamed.proto │ │ │ ├── outputs │ │ │ ├── import_prefix │ │ │ │ └── prefix.proto │ │ │ ├── import_prefix_srcrel │ │ │ │ └── prefix.proto │ │ │ ├── mapped │ │ │ │ └── mapped.proto │ │ │ ├── mapped_srcrel │ │ │ │ └── mapped.proto │ │ │ ├── none │ │ │ │ └── none.proto │ │ │ ├── none_srcrel │ │ │ │ └── none.proto │ │ │ ├── qualified │ │ │ │ └── qualified.proto │ │ │ ├── qualified_srcrel │ │ │ │ └── qualified.proto │ │ │ ├── unqualified │ │ │ │ └── unqualified.proto │ │ │ └── unqualified_srcrel │ │ │ │ └── unqualified.proto │ │ │ └── packages │ │ │ ├── import_prefix │ │ │ └── import_prefix.proto │ │ │ ├── mapped │ │ │ └── mapped.proto │ │ │ ├── no_options │ │ │ └── no_options.proto │ │ │ └── targets │ │ │ ├── fully_qualified │ │ │ └── fully_qualified.proto │ │ │ ├── none │ │ │ └── none.proto │ │ │ └── unqualified │ │ │ └── unqualified.proto │ │ └── testdata │ │ ├── graph │ │ ├── extensions │ │ │ ├── everything.proto │ │ │ └── ext │ │ │ │ ├── api.proto │ │ │ │ └── data.proto │ │ ├── info │ │ │ └── info.proto │ │ ├── messages │ │ │ ├── embedded.proto │ │ │ ├── enums.proto │ │ │ ├── enums_ext.proto │ │ │ ├── maps.proto │ │ │ ├── oneofs.proto │ │ │ ├── recursive.proto │ │ │ ├── repeated.proto │ │ │ └── scalars.proto │ │ ├── nested │ │ │ └── nested.proto │ │ ├── packageless │ │ │ └── packageless.proto │ │ └── services │ │ │ └── services.proto │ │ └── protos │ │ ├── kitchen │ │ ├── kitchen.proto │ │ └── sink.proto │ │ └── multipackage │ │ ├── bar │ │ ├── baz │ │ │ └── quux.proto │ │ └── buzz.proto │ │ └── foo │ │ └── fizz.proto │ └── xds │ ├── udpa │ ├── annotations │ │ ├── migrate.proto │ │ ├── security.proto │ │ ├── sensitive.proto │ │ ├── status.proto │ │ └── versioning.proto │ ├── data │ │ └── orca │ │ │ └── v1 │ │ │ └── orca_load_report.proto │ ├── service │ │ └── orca │ │ │ └── v1 │ │ │ └── orca.proto │ └── type │ │ └── v1 │ │ └── typed_struct.proto │ └── xds │ ├── annotations │ └── v3 │ │ ├── migrate.proto │ │ ├── security.proto │ │ ├── sensitive.proto │ │ ├── status.proto │ │ └── versioning.proto │ ├── core │ └── v3 │ │ ├── authority.proto │ │ ├── cidr.proto │ │ ├── collection_entry.proto │ │ ├── context_params.proto │ │ ├── extension.proto │ │ ├── resource.proto │ │ ├── resource_locator.proto │ │ └── resource_name.proto │ ├── data │ └── orca │ │ └── v3 │ │ └── orca_load_report.proto │ ├── service │ └── orca │ │ └── v3 │ │ └── orca.proto │ └── type │ ├── matcher │ └── v3 │ │ ├── ip.proto │ │ ├── matcher.proto │ │ ├── range.proto │ │ ├── regex.proto │ │ └── string.proto │ └── v3 │ ├── range.proto │ └── typed_struct.proto └── limitador ├── CHANGELOG.md ├── Cargo.toml ├── README.md ├── benches └── bench.rs ├── build.rs ├── proto └── distributed.proto ├── src ├── counter.rs ├── errors.rs ├── lib.rs ├── limit.rs ├── limit │ └── cel.rs └── storage │ ├── atomic_expiring_value.rs │ ├── disk │ ├── expiring_value.rs │ ├── mod.rs │ └── rocksdb_storage.rs │ ├── distributed │ ├── cr_counter_value.rs │ ├── grpc │ │ └── mod.rs │ └── mod.rs │ ├── in_memory.rs │ ├── keys.rs │ ├── mod.rs │ └── redis │ ├── counters_cache.rs │ ├── mod.rs │ ├── redis_async.rs │ ├── redis_cached.rs │ ├── redis_sync.rs │ └── scripts.rs └── tests ├── helpers ├── mod.rs └── tests_limiter.rs └── integration_tests.rs /.cargo/config.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kuadrant/limitador/340f09c008d894f8b36f556d2c553306cea596e0/.cargo/config.toml -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | ./target 2 | Dockerfile* 3 | *.swp 4 | .dockerignore 5 | .gitignore 6 | .git 7 | .github 8 | doc 9 | .idea 10 | **/*.yaml 11 | **/*.md 12 | **/*.json 13 | **/*.sh 14 | **/*.png 15 | **/*.svg 16 | # OSX files 17 | .DS_Store 18 | 19 | # Exception - Used in docker build 20 | !limitador-server/examples/limits.yaml -------------------------------------------------------------------------------- /.github/release.yml: -------------------------------------------------------------------------------- 1 | # https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes 2 | --- 3 | changelog: 4 | exclude: 5 | labels: 6 | - ignore-for-release 7 | categories: 8 | - title: Breaking Changes 🛠 9 | labels: 10 | - breaking-change 11 | - title: Exciting New Features 🎉 12 | labels: 13 | - enhancement 14 | - title: Other Changes 15 | labels: 16 | - "*" 17 | -------------------------------------------------------------------------------- /.github/workflows/bench.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Benchmark 3 | 4 | on: 5 | workflow_dispatch: 6 | push: 7 | branches: 8 | - main 9 | tags: 10 | - "*" 11 | 12 | jobs: 13 | bench: 14 | name: Benchmark 15 | runs-on: ubuntu-latest 16 | steps: 17 | - uses: actions/checkout@v4 18 | - uses: supercharge/redis-github-action@1.1.0 19 | with: 20 | redis-version: 7 21 | - uses: actions-rust-lang/setup-rust-toolchain@v1 22 | - uses: Swatinem/rust-cache@v2 23 | - uses: abelfodil/protoc-action@v1 24 | with: 25 | protoc-version: '3.19.4' 26 | - run: cargo bench 27 | -------------------------------------------------------------------------------- /.github/workflows/issues-workflow.yaml: -------------------------------------------------------------------------------- 1 | name: Add issues to project 2 | 3 | on: 4 | issues: 5 | types: 6 | - opened 7 | pull_request: 8 | types: 9 | - opened 10 | 11 | jobs: 12 | add-to-project: 13 | name: Add issue to project 14 | # Only run jobs if the feature branch is in your repo (not in a fork) 15 | # OR 16 | # it is an issue 17 | if: github.event.pull_request.head.repo.full_name == github.repository || github.event.issue.number != '' 18 | runs-on: ubuntu-latest 19 | steps: 20 | - uses: actions/add-to-project@v0.5.0 21 | with: 22 | project-url: https://github.com/orgs/Kuadrant/projects/18 23 | github-token: ${{ secrets.ADD_ISSUES_TOKEN }} 24 | -------------------------------------------------------------------------------- /.github/workflows/license-scan.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: License Scan 3 | 4 | on: 5 | push: 6 | branches: 7 | - 'main' 8 | pull_request: 9 | branches: 10 | - '*' 11 | 12 | jobs: 13 | fossa-scan: 14 | name: Find license compliance and security issues 15 | if: github.event.pull_request.head.repo.full_name == github.repository 16 | runs-on: ubuntu-latest 17 | steps: 18 | - uses: actions/checkout@v4 19 | - uses: fossas/fossa-action@v1.4.0 20 | name: License Scan 21 | with: 22 | api-key: ${{secrets.FOSSA_API_TOKEN}} 23 | branch: ${{ github.head_ref || github.ref_name }} 24 | project: git+github.com/Kuadrant/limitador 25 | - uses: fossas/fossa-action@v1.4.0 26 | name: License test for issues 27 | with: 28 | api-key: ${{secrets.FOSSA_API_TOKEN}} 29 | run-tests: true 30 | project: git+github.com/Kuadrant/limitador 31 | -------------------------------------------------------------------------------- /.github/workflows/release.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Release crate 3 | 4 | on: 5 | workflow_dispatch: 6 | inputs: 7 | version: 8 | description: "version (no `v` prefix)" 9 | required: true 10 | default: "1.0.0" 11 | 12 | jobs: 13 | publish: 14 | name: Publish Limitador crate to crates.io 15 | runs-on: ubuntu-latest 16 | steps: 17 | - uses: abelfodil/protoc-action@v1 18 | with: 19 | protoc-version: '3.19.4' 20 | - uses: supercharge/redis-github-action@1.1.0 21 | with: 22 | redis-version: 7 23 | - uses: actions/checkout@v4 24 | with: 25 | ref: crate-v${{ github.event.inputs.version }} 26 | - name: Build 27 | run: cargo build --verbose --release 28 | - name: Check 29 | run: cargo fmt --all -- --check && cargo clippy -- -D warnings 30 | - name: Run tests 31 | run: cargo test --verbose 32 | - name: Publish 33 | run: cargo publish --token ${{ secrets.CARGO_REGISTRY_TOKEN }} -p limitador:${{ github.event.inputs.version }} 34 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by Cargo 2 | # will have compiled files and executables 3 | /target/ 4 | **/target 5 | 6 | # These are backup files generated by rustfmt 7 | **/*.rs.bk 8 | 9 | # OSX files 10 | .DS_Store 11 | 12 | # JetBrains IDEA 13 | .idea/ 14 | -------------------------------------------------------------------------------- /ADOPTERS.md: -------------------------------------------------------------------------------- 1 | # Organizations using Limitador 2 | 3 | To add your organization to this list, open a pull request that adds your organization's name, optionally with a link. The list is in alphabetical order. 4 | 5 | (Remember to [sign your commits](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits) to comply with our contributors guidelines.) 6 | 7 | | Name | Since | Website | Use-Case | 8 | |:-|:-|:-|:-| -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | members = ["limitador", "limitador-server"] 3 | resolver = "2" 4 | 5 | [profile.release] 6 | lto = true 7 | codegen-units = 1 8 | -------------------------------------------------------------------------------- /MAINTAINERS.md: -------------------------------------------------------------------------------- 1 | # Maintainers of Limitador 2 | 3 | | Name | Company | GitHub | 4 | |---------------------|----------|-----------------| 5 | | Alex Snaps | Red Hat | alexsnaps | 6 | | Didier Di Cesare | Red Hat | didierofrivia | 7 | | Eguzki Astiz Lezaun | Red Hat | eguzki | 8 | | Kevin Fan | Red Hat | KevFan | -------------------------------------------------------------------------------- /default.profraw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kuadrant/limitador/340f09c008d894f8b36f556d2c553306cea596e0/default.profraw -------------------------------------------------------------------------------- /limitador-server/default.profraw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kuadrant/limitador/340f09c008d894f8b36f556d2c553306cea596e0/limitador-server/default.profraw -------------------------------------------------------------------------------- /limitador-server/e2e/file-watcher/configmap.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: ConfigMap 4 | metadata: 5 | name: limitador-config 6 | data: 7 | limits.yaml: | 8 | --- 9 | - namespace: test 10 | max_value: 1000 11 | seconds: 1 12 | conditions: [] 13 | variables: ["user_id"] 14 | -------------------------------------------------------------------------------- /limitador-server/e2e/file-watcher/configmap_updated.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: ConfigMap 4 | metadata: 5 | name: limitador-config 6 | data: 7 | limits.yaml: | 8 | --- 9 | - namespace: test 10 | max_value: 2000 11 | seconds: 1 12 | conditions: [] 13 | variables: ["user_id"] 14 | -------------------------------------------------------------------------------- /limitador-server/e2e/file-watcher/service.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Service 4 | metadata: 5 | name: limitador 6 | labels: 7 | app: limitador 8 | spec: 9 | ports: 10 | - name: http 11 | protocol: TCP 12 | port: 8080 13 | targetPort: http 14 | - name: grpc 15 | protocol: TCP 16 | port: 8081 17 | targetPort: grpc 18 | selector: 19 | app: limitador 20 | type: NodePort 21 | -------------------------------------------------------------------------------- /limitador-server/e2e/file-watcher/watch-env.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | ip=$(kubectl get nodes -lkubernetes.io/hostname!=kind-control-plane -ojsonpath='{.items[*].status.addresses[?(@.type=="InternalIP")].address}') 3 | port=$(kubectl get service limitador -o jsonpath='{.spec.ports[?(@.name=="http")].nodePort}') 4 | POD_TYPE_NAME=`kubectl get pods -l app=limitador -o name` 5 | while true 6 | do 7 | echo "#######################################################" 8 | echo "##########Configmap content ###########################" 9 | kubectl get configmap limitador-config -o yaml | yq e - 10 | echo "##########limits.yaml content inside the pod ##########" 11 | kubectl exec $(kubectl get pods -l app=limitador -o name) -- cat /tmp/limitador/limits.yaml 12 | echo "##########HTTP endpoints limits ##########" 13 | curl "http://${ip}:${port}/limits/test" 2>/dev/null | yq e - 14 | sleep 5 15 | done 16 | -------------------------------------------------------------------------------- /limitador-server/e2e/file-watcher/watch-pod-resource.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | POD_TYPE_NAME=`kubectl get pods -l app=limitador -o name` 3 | while true 4 | do 5 | echo "#######################################################" 6 | echo "#######################################################" 7 | echo "## POD: ${POD_TYPE_NAME} ########" 8 | kubectl describe ${POD_TYPE_NAME} 9 | sleep 5 10 | done 11 | -------------------------------------------------------------------------------- /limitador-server/examples/limits.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - 3 | namespace: test_namespace 4 | max_value: 1000000 5 | seconds: 60 6 | conditions: 7 | variables: 8 | - 9 | namespace: test_namespace 10 | max_value: 5 11 | seconds: 60 12 | conditions: 13 | - "descriptors[0]['req.method'] == 'POST'" 14 | variables: 15 | - user_id 16 | -------------------------------------------------------------------------------- /limitador-server/kubernetes/centos-pod.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: centos 5 | labels: 6 | app: centos 7 | spec: 8 | containers: 9 | - image: centos 10 | command: 11 | - "sleep" 12 | - "604800" 13 | imagePullPolicy: IfNotPresent 14 | name: centos 15 | restartPolicy: Always 16 | -------------------------------------------------------------------------------- /limitador-server/kubernetes/kuard-deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: kuard 5 | labels: 6 | app: kuard 7 | spec: 8 | replicas: 2 9 | selector: 10 | matchLabels: 11 | app: kuard 12 | template: 13 | metadata: 14 | labels: 15 | app: kuard 16 | spec: 17 | containers: 18 | - name: kuard 19 | image: gcr.io/kuar-demo/kuard-amd64:blue 20 | ports: 21 | - containerPort: 8080 22 | name: http 23 | protocol: TCP 24 | - name: envoy 25 | image: envoyproxy/envoy:v1.16.0 26 | command: ["envoy"] 27 | args: ["-c", "/etc/envoy.yaml", "--service-node", "kuard", "--service-cluster", "kuard"] 28 | ports: 29 | - name: envoy-http 30 | containerPort: 38080 31 | protocol: TCP 32 | - name: envoy-metrics 33 | containerPort: 9901 34 | protocol: TCP 35 | volumeMounts: 36 | - name: kuard-envoy-config 37 | mountPath: /etc/envoy.yaml 38 | subPath: envoy.yaml 39 | volumes: 40 | - name: kuard-envoy-config 41 | configMap: 42 | name: kuard-envoy-config -------------------------------------------------------------------------------- /limitador-server/kubernetes/kuard-envoyproxy-sidecar-metrics-dashboard-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kuadrant/limitador/340f09c008d894f8b36f556d2c553306cea596e0/limitador-server/kubernetes/kuard-envoyproxy-sidecar-metrics-dashboard-screenshot.png -------------------------------------------------------------------------------- /limitador-server/kubernetes/kuard-podmonitor.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: monitoring.coreos.com/v1 2 | kind: PodMonitor 3 | metadata: 4 | name: kuard 5 | labels: 6 | app: kuard 7 | spec: 8 | podMetricsEndpoints: 9 | - interval: 10s 10 | path: /stats/prometheus 11 | port: envoy-metrics 12 | scheme: http 13 | selector: 14 | matchLabels: 15 | app: kuard 16 | -------------------------------------------------------------------------------- /limitador-server/kubernetes/kuard-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: kuard 5 | labels: 6 | app: kuard 7 | annotations: 8 | service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*" 9 | spec: 10 | type: LoadBalancer 11 | ports: 12 | - name: envoy-http 13 | port: 80 14 | targetPort: envoy-http 15 | selector: 16 | app: kuard -------------------------------------------------------------------------------- /limitador-server/kubernetes/limitador-config-configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: limitador-config 5 | labels: 6 | app: limitador 7 | data: 8 | limits.yaml: | 9 | --- 10 | - 11 | namespace: kuard 12 | max_value: 1000 13 | seconds: 1 14 | conditions: [] 15 | variables: 16 | - per_hostname_per_second_burst -------------------------------------------------------------------------------- /limitador-server/kubernetes/limitador-metrics-dashboard-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kuadrant/limitador/340f09c008d894f8b36f556d2c553306cea596e0/limitador-server/kubernetes/limitador-metrics-dashboard-screenshot.png -------------------------------------------------------------------------------- /limitador-server/kubernetes/limitador-podmonitor.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: monitoring.coreos.com/v1 2 | kind: PodMonitor 3 | metadata: 4 | name: limitador 5 | labels: 6 | app: limitador 7 | spec: 8 | podMetricsEndpoints: 9 | - interval: 10s 10 | path: /metrics 11 | port: http 12 | scheme: http 13 | selector: 14 | matchLabels: 15 | app: limitador -------------------------------------------------------------------------------- /limitador-server/kubernetes/limitador-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: limitador 5 | labels: 6 | app: limitador 7 | spec: 8 | ports: 9 | - name: http 10 | protocol: TCP 11 | port: 8080 12 | targetPort: http 13 | - name: grpc 14 | protocol: TCP 15 | port: 8081 16 | targetPort: grpc 17 | selector: 18 | app: limitador 19 | clusterIP: None 20 | type: ClusterIP -------------------------------------------------------------------------------- /limitador-server/kubernetes/redis-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: redis 5 | spec: 6 | ports: 7 | - name: redis 8 | port: 6379 9 | protocol: TCP 10 | targetPort: redis 11 | selector: 12 | statefulset: redis 13 | type: ClusterIP -------------------------------------------------------------------------------- /limitador-server/sandbox/.gitignore: -------------------------------------------------------------------------------- 1 | /bin/ 2 | *.crt 3 | *.key 4 | *.pem 5 | *.csr 6 | *.srl 7 | report.html 8 | -------------------------------------------------------------------------------- /limitador-server/sandbox/docker-compose-envoy.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | version: '3.8' 3 | services: 4 | envoy: 5 | image: envoyproxy/envoy:v1.20-latest 6 | depends_on: 7 | - upstream 8 | - limitador 9 | command: 10 | - /usr/local/bin/envoy 11 | - --config-path 12 | - /etc/envoy.yaml 13 | - --log-level 14 | - info 15 | - --component-log-level 16 | - http:debug,router:debug 17 | - --service-cluster 18 | - proxy 19 | expose: 20 | - "80" 21 | - "8001" 22 | ports: 23 | - "18000:80" 24 | - "18001:8001" 25 | volumes: 26 | - ./envoy.yaml:/etc/envoy.yaml 27 | upstream: 28 | image: kennethreitz/httpbin 29 | -------------------------------------------------------------------------------- /limitador-server/sandbox/docker-compose-limitador-disk.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | version: '3.8' 3 | services: 4 | limitador: 5 | image: ${LIMITADOR_IMAGE:-limitador-testing} 6 | build: 7 | context: ../.. 8 | dockerfile: Dockerfile 9 | command: 10 | - limitador-server 11 | - --rls-ip 12 | - 0.0.0.0 13 | - --rls-port 14 | - "8081" 15 | - --http-ip 16 | - 0.0.0.0 17 | - --http-port 18 | - "8080" 19 | - -vvv 20 | - --grpc-reflection-service 21 | - /opt/kuadrant/limits/limits.yaml 22 | - disk 23 | - "/tmp/data" 24 | expose: 25 | - "8080" 26 | - "8081" 27 | ports: 28 | - "18080:8080" 29 | - "18081:8081" 30 | volumes: 31 | - ./limits.yaml:/opt/kuadrant/limits/limits.yaml 32 | -------------------------------------------------------------------------------- /limitador-server/sandbox/docker-compose-limitador-distributed.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | version: '3.8' 3 | services: 4 | limitador: 5 | image: limitador-testing-all-features 6 | build: 7 | context: ../.. 8 | dockerfile: Dockerfile 9 | args: 10 | - CARGO_ARGS=--all-features 11 | command: | 12 | limitador-server --rls-ip 0.0.0.0 --rls-port 8081 --http-ip 0.0.0.0 --http-port "8080" 13 | -vv --grpc-reflection-service /opt/kuadrant/limits/limits.yaml 14 | distributed ${PEER_ID:-node1} 0.0.0.0:5001 ${PEER_URLS:-} 15 | expose: 16 | - "8080" 17 | - "8081" 18 | - "5001" 19 | ports: 20 | - "18080:8080" 21 | - "18081:8081" 22 | - "15001:5001" 23 | volumes: 24 | - ./limits.yaml:/opt/kuadrant/limits/limits.yaml 25 | -------------------------------------------------------------------------------- /limitador-server/sandbox/docker-compose-limitador-memory.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | limitador: 4 | image: ${LIMITADOR_IMAGE:-limitador-testing} 5 | build: 6 | context: ../.. 7 | dockerfile: Dockerfile 8 | command: 9 | - limitador-server 10 | - --rls-ip 11 | - 0.0.0.0 12 | - --rls-port 13 | - "8081" 14 | - --http-ip 15 | - 0.0.0.0 16 | - --http-port 17 | - "8080" 18 | - -vvv 19 | - --grpc-reflection-service 20 | - /opt/kuadrant/limits/limits.yaml 21 | - memory 22 | expose: 23 | - "8080" 24 | - "8081" 25 | ports: 26 | - "18080:8080" 27 | - "18081:8081" 28 | volumes: 29 | # the entire path needs to be mounted 30 | # or inotify events are not triggered for updates on the mounted file 31 | - ./:/opt/kuadrant/limits 32 | -------------------------------------------------------------------------------- /limitador-server/sandbox/docker-compose-limitador-redis-cached.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | version: '3.8' 3 | services: 4 | limitador: 5 | image: ${LIMITADOR_IMAGE:-limitador-testing} 6 | build: 7 | context: ../.. 8 | dockerfile: Dockerfile 9 | depends_on: 10 | - redis 11 | command: 12 | - limitador-server 13 | - --rls-ip 14 | - 0.0.0.0 15 | - --rls-port 16 | - "8081" 17 | - --http-ip 18 | - 0.0.0.0 19 | - --http-port 20 | - "8080" 21 | - -vvv 22 | - --grpc-reflection-service 23 | - /opt/kuadrant/limits/limits.yaml 24 | - redis_cached 25 | - --batch-size 26 | - "100" 27 | - --flush-period 28 | - "1000" 29 | - --max-cached 30 | - "10000" 31 | - --response-timeout 32 | - "350" 33 | - redis://redis:6379 34 | expose: 35 | - "8080" 36 | - "8081" 37 | ports: 38 | - "18080:8080" 39 | - "18081:8081" 40 | volumes: 41 | - ./limits.yaml:/opt/kuadrant/limits/limits.yaml 42 | redis: 43 | image: redis:5 44 | -------------------------------------------------------------------------------- /limitador-server/sandbox/docker-compose-limitador-redis-otel.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | version: '3.8' 3 | services: 4 | limitador: 5 | image: ${LIMITADOR_IMAGE:-limitador-testing} 6 | build: 7 | context: ../.. 8 | dockerfile: Dockerfile 9 | depends_on: 10 | - jaeger 11 | - redis 12 | command: 13 | - limitador-server 14 | - --tracing-endpoint 15 | - "rpc://jaeger:4317" 16 | - --rls-ip 17 | - 0.0.0.0 18 | - --rls-port 19 | - "8081" 20 | - --http-ip 21 | - 0.0.0.0 22 | - --http-port 23 | - "8080" 24 | - -vvvv 25 | - --grpc-reflection-service 26 | - /opt/kuadrant/limits/limits.yaml 27 | - redis 28 | - redis://redis:6379 29 | expose: 30 | - "8080" 31 | - "8081" 32 | ports: 33 | - "18080:8080" 34 | - "18081:8081" 35 | volumes: 36 | - ./limits.yaml:/opt/kuadrant/limits/limits.yaml 37 | redis: 38 | image: redis:7 39 | jaeger: 40 | image: jaegertracing/all-in-one:latest 41 | environment: 42 | JAEGER_DISABLED: "false" 43 | COLLECTOR_OTLP_ENABLED: "true" 44 | ports: 45 | - 16686:16686 46 | expose: 47 | - "4317" 48 | -------------------------------------------------------------------------------- /limitador-server/sandbox/docker-compose-limitador-redis-tls.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | version: '3.8' 3 | services: 4 | limitador: 5 | image: ${LIMITADOR_IMAGE:-limitador-testing} 6 | build: 7 | context: ../.. 8 | dockerfile: Dockerfile 9 | depends_on: 10 | - redis 11 | command: 12 | - limitador-server 13 | - --rls-ip 14 | - 0.0.0.0 15 | - --rls-port 16 | - "8081" 17 | - --http-ip 18 | - 0.0.0.0 19 | - --http-port 20 | - "8080" 21 | - -vvv 22 | - --grpc-reflection-service 23 | - /opt/kuadrant/limits/limits.yaml 24 | - redis 25 | - rediss://:foobared@redis:6379/#insecure 26 | expose: 27 | - "8080" 28 | - "8081" 29 | ports: 30 | - "18080:8080" 31 | volumes: 32 | - ./limits.yaml:/opt/kuadrant/limits/limits.yaml 33 | redis: 34 | image: redis:6.2 35 | restart: always 36 | ports: 37 | - '6379:6379' 38 | command: 39 | - redis-server 40 | - /usr/local/etc/redis/redis.conf 41 | volumes: 42 | - ./redis-tls/redis-config.conf:/usr/local/etc/redis/redis.conf 43 | - ./redis.crt:/usr/local/etc/redis/certs/redis.crt 44 | - ./redis.key:/usr/local/etc/redis/certs/redis.key 45 | - ./ca.crt:/usr/local/etc/redis/certs/ca.crt 46 | -------------------------------------------------------------------------------- /limitador-server/sandbox/docker-compose-limitador-redis.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | version: '3.8' 3 | services: 4 | limitador: 5 | image: ${LIMITADOR_IMAGE:-limitador-testing} 6 | build: 7 | context: ../.. 8 | dockerfile: Dockerfile 9 | depends_on: 10 | - redis 11 | command: 12 | - limitador-server 13 | - --rls-ip 14 | - 0.0.0.0 15 | - --rls-port 16 | - "8081" 17 | - --http-ip 18 | - 0.0.0.0 19 | - --http-port 20 | - "8080" 21 | - -vvv 22 | - --grpc-reflection-service 23 | - /opt/kuadrant/limits/limits.yaml 24 | - redis 25 | - redis://redis:6379 26 | expose: 27 | - "8080" 28 | - "8081" 29 | ports: 30 | - "18080:8080" 31 | - "18081:8081" 32 | volumes: 33 | - ./limits.yaml:/opt/kuadrant/limits/limits.yaml 34 | redis: 35 | image: redis:5 36 | -------------------------------------------------------------------------------- /limitador-server/sandbox/limits.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - namespace: test_namespace 3 | max_value: 10 4 | seconds: 60 5 | conditions: 6 | - "descriptors[0]['req.method'] == 'GET'" 7 | - "descriptors[0]['req.path'] != '/json'" 8 | variables: [] 9 | - namespace: test_namespace 10 | max_value: 5 11 | seconds: 60 12 | conditions: 13 | - "descriptors[0]['req.method'] == 'POST'" 14 | - "descriptors[0]['req.path'] != '/json'" 15 | variables: [] 16 | - namespace: test_namespace 17 | max_value: 50000 18 | seconds: 10 19 | conditions: 20 | - "descriptors[0]['req.method'] == 'GET'" 21 | - "descriptors[0]['req.path'] == '/json'" 22 | variables: [] 23 | -------------------------------------------------------------------------------- /limitador-server/sandbox/load-test.json: -------------------------------------------------------------------------------- 1 | { 2 | "domain": "test_namespace", 3 | "hits_addend": 1, 4 | "descriptors": [ 5 | { 6 | "entries": [ 7 | { 8 | "key": "req.method", 9 | "value": "GET" 10 | }, 11 | { 12 | "key": "req.path", 13 | "value": "/json" 14 | } 15 | ] 16 | } 17 | ] 18 | } -------------------------------------------------------------------------------- /limitador-server/sandbox/loadtest/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "loadtest" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | goose = "^0.17" 8 | tokio = "^1.12" 9 | 10 | [workspace] -------------------------------------------------------------------------------- /limitador-server/sandbox/loadtest/src/main.rs: -------------------------------------------------------------------------------- 1 | use goose::prelude::*; 2 | 3 | async fn loadtest_get_json(user: &mut GooseUser) -> TransactionResult { 4 | let _goose_metrics = user.get("/json").await?; 5 | 6 | Ok(()) 7 | } 8 | 9 | #[tokio::main] 10 | async fn main() -> Result<(), GooseError> { 11 | GooseAttack::initialize()? 12 | .register_scenario( 13 | scenario!("LoadtestTransactions").register_transaction(transaction!(loadtest_get_json)), 14 | ) 15 | .set_default(GooseDefault::Host, "http://localhost:18000")? 16 | .set_default(GooseDefault::HatchRate, "2")? 17 | .set_default( 18 | GooseDefault::CoordinatedOmissionMitigation, 19 | GooseCoordinatedOmissionMitigation::Average, 20 | )? 21 | .set_default(GooseDefault::RunTime, 20)? 22 | .execute() 23 | .await?; 24 | 25 | Ok(()) 26 | } 27 | -------------------------------------------------------------------------------- /limitador-server/sandbox/redis-otel/README.md: -------------------------------------------------------------------------------- 1 | # Limitador instrumentation sandbox 2 | 3 | Limitador is configured to push traces to an [opentelemetry collector](https://opentelemetry.io/docs/collector/). 4 | 5 | ### Run sandbox 6 | 7 | ```bash 8 | make build 9 | make deploy-redis-otel 10 | ``` 11 | 12 | ### Run some traffic 13 | 14 | ```bash 15 | make grpcurl 16 | ``` 17 | 18 | ```bash 19 | bin/grpcurl -plaintext -d @ 127.0.0.1:18081 envoy.service.ratelimit.v3.RateLimitService.ShouldRateLimit < Recommended to start looking at `check_and_update` operation. 46 | 47 | ### Tear down sandbox 48 | 49 | ```bash 50 | make clean 51 | ``` 52 | 53 | -------------------------------------------------------------------------------- /limitador-server/sandbox/redis-tls/README.md: -------------------------------------------------------------------------------- 1 | ### Testing redis security 2 | 3 | Execute bash shell in redis pod 4 | 5 | ``` 6 | docker compose -p sandbox exec redis /bin/bash 7 | ``` 8 | 9 | Connect to this Redis server with redis-cli: 10 | 11 | ``` 12 | root@e024a29b74ba:/data# redis-cli --tls --cacert /usr/local/etc/redis/certs/ca.crt -a foobared 13 | ``` 14 | -------------------------------------------------------------------------------- /limitador-server/sandbox/redis-tls/redis-config.conf: -------------------------------------------------------------------------------- 1 | requirepass foobared 2 | port 0 3 | tls-port 6379 4 | tls-cert-file /usr/local/etc/redis/certs/redis.crt 5 | tls-key-file /usr/local/etc/redis/certs/redis.key 6 | tls-ca-cert-file /usr/local/etc/redis/certs/ca.crt 7 | tls-auth-clients no 8 | -------------------------------------------------------------------------------- /limitador-server/script/kind-cluster.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | kind: Cluster 3 | apiVersion: kind.x-k8s.io/v1alpha4 4 | nodes: 5 | - role: control-plane 6 | image: kindest/node:v1.23.1 7 | -------------------------------------------------------------------------------- /limitador-server/src/envoy_rls/mod.rs: -------------------------------------------------------------------------------- 1 | mod envoy_types; 2 | pub mod server; 3 | -------------------------------------------------------------------------------- /limitador-server/src/http_api/mod.rs: -------------------------------------------------------------------------------- 1 | // Deriving ApiV2Schema raises this Clippy warning. We can delete this once we 2 | // upgrade to a version of paperclip that contains the fix 3 | // https://github.com/wafflespeanut/paperclip/pull/275 4 | #[allow(clippy::field_reassign_with_default)] 5 | mod request_types; 6 | 7 | pub use request_types::Limit as LimitVO; 8 | 9 | pub mod server; 10 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/admin/v2alpha/listeners.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.admin.v2alpha; 4 | 5 | import "envoy/api/v2/core/address.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | 9 | option java_package = "io.envoyproxy.envoy.admin.v2alpha"; 10 | option java_outer_classname = "ListenersProto"; 11 | option java_multiple_files = true; 12 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/admin/v2alpha"; 13 | option (udpa.annotations.file_status).package_version_status = FROZEN; 14 | 15 | // [#protodoc-title: Listeners] 16 | 17 | // Admin endpoint uses this wrapper for `/listeners` to display listener status information. 18 | // See :ref:`/listeners ` for more information. 19 | message Listeners { 20 | // List of listener statuses. 21 | repeated ListenerStatus listener_statuses = 1; 22 | } 23 | 24 | // Details an individual listener's current status. 25 | message ListenerStatus { 26 | // Name of the listener 27 | string name = 1; 28 | 29 | // The actual local address that the listener is listening on. If a listener was configured 30 | // to listen on port 0, then this address has the port that was allocated by the OS. 31 | api.v2.core.Address local_address = 2; 32 | } 33 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/admin/v2alpha/metrics.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.admin.v2alpha; 4 | 5 | import "udpa/annotations/status.proto"; 6 | 7 | option java_package = "io.envoyproxy.envoy.admin.v2alpha"; 8 | option java_outer_classname = "MetricsProto"; 9 | option java_multiple_files = true; 10 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/admin/v2alpha"; 11 | option (udpa.annotations.file_status).package_version_status = FROZEN; 12 | 13 | // [#protodoc-title: Metrics] 14 | 15 | // Proto representation of an Envoy Counter or Gauge value. 16 | message SimpleMetric { 17 | enum Type { 18 | COUNTER = 0; 19 | GAUGE = 1; 20 | } 21 | 22 | // Type of the metric represented. 23 | Type type = 1; 24 | 25 | // Current metric value. 26 | uint64 value = 2; 27 | 28 | // Name of the metric. 29 | string name = 3; 30 | } 31 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/admin/v2alpha/tap.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.admin.v2alpha; 4 | 5 | import "envoy/service/tap/v2alpha/common.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | import "validate/validate.proto"; 9 | 10 | option java_package = "io.envoyproxy.envoy.admin.v2alpha"; 11 | option java_outer_classname = "TapProto"; 12 | option java_multiple_files = true; 13 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/admin/v2alpha"; 14 | option (udpa.annotations.file_status).package_version_status = FROZEN; 15 | 16 | // [#protodoc-title: Tap] 17 | 18 | // The /tap admin request body that is used to configure an active tap session. 19 | message TapRequest { 20 | // The opaque configuration ID used to match the configuration to a loaded extension. 21 | // A tap extension configures a similar opaque ID that is used to match. 22 | string config_id = 1 [(validate.rules).string = {min_bytes: 1}]; 23 | 24 | // The tap configuration to load. 25 | service.tap.v2alpha.TapConfig tap_config = 2 [(validate.rules).message = {required: true}]; 26 | } 27 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/admin/v3/metrics.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.admin.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "udpa/annotations/versioning.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.admin.v3"; 9 | option java_outer_classname = "MetricsProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/admin/v3;adminv3"; 12 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 13 | 14 | // [#protodoc-title: Metrics] 15 | 16 | // Proto representation of an Envoy Counter or Gauge value. 17 | message SimpleMetric { 18 | option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v2alpha.SimpleMetric"; 19 | 20 | enum Type { 21 | COUNTER = 0; 22 | GAUGE = 1; 23 | } 24 | 25 | // Type of the metric represented. 26 | Type type = 1; 27 | 28 | // Current metric value. 29 | uint64 value = 2; 30 | 31 | // Name of the metric. 32 | string name = 3; 33 | } 34 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/admin/v3/tap.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.admin.v3; 4 | 5 | import "envoy/config/tap/v3/common.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | import "udpa/annotations/versioning.proto"; 9 | import "validate/validate.proto"; 10 | 11 | option java_package = "io.envoyproxy.envoy.admin.v3"; 12 | option java_outer_classname = "TapProto"; 13 | option java_multiple_files = true; 14 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/admin/v3;adminv3"; 15 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 16 | 17 | // [#protodoc-title: Tap] 18 | 19 | // The /tap admin request body that is used to configure an active tap session. 20 | message TapRequest { 21 | option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v2alpha.TapRequest"; 22 | 23 | // The opaque configuration ID used to match the configuration to a loaded extension. 24 | // A tap extension configures a similar opaque ID that is used to match. 25 | string config_id = 1 [(validate.rules).string = {min_len: 1}]; 26 | 27 | // The tap configuration to load. 28 | config.tap.v3.TapConfig tap_config = 2 [(validate.rules).message = {required: true}]; 29 | } 30 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/admin/v4alpha/metrics.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.admin.v4alpha; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "udpa/annotations/versioning.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.admin.v4alpha"; 9 | option java_outer_classname = "MetricsProto"; 10 | option java_multiple_files = true; 11 | option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; 12 | 13 | // [#protodoc-title: Metrics] 14 | 15 | // Proto representation of an Envoy Counter or Gauge value. 16 | message SimpleMetric { 17 | option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.SimpleMetric"; 18 | 19 | enum Type { 20 | COUNTER = 0; 21 | GAUGE = 1; 22 | } 23 | 24 | // Type of the metric represented. 25 | Type type = 1; 26 | 27 | // Current metric value. 28 | uint64 value = 2; 29 | 30 | // Name of the metric. 31 | string name = 3; 32 | } 33 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/admin/v4alpha/tap.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.admin.v4alpha; 4 | 5 | import "envoy/config/tap/v4alpha/common.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | import "udpa/annotations/versioning.proto"; 9 | import "validate/validate.proto"; 10 | 11 | option java_package = "io.envoyproxy.envoy.admin.v4alpha"; 12 | option java_outer_classname = "TapProto"; 13 | option java_multiple_files = true; 14 | option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; 15 | 16 | // [#protodoc-title: Tap] 17 | 18 | // The /tap admin request body that is used to configure an active tap session. 19 | message TapRequest { 20 | option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.TapRequest"; 21 | 22 | // The opaque configuration ID used to match the configuration to a loaded extension. 23 | // A tap extension configures a similar opaque ID that is used to match. 24 | string config_id = 1 [(validate.rules).string = {min_bytes: 1}]; 25 | 26 | // The tap configuration to load. 27 | config.tap.v4alpha.TapConfig tap_config = 2 [(validate.rules).message = {required: true}]; 28 | } 29 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/annotations/resource.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.annotations; 4 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/annotations"; 5 | 6 | import "google/protobuf/descriptor.proto"; 7 | 8 | // [#protodoc-title: Resource] 9 | 10 | // Magic number in this file derived from top 28bit of SHA256 digest of "envoy.annotation.resource". 11 | extend google.protobuf.ServiceOptions { 12 | ResourceAnnotation resource = 265073217; 13 | } 14 | 15 | message ResourceAnnotation { 16 | // Annotation for xDS services that indicates the fully-qualified Protobuf type for the resource 17 | // type. 18 | string type = 1; 19 | } 20 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/api/v2/auth/cert.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.api.v2.auth; 4 | 5 | import "udpa/annotations/migrate.proto"; 6 | 7 | import public "envoy/api/v2/auth/common.proto"; 8 | import public "envoy/api/v2/auth/secret.proto"; 9 | import public "envoy/api/v2/auth/tls.proto"; 10 | 11 | option java_package = "io.envoyproxy.envoy.api.v2.auth"; 12 | option java_outer_classname = "CertProto"; 13 | option java_multiple_files = true; 14 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/auth"; 15 | option (udpa.annotations.file_migrate).move_to_package = 16 | "envoy.extensions.transport_sockets.tls.v3"; 17 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/api/v2/core/event_service_config.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.api.v2.core; 4 | 5 | import "envoy/api/v2/core/grpc_service.proto"; 6 | 7 | import "udpa/annotations/migrate.proto"; 8 | import "udpa/annotations/status.proto"; 9 | import "validate/validate.proto"; 10 | 11 | option java_package = "io.envoyproxy.envoy.api.v2.core"; 12 | option java_outer_classname = "EventServiceConfigProto"; 13 | option java_multiple_files = true; 14 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/core"; 15 | option (udpa.annotations.file_migrate).move_to_package = "envoy.config.core.v3"; 16 | option (udpa.annotations.file_status).package_version_status = FROZEN; 17 | 18 | // [#not-implemented-hide:] 19 | // Configuration of the event reporting service endpoint. 20 | message EventServiceConfig { 21 | oneof config_source_specifier { 22 | option (validate.required) = true; 23 | 24 | // Specifies the gRPC service that hosts the event reporting service. 25 | GrpcService grpc_service = 1; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/api/v2/core/grpc_method_list.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.api.v2.core; 4 | 5 | import "udpa/annotations/migrate.proto"; 6 | import "udpa/annotations/status.proto"; 7 | import "validate/validate.proto"; 8 | 9 | option java_package = "io.envoyproxy.envoy.api.v2.core"; 10 | option java_outer_classname = "GrpcMethodListProto"; 11 | option java_multiple_files = true; 12 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/core"; 13 | option (udpa.annotations.file_migrate).move_to_package = "envoy.config.core.v3"; 14 | option (udpa.annotations.file_status).package_version_status = FROZEN; 15 | 16 | // [#protodoc-title: gRPC method list] 17 | 18 | // A list of gRPC methods which can be used as an allowlist, for example. 19 | message GrpcMethodList { 20 | message Service { 21 | // The name of the gRPC service. 22 | string name = 1 [(validate.rules).string = {min_bytes: 1}]; 23 | 24 | // The names of the gRPC methods in this service. 25 | repeated string method_names = 2 [(validate.rules).repeated = {min_items: 1}]; 26 | } 27 | 28 | repeated Service services = 1; 29 | } 30 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/api/v2/endpoint/endpoint.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.api.v2.endpoint; 4 | 5 | import public "envoy/api/v2/endpoint/endpoint_components.proto"; 6 | 7 | option java_package = "io.envoyproxy.envoy.api.v2.endpoint"; 8 | option java_outer_classname = "EndpointProto"; 9 | option java_multiple_files = true; 10 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/endpoint"; 11 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/api/v2/listener/listener.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.api.v2.listener; 4 | 5 | import public "envoy/api/v2/listener/listener_components.proto"; 6 | 7 | option java_package = "io.envoyproxy.envoy.api.v2.listener"; 8 | option java_outer_classname = "ListenerProto"; 9 | option java_multiple_files = true; 10 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/listener"; 11 | option csharp_namespace = "Envoy.Api.V2.ListenerNS"; 12 | option ruby_package = "Envoy.Api.V2.ListenerNS"; 13 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/api/v2/route/route.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.api.v2.route; 4 | 5 | import public "envoy/api/v2/route/route_components.proto"; 6 | 7 | option java_package = "io.envoyproxy.envoy.api.v2.route"; 8 | option java_outer_classname = "RouteProto"; 9 | option java_multiple_files = true; 10 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/route"; 11 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/cluster/aggregate/v2alpha/cluster.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.cluster.aggregate.v2alpha; 4 | 5 | import "udpa/annotations/migrate.proto"; 6 | import "udpa/annotations/status.proto"; 7 | import "validate/validate.proto"; 8 | 9 | option java_package = "io.envoyproxy.envoy.config.cluster.aggregate.v2alpha"; 10 | option java_outer_classname = "ClusterProto"; 11 | option java_multiple_files = true; 12 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/cluster/aggregate/v2alpha"; 13 | option (udpa.annotations.file_migrate).move_to_package = "envoy.extensions.clusters.aggregate.v3"; 14 | option (udpa.annotations.file_status).package_version_status = FROZEN; 15 | 16 | // [#protodoc-title: Aggregate cluster configuration] 17 | 18 | // Configuration for the aggregate cluster. See the :ref:`architecture overview 19 | // ` for more information. 20 | // [#extension: envoy.clusters.aggregate] 21 | message ClusterConfig { 22 | // Load balancing clusters in aggregate cluster. Clusters are prioritized based on the order they 23 | // appear in this list. 24 | repeated string clusters = 1 [(validate.rules).repeated = {min_items: 1}]; 25 | } 26 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/cluster/v4alpha/filter.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.cluster.v4alpha; 4 | 5 | import "google/protobuf/any.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | import "udpa/annotations/versioning.proto"; 9 | import "validate/validate.proto"; 10 | 11 | option java_package = "io.envoyproxy.envoy.config.cluster.v4alpha"; 12 | option java_outer_classname = "FilterProto"; 13 | option java_multiple_files = true; 14 | option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; 15 | 16 | // [#protodoc-title: Upstream filters] 17 | // Upstream filters apply to the connections to the upstream cluster hosts. 18 | 19 | message Filter { 20 | option (udpa.annotations.versioning).previous_message_type = "envoy.config.cluster.v3.Filter"; 21 | 22 | // The name of the filter to instantiate. The name must match a 23 | // :ref:`supported filter `. 24 | string name = 1 [(validate.rules).string = {min_bytes: 1}]; 25 | 26 | // Filter specific configuration which depends on the filter being 27 | // instantiated. See the supported filters for further documentation. 28 | google.protobuf.Any typed_config = 2; 29 | } 30 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/common/key_value/v3/config.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.common.key_value.v3; 4 | 5 | import "envoy/config/core/v3/extension.proto"; 6 | 7 | import "xds/annotations/v3/status.proto"; 8 | 9 | import "udpa/annotations/status.proto"; 10 | import "validate/validate.proto"; 11 | 12 | option java_package = "io.envoyproxy.envoy.config.common.key_value.v3"; 13 | option java_outer_classname = "ConfigProto"; 14 | option java_multiple_files = true; 15 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/common/key_value/v3;key_valuev3"; 16 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 17 | 18 | // [#protodoc-title: Key Value Store storage plugin] 19 | 20 | // This shared configuration for Envoy key value stores. 21 | message KeyValueStoreConfig { 22 | option (xds.annotations.v3.message_status).work_in_progress = true; 23 | 24 | // [#extension-category: envoy.common.key_value] 25 | core.v3.TypedExtensionConfig config = 1 [(validate.rules).message = {required: true}]; 26 | } 27 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/core/v3/event_service_config.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.core.v3; 4 | 5 | import "envoy/config/core/v3/grpc_service.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | import "udpa/annotations/versioning.proto"; 9 | import "validate/validate.proto"; 10 | 11 | option java_package = "io.envoyproxy.envoy.config.core.v3"; 12 | option java_outer_classname = "EventServiceConfigProto"; 13 | option java_multiple_files = true; 14 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3"; 15 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 16 | 17 | // [#not-implemented-hide:] 18 | // Configuration of the event reporting service endpoint. 19 | message EventServiceConfig { 20 | option (udpa.annotations.versioning).previous_message_type = 21 | "envoy.api.v2.core.EventServiceConfig"; 22 | 23 | oneof config_source_specifier { 24 | option (validate.required) = true; 25 | 26 | // Specifies the gRPC service that hosts the event reporting service. 27 | GrpcService grpc_service = 1; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/core/v3/proxy_protocol.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.core.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | 7 | option java_package = "io.envoyproxy.envoy.config.core.v3"; 8 | option java_outer_classname = "ProxyProtocolProto"; 9 | option java_multiple_files = true; 10 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3"; 11 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 12 | 13 | // [#protodoc-title: Proxy Protocol] 14 | 15 | message ProxyProtocolConfig { 16 | enum Version { 17 | // PROXY protocol version 1. Human readable format. 18 | V1 = 0; 19 | 20 | // PROXY protocol version 2. Binary format. 21 | V2 = 1; 22 | } 23 | 24 | // The PROXY protocol version to use. See https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt for details 25 | Version version = 1; 26 | } 27 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/core/v4alpha/event_service_config.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.core.v4alpha; 4 | 5 | import "envoy/config/core/v4alpha/grpc_service.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | import "udpa/annotations/versioning.proto"; 9 | import "validate/validate.proto"; 10 | 11 | option java_package = "io.envoyproxy.envoy.config.core.v4alpha"; 12 | option java_outer_classname = "EventServiceConfigProto"; 13 | option java_multiple_files = true; 14 | option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; 15 | 16 | // [#not-implemented-hide:] 17 | // Configuration of the event reporting service endpoint. 18 | message EventServiceConfig { 19 | option (udpa.annotations.versioning).previous_message_type = 20 | "envoy.config.core.v3.EventServiceConfig"; 21 | 22 | oneof config_source_specifier { 23 | option (validate.required) = true; 24 | 25 | // Specifies the gRPC service that hosts the event reporting service. 26 | GrpcService grpc_service = 1; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/core/v4alpha/grpc_method_list.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.core.v4alpha; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "udpa/annotations/versioning.proto"; 7 | import "validate/validate.proto"; 8 | 9 | option java_package = "io.envoyproxy.envoy.config.core.v4alpha"; 10 | option java_outer_classname = "GrpcMethodListProto"; 11 | option java_multiple_files = true; 12 | option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; 13 | 14 | // [#protodoc-title: gRPC method list] 15 | 16 | // A list of gRPC methods which can be used as an allowlist, for example. 17 | message GrpcMethodList { 18 | option (udpa.annotations.versioning).previous_message_type = 19 | "envoy.config.core.v3.GrpcMethodList"; 20 | 21 | message Service { 22 | option (udpa.annotations.versioning).previous_message_type = 23 | "envoy.config.core.v3.GrpcMethodList.Service"; 24 | 25 | // The name of the gRPC service. 26 | string name = 1 [(validate.rules).string = {min_bytes: 1}]; 27 | 28 | // The names of the gRPC methods in this service. 29 | repeated string method_names = 2 [(validate.rules).repeated = {min_items: 1}]; 30 | } 31 | 32 | repeated Service services = 1; 33 | } 34 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/core/v4alpha/proxy_protocol.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.core.v4alpha; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "udpa/annotations/versioning.proto"; 7 | import "validate/validate.proto"; 8 | 9 | option java_package = "io.envoyproxy.envoy.config.core.v4alpha"; 10 | option java_outer_classname = "ProxyProtocolProto"; 11 | option java_multiple_files = true; 12 | option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; 13 | 14 | // [#protodoc-title: Proxy Protocol] 15 | 16 | message ProxyProtocolConfig { 17 | option (udpa.annotations.versioning).previous_message_type = 18 | "envoy.config.core.v3.ProxyProtocolConfig"; 19 | 20 | enum Version { 21 | // PROXY protocol version 1. Human readable format. 22 | V1 = 0; 23 | 24 | // PROXY protocol version 2. Binary format. 25 | V2 = 1; 26 | } 27 | 28 | // The PROXY protocol version to use. See https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt for details 29 | Version version = 1; 30 | } 31 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/filter/dubbo/router/v2alpha1/router.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.filter.dubbo.router.v2alpha1; 4 | 5 | import "udpa/annotations/migrate.proto"; 6 | import "udpa/annotations/status.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.config.filter.dubbo.router.v2alpha1"; 9 | option java_outer_classname = "RouterProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/filter/dubbo/router/v2alpha1"; 12 | option (udpa.annotations.file_migrate).move_to_package = 13 | "envoy.extensions.filters.network.dubbo_proxy.router.v3"; 14 | option (udpa.annotations.file_status).package_version_status = FROZEN; 15 | 16 | // [#protodoc-title: Router] 17 | // Dubbo router :ref:`configuration overview `. 18 | 19 | message Router { 20 | } 21 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/filter/http/cors/v2/cors.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.filter.http.cors.v2; 4 | 5 | import "udpa/annotations/migrate.proto"; 6 | import "udpa/annotations/status.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.config.filter.http.cors.v2"; 9 | option java_outer_classname = "CorsProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/filter/http/cors/v2;corsv2"; 12 | option (udpa.annotations.file_migrate).move_to_package = "envoy.extensions.filters.http.cors.v3"; 13 | option (udpa.annotations.file_status).package_version_status = FROZEN; 14 | 15 | // [#protodoc-title: Cors] 16 | // CORS Filter :ref:`configuration overview `. 17 | // [#extension: envoy.filters.http.cors] 18 | 19 | // Cors filter config. 20 | message Cors { 21 | } 22 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/filter/http/dynamo/v2/dynamo.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.filter.http.dynamo.v2; 4 | 5 | import "udpa/annotations/migrate.proto"; 6 | import "udpa/annotations/status.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.config.filter.http.dynamo.v2"; 9 | option java_outer_classname = "DynamoProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/filter/http/dynamo/v2;dynamov2"; 12 | option (udpa.annotations.file_migrate).move_to_package = "envoy.extensions.filters.http.dynamo.v3"; 13 | option (udpa.annotations.file_status).package_version_status = FROZEN; 14 | 15 | // [#protodoc-title: Dynamo] 16 | // Dynamo :ref:`configuration overview `. 17 | // [#extension: envoy.filters.http.dynamo] 18 | 19 | // Dynamo filter config. 20 | message Dynamo { 21 | } 22 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/filter/http/grpc_http1_bridge/v2/config.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.filter.http.grpc_http1_bridge.v2; 4 | 5 | import "udpa/annotations/migrate.proto"; 6 | import "udpa/annotations/status.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.config.filter.http.grpc_http1_bridge.v2"; 9 | option java_outer_classname = "ConfigProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/filter/http/grpc_http1_bridge/v2;grpc_http1_bridgev2"; 12 | option (udpa.annotations.file_migrate).move_to_package = 13 | "envoy.extensions.filters.http.grpc_http1_bridge.v3"; 14 | option (udpa.annotations.file_status).package_version_status = FROZEN; 15 | 16 | // [#protodoc-title: gRPC HTTP/1.1 Bridge] 17 | // gRPC HTTP/1.1 Bridge Filter :ref:`configuration overview `. 18 | // [#extension: envoy.filters.http.grpc_http1_bridge] 19 | 20 | // gRPC HTTP/1.1 Bridge filter config. 21 | message Config { 22 | } 23 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/filter/http/grpc_web/v2/grpc_web.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.filter.http.grpc_web.v2; 4 | 5 | import "udpa/annotations/migrate.proto"; 6 | import "udpa/annotations/status.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.config.filter.http.grpc_web.v2"; 9 | option java_outer_classname = "GrpcWebProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/filter/http/grpc_web/v2;grpc_webv2"; 12 | option (udpa.annotations.file_migrate).move_to_package = 13 | "envoy.extensions.filters.http.grpc_web.v3"; 14 | option (udpa.annotations.file_status).package_version_status = FROZEN; 15 | 16 | // [#protodoc-title: gRPC Web] 17 | // gRPC Web :ref:`configuration overview `. 18 | // [#extension: envoy.filters.http.grpc_web] 19 | 20 | // gRPC Web filter config. 21 | message GrpcWeb { 22 | } 23 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/filter/http/on_demand/v2/on_demand.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.filter.http.on_demand.v2; 4 | 5 | import "udpa/annotations/migrate.proto"; 6 | import "udpa/annotations/status.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.config.filter.http.on_demand.v2"; 9 | option java_outer_classname = "OnDemandProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/filter/http/on_demand/v2;on_demandv2"; 12 | option (udpa.annotations.file_migrate).move_to_package = 13 | "envoy.extensions.filters.http.on_demand.v3"; 14 | option (udpa.annotations.file_status).package_version_status = FROZEN; 15 | 16 | // [#protodoc-title: OnDemand] 17 | // IP tagging :ref:`configuration overview `. 18 | // [#extension: envoy.filters.http.on_demand] 19 | 20 | message OnDemand { 21 | } 22 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/filter/http/tap/v2alpha/tap.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.filter.http.tap.v2alpha; 4 | 5 | import "envoy/config/common/tap/v2alpha/common.proto"; 6 | 7 | import "udpa/annotations/migrate.proto"; 8 | import "udpa/annotations/status.proto"; 9 | import "validate/validate.proto"; 10 | 11 | option java_package = "io.envoyproxy.envoy.config.filter.http.tap.v2alpha"; 12 | option java_outer_classname = "TapProto"; 13 | option java_multiple_files = true; 14 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/filter/http/tap/v2alpha"; 15 | option (udpa.annotations.file_migrate).move_to_package = "envoy.extensions.filters.http.tap.v3"; 16 | option (udpa.annotations.file_status).package_version_status = FROZEN; 17 | 18 | // [#protodoc-title: Tap] 19 | // Tap :ref:`configuration overview `. 20 | // [#extension: envoy.filters.http.tap] 21 | 22 | // Top level configuration for the tap filter. 23 | message Tap { 24 | // Common configuration for the HTTP tap filter. 25 | common.tap.v2alpha.CommonExtensionConfig common_config = 1 26 | [(validate.rules).message = {required: true}]; 27 | } 28 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/filter/listener/http_inspector/v2/http_inspector.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.filter.listener.http_inspector.v2; 4 | 5 | import "udpa/annotations/migrate.proto"; 6 | import "udpa/annotations/status.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.config.filter.listener.http_inspector.v2"; 9 | option java_outer_classname = "HttpInspectorProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/filter/listener/http_inspector/v2;http_inspectorv2"; 12 | option (udpa.annotations.file_migrate).move_to_package = 13 | "envoy.extensions.filters.listener.http_inspector.v3"; 14 | option (udpa.annotations.file_status).package_version_status = FROZEN; 15 | 16 | // [#protodoc-title: HTTP Inspector Filter] 17 | // Detect whether the application protocol is HTTP. 18 | // [#extension: envoy.filters.listener.http_inspector] 19 | 20 | message HttpInspector { 21 | } 22 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/filter/listener/original_dst/v2/original_dst.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.filter.listener.original_dst.v2; 4 | 5 | import "udpa/annotations/migrate.proto"; 6 | import "udpa/annotations/status.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.config.filter.listener.original_dst.v2"; 9 | option java_outer_classname = "OriginalDstProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/filter/listener/original_dst/v2;original_dstv2"; 12 | option (udpa.annotations.file_migrate).move_to_package = 13 | "envoy.extensions.filters.listener.original_dst.v3"; 14 | option (udpa.annotations.file_status).package_version_status = FROZEN; 15 | 16 | // [#protodoc-title: Original Dst Filter] 17 | // Use the Original destination address on downstream connections. 18 | // [#extension: envoy.filters.listener.original_dst] 19 | 20 | message OriginalDst { 21 | } 22 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/filter/listener/proxy_protocol/v2/proxy_protocol.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.filter.listener.proxy_protocol.v2; 4 | 5 | import "udpa/annotations/migrate.proto"; 6 | import "udpa/annotations/status.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.config.filter.listener.proxy_protocol.v2"; 9 | option java_outer_classname = "ProxyProtocolProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/filter/listener/proxy_protocol/v2;proxy_protocolv2"; 12 | option (udpa.annotations.file_migrate).move_to_package = 13 | "envoy.extensions.filters.listener.proxy_protocol.v3"; 14 | option (udpa.annotations.file_status).package_version_status = FROZEN; 15 | 16 | // [#protodoc-title: Proxy Protocol Filter] 17 | // PROXY protocol listener filter. 18 | // [#extension: envoy.filters.listener.proxy_protocol] 19 | 20 | message ProxyProtocol { 21 | } 22 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/filter/listener/tls_inspector/v2/tls_inspector.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.filter.listener.tls_inspector.v2; 4 | 5 | import "udpa/annotations/migrate.proto"; 6 | import "udpa/annotations/status.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.config.filter.listener.tls_inspector.v2"; 9 | option java_outer_classname = "TlsInspectorProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/filter/listener/tls_inspector/v2;tls_inspectorv2"; 12 | option (udpa.annotations.file_migrate).move_to_package = 13 | "envoy.extensions.filters.listener.tls_inspector.v3"; 14 | option (udpa.annotations.file_status).package_version_status = FROZEN; 15 | 16 | // [#protodoc-title: TLS Inspector Filter] 17 | // Allows detecting whether the transport appears to be TLS or plaintext. 18 | // [#extension: envoy.filters.listener.tls_inspector] 19 | 20 | message TlsInspector { 21 | } 22 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/filter/network/direct_response/v2/config.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.filter.network.direct_response.v2; 4 | 5 | import "envoy/api/v2/core/base.proto"; 6 | 7 | import "udpa/annotations/migrate.proto"; 8 | import "udpa/annotations/status.proto"; 9 | 10 | option java_package = "io.envoyproxy.envoy.config.filter.network.direct_response.v2"; 11 | option java_outer_classname = "ConfigProto"; 12 | option java_multiple_files = true; 13 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/filter/network/direct_response/v2;direct_responsev2"; 14 | option (udpa.annotations.file_migrate).move_to_package = 15 | "envoy.extensions.filters.network.direct_response.v3"; 16 | option (udpa.annotations.file_status).package_version_status = FROZEN; 17 | 18 | // [#protodoc-title: Direct response] 19 | // Direct response :ref:`configuration overview `. 20 | // [#extension: envoy.filters.network.direct_response] 21 | 22 | message Config { 23 | // Response data as a data source. 24 | api.v2.core.DataSource response = 1; 25 | } 26 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/filter/network/echo/v2/echo.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.filter.network.echo.v2; 4 | 5 | import "udpa/annotations/migrate.proto"; 6 | import "udpa/annotations/status.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.config.filter.network.echo.v2"; 9 | option java_outer_classname = "EchoProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/filter/network/echo/v2;echov2"; 12 | option (udpa.annotations.file_migrate).move_to_package = "envoy.extensions.filters.network.echo.v3"; 13 | option (udpa.annotations.file_status).package_version_status = FROZEN; 14 | 15 | // [#protodoc-title: Echo] 16 | // Echo :ref:`configuration overview `. 17 | // [#extension: envoy.filters.network.echo] 18 | 19 | message Echo { 20 | } 21 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/filter/network/kafka_broker/v2alpha1/kafka_broker.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.filter.network.kafka_broker.v2alpha1; 4 | 5 | import "udpa/annotations/migrate.proto"; 6 | import "udpa/annotations/status.proto"; 7 | import "validate/validate.proto"; 8 | 9 | option java_package = "io.envoyproxy.envoy.config.filter.network.kafka_broker.v2alpha1"; 10 | option java_outer_classname = "KafkaBrokerProto"; 11 | option java_multiple_files = true; 12 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/filter/network/kafka_broker/v2alpha1"; 13 | option (udpa.annotations.file_migrate).move_to_package = 14 | "envoy.extensions.filters.network.kafka_broker.v3"; 15 | option (udpa.annotations.file_status).package_version_status = FROZEN; 16 | 17 | // [#protodoc-title: Kafka Broker] 18 | // Kafka Broker :ref:`configuration overview `. 19 | // [#extension: envoy.filters.network.kafka_broker] 20 | 21 | message KafkaBroker { 22 | // The prefix to use when emitting :ref:`statistics `. 23 | string stat_prefix = 1 [(validate.rules).string = {min_bytes: 1}]; 24 | } 25 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/filter/network/sni_cluster/v2/sni_cluster.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.filter.network.sni_cluster.v2; 4 | 5 | import "udpa/annotations/migrate.proto"; 6 | import "udpa/annotations/status.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.config.filter.network.sni_cluster.v2"; 9 | option java_outer_classname = "SniClusterProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/filter/network/sni_cluster/v2;sni_clusterv2"; 12 | option (udpa.annotations.file_migrate).move_to_package = 13 | "envoy.extensions.filters.network.sni_cluster.v3"; 14 | option (udpa.annotations.file_status).package_version_status = FROZEN; 15 | 16 | // [#protodoc-title: SNI Cluster Filter] 17 | // Set the upstream cluster name from the SNI field in the TLS connection. 18 | // [#extension: envoy.filters.network.sni_cluster] 19 | 20 | message SniCluster { 21 | } 22 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/filter/thrift/router/v2alpha1/router.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.filter.thrift.router.v2alpha1; 4 | 5 | import "udpa/annotations/status.proto"; 6 | 7 | option java_package = "io.envoyproxy.envoy.config.filter.thrift.router.v2alpha1"; 8 | option java_outer_classname = "RouterProto"; 9 | option java_multiple_files = true; 10 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/filter/thrift/router/v2alpha1"; 11 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 12 | 13 | // [#protodoc-title: Router] 14 | // Thrift router :ref:`configuration overview `. 15 | // [#extension: envoy.filters.thrift.router] 16 | 17 | message Router { 18 | } 19 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/health_checker/redis/v2/redis.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.health_checker.redis.v2; 4 | 5 | import "udpa/annotations/status.proto"; 6 | 7 | option java_package = "io.envoyproxy.envoy.config.health_checker.redis.v2"; 8 | option java_outer_classname = "RedisProto"; 9 | option java_multiple_files = true; 10 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/health_checker/redis/v2;redisv2"; 11 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 12 | 13 | // [#protodoc-title: Redis] 14 | // Redis health checker :ref:`configuration overview `. 15 | // [#extension: envoy.health_checkers.redis] 16 | 17 | message Redis { 18 | // If set, optionally perform ``EXISTS `` instead of ``PING``. A return value 19 | // from Redis of 0 (does not exist) is considered a passing healthcheck. A return value other 20 | // than 0 is considered a failure. This allows the user to mark a Redis instance for maintenance 21 | // by setting the specified key to any value and waiting for traffic to drain. 22 | string key = 1; 23 | } 24 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/metrics/v2/metrics_service.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.metrics.v2; 4 | 5 | import "envoy/api/v2/core/grpc_service.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | import "validate/validate.proto"; 9 | 10 | option java_package = "io.envoyproxy.envoy.config.metrics.v2"; 11 | option java_outer_classname = "MetricsServiceProto"; 12 | option java_multiple_files = true; 13 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/metrics/v2;metricsv2"; 14 | option (udpa.annotations.file_status).package_version_status = FROZEN; 15 | 16 | // [#protodoc-title: Metrics service] 17 | 18 | // Metrics Service is configured as a built-in *envoy.stat_sinks.metrics_service* :ref:`StatsSink 19 | // `. This opaque configuration will be used to create 20 | // Metrics Service. 21 | // [#extension: envoy.stat_sinks.metrics_service] 22 | message MetricsServiceConfig { 23 | // The upstream gRPC cluster that hosts the metrics service. 24 | api.v2.core.GrpcService grpc_service = 1 [(validate.rules).message = {required: true}]; 25 | } 26 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/ratelimit/v2/rls.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.ratelimit.v2; 4 | 5 | import "envoy/api/v2/core/grpc_service.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | import "validate/validate.proto"; 9 | 10 | option java_package = "io.envoyproxy.envoy.config.ratelimit.v2"; 11 | option java_outer_classname = "RlsProto"; 12 | option java_multiple_files = true; 13 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/ratelimit/v2;ratelimitv2"; 14 | option (udpa.annotations.file_status).package_version_status = FROZEN; 15 | 16 | // [#protodoc-title: Rate limit service] 17 | 18 | // Rate limit :ref:`configuration overview `. 19 | message RateLimitServiceConfig { 20 | reserved 1, 3; 21 | 22 | // Specifies the gRPC service that hosts the rate limit service. The client 23 | // will connect to this cluster when it needs to make rate limit service 24 | // requests. 25 | api.v2.core.GrpcService grpc_service = 2 [(validate.rules).message = {required: true}]; 26 | } 27 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/resource_monitor/fixed_heap/v2alpha/fixed_heap.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.resource_monitor.fixed_heap.v2alpha; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "validate/validate.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.config.resource_monitor.fixed_heap.v2alpha"; 9 | option java_outer_classname = "FixedHeapProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/resource_monitor/fixed_heap/v2alpha"; 12 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 13 | 14 | // [#protodoc-title: Fixed heap] 15 | // [#extension: envoy.resource_monitors.fixed_heap] 16 | 17 | // The fixed heap resource monitor reports the Envoy process memory pressure, computed as a 18 | // fraction of currently reserved heap memory divided by a statically configured maximum 19 | // specified in the FixedHeapConfig. 20 | message FixedHeapConfig { 21 | uint64 max_heap_size_bytes = 1 [(validate.rules).uint64 = {gt: 0}]; 22 | } 23 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/resource_monitor/injected_resource/v2alpha/injected_resource.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.resource_monitor.injected_resource.v2alpha; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "validate/validate.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.config.resource_monitor.injected_resource.v2alpha"; 9 | option java_outer_classname = "InjectedResourceProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/resource_monitor/injected_resource/v2alpha"; 12 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 13 | 14 | // [#protodoc-title: Injected resource] 15 | // [#extension: envoy.resource_monitors.injected_resource] 16 | 17 | // The injected resource monitor allows injecting a synthetic resource pressure into Envoy 18 | // via a text file, which must contain a floating-point number in the range [0..1] representing 19 | // the resource pressure and be updated atomically by a symbolic link swap. 20 | // This is intended primarily for integration tests to force Envoy into an overloaded state. 21 | message InjectedResourceConfig { 22 | string filename = 1 [(validate.rules).string = {min_bytes: 1}]; 23 | } 24 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/retry/omit_canary_hosts/v2/omit_canary_hosts.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.retry.omit_canary_hosts.v2; 4 | 5 | import "udpa/annotations/migrate.proto"; 6 | import "udpa/annotations/status.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.config.retry.omit_canary_hosts.v2"; 9 | option java_outer_classname = "OmitCanaryHostsProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/retry/omit_canary_hosts/v2;omit_canary_hostsv2"; 12 | option (udpa.annotations.file_migrate).move_to_package = 13 | "envoy.extensions.retry.host.omit_canary_hosts.v3"; 14 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 15 | 16 | // [#protodoc-title: Omit Canary Hosts Predicate] 17 | // [#extension: envoy.retry_host_predicates.omit_canary_hosts] 18 | 19 | message OmitCanaryHostsPredicate { 20 | } 21 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/retry/previous_hosts/v2/previous_hosts.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.retry.previous_hosts.v2; 4 | 5 | import "udpa/annotations/migrate.proto"; 6 | import "udpa/annotations/status.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.config.retry.previous_hosts.v2"; 9 | option java_outer_classname = "PreviousHostsProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/retry/previous_hosts/v2;previous_hostsv2"; 12 | option (udpa.annotations.file_migrate).move_to_package = 13 | "envoy.extensions.retry.host.previous_hosts.v3"; 14 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 15 | 16 | // [#protodoc-title: Previous Hosts Predicate] 17 | // [#extension: envoy.retry_host_predicates.previous_hosts] 18 | 19 | message PreviousHostsPredicate { 20 | } 21 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/trace/v2/datadog.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.trace.v2; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "validate/validate.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.config.trace.v2"; 9 | option java_outer_classname = "DatadogProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/trace/v2;tracev2"; 12 | option (udpa.annotations.file_status).package_version_status = FROZEN; 13 | 14 | // [#protodoc-title: Datadog tracer] 15 | 16 | // Configuration for the Datadog tracer. 17 | // [#extension: envoy.tracers.datadog] 18 | message DatadogConfig { 19 | // The cluster to use for submitting traces to the Datadog agent. 20 | string collector_cluster = 1 [(validate.rules).string = {min_bytes: 1}]; 21 | 22 | // The name used for the service when traces are generated by envoy. 23 | string service_name = 2 [(validate.rules).string = {min_bytes: 1}]; 24 | } 25 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/trace/v2/dynamic_ot.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.trace.v2; 4 | 5 | import "google/protobuf/struct.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | import "validate/validate.proto"; 9 | 10 | option java_package = "io.envoyproxy.envoy.config.trace.v2"; 11 | option java_outer_classname = "DynamicOtProto"; 12 | option java_multiple_files = true; 13 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/trace/v2;tracev2"; 14 | option (udpa.annotations.file_status).package_version_status = FROZEN; 15 | 16 | // [#protodoc-title: Dynamically loadable OpenTracing tracer] 17 | 18 | // DynamicOtConfig is used to dynamically load a tracer from a shared library 19 | // that implements the `OpenTracing dynamic loading API 20 | // `_. 21 | // [#extension: envoy.tracers.dynamic_ot] 22 | message DynamicOtConfig { 23 | // Dynamic library implementing the `OpenTracing API 24 | // `_. 25 | string library = 1 [(validate.rules).string = {min_bytes: 1}]; 26 | 27 | // The configuration to use when creating a tracer from the given dynamic 28 | // library. 29 | google.protobuf.Struct config = 2; 30 | } 31 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/trace/v2/service.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.trace.v2; 4 | 5 | import "envoy/api/v2/core/grpc_service.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | import "validate/validate.proto"; 9 | 10 | option java_package = "io.envoyproxy.envoy.config.trace.v2"; 11 | option java_outer_classname = "ServiceProto"; 12 | option java_multiple_files = true; 13 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/trace/v2;tracev2"; 14 | option (udpa.annotations.file_status).package_version_status = FROZEN; 15 | 16 | // [#protodoc-title: Trace Service] 17 | 18 | // Configuration structure. 19 | message TraceServiceConfig { 20 | // The upstream gRPC cluster that hosts the metrics service. 21 | api.v2.core.GrpcService grpc_service = 1 [(validate.rules).message = {required: true}]; 22 | } 23 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/trace/v2/trace.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.trace.v2; 4 | 5 | import public "envoy/config/trace/v2/datadog.proto"; 6 | import public "envoy/config/trace/v2/dynamic_ot.proto"; 7 | import public "envoy/config/trace/v2/http_tracer.proto"; 8 | import public "envoy/config/trace/v2/lightstep.proto"; 9 | import public "envoy/config/trace/v2/opencensus.proto"; 10 | import public "envoy/config/trace/v2/service.proto"; 11 | import public "envoy/config/trace/v2/zipkin.proto"; 12 | 13 | option java_package = "io.envoyproxy.envoy.config.trace.v2"; 14 | option java_outer_classname = "TraceProto"; 15 | option java_multiple_files = true; 16 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/trace/v2;tracev2"; 17 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/trace/v3/service.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.trace.v3; 4 | 5 | import "envoy/config/core/v3/grpc_service.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | import "udpa/annotations/versioning.proto"; 9 | import "validate/validate.proto"; 10 | 11 | option java_package = "io.envoyproxy.envoy.config.trace.v3"; 12 | option java_outer_classname = "ServiceProto"; 13 | option java_multiple_files = true; 14 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/trace/v3;tracev3"; 15 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 16 | 17 | // [#protodoc-title: Trace Service] 18 | 19 | // Configuration structure. 20 | message TraceServiceConfig { 21 | option (udpa.annotations.versioning).previous_message_type = 22 | "envoy.config.trace.v2.TraceServiceConfig"; 23 | 24 | // The upstream gRPC cluster that hosts the metrics service. 25 | core.v3.GrpcService grpc_service = 1 [(validate.rules).message = {required: true}]; 26 | } 27 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/trace/v3/trace.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.trace.v3; 4 | 5 | import public "envoy/config/trace/v3/datadog.proto"; 6 | import public "envoy/config/trace/v3/dynamic_ot.proto"; 7 | import public "envoy/config/trace/v3/http_tracer.proto"; 8 | import public "envoy/config/trace/v3/lightstep.proto"; 9 | import public "envoy/config/trace/v3/opencensus.proto"; 10 | import public "envoy/config/trace/v3/service.proto"; 11 | import public "envoy/config/trace/v3/zipkin.proto"; 12 | 13 | option java_package = "io.envoyproxy.envoy.config.trace.v3"; 14 | option java_outer_classname = "TraceProto"; 15 | option java_multiple_files = true; 16 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/trace/v3;tracev3"; 17 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/trace/v4alpha/service.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.trace.v4alpha; 4 | 5 | import "envoy/config/core/v4alpha/grpc_service.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | import "udpa/annotations/versioning.proto"; 9 | import "validate/validate.proto"; 10 | 11 | option java_package = "io.envoyproxy.envoy.config.trace.v4alpha"; 12 | option java_outer_classname = "ServiceProto"; 13 | option java_multiple_files = true; 14 | option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; 15 | 16 | // [#protodoc-title: Trace Service] 17 | 18 | // Configuration structure. 19 | message TraceServiceConfig { 20 | option (udpa.annotations.versioning).previous_message_type = 21 | "envoy.config.trace.v3.TraceServiceConfig"; 22 | 23 | // The upstream gRPC cluster that hosts the metrics service. 24 | core.v4alpha.GrpcService grpc_service = 1 [(validate.rules).message = {required: true}]; 25 | } 26 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/config/transport_socket/raw_buffer/v2/raw_buffer.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.config.transport_socket.raw_buffer.v2; 4 | 5 | import "udpa/annotations/migrate.proto"; 6 | import "udpa/annotations/status.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.config.transport_socket.raw_buffer.v2"; 9 | option java_outer_classname = "RawBufferProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/transport_socket/raw_buffer/v2;raw_bufferv2"; 12 | option (udpa.annotations.file_migrate).move_to_package = 13 | "envoy.extensions.transport_sockets.raw_buffer.v3"; 14 | option (udpa.annotations.file_status).package_version_status = FROZEN; 15 | 16 | // [#protodoc-title: Raw Buffer] 17 | // [#extension: envoy.transport_sockets.raw_buffer] 18 | 19 | // Configuration for raw buffer transport socket. 20 | message RawBuffer { 21 | } 22 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/access_loggers/wasm/v3/wasm.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.access_loggers.wasm.v3; 4 | 5 | import "envoy/extensions/wasm/v3/wasm.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | 9 | option java_package = "io.envoyproxy.envoy.extensions.access_loggers.wasm.v3"; 10 | option java_outer_classname = "WasmProto"; 11 | option java_multiple_files = true; 12 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/access_loggers/wasm/v3;wasmv3"; 13 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 14 | 15 | // [#protodoc-title: Wasm access log] 16 | // [#extension: envoy.access_loggers.wasm] 17 | 18 | // Custom configuration for an :ref:`AccessLog ` 19 | // that calls into a WASM VM. Configures the built-in *envoy.access_loggers.wasm* 20 | // AccessLog. 21 | message WasmAccessLog { 22 | envoy.extensions.wasm.v3.PluginConfig config = 1; 23 | } 24 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/cache/simple_http_cache/v3/config.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.cache.simple_http_cache.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | 7 | option java_package = "io.envoyproxy.envoy.extensions.cache.simple_http_cache.v3"; 8 | option java_outer_classname = "ConfigProto"; 9 | option java_multiple_files = true; 10 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/cache/simple_http_cache/v3;simple_http_cachev3"; 11 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 12 | 13 | // [#protodoc-title: SimpleHttpCache CacheFilter storage plugin] 14 | 15 | // [#extension: envoy.cache.simple_http_cache] 16 | message SimpleHttpCacheConfig { 17 | } 18 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/clusters/aggregate/v3/cluster.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.clusters.aggregate.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "udpa/annotations/versioning.proto"; 7 | import "validate/validate.proto"; 8 | 9 | option java_package = "io.envoyproxy.envoy.extensions.clusters.aggregate.v3"; 10 | option java_outer_classname = "ClusterProto"; 11 | option java_multiple_files = true; 12 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/clusters/aggregate/v3;aggregatev3"; 13 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 14 | 15 | // [#protodoc-title: Aggregate cluster configuration] 16 | 17 | // Configuration for the aggregate cluster. See the :ref:`architecture overview 18 | // ` for more information. 19 | // [#extension: envoy.clusters.aggregate] 20 | message ClusterConfig { 21 | option (udpa.annotations.versioning).previous_message_type = 22 | "envoy.config.cluster.aggregate.v2alpha.ClusterConfig"; 23 | 24 | // Load balancing clusters in aggregate cluster. Clusters are prioritized based on the order they 25 | // appear in this list. 26 | repeated string clusters = 1 [(validate.rules).repeated = {min_items: 1}]; 27 | } 28 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/compression/brotli/decompressor/v3/brotli.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.compression.brotli.decompressor.v3; 4 | 5 | import "google/protobuf/wrappers.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | import "validate/validate.proto"; 9 | 10 | option java_package = "io.envoyproxy.envoy.extensions.compression.brotli.decompressor.v3"; 11 | option java_outer_classname = "BrotliProto"; 12 | option java_multiple_files = true; 13 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/compression/brotli/decompressor/v3;decompressorv3"; 14 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 15 | 16 | // [#protodoc-title: Brotli Decompressor] 17 | // [#extension: envoy.compression.brotli.decompressor] 18 | 19 | message Brotli { 20 | // If true, disables "canny" ring buffer allocation strategy. 21 | // Ring buffer is allocated according to window size, despite the real size of the content. 22 | bool disable_ring_buffer_reallocation = 1; 23 | 24 | // Value for decompressor's next output buffer. If not set, defaults to 4096. 25 | google.protobuf.UInt32Value chunk_size = 2 [(validate.rules).uint32 = {lte: 65536 gte: 4096}]; 26 | } 27 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/filters/http/cors/v3/cors.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.filters.http.cors.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "udpa/annotations/versioning.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.extensions.filters.http.cors.v3"; 9 | option java_outer_classname = "CorsProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/cors/v3;corsv3"; 12 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 13 | 14 | // [#protodoc-title: Cors] 15 | // CORS Filter :ref:`configuration overview `. 16 | // [#extension: envoy.filters.http.cors] 17 | 18 | // Cors filter config. 19 | message Cors { 20 | option (udpa.annotations.versioning).previous_message_type = 21 | "envoy.config.filter.http.cors.v2.Cors"; 22 | } 23 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/filters/http/dynamo/v3/dynamo.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.filters.http.dynamo.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "udpa/annotations/versioning.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.extensions.filters.http.dynamo.v3"; 9 | option java_outer_classname = "DynamoProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/dynamo/v3;dynamov3"; 12 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 13 | 14 | // [#protodoc-title: Dynamo] 15 | // Dynamo :ref:`configuration overview `. 16 | // [#extension: envoy.filters.http.dynamo] 17 | 18 | // Dynamo filter config. 19 | message Dynamo { 20 | option (udpa.annotations.versioning).previous_message_type = 21 | "envoy.config.filter.http.dynamo.v2.Dynamo"; 22 | } 23 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/filters/http/grpc_web/v3/grpc_web.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.filters.http.grpc_web.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "udpa/annotations/versioning.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.extensions.filters.http.grpc_web.v3"; 9 | option java_outer_classname = "GrpcWebProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/grpc_web/v3;grpc_webv3"; 12 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 13 | 14 | // [#protodoc-title: gRPC Web] 15 | // gRPC Web :ref:`configuration overview `. 16 | // [#extension: envoy.filters.http.grpc_web] 17 | 18 | // gRPC Web filter config. 19 | message GrpcWeb { 20 | option (udpa.annotations.versioning).previous_message_type = 21 | "envoy.config.filter.http.grpc_web.v2.GrpcWeb"; 22 | } 23 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/filters/http/on_demand/v3/on_demand.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.filters.http.on_demand.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "udpa/annotations/versioning.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.extensions.filters.http.on_demand.v3"; 9 | option java_outer_classname = "OnDemandProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/on_demand/v3;on_demandv3"; 12 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 13 | 14 | // [#protodoc-title: OnDemand] 15 | // IP tagging :ref:`configuration overview `. 16 | // [#extension: envoy.filters.http.on_demand] 17 | 18 | message OnDemand { 19 | option (udpa.annotations.versioning).previous_message_type = 20 | "envoy.config.filter.http.on_demand.v2.OnDemand"; 21 | } 22 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/filters/http/set_metadata/v3/set_metadata.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.filters.http.set_metadata.v3; 4 | 5 | import "google/protobuf/struct.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | import "validate/validate.proto"; 9 | 10 | option java_package = "io.envoyproxy.envoy.extensions.filters.http.set_metadata.v3"; 11 | option java_outer_classname = "SetMetadataProto"; 12 | option java_multiple_files = true; 13 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/set_metadata/v3;set_metadatav3"; 14 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 15 | 16 | // [#protodoc-title: Set-Metadata Filter] 17 | // 18 | // This filters adds or updates dynamic metadata with static data. 19 | // 20 | // [#extension: envoy.filters.http.set_metadata] 21 | 22 | message Config { 23 | // The metadata namespace. 24 | string metadata_namespace = 1 [(validate.rules).string = {min_len: 1}]; 25 | 26 | // The value to update the namespace with. See 27 | // :ref:`the filter documentation ` for 28 | // more information on how this value is merged with potentially existing 29 | // ones. 30 | google.protobuf.Struct value = 2; 31 | } 32 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/filters/http/tap/v3/tap.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.filters.http.tap.v3; 4 | 5 | import "envoy/extensions/common/tap/v3/common.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | import "udpa/annotations/versioning.proto"; 9 | import "validate/validate.proto"; 10 | 11 | option java_package = "io.envoyproxy.envoy.extensions.filters.http.tap.v3"; 12 | option java_outer_classname = "TapProto"; 13 | option java_multiple_files = true; 14 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/tap/v3;tapv3"; 15 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 16 | 17 | // [#protodoc-title: Tap] 18 | // Tap :ref:`configuration overview `. 19 | // [#extension: envoy.filters.http.tap] 20 | 21 | // Top level configuration for the tap filter. 22 | message Tap { 23 | option (udpa.annotations.versioning).previous_message_type = 24 | "envoy.config.filter.http.tap.v2alpha.Tap"; 25 | 26 | // Common configuration for the HTTP tap filter. 27 | common.tap.v3.CommonExtensionConfig common_config = 1 28 | [(validate.rules).message = {required: true}]; 29 | } 30 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/filters/http/tap/v4alpha/tap.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.filters.http.tap.v4alpha; 4 | 5 | import "envoy/extensions/common/tap/v4alpha/common.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | import "udpa/annotations/versioning.proto"; 9 | import "validate/validate.proto"; 10 | 11 | option java_package = "io.envoyproxy.envoy.extensions.filters.http.tap.v4alpha"; 12 | option java_outer_classname = "TapProto"; 13 | option java_multiple_files = true; 14 | option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; 15 | 16 | // [#protodoc-title: Tap] 17 | // Tap :ref:`configuration overview `. 18 | // [#extension: envoy.filters.http.tap] 19 | 20 | // Top level configuration for the tap filter. 21 | message Tap { 22 | option (udpa.annotations.versioning).previous_message_type = 23 | "envoy.extensions.filters.http.tap.v3.Tap"; 24 | 25 | // Common configuration for the HTTP tap filter. 26 | common.tap.v4alpha.CommonExtensionConfig common_config = 1 27 | [(validate.rules).message = {required: true}]; 28 | } 29 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/filters/http/wasm/v3/wasm.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.filters.http.wasm.v3; 4 | 5 | import "envoy/extensions/wasm/v3/wasm.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | 9 | option java_package = "io.envoyproxy.envoy.extensions.filters.http.wasm.v3"; 10 | option java_outer_classname = "WasmProto"; 11 | option java_multiple_files = true; 12 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/wasm/v3;wasmv3"; 13 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 14 | 15 | // [#protodoc-title: Wasm] 16 | // [#extension: envoy.filters.http.wasm] 17 | // Wasm :ref:`configuration overview `. 18 | 19 | message Wasm { 20 | // General Plugin configuration. 21 | envoy.extensions.wasm.v3.PluginConfig config = 1; 22 | } 23 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/filters/listener/http_inspector/v3/http_inspector.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.filters.listener.http_inspector.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "udpa/annotations/versioning.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.extensions.filters.listener.http_inspector.v3"; 9 | option java_outer_classname = "HttpInspectorProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/listener/http_inspector/v3;http_inspectorv3"; 12 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 13 | 14 | // [#protodoc-title: HTTP Inspector Filter] 15 | // Detect whether the application protocol is HTTP. 16 | // [#extension: envoy.filters.listener.http_inspector] 17 | 18 | message HttpInspector { 19 | option (udpa.annotations.versioning).previous_message_type = 20 | "envoy.config.filter.listener.http_inspector.v2.HttpInspector"; 21 | } 22 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/filters/listener/original_dst/v3/original_dst.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.filters.listener.original_dst.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "udpa/annotations/versioning.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.extensions.filters.listener.original_dst.v3"; 9 | option java_outer_classname = "OriginalDstProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/listener/original_dst/v3;original_dstv3"; 12 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 13 | 14 | // [#protodoc-title: Original Dst Filter] 15 | // Use the Original destination address on downstream connections. 16 | // [#extension: envoy.filters.listener.original_dst] 17 | 18 | message OriginalDst { 19 | option (udpa.annotations.versioning).previous_message_type = 20 | "envoy.config.filter.listener.original_dst.v2.OriginalDst"; 21 | } 22 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/filters/listener/tls_inspector/v3/tls_inspector.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.filters.listener.tls_inspector.v3; 4 | 5 | import "google/protobuf/wrappers.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | import "udpa/annotations/versioning.proto"; 9 | 10 | option java_package = "io.envoyproxy.envoy.extensions.filters.listener.tls_inspector.v3"; 11 | option java_outer_classname = "TlsInspectorProto"; 12 | option java_multiple_files = true; 13 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/listener/tls_inspector/v3;tls_inspectorv3"; 14 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 15 | 16 | // [#protodoc-title: TLS Inspector Filter] 17 | // Allows detecting whether the transport appears to be TLS or plaintext. 18 | // [#extension: envoy.filters.listener.tls_inspector] 19 | 20 | message TlsInspector { 21 | option (udpa.annotations.versioning).previous_message_type = 22 | "envoy.config.filter.listener.tls_inspector.v2.TlsInspector"; 23 | 24 | // Populate `JA3` fingerprint hash using data from the TLS Client Hello packet. Default is false. 25 | google.protobuf.BoolValue enable_ja3_fingerprinting = 1; 26 | } 27 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/filters/network/direct_response/v3/config.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.filters.network.direct_response.v3; 4 | 5 | import "envoy/config/core/v3/base.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | import "udpa/annotations/versioning.proto"; 9 | 10 | option java_package = "io.envoyproxy.envoy.extensions.filters.network.direct_response.v3"; 11 | option java_outer_classname = "ConfigProto"; 12 | option java_multiple_files = true; 13 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/direct_response/v3;direct_responsev3"; 14 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 15 | 16 | // [#protodoc-title: Direct response] 17 | // Direct response :ref:`configuration overview `. 18 | // [#extension: envoy.filters.network.direct_response] 19 | 20 | message Config { 21 | option (udpa.annotations.versioning).previous_message_type = 22 | "envoy.config.filter.network.direct_response.v2.Config"; 23 | 24 | // Response data as a data source. 25 | config.core.v3.DataSource response = 1; 26 | } 27 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/filters/network/dubbo_proxy/router/v3/router.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.filters.network.dubbo_proxy.router.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "udpa/annotations/versioning.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.extensions.filters.network.dubbo_proxy.router.v3"; 9 | option java_outer_classname = "RouterProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/dubbo_proxy/router/v3;routerv3"; 12 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 13 | 14 | // [#protodoc-title: Router] 15 | // Dubbo router :ref:`configuration overview `. 16 | 17 | message Router { 18 | option (udpa.annotations.versioning).previous_message_type = 19 | "envoy.config.filter.dubbo.router.v2alpha1.Router"; 20 | } 21 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/filters/network/echo/v3/echo.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.filters.network.echo.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "udpa/annotations/versioning.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.extensions.filters.network.echo.v3"; 9 | option java_outer_classname = "EchoProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/echo/v3;echov3"; 12 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 13 | 14 | // [#protodoc-title: Echo] 15 | // Echo :ref:`configuration overview `. 16 | // [#extension: envoy.filters.network.echo] 17 | 18 | message Echo { 19 | option (udpa.annotations.versioning).previous_message_type = 20 | "envoy.config.filter.network.echo.v2.Echo"; 21 | } 22 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/filters/network/kafka_broker/v3/kafka_broker.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.filters.network.kafka_broker.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "udpa/annotations/versioning.proto"; 7 | import "validate/validate.proto"; 8 | 9 | option java_package = "io.envoyproxy.envoy.extensions.filters.network.kafka_broker.v3"; 10 | option java_outer_classname = "KafkaBrokerProto"; 11 | option java_multiple_files = true; 12 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 13 | 14 | // [#protodoc-title: Kafka Broker] 15 | // Kafka Broker :ref:`configuration overview `. 16 | // [#extension: envoy.filters.network.kafka_broker] 17 | 18 | message KafkaBroker { 19 | option (udpa.annotations.versioning).previous_message_type = 20 | "envoy.config.filter.network.kafka_broker.v2alpha1.KafkaBroker"; 21 | 22 | // The prefix to use when emitting :ref:`statistics `. 23 | string stat_prefix = 1 [(validate.rules).string = {min_bytes: 1}]; 24 | } 25 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/filters/network/postgres_proxy/v3alpha/postgres_proxy.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.filters.network.postgres_proxy.v3alpha; 4 | 5 | import "udpa/annotations/migrate.proto"; 6 | import "udpa/annotations/status.proto"; 7 | import "udpa/annotations/versioning.proto"; 8 | import "validate/validate.proto"; 9 | 10 | option java_package = "io.envoyproxy.envoy.extensions.filters.network.postgres_proxy.v3alpha"; 11 | option java_outer_classname = "PostgresProxyProto"; 12 | option java_multiple_files = true; 13 | option (udpa.annotations.file_status).work_in_progress = true; 14 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 15 | 16 | // [#protodoc-title: Postgres proxy] 17 | // Postgres Proxy :ref:`configuration overview 18 | // `. 19 | // [#extension: envoy.filters.network.postgres_proxy] 20 | 21 | message PostgresProxy { 22 | // The human readable prefix to use when emitting :ref:`statistics 23 | // `. 24 | string stat_prefix = 1 [(validate.rules).string = {min_len: 1}]; 25 | } 26 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/filters/network/sni_cluster/v3/sni_cluster.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.filters.network.sni_cluster.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "udpa/annotations/versioning.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.extensions.filters.network.sni_cluster.v3"; 9 | option java_outer_classname = "SniClusterProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/sni_cluster/v3;sni_clusterv3"; 12 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 13 | 14 | // [#protodoc-title: SNI Cluster Filter] 15 | // Set the upstream cluster name from the SNI field in the TLS connection. 16 | // [#extension: envoy.filters.network.sni_cluster] 17 | 18 | message SniCluster { 19 | option (udpa.annotations.versioning).previous_message_type = 20 | "envoy.config.filter.network.sni_cluster.v2.SniCluster"; 21 | } 22 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/filters/network/thrift_proxy/router/v3/router.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.filters.network.thrift_proxy.router.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "udpa/annotations/versioning.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.extensions.filters.network.thrift_proxy.router.v3"; 9 | option java_outer_classname = "RouterProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/thrift_proxy/router/v3;routerv3"; 12 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 13 | 14 | // [#protodoc-title: Router] 15 | // Thrift router :ref:`configuration overview `. 16 | // [#extension: envoy.filters.thrift.router] 17 | 18 | message Router { 19 | option (udpa.annotations.versioning).previous_message_type = 20 | "envoy.config.filter.thrift.router.v2alpha1.Router"; 21 | } 22 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/filters/network/wasm/v3/wasm.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.filters.network.wasm.v3; 4 | 5 | import "envoy/extensions/wasm/v3/wasm.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | 9 | option java_package = "io.envoyproxy.envoy.extensions.filters.network.wasm.v3"; 10 | option java_outer_classname = "WasmProto"; 11 | option java_multiple_files = true; 12 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/wasm/v3;wasmv3"; 13 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 14 | 15 | // [#protodoc-title: Wasm] 16 | // [#extension: envoy.filters.network.wasm] 17 | // Wasm :ref:`configuration overview `. 18 | 19 | message Wasm { 20 | // General Plugin configuration. 21 | envoy.extensions.wasm.v3.PluginConfig config = 1; 22 | } 23 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/http/header_formatters/preserve_case/v3/preserve_case.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.http.header_formatters.preserve_case.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | 7 | option java_package = "io.envoyproxy.envoy.extensions.http.header_formatters.preserve_case.v3"; 8 | option java_outer_classname = "PreserveCaseProto"; 9 | option java_multiple_files = true; 10 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/http/header_formatters/preserve_case/v3;preserve_casev3"; 11 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 12 | 13 | // [#protodoc-title: Preserve case header formatter] 14 | // [#extension: envoy.http.stateful_header_formatters.preserve_case] 15 | 16 | // Configuration for the preserve case header formatter. 17 | // See the :ref:`header casing ` configuration guide for more 18 | // information. 19 | message PreserveCaseFormatterConfig { 20 | // Allows forwarding reason phrase text. 21 | // This is off by default, and a standard reason phrase is used for a corresponding HTTP response code. 22 | bool forward_reason_phrase = 1; 23 | } 24 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/internal_redirect/previous_routes/v3/previous_routes_config.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.internal_redirect.previous_routes.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | 7 | option java_package = "io.envoyproxy.envoy.extensions.internal_redirect.previous_routes.v3"; 8 | option java_outer_classname = "PreviousRoutesConfigProto"; 9 | option java_multiple_files = true; 10 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/internal_redirect/previous_routes/v3;previous_routesv3"; 11 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 12 | 13 | // [#protodoc-title: Previous routes internal redirect predicate] 14 | 15 | // An internal redirect predicate that rejects redirect targets that are pointing 16 | // to a route that has been followed by a previous redirect from the current route. 17 | // [#extension: envoy.internal_redirect_predicates.previous_routes] 18 | message PreviousRoutesConfig { 19 | } 20 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/internal_redirect/safe_cross_scheme/v3/safe_cross_scheme_config.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.internal_redirect.safe_cross_scheme.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | 7 | option java_package = "io.envoyproxy.envoy.extensions.internal_redirect.safe_cross_scheme.v3"; 8 | option java_outer_classname = "SafeCrossSchemeConfigProto"; 9 | option java_multiple_files = true; 10 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/internal_redirect/safe_cross_scheme/v3;safe_cross_schemev3"; 11 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 12 | 13 | // [#protodoc-title: SafeCrossScheme internal redirect predicate] 14 | 15 | // An internal redirect predicate that checks the scheme between the 16 | // downstream url and the redirect target url and allows a) same scheme 17 | // redirect and b) safe cross scheme redirect, which means if the downstream 18 | // scheme is HTTPS, both HTTPS and HTTP redirect targets are allowed, but if the 19 | // downstream scheme is HTTP, only HTTP redirect targets are allowed. 20 | // [#extension: envoy.internal_redirect_predicates.safe_cross_scheme] 21 | message SafeCrossSchemeConfig { 22 | } 23 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/matching/common_inputs/environment_variable/v3/input.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.matching.common_inputs.environment_variable.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "validate/validate.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.extensions.matching.common_inputs.environment_variable.v3"; 9 | option java_outer_classname = "InputProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/matching/common_inputs/environment_variable/v3;environment_variablev3"; 12 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 13 | 14 | // [#protodoc-title: Environment Variable Input] 15 | // [#extension: envoy.matching.common_inputs.environment_variable] 16 | 17 | // Reads an environment variable to provide an input for matching. 18 | message Config { 19 | // Name of the environment variable to read from. 20 | string name = 1 [(validate.rules).string = {min_len: 1}]; 21 | } 22 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/network/dns_resolver/apple/v3/apple_dns_resolver.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.network.dns_resolver.apple.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | 7 | option java_package = "io.envoyproxy.envoy.extensions.network.dns_resolver.apple.v3"; 8 | option java_outer_classname = "AppleDnsResolverProto"; 9 | option java_multiple_files = true; 10 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/network/dns_resolver/apple/v3;applev3"; 11 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 12 | 13 | // [#protodoc-title: apple DNS resolver] 14 | // [#extension: envoy.network.dns_resolver.apple] 15 | 16 | // Configuration for apple DNS resolver. 17 | message AppleDnsResolverConfig { 18 | } 19 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/network/socket_interface/v3/default_socket_interface.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.network.socket_interface.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | 7 | option java_package = "io.envoyproxy.envoy.extensions.network.socket_interface.v3"; 8 | option java_outer_classname = "DefaultSocketInterfaceProto"; 9 | option java_multiple_files = true; 10 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/network/socket_interface/v3;socket_interfacev3"; 11 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 12 | 13 | // [#protodoc-title: Default Socket Interface configuration] 14 | 15 | // Configuration for default socket interface that relies on OS dependent syscall to create 16 | // sockets. 17 | message DefaultSocketInterface { 18 | } 19 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/quic/crypto_stream/v3/crypto_stream.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.quic.crypto_stream.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | 7 | option java_package = "io.envoyproxy.envoy.extensions.quic.crypto_stream.v3"; 8 | option java_outer_classname = "CryptoStreamProto"; 9 | option java_multiple_files = true; 10 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/quic/crypto_stream/v3;crypto_streamv3"; 11 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 12 | 13 | // [#protodoc-title: QUIC server crypto stream config] 14 | // [#extension: envoy.quic.crypto_stream.server.quiche] 15 | 16 | // Configuration for the default QUIC server crypto stream provided by QUICHE. 17 | message CryptoServerStreamConfig { 18 | } 19 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/quic/proof_source/v3/proof_source.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.quic.proof_source.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | 7 | option java_package = "io.envoyproxy.envoy.extensions.quic.proof_source.v3"; 8 | option java_outer_classname = "ProofSourceProto"; 9 | option java_multiple_files = true; 10 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/quic/proof_source/v3;proof_sourcev3"; 11 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 12 | 13 | // [#protodoc-title: QUIC proof source config] 14 | // [#extension: envoy.quic.proof_source.filter_chain] 15 | 16 | // Configuration for the default QUIC proof source. 17 | message ProofSourceConfig { 18 | } 19 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/resource_monitors/fixed_heap/v3/fixed_heap.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.resource_monitors.fixed_heap.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "udpa/annotations/versioning.proto"; 7 | import "validate/validate.proto"; 8 | 9 | option java_package = "io.envoyproxy.envoy.extensions.resource_monitors.fixed_heap.v3"; 10 | option java_outer_classname = "FixedHeapProto"; 11 | option java_multiple_files = true; 12 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/resource_monitors/fixed_heap/v3;fixed_heapv3"; 13 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 14 | 15 | // [#protodoc-title: Fixed heap] 16 | // [#extension: envoy.resource_monitors.fixed_heap] 17 | 18 | // The fixed heap resource monitor reports the Envoy process memory pressure, computed as a 19 | // fraction of currently reserved heap memory divided by a statically configured maximum 20 | // specified in the FixedHeapConfig. 21 | message FixedHeapConfig { 22 | option (udpa.annotations.versioning).previous_message_type = 23 | "envoy.config.resource_monitor.fixed_heap.v2alpha.FixedHeapConfig"; 24 | 25 | uint64 max_heap_size_bytes = 1 [(validate.rules).uint64 = {gt: 0}]; 26 | } 27 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/retry/host/omit_canary_hosts/v3/omit_canary_hosts.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.retry.host.omit_canary_hosts.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "udpa/annotations/versioning.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.extensions.retry.host.omit_canary_hosts.v3"; 9 | option java_outer_classname = "OmitCanaryHostsProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/retry/host/omit_canary_hosts/v3;omit_canary_hostsv3"; 12 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 13 | 14 | // [#protodoc-title: Omit Canary Hosts Predicate] 15 | // [#extension: envoy.retry_host_predicates.omit_canary_hosts] 16 | 17 | message OmitCanaryHostsPredicate { 18 | option (udpa.annotations.versioning).previous_message_type = 19 | "envoy.config.retry.omit_canary_hosts.v2.OmitCanaryHostsPredicate"; 20 | } 21 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/retry/host/previous_hosts/v3/previous_hosts.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.retry.host.previous_hosts.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "udpa/annotations/versioning.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.extensions.retry.host.previous_hosts.v3"; 9 | option java_outer_classname = "PreviousHostsProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/retry/host/previous_hosts/v3;previous_hostsv3"; 12 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 13 | 14 | // [#protodoc-title: Previous Hosts Predicate] 15 | // [#extension: envoy.retry_host_predicates.previous_hosts] 16 | 17 | message PreviousHostsPredicate { 18 | option (udpa.annotations.versioning).previous_message_type = 19 | "envoy.config.retry.previous_hosts.v2.PreviousHostsPredicate"; 20 | } 21 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/stat_sinks/wasm/v3/wasm.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.stat_sinks.wasm.v3; 4 | 5 | import "envoy/extensions/wasm/v3/wasm.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | 9 | option java_package = "io.envoyproxy.envoy.extensions.stat_sinks.wasm.v3"; 10 | option java_outer_classname = "WasmProto"; 11 | option java_multiple_files = true; 12 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/stat_sinks/wasm/v3;wasmv3"; 13 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 14 | 15 | // [#protodoc-title: Wasm] 16 | // Wasm :ref:`configuration overview `. 17 | // [#extension: envoy.stat_sinks.wasm] 18 | 19 | message Wasm { 20 | // General Plugin configuration. 21 | envoy.extensions.wasm.v3.PluginConfig config = 1; 22 | } 23 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/tracers/datadog/v4alpha/datadog.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.tracers.datadog.v4alpha; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "udpa/annotations/versioning.proto"; 7 | import "validate/validate.proto"; 8 | 9 | option java_package = "io.envoyproxy.envoy.extensions.tracers.datadog.v4alpha"; 10 | option java_outer_classname = "DatadogProto"; 11 | option java_multiple_files = true; 12 | option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; 13 | 14 | // [#protodoc-title: Datadog tracer] 15 | 16 | // Configuration for the Datadog tracer. 17 | // [#extension: envoy.tracers.datadog] 18 | message DatadogConfig { 19 | option (udpa.annotations.versioning).previous_message_type = 20 | "envoy.config.trace.v3.DatadogConfig"; 21 | 22 | // The cluster to use for submitting traces to the Datadog agent. 23 | string collector_cluster = 1 [(validate.rules).string = {min_bytes: 1}]; 24 | 25 | // The name used for the service when traces are generated by envoy. 26 | string service_name = 2 [(validate.rules).string = {min_bytes: 1}]; 27 | } 28 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/transport_sockets/proxy_protocol/v3/upstream_proxy_protocol.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.transport_sockets.proxy_protocol.v3; 4 | 5 | import "envoy/config/core/v3/base.proto"; 6 | import "envoy/config/core/v3/proxy_protocol.proto"; 7 | 8 | import "udpa/annotations/status.proto"; 9 | import "validate/validate.proto"; 10 | 11 | option java_package = "io.envoyproxy.envoy.extensions.transport_sockets.proxy_protocol.v3"; 12 | option java_outer_classname = "UpstreamProxyProtocolProto"; 13 | option java_multiple_files = true; 14 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/transport_sockets/proxy_protocol/v3;proxy_protocolv3"; 15 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 16 | 17 | // [#protodoc-title: Upstream Proxy Protocol] 18 | // [#extension: envoy.transport_sockets.upstream_proxy_protocol] 19 | 20 | // Configuration for PROXY protocol socket 21 | message ProxyProtocolUpstreamTransport { 22 | // The PROXY protocol settings 23 | config.core.v3.ProxyProtocolConfig config = 1; 24 | 25 | // The underlying transport socket being wrapped. 26 | config.core.v3.TransportSocket transport_socket = 2 [(validate.rules).message = {required: true}]; 27 | } 28 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/transport_sockets/raw_buffer/v3/raw_buffer.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.transport_sockets.raw_buffer.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "udpa/annotations/versioning.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.extensions.transport_sockets.raw_buffer.v3"; 9 | option java_outer_classname = "RawBufferProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/transport_sockets/raw_buffer/v3;raw_bufferv3"; 12 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 13 | 14 | // [#protodoc-title: Raw Buffer] 15 | // [#extension: envoy.transport_sockets.raw_buffer] 16 | 17 | // Configuration for raw buffer transport socket. 18 | message RawBuffer { 19 | option (udpa.annotations.versioning).previous_message_type = 20 | "envoy.config.transport_socket.raw_buffer.v2.RawBuffer"; 21 | } 22 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/transport_sockets/s2a/v3/s2a.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.transport_sockets.s2a.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "validate/validate.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.extensions.transport_sockets.s2a.v3"; 9 | option java_outer_classname = "S2aProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/transport_sockets/s2a/v3;s2av3"; 12 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 13 | 14 | // [#not-implemented-hide:] 15 | // Configuration for S2A transport socket. This allows Envoy clients to 16 | // configure how to offload mTLS handshakes to the S2A service. 17 | // https://github.com/google/s2a-core#readme 18 | message S2AConfiguration { 19 | // The address of the S2A. This can be an IP address or a hostname, 20 | // followed by a port number. 21 | string s2a_address = 1 [(validate.rules).string = {min_len: 1}]; 22 | } 23 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/transport_sockets/tls/v3/cert.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.transport_sockets.tls.v3; 4 | 5 | import public "envoy/extensions/transport_sockets/tls/v3/common.proto"; 6 | import public "envoy/extensions/transport_sockets/tls/v3/secret.proto"; 7 | import public "envoy/extensions/transport_sockets/tls/v3/tls.proto"; 8 | 9 | option java_package = "io.envoyproxy.envoy.extensions.transport_sockets.tls.v3"; 10 | option java_outer_classname = "CertProto"; 11 | option java_multiple_files = true; 12 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/transport_sockets/tls/v3;tlsv3"; 13 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/upstreams/http/generic/v3/generic_connection_pool.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.upstreams.http.generic.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | 7 | option java_package = "io.envoyproxy.envoy.extensions.upstreams.http.generic.v3"; 8 | option java_outer_classname = "GenericConnectionPoolProtoOuterClass"; 9 | option java_multiple_files = true; 10 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/upstreams/http/generic/v3;genericv3"; 11 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 12 | 13 | // [#protodoc-title: Generic Connection Pool] 14 | 15 | // A connection pool which forwards downstream HTTP as TCP or HTTP to upstream, 16 | // based on CONNECT configuration. 17 | // [#extension: envoy.upstreams.http.generic] 18 | message GenericConnectionPoolProto { 19 | } 20 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/upstreams/http/http/v3/http_connection_pool.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.upstreams.http.http.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | 7 | option java_package = "io.envoyproxy.envoy.extensions.upstreams.http.http.v3"; 8 | option java_outer_classname = "HttpConnectionPoolProtoOuterClass"; 9 | option java_multiple_files = true; 10 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/upstreams/http/http/v3;httpv3"; 11 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 12 | 13 | // [#protodoc-title: Http Connection Pool] 14 | 15 | // A connection pool which forwards downstream HTTP as HTTP to upstream. 16 | // [#extension: envoy.upstreams.http.http] 17 | message HttpConnectionPoolProto { 18 | } 19 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/upstreams/http/tcp/v3/tcp_connection_pool.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.upstreams.http.tcp.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | 7 | option java_package = "io.envoyproxy.envoy.extensions.upstreams.http.tcp.v3"; 8 | option java_outer_classname = "TcpConnectionPoolProtoOuterClass"; 9 | option java_multiple_files = true; 10 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/upstreams/http/tcp/v3;tcpv3"; 11 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 12 | 13 | // [#protodoc-title: Tcp Connection Pool] 14 | 15 | // A connection pool which forwards downstream HTTP as TCP to upstream, 16 | // [#extension: envoy.upstreams.http.tcp] 17 | message TcpConnectionPoolProto { 18 | } 19 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/extensions/upstreams/tcp/generic/v3/generic_connection_pool.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.extensions.upstreams.tcp.generic.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | 7 | option java_package = "io.envoyproxy.envoy.extensions.upstreams.tcp.generic.v3"; 8 | option java_outer_classname = "GenericConnectionPoolProtoOuterClass"; 9 | option java_multiple_files = true; 10 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/upstreams/tcp/generic/v3;genericv3"; 11 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 12 | 13 | // [#protodoc-title: Generic Connection Pool] 14 | 15 | // A connection pool which forwards downstream TCP as TCP or HTTP to upstream, 16 | // based on CONNECT configuration. 17 | // [#extension: envoy.upstreams.tcp.generic] 18 | message GenericConnectionPoolProto { 19 | } 20 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/service/auth/v2alpha/external_auth.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.service.auth.v2alpha; 4 | 5 | option java_multiple_files = true; 6 | option java_generic_services = true; 7 | option java_outer_classname = "CertsProto"; 8 | option java_package = "io.envoyproxy.envoy.service.auth.v2alpha"; 9 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/service/auth/v2alpha"; 10 | 11 | import "envoy/service/auth/v2/external_auth.proto"; 12 | 13 | // [#protodoc-title: Authorization Service ] 14 | 15 | // The authorization service request messages used by external authorization :ref:`network filter 16 | // ` and :ref:`HTTP filter `. 17 | 18 | // A generic interface for performing authorization check on incoming 19 | // requests to a networked service. 20 | service Authorization { 21 | // Performs authorization check based on the attributes associated with the 22 | // incoming request, and returns status `OK` or not `OK`. 23 | rpc Check(v2.CheckRequest) returns (v2.CheckResponse); 24 | } 25 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/type/hash_policy.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.type; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "validate/validate.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.type"; 9 | option java_outer_classname = "HashPolicyProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/type"; 12 | option (udpa.annotations.file_status).package_version_status = FROZEN; 13 | 14 | // [#protodoc-title: Hash Policy] 15 | 16 | // Specifies the hash policy 17 | message HashPolicy { 18 | // The source IP will be used to compute the hash used by hash-based load balancing 19 | // algorithms. 20 | message SourceIp { 21 | } 22 | 23 | oneof policy_specifier { 24 | option (validate.required) = true; 25 | 26 | SourceIp source_ip = 1; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/type/http.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.type; 4 | 5 | import "udpa/annotations/status.proto"; 6 | 7 | option java_package = "io.envoyproxy.envoy.type"; 8 | option java_outer_classname = "HttpProto"; 9 | option java_multiple_files = true; 10 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/type"; 11 | option (udpa.annotations.file_status).package_version_status = FROZEN; 12 | 13 | // [#protodoc-title: HTTP] 14 | 15 | enum CodecClientType { 16 | HTTP1 = 0; 17 | 18 | HTTP2 = 1; 19 | 20 | // [#not-implemented-hide:] QUIC implementation is not production ready yet. Use this enum with 21 | // caution to prevent accidental execution of QUIC code. I.e. `!= HTTP2` is no longer sufficient 22 | // to distinguish HTTP1 and HTTP2 traffic. 23 | HTTP3 = 2; 24 | } 25 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/type/matcher/node.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.type.matcher; 4 | 5 | import "envoy/type/matcher/string.proto"; 6 | import "envoy/type/matcher/struct.proto"; 7 | 8 | import "udpa/annotations/status.proto"; 9 | 10 | option java_package = "io.envoyproxy.envoy.type.matcher"; 11 | option java_outer_classname = "NodeProto"; 12 | option java_multiple_files = true; 13 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/type/matcher"; 14 | option (udpa.annotations.file_status).package_version_status = FROZEN; 15 | 16 | // [#protodoc-title: Node matcher] 17 | 18 | // Specifies the way to match a Node. 19 | // The match follows AND semantics. 20 | message NodeMatcher { 21 | // Specifies match criteria on the node id. 22 | StringMatcher node_id = 1; 23 | 24 | // Specifies match criteria on the node metadata. 25 | repeated StructMatcher node_metadatas = 2; 26 | } 27 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/type/matcher/number.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.type.matcher; 4 | 5 | import "envoy/type/range.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | import "validate/validate.proto"; 9 | 10 | option java_package = "io.envoyproxy.envoy.type.matcher"; 11 | option java_outer_classname = "NumberProto"; 12 | option java_multiple_files = true; 13 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/type/matcher"; 14 | option (udpa.annotations.file_status).package_version_status = FROZEN; 15 | 16 | // [#protodoc-title: Number matcher] 17 | 18 | // Specifies the way to match a double value. 19 | message DoubleMatcher { 20 | oneof match_pattern { 21 | option (validate.required) = true; 22 | 23 | // If specified, the input double value must be in the range specified here. 24 | // Note: The range is using half-open interval semantics [start, end). 25 | DoubleRange range = 1; 26 | 27 | // If specified, the input double value must be equal to the value specified here. 28 | double exact = 2; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/type/matcher/path.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.type.matcher; 4 | 5 | import "envoy/type/matcher/string.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | import "validate/validate.proto"; 9 | 10 | option java_package = "io.envoyproxy.envoy.type.matcher"; 11 | option java_outer_classname = "PathProto"; 12 | option java_multiple_files = true; 13 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/type/matcher"; 14 | option (udpa.annotations.file_status).package_version_status = FROZEN; 15 | 16 | // [#protodoc-title: Path matcher] 17 | 18 | // Specifies the way to match a path on HTTP request. 19 | message PathMatcher { 20 | oneof rule { 21 | option (validate.required) = true; 22 | 23 | // The `path` must match the URL path portion of the :path header. The query and fragment 24 | // string (if present) are removed in the URL path portion. 25 | // For example, the path */data* will match the *:path* header */data#fragment?param=value*. 26 | StringMatcher path = 1 [(validate.rules).message = {required: true}]; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/type/matcher/v3/node.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.type.matcher.v3; 4 | 5 | import "envoy/type/matcher/v3/string.proto"; 6 | import "envoy/type/matcher/v3/struct.proto"; 7 | 8 | import "udpa/annotations/status.proto"; 9 | import "udpa/annotations/versioning.proto"; 10 | 11 | option java_package = "io.envoyproxy.envoy.type.matcher.v3"; 12 | option java_outer_classname = "NodeProto"; 13 | option java_multiple_files = true; 14 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3"; 15 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 16 | 17 | // [#protodoc-title: Node matcher] 18 | 19 | // Specifies the way to match a Node. 20 | // The match follows AND semantics. 21 | message NodeMatcher { 22 | option (udpa.annotations.versioning).previous_message_type = "envoy.type.matcher.NodeMatcher"; 23 | 24 | // Specifies match criteria on the node id. 25 | StringMatcher node_id = 1; 26 | 27 | // Specifies match criteria on the node metadata. 28 | repeated StructMatcher node_metadatas = 2; 29 | } 30 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/type/matcher/v3/number.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.type.matcher.v3; 4 | 5 | import "envoy/type/v3/range.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | import "udpa/annotations/versioning.proto"; 9 | import "validate/validate.proto"; 10 | 11 | option java_package = "io.envoyproxy.envoy.type.matcher.v3"; 12 | option java_outer_classname = "NumberProto"; 13 | option java_multiple_files = true; 14 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3"; 15 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 16 | 17 | // [#protodoc-title: Number matcher] 18 | 19 | // Specifies the way to match a double value. 20 | message DoubleMatcher { 21 | option (udpa.annotations.versioning).previous_message_type = "envoy.type.matcher.DoubleMatcher"; 22 | 23 | oneof match_pattern { 24 | option (validate.required) = true; 25 | 26 | // If specified, the input double value must be in the range specified here. 27 | // Note: The range is using half-open interval semantics [start, end). 28 | type.v3.DoubleRange range = 1; 29 | 30 | // If specified, the input double value must be equal to the value specified here. 31 | double exact = 2; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/type/matcher/v3/path.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.type.matcher.v3; 4 | 5 | import "envoy/type/matcher/v3/string.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | import "udpa/annotations/versioning.proto"; 9 | import "validate/validate.proto"; 10 | 11 | option java_package = "io.envoyproxy.envoy.type.matcher.v3"; 12 | option java_outer_classname = "PathProto"; 13 | option java_multiple_files = true; 14 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3"; 15 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 16 | 17 | // [#protodoc-title: Path matcher] 18 | 19 | // Specifies the way to match a path on HTTP request. 20 | message PathMatcher { 21 | option (udpa.annotations.versioning).previous_message_type = "envoy.type.matcher.PathMatcher"; 22 | 23 | oneof rule { 24 | option (validate.required) = true; 25 | 26 | // The `path` must match the URL path portion of the :path header. The query and fragment 27 | // string (if present) are removed in the URL path portion. 28 | // For example, the path */data* will match the *:path* header */data#fragment?param=value*. 29 | StringMatcher path = 1 [(validate.rules).message = {required: true}]; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/type/matcher/v4alpha/node.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.type.matcher.v4alpha; 4 | 5 | import "envoy/type/matcher/v4alpha/string.proto"; 6 | import "envoy/type/matcher/v4alpha/struct.proto"; 7 | 8 | import "udpa/annotations/status.proto"; 9 | import "udpa/annotations/versioning.proto"; 10 | 11 | option java_package = "io.envoyproxy.envoy.type.matcher.v4alpha"; 12 | option java_outer_classname = "NodeProto"; 13 | option java_multiple_files = true; 14 | option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; 15 | 16 | // [#protodoc-title: Node matcher] 17 | 18 | // Specifies the way to match a Node. 19 | // The match follows AND semantics. 20 | message NodeMatcher { 21 | option (udpa.annotations.versioning).previous_message_type = "envoy.type.matcher.v3.NodeMatcher"; 22 | 23 | // Specifies match criteria on the node id. 24 | StringMatcher node_id = 1; 25 | 26 | // Specifies match criteria on the node metadata. 27 | repeated StructMatcher node_metadatas = 2; 28 | } 29 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/type/matcher/v4alpha/number.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.type.matcher.v4alpha; 4 | 5 | import "envoy/type/v3/range.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | import "udpa/annotations/versioning.proto"; 9 | import "validate/validate.proto"; 10 | 11 | option java_package = "io.envoyproxy.envoy.type.matcher.v4alpha"; 12 | option java_outer_classname = "NumberProto"; 13 | option java_multiple_files = true; 14 | option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; 15 | 16 | // [#protodoc-title: Number matcher] 17 | 18 | // Specifies the way to match a double value. 19 | message DoubleMatcher { 20 | option (udpa.annotations.versioning).previous_message_type = 21 | "envoy.type.matcher.v3.DoubleMatcher"; 22 | 23 | oneof match_pattern { 24 | option (validate.required) = true; 25 | 26 | // If specified, the input double value must be in the range specified here. 27 | // Note: The range is using half-open interval semantics [start, end). 28 | v3.DoubleRange range = 1; 29 | 30 | // If specified, the input double value must be equal to the value specified here. 31 | double exact = 2; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/type/matcher/v4alpha/path.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.type.matcher.v4alpha; 4 | 5 | import "envoy/type/matcher/v4alpha/string.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | import "udpa/annotations/versioning.proto"; 9 | import "validate/validate.proto"; 10 | 11 | option java_package = "io.envoyproxy.envoy.type.matcher.v4alpha"; 12 | option java_outer_classname = "PathProto"; 13 | option java_multiple_files = true; 14 | option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; 15 | 16 | // [#protodoc-title: Path matcher] 17 | 18 | // Specifies the way to match a path on HTTP request. 19 | message PathMatcher { 20 | option (udpa.annotations.versioning).previous_message_type = "envoy.type.matcher.v3.PathMatcher"; 21 | 22 | oneof rule { 23 | option (validate.required) = true; 24 | 25 | // The `path` must match the URL path portion of the :path header. The query and fragment 26 | // string (if present) are removed in the URL path portion. 27 | // For example, the path */data* will match the *:path* header */data#fragment?param=value*. 28 | StringMatcher path = 1 [(validate.rules).message = {required: true}]; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/type/semantic_version.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.type; 4 | 5 | import "udpa/annotations/status.proto"; 6 | 7 | option java_package = "io.envoyproxy.envoy.type"; 8 | option java_outer_classname = "SemanticVersionProto"; 9 | option java_multiple_files = true; 10 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/type"; 11 | option (udpa.annotations.file_status).package_version_status = FROZEN; 12 | 13 | // [#protodoc-title: Semantic Version] 14 | 15 | // Envoy uses SemVer (https://semver.org/). Major/minor versions indicate 16 | // expected behaviors and APIs, the patch version field is used only 17 | // for security fixes and can be generally ignored. 18 | message SemanticVersion { 19 | uint32 major_number = 1; 20 | 21 | uint32 minor_number = 2; 22 | 23 | uint32 patch = 3; 24 | } 25 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/type/v3/http.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.type.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | 7 | option java_package = "io.envoyproxy.envoy.type.v3"; 8 | option java_outer_classname = "HttpProto"; 9 | option java_multiple_files = true; 10 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/type/v3;typev3"; 11 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 12 | 13 | // [#protodoc-title: HTTP] 14 | 15 | enum CodecClientType { 16 | HTTP1 = 0; 17 | 18 | HTTP2 = 1; 19 | 20 | // [#not-implemented-hide:] QUIC implementation is not production ready yet. Use this enum with 21 | // caution to prevent accidental execution of QUIC code. I.e. `!= HTTP2` is no longer sufficient 22 | // to distinguish HTTP1 and HTTP2 traffic. 23 | HTTP3 = 2; 24 | } 25 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/type/v3/ratelimit_unit.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.type.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | 7 | option java_package = "io.envoyproxy.envoy.type.v3"; 8 | option java_outer_classname = "RatelimitUnitProto"; 9 | option java_multiple_files = true; 10 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/type/v3;typev3"; 11 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 12 | 13 | // [#protodoc-title: Ratelimit Time Unit] 14 | 15 | // Identifies the unit of of time for rate limit. 16 | enum RateLimitUnit { 17 | // The time unit is not known. 18 | UNKNOWN = 0; 19 | 20 | // The time unit representing a second. 21 | SECOND = 1; 22 | 23 | // The time unit representing a minute. 24 | MINUTE = 2; 25 | 26 | // The time unit representing an hour. 27 | HOUR = 3; 28 | 29 | // The time unit representing a day. 30 | DAY = 4; 31 | } 32 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/type/v3/semantic_version.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.type.v3; 4 | 5 | import "udpa/annotations/status.proto"; 6 | import "udpa/annotations/versioning.proto"; 7 | 8 | option java_package = "io.envoyproxy.envoy.type.v3"; 9 | option java_outer_classname = "SemanticVersionProto"; 10 | option java_multiple_files = true; 11 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/type/v3;typev3"; 12 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 13 | 14 | // [#protodoc-title: Semantic Version] 15 | 16 | // Envoy uses SemVer (https://semver.org/). Major/minor versions indicate 17 | // expected behaviors and APIs, the patch version field is used only 18 | // for security fixes and can be generally ignored. 19 | message SemanticVersion { 20 | option (udpa.annotations.versioning).previous_message_type = "envoy.type.SemanticVersion"; 21 | 22 | uint32 major_number = 1; 23 | 24 | uint32 minor_number = 2; 25 | 26 | uint32 patch = 3; 27 | } 28 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/data-plane-api/envoy/watchdog/v3/abort_action.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package envoy.watchdog.v3; 4 | 5 | import "google/protobuf/duration.proto"; 6 | 7 | import "udpa/annotations/status.proto"; 8 | 9 | option java_package = "io.envoyproxy.envoy.watchdog.v3"; 10 | option java_outer_classname = "AbortActionProto"; 11 | option java_multiple_files = true; 12 | option go_package = "github.com/envoyproxy/go-control-plane/envoy/watchdog/v3;watchdogv3"; 13 | option (udpa.annotations.file_status).package_version_status = ACTIVE; 14 | 15 | // [#protodoc-title: Watchdog Action that kills a stuck thread to kill the process.] 16 | 17 | // A GuardDogAction that will terminate the process by killing the 18 | // stuck thread. This would allow easier access to the call stack of the stuck 19 | // thread since we would run signal handlers on that thread. By default 20 | // this will be registered to run as the last watchdog action on KILL and 21 | // MULTIKILL events if those are enabled. 22 | message AbortActionConfig { 23 | // How long to wait for the thread to respond to the thread kill function 24 | // before killing the process from this action. This is a blocking action. 25 | // By default this is 5 seconds. 26 | google.protobuf.Duration wait_duration = 1; 27 | } 28 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/example-workspace/foo/bar.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package pgv.example.foo; 4 | 5 | import "validate/validate.proto"; 6 | 7 | message BarNone { 8 | int32 value = 1; 9 | } 10 | 11 | message BarOne { 12 | int32 value = 1 [(validate.rules).int32 = { not_in: 1 }]; 13 | } 14 | 15 | message Bars { 16 | BarNone bar_none = 1; 17 | BarOne bar_one = 2; 18 | } 19 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/example-workspace/foo/subdir_without_package/baz.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package pgv.example.foo; 4 | 5 | import "validate/validate.proto"; 6 | 7 | message Baz { 8 | int32 not_two = 1 [(validate.rules).int32 = { not_in: 2 }]; 9 | } 10 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/java/pgv-java-grpc/src/test/proto/GooDBYe.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package io.envoyproxy.pgv.grpc; 4 | 5 | option java_multiple_files = false; 6 | 7 | import "validate/validate.proto"; 8 | 9 | service Dismisser { 10 | rpc SayGoodbye (GoodbyeJKRequest) returns (GoodbyeResponse) {} 11 | } 12 | 13 | message GoodbyeJKRequest { 14 | string name = 1 [(validate.rules).string.const = "World"]; 15 | } 16 | 17 | message GoodbyeResponse { 18 | string message = 1; 19 | } 20 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/java/pgv-java-grpc/src/test/proto/hello.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package io.envoyproxy.pgv.grpc; 4 | 5 | option java_multiple_files = true; 6 | option java_package = "io.envoyproxy.pgv.grpc.asubpackage"; 7 | option java_outer_classname = "Ponycopter"; 8 | 9 | import "validate/validate.proto"; 10 | 11 | service Greeter { 12 | rpc SayHello (HelloJKRequest) returns (HelloResponse) {} 13 | } 14 | 15 | message HelloJKRequest { 16 | string name = 1 [(validate.rules).string.const = "World"]; 17 | } 18 | 19 | message HelloResponse { 20 | string message = 1; 21 | } 22 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/java/pgv-java-stub/src/test/proto/embedded.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package io.envoyproxy.pvg.cases; 4 | 5 | option java_multiple_files = true; 6 | 7 | import "validate/validate.proto"; 8 | 9 | message TokenUse { 10 | message Payload { 11 | message Token { 12 | string value = 1; 13 | } 14 | Token token = 1; 15 | } 16 | Payload payload = 1; 17 | } 18 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/java/pgv-java-stub/src/test/proto/enum.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package io.envoyproxy.pvg.cases; 4 | 5 | enum TestEnum { 6 | ZERO = 0; 7 | ONE = 1; 8 | TWO = 2; 9 | } 10 | 11 | message Outer { 12 | string val = 1; 13 | } 14 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/java/pgv-java-stub/src/test/proto/underscoreName.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package io.envoyproxy.pgv.grpc; 3 | 4 | option java_multiple_files = true; 5 | option java_package = "io.envoyproxy.pgv.validate"; 6 | import "validate/validate.proto"; 7 | 8 | message MessageNameWith_Underscore { 9 | string v = 1 [(validate.rules).string.min_len = 2]; 10 | } 11 | 12 | message AnotherMessageNameWith_Underscore { 13 | string v = 1 [(validate.rules).string.min_len = 2]; 14 | } 15 | 16 | message MessageNameWith_Two_Underscore { 17 | string v = 1 [(validate.rules).string.min_len = 2]; 18 | } -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/tests/generation/multi_file_java_test/test.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package tests.mfjt; 4 | option go_package = "harness"; 5 | option java_multiple_files = true; 6 | 7 | import "google/protobuf/any.proto"; 8 | 9 | message Message { 10 | google.protobuf.Any data = 1; 11 | } 12 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/tests/harness/cases/bool.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package tests.harness.cases; 4 | option go_package = "github.com/envoyproxy/protoc-gen-validate/tests/harness/cases/go;cases"; 5 | import "validate/validate.proto"; 6 | 7 | message BoolNone { bool val = 1; } 8 | message BoolConstTrue { bool val = 1 [(validate.rules).bool.const = true]; } 9 | message BoolConstFalse { bool val = 1 [(validate.rules).bool.const = false]; } 10 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/tests/harness/cases/filename-with-dash.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package tests.harness.cases; 4 | option go_package = "github.com/envoyproxy/protoc-gen-validate/tests/harness/cases/go;cases"; 5 | import "validate/validate.proto"; 6 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/tests/harness/cases/oneofs.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package tests.harness.cases; 4 | option go_package = "github.com/envoyproxy/protoc-gen-validate/tests/harness/cases/go;cases"; 5 | import "validate/validate.proto"; 6 | 7 | message TestOneOfMsg { 8 | bool val = 1 [(validate.rules).bool.const = true]; 9 | } 10 | 11 | message OneOfNone { 12 | oneof o { 13 | string x = 1; 14 | int32 y = 2; 15 | } 16 | } 17 | 18 | message OneOf { 19 | oneof o { 20 | string x = 1 [(validate.rules).string.prefix = "foo"]; 21 | int32 y = 2 [(validate.rules).int32.gt = 0]; 22 | TestOneOfMsg z = 3; 23 | } 24 | } 25 | 26 | message OneOfRequired { 27 | oneof o { 28 | option (validate.required) = true; 29 | 30 | string x = 1; 31 | int32 y = 2; 32 | int32 name_with_underscores = 3; 33 | int32 under_and_1_number = 4; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/tests/harness/cases/other_package/embed.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package tests.harness.cases.other_package; 4 | option go_package = "github.com/envoyproxy/protoc-gen-validate/tests/harness/cases/other_package/go;other_package"; 5 | 6 | import "validate/validate.proto"; 7 | 8 | // Validate message embedding across packages. 9 | message Embed { 10 | int64 val = 1 [(validate.rules).int64.gt = 0]; 11 | 12 | enum Enumerated { VALUE = 0; } 13 | } 14 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/tests/harness/cases/subdirectory/in_subdirectory.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package tests.harness.cases; 4 | option go_package = "github.com/envoyproxy/protoc-gen-validate/tests/harness/cases/go;cases"; 5 | import "validate/validate.proto"; 6 | 7 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/tests/harness/cases/wkt_any.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package tests.harness.cases; 4 | option go_package = "github.com/envoyproxy/protoc-gen-validate/tests/harness/cases/go;cases"; 5 | import "validate/validate.proto"; 6 | import "google/protobuf/any.proto"; 7 | 8 | message AnyNone { google.protobuf.Any val = 1; } 9 | message AnyRequired { google.protobuf.Any val = 1 [(validate.rules).any.required = true]; } 10 | message AnyIn { google.protobuf.Any val = 1 [(validate.rules).any = {in: ["type.googleapis.com/google.protobuf.Duration"]}];} 11 | message AnyNotIn { google.protobuf.Any val = 1 [(validate.rules).any = {not_in: ["type.googleapis.com/google.protobuf.Timestamp"]}];} 12 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/tests/harness/cases/wkt_nested.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package tests.harness.cases; 4 | option go_package = "github.com/envoyproxy/protoc-gen-validate/tests/harness/cases/go;cases"; 5 | 6 | import "validate/validate.proto"; 7 | 8 | message WktLevelOne { 9 | message WktLevelTwo { 10 | message WktLevelThree { 11 | string uuid = 1 [(validate.rules).string.uuid = true]; 12 | } 13 | 14 | WktLevelThree three = 1 [(validate.rules).message.required = true]; 15 | } 16 | 17 | WktLevelTwo two = 1 [(validate.rules).message.required = true]; 18 | } -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/tests/harness/cases/yet_another_package/embed.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package tests.harness.cases.yet_another_package; 4 | option go_package = "github.com/envoyproxy/protoc-gen-validate/tests/harness/cases/yet_another_package/go;yet_another_package"; 5 | 6 | import "validate/validate.proto"; 7 | 8 | // Validate message embedding across packages. 9 | message Embed { 10 | int64 val = 1 [(validate.rules).int64.gt = 0]; 11 | 12 | enum Enumerated { VALUE = 0; } 13 | } 14 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/tests/harness/harness.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package tests.harness; 4 | option go_package = "github.com/envoyproxy/protoc-gen-validate/tests/harness/go;harness"; 5 | 6 | import "google/protobuf/any.proto"; 7 | 8 | message TestCase { 9 | google.protobuf.Any message = 1; 10 | } 11 | 12 | message TestResult { 13 | bool Valid = 1; 14 | bool Error = 2; 15 | repeated string Reasons = 3; 16 | bool AllowFailure = 4; 17 | bool CheckMultipleErrors = 5; 18 | } 19 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/gogo/protobuf/test/enumdecl/enumdecl.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package enumdecl; 4 | 5 | import "github.com/gogo/protobuf/gogoproto/gogo.proto"; 6 | 7 | option (gogoproto.testgen_all) = true; 8 | option (gogoproto.populate_all) = true; 9 | option (gogoproto.benchgen_all) = true; 10 | option (gogoproto.unmarshaler_all) = true; 11 | option (gogoproto.marshaler_all) = true; 12 | option (gogoproto.sizer_all) = true; 13 | option (gogoproto.equal_all) = true; 14 | option (gogoproto.verbose_equal_all) = true; 15 | option (gogoproto.unsafe_marshaler_all) = false; 16 | option (gogoproto.unsafe_unmarshaler_all) = false; 17 | 18 | enum MyEnum { 19 | option (gogoproto.enumdecl) = false; 20 | option (gogoproto.goproto_enum_prefix) = false; 21 | A = 0; 22 | B = 1; 23 | } 24 | 25 | message Message { 26 | MyEnum enumerated_field = 1; 27 | } 28 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/gogo/protobuf/test/enumdecl_all/enumdeclall.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package enumdeclall; 4 | 5 | import "github.com/gogo/protobuf/gogoproto/gogo.proto"; 6 | 7 | option (gogoproto.testgen_all) = true; 8 | option (gogoproto.populate_all) = true; 9 | option (gogoproto.benchgen_all) = true; 10 | option (gogoproto.unmarshaler_all) = true; 11 | option (gogoproto.marshaler_all) = true; 12 | option (gogoproto.sizer_all) = true; 13 | option (gogoproto.equal_all) = true; 14 | option (gogoproto.verbose_equal_all) = true; 15 | option (gogoproto.unsafe_marshaler_all) = false; 16 | option (gogoproto.unsafe_unmarshaler_all) = false; 17 | option (gogoproto.enumdecl_all) = false; 18 | 19 | enum MyEnum { 20 | option (gogoproto.goproto_enum_prefix) = false; 21 | A = 0; 22 | B = 1; 23 | } 24 | 25 | enum MyOtherEnum { 26 | option (gogoproto.enumdecl) = true; 27 | option (gogoproto.goproto_enum_prefix) = false; 28 | C = 0; 29 | D = 1; 30 | } 31 | 32 | message Message { 33 | MyEnum enumerated_field = 1; 34 | MyOtherEnum otherenumerated_field = 2; 35 | } 36 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/gogo/protobuf/test/importcustom-issue389/imported/a.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package imported; 3 | 4 | import "github.com/gogo/protobuf/gogoproto/gogo.proto"; 5 | 6 | option (gogoproto.sizer_all) = true; 7 | option (gogoproto.marshaler_all) = true; 8 | option (gogoproto.unmarshaler_all) = true; 9 | option (gogoproto.testgen_all) = true; 10 | option (gogoproto.populate_all) = true; 11 | option (gogoproto.equal_all) = true; 12 | 13 | message A { 14 | string f1 = 1; 15 | } -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/gogo/protobuf/test/importcustom-issue389/importing/c.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package importing; 3 | 4 | import "github.com/gogo/protobuf/gogoproto/gogo.proto"; 5 | import "github.com/gogo/protobuf/test/importcustom-issue389/imported/a.proto"; 6 | 7 | option (gogoproto.sizer_all) = true; 8 | option (gogoproto.marshaler_all) = true; 9 | option (gogoproto.unmarshaler_all) = true; 10 | option (gogoproto.testgen_all) = true; 11 | option (gogoproto.populate_all) = true; 12 | option (gogoproto.equal_all) = true; 13 | 14 | message C { 15 | imported.A f2 = 1 [(gogoproto.customtype) = "github.com/gogo/protobuf/test/importcustom-issue389/imported.B"]; 16 | } -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/gogo/protobuf/test/int64support/object.proto: -------------------------------------------------------------------------------- 1 | package int64support; 2 | 3 | import "github.com/gogo/protobuf/gogoproto/gogo.proto"; 4 | 5 | option go_package = "int64support"; 6 | option (gogoproto.benchgen_all) = true; 7 | option (gogoproto.enum_stringer_all) = true; 8 | option (gogoproto.equal_all) = true; 9 | option (gogoproto.goproto_enum_prefix_all) = false; 10 | option (gogoproto.goproto_enum_stringer_all) = false; 11 | option (gogoproto.goproto_stringer_all) = false; 12 | option (gogoproto.goproto_unrecognized_all) = false; 13 | option (gogoproto.gostring_all) = true; 14 | option (gogoproto.marshaler_all) = true; 15 | option (gogoproto.populate_all) = true; 16 | option (gogoproto.sizer_all) = true; 17 | option (gogoproto.stringer_all) = true; 18 | option (gogoproto.testgen_all) = true; 19 | option (gogoproto.unmarshaler_all) = true; 20 | option (gogoproto.verbose_equal_all) = true; 21 | 22 | message Object { 23 | optional int64 optional_number = 1; 24 | } 25 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/gogo/protobuf/test/issue260/issue260.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package issue260; 4 | 5 | import "github.com/gogo/protobuf/gogoproto/gogo.proto"; 6 | import "google/protobuf/timestamp.proto"; 7 | 8 | option (gogoproto.testgen_all) = true; 9 | option (gogoproto.populate_all) = true; 10 | option (gogoproto.benchgen_all) = true; 11 | option (gogoproto.unmarshaler_all) = true; 12 | option (gogoproto.marshaler_all) = true; 13 | option (gogoproto.sizer_all) = true; 14 | option (gogoproto.equal_all) = true; 15 | option (gogoproto.verbose_equal_all) = true; 16 | option (gogoproto.unsafe_marshaler_all) = false; 17 | option (gogoproto.unsafe_unmarshaler_all) = false; 18 | option (gogoproto.goproto_unrecognized_all) = false; 19 | 20 | message Dropped { 21 | option (gogoproto.typedecl) = false; 22 | string name = 1; 23 | int32 age = 2; 24 | } 25 | 26 | message DroppedWithoutGetters { 27 | option (gogoproto.typedecl) = false; 28 | option (gogoproto.goproto_getters) = false; 29 | int64 height = 1; 30 | int64 width = 2; 31 | google.protobuf.Timestamp timestamp = 3 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; 32 | } 33 | 34 | message Kept { 35 | string name = 1; 36 | int32 age = 2; 37 | } 38 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/gogo/protobuf/test/issue261/issue261.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package issue261; 4 | 5 | import "github.com/gogo/protobuf/gogoproto/gogo.proto"; 6 | 7 | import "google/protobuf/duration.proto"; 8 | 9 | message MapStdTypes { 10 | map nullableDuration = 3 [(gogoproto.stdduration) = true]; 11 | } 12 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/gogo/protobuf/test/issue262/timefail.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | import "github.com/gogo/protobuf/gogoproto/gogo.proto"; 4 | import "google/protobuf/timestamp.proto"; 5 | 6 | package timefail; 7 | 8 | message TimeFail { 9 | google.protobuf.Timestamp time_test = 1 [(gogoproto.stdtime) = true]; 10 | } -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/gogo/protobuf/test/issue270/a/a1.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto2"; 2 | 3 | package issue270.a; 4 | 5 | import "github.com/gogo/protobuf/gogoproto/gogo.proto"; 6 | import "github.com/gogo/protobuf/test/issue270/a/a2.proto"; 7 | 8 | option (gogoproto.populate_all) = true; 9 | 10 | message A1 { 11 | optional A2 a2 = 1; 12 | } 13 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/gogo/protobuf/test/issue270/a/a2.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto2"; 2 | 3 | package issue270.a; 4 | 5 | import "github.com/gogo/protobuf/gogoproto/gogo.proto"; 6 | import "github.com/gogo/protobuf/test/issue270/b/b.proto"; 7 | 8 | option (gogoproto.populate_all) = true; 9 | 10 | message A2 { 11 | optional issue270.b.B b = 1; 12 | } 13 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/gogo/protobuf/test/issue270/b/b.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto2"; 2 | 3 | package issue270.b; 4 | 5 | message B { 6 | } 7 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/gogo/protobuf/test/issue312/events/events.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto2"; 2 | 3 | package issue312.events; 4 | 5 | import "github.com/gogo/protobuf/test/issue312/issue312.proto"; 6 | import "github.com/gogo/protobuf/gogoproto/gogo.proto"; 7 | 8 | option go_package = "events"; 9 | option (gogoproto.gostring_all) = true; 10 | option (gogoproto.populate_all) = true; 11 | option (gogoproto.equal_all) = true; 12 | option (gogoproto.testgen_all) = true; 13 | 14 | message Subtype { 15 | optional issue312.TaskState state = 4; 16 | } 17 | 18 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/gogo/protobuf/test/issue312/issue312.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto2"; 2 | 3 | package issue312; 4 | 5 | import "github.com/gogo/protobuf/gogoproto/gogo.proto"; 6 | 7 | option go_package = "issue312"; 8 | option (gogoproto.gostring_all) = true; 9 | option (gogoproto.populate_all) = true; 10 | option (gogoproto.equal_all) = true; 11 | option (gogoproto.testgen_all) = true; 12 | 13 | enum TaskState { 14 | TASK_STAGING = 6; 15 | TASK_STARTING = 0; 16 | TASK_RUNNING = 1; 17 | } 18 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/gogo/protobuf/test/issue322/issue322.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto2"; 2 | package test; 3 | 4 | import "github.com/gogo/protobuf/gogoproto/gogo.proto"; 5 | 6 | option (gogoproto.gostring_all) = true; 7 | option (gogoproto.populate_all) = true; 8 | option (gogoproto.equal_all) = true; 9 | option (gogoproto.testgen_all) = true; 10 | 11 | message OneofTest { 12 | oneof union { 13 | int32 i = 1 [default = 4]; 14 | } 15 | } -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/gogo/protobuf/test/issue330/issue330.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package issue330; 4 | 5 | import "github.com/gogo/protobuf/gogoproto/gogo.proto"; 6 | 7 | option (gogoproto.benchgen_all) = true; 8 | option (gogoproto.equal_all) = true; 9 | option (gogoproto.marshaler_all) = true; 10 | option (gogoproto.populate_all) = true; 11 | option (gogoproto.sizer_all) = true; 12 | option (gogoproto.testgen_all) = true; 13 | option (gogoproto.unmarshaler_all) = true; 14 | 15 | message Object { 16 | uint32 type = 1 [(gogoproto.casttype) = "TypeIdentifier"]; 17 | } 18 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/gogo/protobuf/test/issue427/issue427.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package issue427; 4 | 5 | import "github.com/gogo/protobuf/gogoproto/gogo.proto"; 6 | 7 | option (gogoproto.testgen_all) = true; 8 | option (gogoproto.populate_all) = true; 9 | option (gogoproto.sizer_all) = true; 10 | option (gogoproto.equal_all) = true; 11 | 12 | message Foo { 13 | string foo = 1; 14 | } 15 | 16 | service Bar { 17 | rpc GetBar (Foo) returns (Foo); 18 | } -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/gogo/protobuf/test/merge/merge.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package merge; 3 | 4 | import "github.com/gogo/protobuf/gogoproto/gogo.proto"; 5 | 6 | message A { 7 | B B = 1 [(gogoproto.nullable) = false]; 8 | } 9 | 10 | message B { 11 | int64 c = 1; 12 | } -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/gogo/protobuf/test/proto3extension/proto3ext.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package proto3extension; 4 | 5 | import "google/protobuf/descriptor.proto"; 6 | 7 | extend google.protobuf.FieldOptions { 8 | bool primary = 51234; 9 | bool index = 51235; 10 | } 11 | 12 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/gogo/protobuf/test/theproto3/footer.proto: -------------------------------------------------------------------------------- 1 | 2 | message MessageWithMap { 3 | map name_mapping = 1; 4 | map msg_mapping = 2; 5 | map byte_mapping = 3; 6 | } 7 | 8 | message FloatingPoint { 9 | double f = 1; 10 | } 11 | 12 | message Uint128Pair { 13 | bytes left = 1 [(gogoproto.nullable) = false, (gogoproto.customtype) = "github.com/gogo/protobuf/test/custom.Uint128"]; 14 | bytes right = 2 [(gogoproto.customtype) = "github.com/gogo/protobuf/test/custom.Uint128"]; 15 | } 16 | 17 | message ContainsNestedMap { 18 | message NestedMap { 19 | map NestedMapField = 1; 20 | } 21 | } 22 | 23 | message NotPacked { 24 | repeated uint64 key = 5 [packed=false]; 25 | } -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/gogo/protobuf/test/typedecl/typedecl.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package typedecl; 4 | 5 | import "github.com/gogo/protobuf/gogoproto/gogo.proto"; 6 | 7 | option (gogoproto.testgen_all) = true; 8 | option (gogoproto.populate_all) = true; 9 | option (gogoproto.benchgen_all) = true; 10 | option (gogoproto.unmarshaler_all) = true; 11 | option (gogoproto.marshaler_all) = true; 12 | option (gogoproto.sizer_all) = true; 13 | option (gogoproto.equal_all) = true; 14 | option (gogoproto.verbose_equal_all) = true; 15 | option (gogoproto.unsafe_marshaler_all) = false; 16 | option (gogoproto.unsafe_unmarshaler_all) = false; 17 | option (gogoproto.goproto_unrecognized_all) = false; 18 | 19 | message Dropped { 20 | option (gogoproto.typedecl) = false; 21 | string name = 1; 22 | int32 age = 2; 23 | } 24 | 25 | message DroppedWithoutGetters { 26 | option (gogoproto.typedecl) = false; 27 | option (gogoproto.goproto_getters) = false; 28 | int64 height = 1; 29 | int64 width = 2; 30 | } 31 | 32 | message Kept { 33 | string name = 1; 34 | int32 age = 2; 35 | } 36 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/gogo/protobuf/test/typedecl_all/typedeclall.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package typedeclall; 4 | 5 | import "github.com/gogo/protobuf/gogoproto/gogo.proto"; 6 | 7 | option (gogoproto.testgen_all) = true; 8 | option (gogoproto.populate_all) = true; 9 | option (gogoproto.benchgen_all) = true; 10 | option (gogoproto.unmarshaler_all) = true; 11 | option (gogoproto.marshaler_all) = true; 12 | option (gogoproto.sizer_all) = true; 13 | option (gogoproto.equal_all) = true; 14 | option (gogoproto.verbose_equal_all) = true; 15 | option (gogoproto.unsafe_marshaler_all) = false; 16 | option (gogoproto.unsafe_unmarshaler_all) = false; 17 | option (gogoproto.goproto_unrecognized_all) = false; 18 | option (gogoproto.typedecl_all) = false; 19 | 20 | message Dropped { 21 | string name = 1; 22 | int32 age = 2; 23 | } 24 | 25 | message DroppedWithoutGetters { 26 | option (gogoproto.goproto_getters) = false; 27 | int64 height = 1; 28 | int64 width = 2; 29 | } 30 | 31 | message Kept { 32 | option (gogoproto.typedecl) = true; 33 | string name = 1; 34 | int32 age = 2; 35 | } 36 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/gogo/protobuf/test/typedeclimport/subpkg/subpkg.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package subpkg; 4 | 5 | import "github.com/gogo/protobuf/gogoproto/gogo.proto"; 6 | 7 | option (gogoproto.marshaler_all) = true; 8 | option (gogoproto.unmarshaler_all) = true; 9 | option (gogoproto.sizer_all) = true; 10 | option (gogoproto.equal_all) = true; 11 | option (gogoproto.verbose_equal_all) = true; 12 | 13 | message AnotherMessage { 14 | string foo = 1; 15 | } -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/gogo/protobuf/test/typedeclimport/typedeclimport.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package typedeclimport; 4 | 5 | import "github.com/gogo/protobuf/gogoproto/gogo.proto"; 6 | 7 | import "github.com/gogo/protobuf/test/typedeclimport/subpkg/subpkg.proto"; 8 | 9 | option (gogoproto.unmarshaler_all) = true; 10 | option (gogoproto.marshaler_all) = true; 11 | option (gogoproto.sizer_all) = true; 12 | option (gogoproto.equal_all) = true; 13 | option (gogoproto.verbose_equal_all) = true; 14 | 15 | message SomeMessage { 16 | option (gogoproto.typedecl) = false; 17 | subpkg.AnotherMessage imported = 1 [(gogoproto.nullable) = false]; 18 | } -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/issue780_oneof_conflict/test.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto2"; 2 | 3 | package oneoftest; 4 | 5 | message Foo { 6 | oneof bar { 7 | string get_bar = 1; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/names/digit/digit.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | 3 | package names.digit; 4 | option go_package = "2019fizz"; 5 | 6 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/names/import/import.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | 3 | package names.import; 4 | option go_package = "example.com/foo/bar"; 5 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/names/import_path/import_path.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package names.import_path; 3 | 4 | message ImportPath {} 5 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/names/import_path_mapped/import_path_mapped.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package names.import_path_mapped; 3 | option go_package="go_package"; 4 | 5 | message Mapped {} 6 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/names/keyword/keyword.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | 3 | package names.keyword; 4 | option go_package = "package"; 5 | 6 | message Package {} 7 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/names/mapped/mapped.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package names.mapped; 3 | option go_package="unaffected"; 4 | 5 | message Mapped {} 6 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/names/none/NO.pack--age.name$.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | 3 | message None {} 4 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/names/override/override.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | 3 | package names.override; 4 | option go_package = "example.com/foo/bar;baz"; 5 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/names/package/package.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | 3 | package names.package; 4 | option go_package = "my_package"; 5 | 6 | message Package {} 7 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/names/path_dash/path_dash.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package names.path_dash; 3 | option go_package="example.com/path-dash"; 4 | 5 | message PathDash {} -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/names/transitive_package/other.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package names.transitive_package; 3 | 4 | option go_package="foobar"; 5 | 6 | message Other { 7 | bool value = 1; 8 | } 9 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/names/transitive_package/transitive.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package names.transitive_package; 3 | 4 | message Transitive { 5 | bool value = 1; 6 | } 7 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/names/unnamed/unnamed.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package names.unnamed; 4 | 5 | message Unnamed {} 6 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/outputs/import_prefix/prefix.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package outputs.import_prefix; 3 | option go_package = "example.com/import_prefix"; 4 | message ImportPrefix {} 5 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/outputs/import_prefix_srcrel/prefix.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package outputs.import_prefix; 3 | option go_package = "example.com/import_prefix"; 4 | message ImportPrefix {} 5 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/outputs/mapped/mapped.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package outputs.mapped; 3 | option go_package="unaffected"; 4 | 5 | message Mapped {} 6 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/outputs/mapped_srcrel/mapped.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package outputs.mapped; 3 | option go_package="unaffected"; 4 | 5 | message Mapped {} 6 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/outputs/none/none.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package outputs.none; 3 | message None {} 4 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/outputs/none_srcrel/none.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | 3 | message None {} 4 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/outputs/qualified/qualified.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package outputs.qualified; 3 | option go_package="example.com/qualified"; 4 | 5 | message FullyQualified{} 6 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/outputs/qualified_srcrel/qualified.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package outputs.qualified; 3 | option go_package="example.com/qualified"; 4 | 5 | message FullyQualified{} 6 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/outputs/unqualified/unqualified.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package outputs.unqualified; 3 | option go_package="unqualified"; 4 | 5 | message Unqualified{} 6 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/outputs/unqualified_srcrel/unqualified.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package outputs.unqualified; 3 | option go_package="unqualified"; 4 | 5 | message Unqualified{} 6 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/packages/import_prefix/import_prefix.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package packages.import_prefix; 3 | option go_package="example.com/packages/import_prefix"; 4 | 5 | import "targets/fully_qualified/fully_qualified.proto"; 6 | import "targets/unqualified/unqualified.proto"; 7 | import "targets/none/none.proto"; 8 | 9 | message ImportPrefixed { 10 | targets.fully_qualified.FullyQualified fully = 1; 11 | targets.unqualified.Unqualified unqualified = 2; 12 | targets.none.None none = 3; 13 | } 14 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/packages/mapped/mapped.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package packages.mapped; 3 | option go_package="example.com/packages/mapped"; 4 | 5 | import "targets/fully_qualified/fully_qualified.proto"; 6 | import "targets/unqualified/unqualified.proto"; 7 | import "targets/none/none.proto"; 8 | 9 | message Mapped { 10 | targets.fully_qualified.FullyQualified fully = 1; 11 | targets.unqualified.Unqualified unqualified = 2; 12 | targets.none.None none = 3; 13 | } 14 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/packages/no_options/no_options.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package packages.no_options; 3 | option go_package="example.com/packages/no_options"; 4 | 5 | import "targets/fully_qualified/fully_qualified.proto"; 6 | import "targets/unqualified/unqualified.proto"; 7 | import "targets/none/none.proto"; 8 | 9 | message NoOptions { 10 | targets.fully_qualified.FullyQualified fully = 1; 11 | targets.unqualified.Unqualified unqualified = 2; 12 | targets.none.None none = 3; 13 | } 14 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/packages/targets/fully_qualified/fully_qualified.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package packages.targets.fully_qualified; 3 | option go_package="example.com/packages/targets/fully_qualified"; 4 | 5 | message FullyQualified{} 6 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/packages/targets/none/none.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package packages.targets.none; 3 | 4 | message None{} 5 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/lang/go/testdata/packages/targets/unqualified/unqualified.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package packages.targets.unqualified; 3 | option go_package="unqualified"; 4 | 5 | message Unqualified{} 6 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/testdata/graph/extensions/ext/api.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package extensions.ext; 3 | option go_package = "ext"; 4 | 5 | import "google/protobuf/descriptor.proto"; 6 | 7 | extend google.protobuf.ServiceOptions { 8 | string host = 111111; 9 | } 10 | 11 | extend google.protobuf.MethodOptions { 12 | string header = 222222; 13 | } 14 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/testdata/graph/extensions/ext/data.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package extensions.ext; 3 | option go_package = "ext"; 4 | 5 | import "google/protobuf/descriptor.proto"; 6 | 7 | extend google.protobuf.MessageOptions { 8 | bool annotated = 123123; 9 | } 10 | 11 | extend google.protobuf.FieldOptions { 12 | string name = 456789; 13 | } 14 | 15 | message EnumExtension {} 16 | 17 | extend google.protobuf.EnumOptions { 18 | EnumExtension ext = 101112; 19 | } 20 | 21 | extend google.protobuf.EnumValueOptions { 22 | repeated int32 numbers = 131415; 23 | } 24 | 25 | extend google.protobuf.OneofOptions { 26 | double float = 161718; 27 | } 28 | 29 | extend google.protobuf.FileOptions { 30 | string owner = 192021; 31 | } 32 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/testdata/graph/info/info.proto: -------------------------------------------------------------------------------- 1 | // syntax 2 | syntax="proto3"; 3 | 4 | // package 5 | package graph.info; 6 | 7 | // root message 8 | message Info { 9 | // before message 10 | message Before {} 11 | 12 | // before enum 13 | enum BeforeEnum { 14 | // before enum value 15 | BEFORE = 0; 16 | } 17 | 18 | // field 19 | map field = 1; 20 | 21 | // middle message 22 | message Middle { 23 | // inner field 24 | bool inner = 1; 25 | } 26 | 27 | // other field 28 | repeated int32 other_field = 2; 29 | 30 | // after message 31 | message After {} 32 | 33 | // after enum 34 | enum AfterEnum { 35 | // after enum value 36 | AFTER = 0; 37 | } 38 | 39 | // oneof 40 | oneof OneOf { 41 | // oneof field 42 | After oneof_field = 3; 43 | } 44 | } 45 | 46 | // root enum comment 47 | enum Enum { 48 | // root enum value 49 | ROOT = 0; 50 | } 51 | 52 | // service 53 | service Service { 54 | // method 55 | rpc Method(Info) returns (Info); 56 | } 57 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/testdata/graph/messages/embedded.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package graph.messages; 3 | 4 | import "messages/scalars.proto"; 5 | import "google/protobuf/duration.proto"; 6 | 7 | message Before {} 8 | 9 | message Embedded { 10 | message NestedBefore {} 11 | 12 | Before local_before = 1; 13 | After local_after = 2; 14 | 15 | NestedBefore nested_before = 3; 16 | NestedAfter nested_after = 4; 17 | 18 | Scalars external_in_package = 5; 19 | google.protobuf.Duration external_3rd_party = 6; 20 | 21 | message NestedAfter {} 22 | } 23 | 24 | message After {} 25 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/testdata/graph/messages/enums.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package graph.messages; 3 | 4 | import "messages/enums_ext.proto"; 5 | import "google/protobuf/type.proto"; 6 | 7 | enum BeforeEnum { BEFORE_VALUE = 0; } 8 | 9 | message Enums { 10 | enum NestedBefore { BEFORE_VALUE = 0; } 11 | 12 | BeforeEnum before = 1; 13 | AfterEnum after = 2; 14 | 15 | NestedBefore nested_before = 3; 16 | NestedAfter nested_after = 4; 17 | 18 | External external_in_package = 5; 19 | google.protobuf.Syntax external_3rd_party = 6; 20 | 21 | enum NestedAfter { AFTER_VALUE = 0; } 22 | } 23 | 24 | enum AfterEnum { AFTER_VALUE = 0; } 25 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/testdata/graph/messages/enums_ext.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package graph.messages; 3 | 4 | enum External { EXT_VALUE = 0; } 5 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/testdata/graph/messages/oneofs.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package graph.messages; 3 | 4 | message OneOfs { 5 | string before = 1; 6 | 7 | oneof oneof { 8 | int32 inside = 2; 9 | } 10 | 11 | bool after = 3; 12 | } 13 | 14 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/testdata/graph/messages/recursive.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package graph.messages; 3 | 4 | message Recursive { 5 | Recursive recurse = 1; 6 | } 7 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/testdata/graph/messages/scalars.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package graph.messages; 3 | 4 | message Scalars { 5 | double double = 1; 6 | float float = 2; 7 | int32 int32 = 3; 8 | int64 int64 = 4; 9 | uint32 uint32 = 5; 10 | uint64 uint64 = 6; 11 | sint32 sint32 = 7; 12 | sint64 sint64 = 8; 13 | fixed32 fixed32 = 9; 14 | fixed64 fixed64 = 10; 15 | sfixed32 sfixed32 = 11; 16 | sfixed64 sfixed64 = 12; 17 | bool bool = 13; 18 | string string = 14; 19 | bytes bytes = 15; 20 | } 21 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/testdata/graph/nested/nested.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package graph.nested; 3 | 4 | message Foo { 5 | Bar x = 1; // usage before declaration 6 | 7 | // nested message 8 | message Bar { 9 | Baz a = 1; // usage before declaration 10 | 11 | // doubly nested enum 12 | enum Baz {VALUE = 0;} 13 | Baz b = 2; // usage after declaration 14 | 15 | // doubly nested message 16 | message Quux {} 17 | Quux c = 3; 18 | } 19 | 20 | Bar y = 2; // usage after declaration 21 | 22 | // same name, different scope 23 | enum Baz {VALUE = 0;} 24 | Baz shallow = 3; 25 | 26 | Bar.Baz deep = 4; // usage of deeply nested child enum 27 | } 28 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/testdata/graph/packageless/packageless.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | 3 | // no package declaration! 4 | 5 | message RootMessage { 6 | RootEnum field = 1; 7 | 8 | message NestedMsg {} 9 | 10 | enum NestedEnum { 11 | VALUE = 0; 12 | } 13 | } 14 | 15 | enum RootEnum { 16 | VALUE = 0; 17 | } 18 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/testdata/graph/services/services.proto: -------------------------------------------------------------------------------- 1 | syntax="proto3"; 2 | package graph.services; 3 | 4 | message BeforeRequest {} 5 | message BeforeResponse { 6 | int32 foo = 99; // comment 7 | } 8 | 9 | service Empty {} 10 | 11 | // unary only methods 12 | service Unary { 13 | // message come before 14 | rpc UnaryBefore(BeforeRequest) returns (BeforeResponse); 15 | 16 | // messages come after 17 | rpc UnaryAfter(AfterRequest) returns (AfterResponse); 18 | } 19 | 20 | service Streaming { 21 | rpc ClientStream(stream BeforeRequest) returns (BeforeResponse); 22 | rpc ServerStream(AfterRequest) returns (stream AfterResponse); 23 | rpc BiDiStream(stream BeforeRequest) returns (stream AfterResponse); 24 | } 25 | 26 | message AfterRequest {} 27 | message AfterResponse {} 28 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/testdata/protos/multipackage/bar/baz/quux.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package baz; 4 | option go_package = "github.com/lyft/protoc-gen-star/testdata/generated/multipackage/bar/baz"; 5 | 6 | message Quux { 7 | oneof id { 8 | uint32 number = 1; 9 | string name = 2; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/testdata/protos/multipackage/bar/buzz.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package bar; 4 | option go_package = "github.com/lyft/protoc-gen-star/testdata/generated/multipackage/bar"; 5 | 6 | import "multipackage/bar/baz/quux.proto"; 7 | 8 | message Buzz { 9 | uint64 id = 1; 10 | baz.Quux quux = 2; 11 | } 12 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/protoc-gen-validate/vendor/github.com/lyft/protoc-gen-star/testdata/protos/multipackage/foo/fizz.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package foo; 4 | option go_package = "github.com/lyft/protoc-gen-star/testdata/generated/multipackage/foo"; 5 | 6 | import "multipackage/bar/buzz.proto"; 7 | 8 | message Fizz { 9 | uint64 id = 1; 10 | bar.Buzz three_five = 2; 11 | } 12 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/xds/udpa/annotations/sensitive.proto: -------------------------------------------------------------------------------- 1 | // THIS FILE IS DEPRECATED 2 | // Users should instead use the corresponding proto in the xds tree. 3 | // No new changes will be accepted here. 4 | 5 | syntax = "proto3"; 6 | 7 | package udpa.annotations; 8 | 9 | import "google/protobuf/descriptor.proto"; 10 | 11 | option go_package = "github.com/cncf/xds/go/annotations"; 12 | 13 | extend google.protobuf.FieldOptions { 14 | // Magic number is the 28 most significant bits in the sha256sum of "udpa.annotations.sensitive". 15 | // When set to true, `sensitive` indicates that this field contains sensitive data, such as 16 | // personally identifiable information, passwords, or private keys, and should be redacted for 17 | // display by tools aware of this annotation. Note that that this has no effect on standard 18 | // Protobuf functions such as `TextFormat::PrintToString`. 19 | bool sensitive = 76569463; 20 | } 21 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/xds/udpa/annotations/versioning.proto: -------------------------------------------------------------------------------- 1 | // THIS FILE IS DEPRECATED 2 | // Users should instead use the corresponding proto in the xds tree. 3 | // No new changes will be accepted here. 4 | 5 | syntax = "proto3"; 6 | 7 | package udpa.annotations; 8 | 9 | import "google/protobuf/descriptor.proto"; 10 | 11 | option go_package = "github.com/cncf/xds/go/annotations"; 12 | 13 | extend google.protobuf.MessageOptions { 14 | // Magic number derived from 0x78 ('x') 0x44 ('D') 0x53 ('S') 15 | VersioningAnnotation versioning = 7881811; 16 | } 17 | 18 | message VersioningAnnotation { 19 | // Track the previous message type. E.g. this message might be 20 | // udpa.foo.v3alpha.Foo and it was previously udpa.bar.v2.Bar. This 21 | // information is consumed by UDPA via proto descriptors. 22 | string previous_message_type = 1; 23 | } 24 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/xds/xds/annotations/v3/security.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package xds.annotations.v3; 4 | 5 | import "xds/annotations/v3/status.proto"; 6 | 7 | import "google/protobuf/descriptor.proto"; 8 | 9 | option go_package = "github.com/cncf/xds/go/xds/annotations/v3"; 10 | 11 | // All annotations in this file are experimental and subject to change. Their 12 | // only consumer today is the Envoy APIs and SecuritAnnotationValidator protoc 13 | // plugin in this repository. 14 | option (xds.annotations.v3.file_status).work_in_progress = true; 15 | 16 | extend google.protobuf.FieldOptions { 17 | // Magic number is the 28 most significant bits in the sha256sum of 18 | // "xds.annotations.v3.security". 19 | FieldSecurityAnnotation security = 99044135; 20 | } 21 | 22 | // These annotations indicate metadata for the purpose of understanding the 23 | // security significance of fields. 24 | message FieldSecurityAnnotation { 25 | // Field should be set in the presence of untrusted downstreams. 26 | bool configure_for_untrusted_downstream = 1; 27 | 28 | // Field should be set in the presence of untrusted upstreams. 29 | bool configure_for_untrusted_upstream = 2; 30 | } 31 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/xds/xds/annotations/v3/sensitive.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package xds.annotations.v3; 4 | 5 | import "google/protobuf/descriptor.proto"; 6 | 7 | option go_package = "github.com/cncf/xds/go/xds/annotations/v3"; 8 | 9 | extend google.protobuf.FieldOptions { 10 | // Magic number is the 28 most significant bits in the sha256sum of "xds.annotations.v3.sensitive". 11 | // When set to true, `sensitive` indicates that this field contains sensitive data, such as 12 | // personally identifiable information, passwords, or private keys, and should be redacted for 13 | // display by tools aware of this annotation. Note that that this has no effect on standard 14 | // Protobuf functions such as `TextFormat::PrintToString`. 15 | bool sensitive = 61008053; 16 | } 17 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/xds/xds/annotations/v3/versioning.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package xds.annotations.v3; 4 | 5 | import "google/protobuf/descriptor.proto"; 6 | 7 | option go_package = "github.com/cncf/xds/go/xds/annotations/v3"; 8 | 9 | extend google.protobuf.MessageOptions { 10 | // Magic number is the 28 most significant bits in the sha256sum of 11 | // "xds.annotations.v3.versioning". 12 | VersioningAnnotation versioning = 92389011; 13 | } 14 | 15 | message VersioningAnnotation { 16 | // Track the previous message type. E.g. this message might be 17 | // xds.foo.v3alpha.Foo and it was previously xds.bar.v2.Bar. This 18 | // information is consumed by UDPA via proto descriptors. 19 | string previous_message_type = 1; 20 | } 21 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/xds/xds/core/v3/authority.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package xds.core.v3; 4 | 5 | import "xds/annotations/v3/status.proto"; 6 | 7 | import "validate/validate.proto"; 8 | 9 | option java_outer_classname = "AuthorityProto"; 10 | option java_multiple_files = true; 11 | option java_package = "com.github.xds.core.v3"; 12 | option go_package = "github.com/cncf/xds/go/xds/core/v3"; 13 | 14 | option (xds.annotations.v3.file_status).work_in_progress = true; 15 | 16 | // xDS authority information. 17 | message Authority { 18 | string name = 1 [(validate.rules).string = {min_len: 1}]; 19 | 20 | // .. space reserved for additional authority addressing information, e.g. for 21 | // resource signing, items such as CA trust chain, cert pinning may be added. 22 | } 23 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/xds/xds/core/v3/cidr.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package xds.core.v3; 4 | 5 | import "xds/annotations/v3/status.proto"; 6 | import "google/protobuf/wrappers.proto"; 7 | 8 | import "validate/validate.proto"; 9 | 10 | option java_outer_classname = "CidrRangeProto"; 11 | option java_multiple_files = true; 12 | option java_package = "com.github.xds.core.v3"; 13 | option go_package = "github.com/cncf/xds/go/xds/core/v3"; 14 | 15 | option (xds.annotations.v3.file_status).work_in_progress = true; 16 | 17 | // CidrRange specifies an IP Address and a prefix length to construct 18 | // the subnet mask for a `CIDR `_ range. 19 | message CidrRange { 20 | // IPv4 or IPv6 address, e.g. ``192.0.0.0`` or ``2001:db8::``. 21 | string address_prefix = 1 [(validate.rules).string = {min_len: 1}]; 22 | 23 | // Length of prefix, e.g. 0, 32. Defaults to 0 when unset. 24 | google.protobuf.UInt32Value prefix_len = 2 [(validate.rules).uint32 = {lte: 128}]; 25 | } 26 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/xds/xds/core/v3/context_params.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package xds.core.v3; 4 | 5 | import "xds/annotations/v3/status.proto"; 6 | 7 | option java_outer_classname = "ContextParamsProto"; 8 | option java_multiple_files = true; 9 | option java_package = "com.github.xds.core.v3"; 10 | option go_package = "github.com/cncf/xds/go/xds/core/v3"; 11 | 12 | option (xds.annotations.v3.file_status).work_in_progress = true; 13 | 14 | // Additional parameters that can be used to select resource variants. These include any 15 | // global context parameters, per-resource type client feature capabilities and per-resource 16 | // type functional attributes. All per-resource type attributes will be `xds.resource.` 17 | // prefixed and some of these are documented below: 18 | // `xds.resource.listening_address`: The value is "IP:port" (e.g. "10.1.1.3:8080") which is 19 | // the listening address of a Listener. Used in a Listener resource query. 20 | message ContextParams { 21 | map params = 1; 22 | } 23 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/xds/xds/core/v3/extension.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package xds.core.v3; 4 | 5 | option java_outer_classname = "ExtensionProto"; 6 | option java_multiple_files = true; 7 | option java_package = "com.github.xds.core.v3"; 8 | option go_package = "github.com/cncf/xds/go/xds/core/v3"; 9 | 10 | import "validate/validate.proto"; 11 | import "google/protobuf/any.proto"; 12 | 13 | // Message type for extension configuration. 14 | message TypedExtensionConfig { 15 | // The name of an extension. This is not used to select the extension, instead 16 | // it serves the role of an opaque identifier. 17 | string name = 1 [(validate.rules).string = {min_len: 1}]; 18 | 19 | // The typed config for the extension. The type URL will be used to identify 20 | // the extension. In the case that the type URL is *xds.type.v3.TypedStruct* 21 | // (or, for historical reasons, *udpa.type.v1.TypedStruct*), the inner type 22 | // URL of *TypedStruct* will be utilized. See the 23 | // :ref:`extension configuration overview 24 | // ` for further details. 25 | google.protobuf.Any typed_config = 2 [(validate.rules).any = {required: true}]; 26 | } 27 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/xds/xds/core/v3/resource.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package xds.core.v3; 4 | 5 | import "google/protobuf/any.proto"; 6 | 7 | import "xds/annotations/v3/status.proto"; 8 | import "xds/core/v3/resource_name.proto"; 9 | 10 | option java_outer_classname = "ResourceProto"; 11 | option java_multiple_files = true; 12 | option java_package = "com.github.xds.core.v3"; 13 | option go_package = "github.com/cncf/xds/go/xds/core/v3"; 14 | 15 | option (xds.annotations.v3.file_status).work_in_progress = true; 16 | 17 | // xDS resource wrapper. This encapsulates a xDS resource when appearing in an 18 | // xDS transport discovery response or when accessed as a filesystem object. 19 | message Resource { 20 | // Resource name. This may be omitted for filesystem resources. 21 | ResourceName name = 1; 22 | 23 | // The resource's logical version. It is illegal to have the same named xDS 24 | // resource name at a given version with different resource payloads. 25 | string version = 2; 26 | 27 | // The resource payload, including type URL. 28 | google.protobuf.Any resource = 3; 29 | } 30 | -------------------------------------------------------------------------------- /limitador-server/vendor/protobufs/xds/xds/type/v3/range.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package xds.type.v3; 4 | 5 | option java_package = "com.github.xds.type.v3"; 6 | option java_outer_classname = "RangeProto"; 7 | option java_multiple_files = true; 8 | option go_package = "github.com/cncf/xds/go/xds/type/v3"; 9 | 10 | // [#protodoc-title: Number range] 11 | 12 | // Specifies the int64 start and end of the range using half-open interval 13 | // semantics [start, end). 14 | message Int64Range { 15 | // start of the range (inclusive) 16 | int64 start = 1; 17 | 18 | // end of the range (exclusive) 19 | int64 end = 2; 20 | } 21 | 22 | // Specifies the int32 start and end of the range using half-open interval 23 | // semantics [start, end). 24 | message Int32Range { 25 | // start of the range (inclusive) 26 | int32 start = 1; 27 | 28 | // end of the range (exclusive) 29 | int32 end = 2; 30 | } 31 | 32 | // Specifies the double start and end of the range using half-open interval 33 | // semantics [start, end). 34 | message DoubleRange { 35 | // start of the range (inclusive) 36 | double start = 1; 37 | 38 | // end of the range (exclusive) 39 | double end = 2; 40 | } 41 | -------------------------------------------------------------------------------- /limitador/README.md: -------------------------------------------------------------------------------- 1 | # Limitador (library) 2 | 3 | [![Crates.io](https://img.shields.io/crates/v/limitador)](https://crates.io/crates/limitador) 4 | [![docs.rs](https://docs.rs/limitador/badge.svg)](https://docs.rs/limitador) 5 | 6 | An embeddable rate-limiter library supporting in-memory, Redis and disk data stores. 7 | 8 | For the complete documentation of the crate's API, please refer to [docs.rs](https://docs.rs/limitador/latest/limitador/) 9 | 10 | ## Features 11 | 12 | * `redis_storage`: support for using Redis as the data storage backend. 13 | * `disk_storage`: support for using RocksDB as a local disk storage backend. 14 | * `default`: `redis_storage`. 15 | -------------------------------------------------------------------------------- /limitador/build.rs: -------------------------------------------------------------------------------- 1 | use std::error::Error; 2 | use std::path::Path; 3 | 4 | fn main() -> Result<(), Box> { 5 | generate_protobuf() 6 | } 7 | 8 | fn generate_protobuf() -> Result<(), Box> { 9 | if cfg!(feature = "distributed_storage") { 10 | let proto_path: &Path = "proto/distributed.proto".as_ref(); 11 | 12 | let proto_dir = proto_path 13 | .parent() 14 | .expect("proto file should reside in a directory"); 15 | 16 | tonic_build::configure() 17 | .protoc_arg("--experimental_allow_proto3_optional") 18 | .compile_protos(&[proto_path], &[proto_dir])?; 19 | } 20 | 21 | Ok(()) 22 | } 23 | -------------------------------------------------------------------------------- /limitador/src/storage/disk/mod.rs: -------------------------------------------------------------------------------- 1 | use crate::storage::StorageErr; 2 | use rocksdb::ErrorKind; 3 | 4 | mod expiring_value; 5 | mod rocksdb_storage; 6 | 7 | pub use rocksdb_storage::RocksDbStorage as DiskStorage; 8 | 9 | impl From for StorageErr { 10 | fn from(error: rocksdb::Error) -> Self { 11 | let transient = error.kind() == ErrorKind::TimedOut || error.kind() == ErrorKind::TryAgain; 12 | Self { 13 | msg: format!("Underlying storage error: {error}"), 14 | source: Some(Box::new(error)), 15 | transient, 16 | } 17 | } 18 | } 19 | 20 | #[derive(PartialEq, Eq, Debug)] 21 | pub enum OptimizeFor { 22 | Space, 23 | Throughput, 24 | } 25 | -------------------------------------------------------------------------------- /limitador/tests/helpers/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod tests_limiter; 2 | --------------------------------------------------------------------------------