ratelimit

package
v1.4.0-beta3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 10, 2020 License: Apache-2.0 Imports: 15 Imported by: 10

Documentation

Index

Constants

This section is empty.

Variables

View Source
var RateLimit_Unit_name = map[int32]string{
	0: "UNKNOWN",
	1: "SECOND",
	2: "MINUTE",
	3: "HOUR",
	4: "DAY",
}
View Source
var RateLimit_Unit_value = map[string]int32{
	"UNKNOWN": 0,
	"SECOND":  1,
	"MINUTE":  2,
	"HOUR":    3,
	"DAY":     4,
}

Functions

This section is empty.

Types

type Action

type Action struct {
	// Types that are valid to be assigned to ActionSpecifier:
	//	*Action_SourceCluster_
	//	*Action_DestinationCluster_
	//	*Action_RequestHeaders_
	//	*Action_RemoteAddress_
	//	*Action_GenericKey_
	//	*Action_HeaderValueMatch_
	ActionSpecifier      isAction_ActionSpecifier `protobuf_oneof:"action_specifier"`
	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
	XXX_unrecognized     []byte                   `json:"-"`
	XXX_sizecache        int32                    `json:"-"`
}

TODO(yuval-k): copied from envoy; will be removed and imported properly in a future when we vendor protos

func (*Action) Descriptor

func (*Action) Descriptor() ([]byte, []int)

func (*Action) Equal

func (this *Action) Equal(that interface{}) bool

func (*Action) GetActionSpecifier

func (m *Action) GetActionSpecifier() isAction_ActionSpecifier

func (*Action) GetDestinationCluster

func (m *Action) GetDestinationCluster() *Action_DestinationCluster

func (*Action) GetGenericKey

func (m *Action) GetGenericKey() *Action_GenericKey

func (*Action) GetHeaderValueMatch

func (m *Action) GetHeaderValueMatch() *Action_HeaderValueMatch

func (*Action) GetRemoteAddress

func (m *Action) GetRemoteAddress() *Action_RemoteAddress

func (*Action) GetRequestHeaders

func (m *Action) GetRequestHeaders() *Action_RequestHeaders

func (*Action) GetSourceCluster

func (m *Action) GetSourceCluster() *Action_SourceCluster

func (*Action) Hash added in v1.2.13

func (m *Action) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*Action) ProtoMessage

func (*Action) ProtoMessage()

func (*Action) Reset

func (m *Action) Reset()

func (*Action) String

func (m *Action) String() string

func (*Action) XXX_DiscardUnknown

func (m *Action) XXX_DiscardUnknown()

func (*Action) XXX_Marshal

func (m *Action) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Action) XXX_Merge

func (m *Action) XXX_Merge(src proto.Message)

func (*Action) XXX_OneofWrappers

func (*Action) XXX_OneofWrappers() []interface{}

XXX_OneofWrappers is for the internal use of the proto package.

func (*Action) XXX_Size

func (m *Action) XXX_Size() int

func (*Action) XXX_Unmarshal

func (m *Action) XXX_Unmarshal(b []byte) error

type Action_DestinationCluster

type Action_DestinationCluster struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

The following descriptor entry is appended to the descriptor:

```

("destination_cluster", "<routed target cluster>")

```

Once a request matches against a route table rule, a routed cluster is determined by one of the following `route table configuration (envoy_api_msg_RouteConfiguration)` settings:

  • `cluster (envoy_api_field_route.RouteAction.cluster)` indicates the upstream cluster to route to.
  • `weighted_clusters (envoy_api_field_route.RouteAction.weighted_clusters)` chooses a cluster randomly from a set of clusters with attributed weight.
  • `cluster_header (envoy_api_field_route.RouteAction.cluster_header)` indicates which header in the request contains the target cluster.

func (*Action_DestinationCluster) Descriptor

func (*Action_DestinationCluster) Descriptor() ([]byte, []int)

func (*Action_DestinationCluster) Equal

func (this *Action_DestinationCluster) Equal(that interface{}) bool

func (*Action_DestinationCluster) Hash added in v1.2.13

func (m *Action_DestinationCluster) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*Action_DestinationCluster) ProtoMessage

func (*Action_DestinationCluster) ProtoMessage()

func (*Action_DestinationCluster) Reset

func (m *Action_DestinationCluster) Reset()

func (*Action_DestinationCluster) String

func (m *Action_DestinationCluster) String() string

func (*Action_DestinationCluster) XXX_DiscardUnknown

func (m *Action_DestinationCluster) XXX_DiscardUnknown()

func (*Action_DestinationCluster) XXX_Marshal

func (m *Action_DestinationCluster) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Action_DestinationCluster) XXX_Merge

func (m *Action_DestinationCluster) XXX_Merge(src proto.Message)

func (*Action_DestinationCluster) XXX_Size

func (m *Action_DestinationCluster) XXX_Size() int

func (*Action_DestinationCluster) XXX_Unmarshal

func (m *Action_DestinationCluster) XXX_Unmarshal(b []byte) error

type Action_DestinationCluster_

type Action_DestinationCluster_ struct {
	DestinationCluster *Action_DestinationCluster `protobuf:"bytes,2,opt,name=destination_cluster,json=destinationCluster,proto3,oneof" json:"destination_cluster,omitempty"`
}

func (*Action_DestinationCluster_) Equal

func (this *Action_DestinationCluster_) Equal(that interface{}) bool

type Action_GenericKey

type Action_GenericKey struct {
	// The value to use in the descriptor entry.
	DescriptorValue      string   `protobuf:"bytes,1,opt,name=descriptor_value,json=descriptorValue,proto3" json:"descriptor_value,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

The following descriptor entry is appended to the descriptor:

```

("generic_key", "<descriptor_value>")

```

func (*Action_GenericKey) Descriptor

func (*Action_GenericKey) Descriptor() ([]byte, []int)

func (*Action_GenericKey) Equal

func (this *Action_GenericKey) Equal(that interface{}) bool

func (*Action_GenericKey) GetDescriptorValue

func (m *Action_GenericKey) GetDescriptorValue() string

func (*Action_GenericKey) Hash added in v1.2.13

func (m *Action_GenericKey) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*Action_GenericKey) ProtoMessage

func (*Action_GenericKey) ProtoMessage()

func (*Action_GenericKey) Reset

func (m *Action_GenericKey) Reset()

func (*Action_GenericKey) String

func (m *Action_GenericKey) String() string

func (*Action_GenericKey) XXX_DiscardUnknown

func (m *Action_GenericKey) XXX_DiscardUnknown()

func (*Action_GenericKey) XXX_Marshal

func (m *Action_GenericKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Action_GenericKey) XXX_Merge

func (m *Action_GenericKey) XXX_Merge(src proto.Message)

func (*Action_GenericKey) XXX_Size

func (m *Action_GenericKey) XXX_Size() int

func (*Action_GenericKey) XXX_Unmarshal

func (m *Action_GenericKey) XXX_Unmarshal(b []byte) error

type Action_GenericKey_

type Action_GenericKey_ struct {
	GenericKey *Action_GenericKey `protobuf:"bytes,5,opt,name=generic_key,json=genericKey,proto3,oneof" json:"generic_key,omitempty"`
}

func (*Action_GenericKey_) Equal

func (this *Action_GenericKey_) Equal(that interface{}) bool

type Action_HeaderValueMatch

type Action_HeaderValueMatch struct {
	// The value to use in the descriptor entry.
	DescriptorValue string `protobuf:"bytes,1,opt,name=descriptor_value,json=descriptorValue,proto3" json:"descriptor_value,omitempty"`
	// If set to true, the action will append a descriptor entry when the
	// request matches the headers. If set to false, the action will append a
	// descriptor entry when the request does not match the headers. The
	// default value is true.
	ExpectMatch *types.BoolValue `protobuf:"bytes,2,opt,name=expect_match,json=expectMatch,proto3" json:"expect_match,omitempty"`
	// Specifies a set of headers that the rate limit action should match
	// on. The action will check the request’s headers against all the
	// specified headers in the config. A match will happen if all the
	// headers in the config are present in the request with the same values
	// (or based on presence if the value field is not in the config).
	Headers              []*HeaderMatcher `protobuf:"bytes,3,rep,name=headers,proto3" json:"headers,omitempty"`
	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
	XXX_unrecognized     []byte           `json:"-"`
	XXX_sizecache        int32            `json:"-"`
}

The following descriptor entry is appended to the descriptor:

```

("header_match", "<descriptor_value>")

```

func (*Action_HeaderValueMatch) Descriptor

func (*Action_HeaderValueMatch) Descriptor() ([]byte, []int)

func (*Action_HeaderValueMatch) Equal

func (this *Action_HeaderValueMatch) Equal(that interface{}) bool

func (*Action_HeaderValueMatch) GetDescriptorValue

func (m *Action_HeaderValueMatch) GetDescriptorValue() string

func (*Action_HeaderValueMatch) GetExpectMatch

func (m *Action_HeaderValueMatch) GetExpectMatch() *types.BoolValue

func (*Action_HeaderValueMatch) GetHeaders

func (m *Action_HeaderValueMatch) GetHeaders() []*HeaderMatcher

func (*Action_HeaderValueMatch) Hash added in v1.2.13

func (m *Action_HeaderValueMatch) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*Action_HeaderValueMatch) ProtoMessage

func (*Action_HeaderValueMatch) ProtoMessage()

func (*Action_HeaderValueMatch) Reset

func (m *Action_HeaderValueMatch) Reset()

func (*Action_HeaderValueMatch) String

func (m *Action_HeaderValueMatch) String() string

func (*Action_HeaderValueMatch) XXX_DiscardUnknown

func (m *Action_HeaderValueMatch) XXX_DiscardUnknown()

func (*Action_HeaderValueMatch) XXX_Marshal

func (m *Action_HeaderValueMatch) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Action_HeaderValueMatch) XXX_Merge

func (m *Action_HeaderValueMatch) XXX_Merge(src proto.Message)

func (*Action_HeaderValueMatch) XXX_Size

func (m *Action_HeaderValueMatch) XXX_Size() int

func (*Action_HeaderValueMatch) XXX_Unmarshal

func (m *Action_HeaderValueMatch) XXX_Unmarshal(b []byte) error

type Action_HeaderValueMatch_

type Action_HeaderValueMatch_ struct {
	HeaderValueMatch *Action_HeaderValueMatch `protobuf:"bytes,6,opt,name=header_value_match,json=headerValueMatch,proto3,oneof" json:"header_value_match,omitempty"`
}

func (*Action_HeaderValueMatch_) Equal

func (this *Action_HeaderValueMatch_) Equal(that interface{}) bool

type Action_RemoteAddress

type Action_RemoteAddress struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

The following descriptor entry is appended to the descriptor and is populated using the trusted address from `x-forwarded-for (config_http_conn_man_headers_x-forwarded-for)`:

```

("remote_address", "<trusted address from x-forwarded-for>")

```

func (*Action_RemoteAddress) Descriptor

func (*Action_RemoteAddress) Descriptor() ([]byte, []int)

func (*Action_RemoteAddress) Equal

func (this *Action_RemoteAddress) Equal(that interface{}) bool

func (*Action_RemoteAddress) Hash added in v1.2.13

func (m *Action_RemoteAddress) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*Action_RemoteAddress) ProtoMessage

func (*Action_RemoteAddress) ProtoMessage()

func (*Action_RemoteAddress) Reset

func (m *Action_RemoteAddress) Reset()

func (*Action_RemoteAddress) String

func (m *Action_RemoteAddress) String() string

func (*Action_RemoteAddress) XXX_DiscardUnknown

func (m *Action_RemoteAddress) XXX_DiscardUnknown()

func (*Action_RemoteAddress) XXX_Marshal

func (m *Action_RemoteAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Action_RemoteAddress) XXX_Merge

func (m *Action_RemoteAddress) XXX_Merge(src proto.Message)

func (*Action_RemoteAddress) XXX_Size

func (m *Action_RemoteAddress) XXX_Size() int

func (*Action_RemoteAddress) XXX_Unmarshal

func (m *Action_RemoteAddress) XXX_Unmarshal(b []byte) error

type Action_RemoteAddress_

type Action_RemoteAddress_ struct {
	RemoteAddress *Action_RemoteAddress `protobuf:"bytes,4,opt,name=remote_address,json=remoteAddress,proto3,oneof" json:"remote_address,omitempty"`
}

func (*Action_RemoteAddress_) Equal

func (this *Action_RemoteAddress_) Equal(that interface{}) bool

type Action_RequestHeaders

type Action_RequestHeaders struct {
	// The header name to be queried from the request headers. The header’s
	// value is used to populate the value of the descriptor entry for the
	// descriptor_key.
	HeaderName string `protobuf:"bytes,1,opt,name=header_name,json=headerName,proto3" json:"header_name,omitempty"`
	// The key to use in the descriptor entry.
	DescriptorKey        string   `protobuf:"bytes,2,opt,name=descriptor_key,json=descriptorKey,proto3" json:"descriptor_key,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

The following descriptor entry is appended when a header contains a key that matches the *header_name*:

```

("<descriptor_key>", "<header_value_queried_from_header>")

```

func (*Action_RequestHeaders) Descriptor

func (*Action_RequestHeaders) Descriptor() ([]byte, []int)

func (*Action_RequestHeaders) Equal

func (this *Action_RequestHeaders) Equal(that interface{}) bool

func (*Action_RequestHeaders) GetDescriptorKey

func (m *Action_RequestHeaders) GetDescriptorKey() string

func (*Action_RequestHeaders) GetHeaderName

func (m *Action_RequestHeaders) GetHeaderName() string

func (*Action_RequestHeaders) Hash added in v1.2.13

func (m *Action_RequestHeaders) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*Action_RequestHeaders) ProtoMessage

func (*Action_RequestHeaders) ProtoMessage()

func (*Action_RequestHeaders) Reset

func (m *Action_RequestHeaders) Reset()

func (*Action_RequestHeaders) String

func (m *Action_RequestHeaders) String() string

func (*Action_RequestHeaders) XXX_DiscardUnknown

func (m *Action_RequestHeaders) XXX_DiscardUnknown()

func (*Action_RequestHeaders) XXX_Marshal

func (m *Action_RequestHeaders) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Action_RequestHeaders) XXX_Merge

func (m *Action_RequestHeaders) XXX_Merge(src proto.Message)

func (*Action_RequestHeaders) XXX_Size

func (m *Action_RequestHeaders) XXX_Size() int

func (*Action_RequestHeaders) XXX_Unmarshal

func (m *Action_RequestHeaders) XXX_Unmarshal(b []byte) error

type Action_RequestHeaders_

type Action_RequestHeaders_ struct {
	RequestHeaders *Action_RequestHeaders `protobuf:"bytes,3,opt,name=request_headers,json=requestHeaders,proto3,oneof" json:"request_headers,omitempty"`
}

func (*Action_RequestHeaders_) Equal

func (this *Action_RequestHeaders_) Equal(that interface{}) bool

type Action_SourceCluster

type Action_SourceCluster struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

The following descriptor entry is appended to the descriptor:

```

("source_cluster", "<local service cluster>")

```

<local service cluster> is derived from the :option:`--service-cluster` option.

func (*Action_SourceCluster) Descriptor

func (*Action_SourceCluster) Descriptor() ([]byte, []int)

func (*Action_SourceCluster) Equal

func (this *Action_SourceCluster) Equal(that interface{}) bool

func (*Action_SourceCluster) Hash added in v1.2.13

func (m *Action_SourceCluster) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*Action_SourceCluster) ProtoMessage

func (*Action_SourceCluster) ProtoMessage()

func (*Action_SourceCluster) Reset

func (m *Action_SourceCluster) Reset()

func (*Action_SourceCluster) String

func (m *Action_SourceCluster) String() string

func (*Action_SourceCluster) XXX_DiscardUnknown

func (m *Action_SourceCluster) XXX_DiscardUnknown()

func (*Action_SourceCluster) XXX_Marshal

func (m *Action_SourceCluster) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Action_SourceCluster) XXX_Merge

func (m *Action_SourceCluster) XXX_Merge(src proto.Message)

func (*Action_SourceCluster) XXX_Size

func (m *Action_SourceCluster) XXX_Size() int

func (*Action_SourceCluster) XXX_Unmarshal

func (m *Action_SourceCluster) XXX_Unmarshal(b []byte) error

type Action_SourceCluster_

type Action_SourceCluster_ struct {
	SourceCluster *Action_SourceCluster `protobuf:"bytes,1,opt,name=source_cluster,json=sourceCluster,proto3,oneof" json:"source_cluster,omitempty"`
}

func (*Action_SourceCluster_) Equal

func (this *Action_SourceCluster_) Equal(that interface{}) bool

type Descriptor

type Descriptor struct {
	Key         string        `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	Value       string        `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	RateLimit   *RateLimit    `protobuf:"bytes,3,opt,name=rate_limit,json=rateLimit,proto3" json:"rate_limit,omitempty"`
	Descriptors []*Descriptor `protobuf:"bytes,4,rep,name=descriptors,proto3" json:"descriptors,omitempty"`
	// Each top-level Descriptor defines a new Rate Limit "rule". When a request comes in, rate limit
	// actions are applied to the request to generate descriptor tuples that are sent to the rate limit
	// server. If any rule is triggered then the entire request returns HTTP 429 Too Many Requests.
	//
	// Typically, rule priority is signalled by nesting descriptors, as the most specific rule match for
	// the descriptor tuple generated by the rate limit actions is used. In rare cases this is too restrictive;
	// instead you can set rule priority by setting weights on your descriptors.
	//
	// All rules with the highest weight are processed, if any of these rules trigger rate limiting then the
	// entire request will return a 429. Rules that are not considered for rate limiting are ignored in the
	// rate limit server, and their request count is not incremented in the rate limit server cache.
	//
	// Defaults to 0; thus all rules are evaluated by default.
	Weight uint32 `protobuf:"varint,5,opt,name=weight,proto3" json:"weight,omitempty"`
	// A boolean override for rule priority via weighted rules. Any rule with `alwaysApply` set to `true` will
	// always be considered for rate limiting, regardless of the rule's weight. The rule with the highest weight
	// will still be considered. (this can be a rule that also has `alwaysApply` set to `true`)
	//
	// Defaults to false.
	AlwaysApply          bool     `protobuf:"varint,6,opt,name=always_apply,json=alwaysApply,proto3" json:"always_apply,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

Descriptors can be nested for your convenience and flexibility

func (*Descriptor) Descriptor

func (*Descriptor) Descriptor() ([]byte, []int)

func (*Descriptor) Equal

func (this *Descriptor) Equal(that interface{}) bool

func (*Descriptor) GetAlwaysApply added in v1.2.0

func (m *Descriptor) GetAlwaysApply() bool

func (*Descriptor) GetDescriptors

func (m *Descriptor) GetDescriptors() []*Descriptor

func (*Descriptor) GetKey

func (m *Descriptor) GetKey() string

func (*Descriptor) GetRateLimit

func (m *Descriptor) GetRateLimit() *RateLimit

func (*Descriptor) GetValue

func (m *Descriptor) GetValue() string

func (*Descriptor) GetWeight added in v1.2.0

func (m *Descriptor) GetWeight() uint32

func (*Descriptor) Hash added in v1.2.13

func (m *Descriptor) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*Descriptor) ProtoMessage

func (*Descriptor) ProtoMessage()

func (*Descriptor) Reset

func (m *Descriptor) Reset()

func (*Descriptor) String

func (m *Descriptor) String() string

func (*Descriptor) XXX_DiscardUnknown

func (m *Descriptor) XXX_DiscardUnknown()

func (*Descriptor) XXX_Marshal

func (m *Descriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Descriptor) XXX_Merge

func (m *Descriptor) XXX_Merge(src proto.Message)

func (*Descriptor) XXX_Size

func (m *Descriptor) XXX_Size() int

func (*Descriptor) XXX_Unmarshal

func (m *Descriptor) XXX_Unmarshal(b []byte) error

type HeaderMatcher

type HeaderMatcher struct {
	// Specifies the name of the header in the request.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Specifies how the header match will be performed to route the request.
	//
	// Types that are valid to be assigned to HeaderMatchSpecifier:
	//	*HeaderMatcher_ExactMatch
	//	*HeaderMatcher_RegexMatch
	//	*HeaderMatcher_RangeMatch
	//	*HeaderMatcher_PresentMatch
	//	*HeaderMatcher_PrefixMatch
	//	*HeaderMatcher_SuffixMatch
	HeaderMatchSpecifier isHeaderMatcher_HeaderMatchSpecifier `protobuf_oneof:"header_match_specifier"`
	// If specified, the match result will be inverted before checking. Defaults to false.
	//
	// Examples:
	//
	// * The regex *\d{3}* does not match the value *1234*, so it will match when inverted.
	// * The range [-10,0) will match the value -1, so it will not match when inverted.
	InvertMatch          bool     `protobuf:"varint,8,opt,name=invert_match,json=invertMatch,proto3" json:"invert_match,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*HeaderMatcher) Descriptor

func (*HeaderMatcher) Descriptor() ([]byte, []int)

func (*HeaderMatcher) Equal

func (this *HeaderMatcher) Equal(that interface{}) bool

func (*HeaderMatcher) GetExactMatch

func (m *HeaderMatcher) GetExactMatch() string

func (*HeaderMatcher) GetHeaderMatchSpecifier

func (m *HeaderMatcher) GetHeaderMatchSpecifier() isHeaderMatcher_HeaderMatchSpecifier

func (*HeaderMatcher) GetInvertMatch

func (m *HeaderMatcher) GetInvertMatch() bool

func (*HeaderMatcher) GetName

func (m *HeaderMatcher) GetName() string

func (*HeaderMatcher) GetPrefixMatch

func (m *HeaderMatcher) GetPrefixMatch() string

func (*HeaderMatcher) GetPresentMatch

func (m *HeaderMatcher) GetPresentMatch() bool

func (*HeaderMatcher) GetRangeMatch

func (m *HeaderMatcher) GetRangeMatch() *Int64Range

func (*HeaderMatcher) GetRegexMatch

func (m *HeaderMatcher) GetRegexMatch() string

func (*HeaderMatcher) GetSuffixMatch

func (m *HeaderMatcher) GetSuffixMatch() string

func (*HeaderMatcher) Hash added in v1.2.13

func (m *HeaderMatcher) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*HeaderMatcher) ProtoMessage

func (*HeaderMatcher) ProtoMessage()

func (*HeaderMatcher) Reset

func (m *HeaderMatcher) Reset()

func (*HeaderMatcher) String

func (m *HeaderMatcher) String() string

func (*HeaderMatcher) XXX_DiscardUnknown

func (m *HeaderMatcher) XXX_DiscardUnknown()

func (*HeaderMatcher) XXX_Marshal

func (m *HeaderMatcher) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*HeaderMatcher) XXX_Merge

func (m *HeaderMatcher) XXX_Merge(src proto.Message)

func (*HeaderMatcher) XXX_OneofWrappers

func (*HeaderMatcher) XXX_OneofWrappers() []interface{}

XXX_OneofWrappers is for the internal use of the proto package.

func (*HeaderMatcher) XXX_Size

func (m *HeaderMatcher) XXX_Size() int

func (*HeaderMatcher) XXX_Unmarshal

func (m *HeaderMatcher) XXX_Unmarshal(b []byte) error

type HeaderMatcher_ExactMatch

type HeaderMatcher_ExactMatch struct {
	ExactMatch string `protobuf:"bytes,4,opt,name=exact_match,json=exactMatch,proto3,oneof" json:"exact_match,omitempty"`
}

func (*HeaderMatcher_ExactMatch) Equal

func (this *HeaderMatcher_ExactMatch) Equal(that interface{}) bool

type HeaderMatcher_PrefixMatch

type HeaderMatcher_PrefixMatch struct {
	PrefixMatch string `protobuf:"bytes,9,opt,name=prefix_match,json=prefixMatch,proto3,oneof" json:"prefix_match,omitempty"`
}

func (*HeaderMatcher_PrefixMatch) Equal

func (this *HeaderMatcher_PrefixMatch) Equal(that interface{}) bool

type HeaderMatcher_PresentMatch

type HeaderMatcher_PresentMatch struct {
	PresentMatch bool `protobuf:"varint,7,opt,name=present_match,json=presentMatch,proto3,oneof" json:"present_match,omitempty"`
}

func (*HeaderMatcher_PresentMatch) Equal

func (this *HeaderMatcher_PresentMatch) Equal(that interface{}) bool

type HeaderMatcher_RangeMatch

type HeaderMatcher_RangeMatch struct {
	RangeMatch *Int64Range `protobuf:"bytes,6,opt,name=range_match,json=rangeMatch,proto3,oneof" json:"range_match,omitempty"`
}

func (*HeaderMatcher_RangeMatch) Equal

func (this *HeaderMatcher_RangeMatch) Equal(that interface{}) bool

type HeaderMatcher_RegexMatch

type HeaderMatcher_RegexMatch struct {
	RegexMatch string `protobuf:"bytes,5,opt,name=regex_match,json=regexMatch,proto3,oneof" json:"regex_match,omitempty"`
}

func (*HeaderMatcher_RegexMatch) Equal

func (this *HeaderMatcher_RegexMatch) Equal(that interface{}) bool

type HeaderMatcher_SuffixMatch

type HeaderMatcher_SuffixMatch struct {
	SuffixMatch string `protobuf:"bytes,10,opt,name=suffix_match,json=suffixMatch,proto3,oneof" json:"suffix_match,omitempty"`
}

func (*HeaderMatcher_SuffixMatch) Equal

func (this *HeaderMatcher_SuffixMatch) Equal(that interface{}) bool

type IngressRateLimit

type IngressRateLimit struct {
	AuthorizedLimits     *RateLimit `protobuf:"bytes,1,opt,name=authorized_limits,json=authorizedLimits,proto3" json:"authorized_limits,omitempty"`
	AnonymousLimits      *RateLimit `protobuf:"bytes,2,opt,name=anonymous_limits,json=anonymousLimits,proto3" json:"anonymous_limits,omitempty"`
	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
	XXX_unrecognized     []byte     `json:"-"`
	XXX_sizecache        int32      `json:"-"`
}

Basic rate-limiting API

func (*IngressRateLimit) Descriptor

func (*IngressRateLimit) Descriptor() ([]byte, []int)

func (*IngressRateLimit) Equal

func (this *IngressRateLimit) Equal(that interface{}) bool

func (*IngressRateLimit) GetAnonymousLimits

func (m *IngressRateLimit) GetAnonymousLimits() *RateLimit

func (*IngressRateLimit) GetAuthorizedLimits

func (m *IngressRateLimit) GetAuthorizedLimits() *RateLimit

func (*IngressRateLimit) Hash added in v1.2.13

func (m *IngressRateLimit) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*IngressRateLimit) ProtoMessage

func (*IngressRateLimit) ProtoMessage()

func (*IngressRateLimit) Reset

func (m *IngressRateLimit) Reset()

func (*IngressRateLimit) String

func (m *IngressRateLimit) String() string

func (*IngressRateLimit) XXX_DiscardUnknown

func (m *IngressRateLimit) XXX_DiscardUnknown()

func (*IngressRateLimit) XXX_Marshal

func (m *IngressRateLimit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*IngressRateLimit) XXX_Merge

func (m *IngressRateLimit) XXX_Merge(src proto.Message)

func (*IngressRateLimit) XXX_Size

func (m *IngressRateLimit) XXX_Size() int

func (*IngressRateLimit) XXX_Unmarshal

func (m *IngressRateLimit) XXX_Unmarshal(b []byte) error

type Int64Range

type Int64Range struct {
	// start of the range (inclusive)
	Start int64 `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"`
	// end of the range (exclusive)
	End                  int64    `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

Specifies the int64 start and end of the range using half-open interval semantics [start, end).

func (*Int64Range) Descriptor

func (*Int64Range) Descriptor() ([]byte, []int)

func (*Int64Range) Equal

func (this *Int64Range) Equal(that interface{}) bool

func (*Int64Range) GetEnd

func (m *Int64Range) GetEnd() int64

func (*Int64Range) GetStart

func (m *Int64Range) GetStart() int64

func (*Int64Range) Hash added in v1.2.13

func (m *Int64Range) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*Int64Range) ProtoMessage

func (*Int64Range) ProtoMessage()

func (*Int64Range) Reset

func (m *Int64Range) Reset()

func (*Int64Range) String

func (m *Int64Range) String() string

func (*Int64Range) XXX_DiscardUnknown

func (m *Int64Range) XXX_DiscardUnknown()

func (*Int64Range) XXX_Marshal

func (m *Int64Range) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Int64Range) XXX_Merge

func (m *Int64Range) XXX_Merge(src proto.Message)

func (*Int64Range) XXX_Size

func (m *Int64Range) XXX_Size() int

func (*Int64Range) XXX_Unmarshal

func (m *Int64Range) XXX_Unmarshal(b []byte) error

type QueryParameterMatcher

type QueryParameterMatcher struct {
	// Specifies the name of a key that must be present in the requested
	// *path*'s query string.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Specifies the value of the key. If the value is absent, a request
	// that contains the key in its query string will match, whether the
	// key appears with a value (e.g., "?debug=true") or not (e.g., "?debug")
	Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
	// Specifies whether the query parameter value is a regular expression.
	// Defaults to false. The entire query parameter value (i.e., the part to
	// the right of the equals sign in "key=value") must match the regex.
	// E.g., the regex "\d+$" will match "123" but not "a123" or "123a".
	Regex                *types.BoolValue `protobuf:"bytes,4,opt,name=regex,proto3" json:"regex,omitempty"`
	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
	XXX_unrecognized     []byte           `json:"-"`
	XXX_sizecache        int32            `json:"-"`
}

Query parameter matching treats the query string of a request's :path header as an ampersand-separated list of keys and/or key=value elements.

func (*QueryParameterMatcher) Descriptor

func (*QueryParameterMatcher) Descriptor() ([]byte, []int)

func (*QueryParameterMatcher) Equal

func (this *QueryParameterMatcher) Equal(that interface{}) bool

func (*QueryParameterMatcher) GetName

func (m *QueryParameterMatcher) GetName() string

func (*QueryParameterMatcher) GetRegex

func (m *QueryParameterMatcher) GetRegex() *types.BoolValue

func (*QueryParameterMatcher) GetValue

func (m *QueryParameterMatcher) GetValue() string

func (*QueryParameterMatcher) Hash added in v1.2.13

func (m *QueryParameterMatcher) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*QueryParameterMatcher) ProtoMessage

func (*QueryParameterMatcher) ProtoMessage()

func (*QueryParameterMatcher) Reset

func (m *QueryParameterMatcher) Reset()

func (*QueryParameterMatcher) String

func (m *QueryParameterMatcher) String() string

func (*QueryParameterMatcher) XXX_DiscardUnknown

func (m *QueryParameterMatcher) XXX_DiscardUnknown()

func (*QueryParameterMatcher) XXX_Marshal

func (m *QueryParameterMatcher) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*QueryParameterMatcher) XXX_Merge

func (m *QueryParameterMatcher) XXX_Merge(src proto.Message)

func (*QueryParameterMatcher) XXX_Size

func (m *QueryParameterMatcher) XXX_Size() int

func (*QueryParameterMatcher) XXX_Unmarshal

func (m *QueryParameterMatcher) XXX_Unmarshal(b []byte) error

type RateLimit

type RateLimit struct {
	Unit                 RateLimit_Unit `protobuf:"varint,1,opt,name=unit,proto3,enum=ratelimit.options.gloo.solo.io.RateLimit_Unit" json:"unit,omitempty"`
	RequestsPerUnit      uint32         `protobuf:"varint,2,opt,name=requests_per_unit,json=requestsPerUnit,proto3" json:"requests_per_unit,omitempty"`
	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
	XXX_unrecognized     []byte         `json:"-"`
	XXX_sizecache        int32          `json:"-"`
}

func (*RateLimit) Descriptor

func (*RateLimit) Descriptor() ([]byte, []int)

func (*RateLimit) Equal

func (this *RateLimit) Equal(that interface{}) bool

func (*RateLimit) GetRequestsPerUnit

func (m *RateLimit) GetRequestsPerUnit() uint32

func (*RateLimit) GetUnit

func (m *RateLimit) GetUnit() RateLimit_Unit

func (*RateLimit) Hash added in v1.2.13

func (m *RateLimit) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*RateLimit) ProtoMessage

func (*RateLimit) ProtoMessage()

func (*RateLimit) Reset

func (m *RateLimit) Reset()

func (*RateLimit) String

func (m *RateLimit) String() string

func (*RateLimit) XXX_DiscardUnknown

func (m *RateLimit) XXX_DiscardUnknown()

func (*RateLimit) XXX_Marshal

func (m *RateLimit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*RateLimit) XXX_Merge

func (m *RateLimit) XXX_Merge(src proto.Message)

func (*RateLimit) XXX_Size

func (m *RateLimit) XXX_Size() int

func (*RateLimit) XXX_Unmarshal

func (m *RateLimit) XXX_Unmarshal(b []byte) error

type RateLimitActions

type RateLimitActions struct {
	// descriptors:
	//- key: account_id
	//  descriptors:
	//  - key: plan
	//    value: BASIC
	//    rateLimit:
	//      requestsPerUnit: 1
	//      unit: MINUTE
	//  - key: plan
	//    value: PLUS
	//    rateLimit:
	//      requestsPerUnit: 20
	//      unit: MINUTE
	Actions              []*Action `protobuf:"bytes,2,rep,name=actions,proto3" json:"actions,omitempty"`
	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
	XXX_unrecognized     []byte    `json:"-"`
	XXX_sizecache        int32     `json:"-"`
}

func (*RateLimitActions) Descriptor

func (*RateLimitActions) Descriptor() ([]byte, []int)

func (*RateLimitActions) Equal

func (this *RateLimitActions) Equal(that interface{}) bool

func (*RateLimitActions) GetActions

func (m *RateLimitActions) GetActions() []*Action

func (*RateLimitActions) Hash added in v1.2.13

func (m *RateLimitActions) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*RateLimitActions) ProtoMessage

func (*RateLimitActions) ProtoMessage()

func (*RateLimitActions) Reset

func (m *RateLimitActions) Reset()

func (*RateLimitActions) String

func (m *RateLimitActions) String() string

func (*RateLimitActions) XXX_DiscardUnknown

func (m *RateLimitActions) XXX_DiscardUnknown()

func (*RateLimitActions) XXX_Marshal

func (m *RateLimitActions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*RateLimitActions) XXX_Merge

func (m *RateLimitActions) XXX_Merge(src proto.Message)

func (*RateLimitActions) XXX_Size

func (m *RateLimitActions) XXX_Size() int

func (*RateLimitActions) XXX_Unmarshal

func (m *RateLimitActions) XXX_Unmarshal(b []byte) error

type RateLimitRouteExtension

type RateLimitRouteExtension struct {
	// Whether or not to include rate limits as defined on the VirtualHost in addition to rate limits on the Route
	IncludeVhRateLimits bool `protobuf:"varint,1,opt,name=include_vh_rate_limits,json=includeVhRateLimits,proto3" json:"include_vh_rate_limits,omitempty"`
	// Define individual rate limits here. Each rate limit will be evaluated, if any rate limit
	// would be throttled, the entire request returns a 429 (gets throttled)
	RateLimits           []*RateLimitActions `protobuf:"bytes,2,rep,name=rate_limits,json=rateLimits,proto3" json:"rate_limits,omitempty"`
	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
	XXX_unrecognized     []byte              `json:"-"`
	XXX_sizecache        int32               `json:"-"`
}

func (*RateLimitRouteExtension) Descriptor

func (*RateLimitRouteExtension) Descriptor() ([]byte, []int)

func (*RateLimitRouteExtension) Equal

func (this *RateLimitRouteExtension) Equal(that interface{}) bool

func (*RateLimitRouteExtension) GetIncludeVhRateLimits

func (m *RateLimitRouteExtension) GetIncludeVhRateLimits() bool

func (*RateLimitRouteExtension) GetRateLimits

func (m *RateLimitRouteExtension) GetRateLimits() []*RateLimitActions

func (*RateLimitRouteExtension) Hash added in v1.2.13

func (m *RateLimitRouteExtension) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*RateLimitRouteExtension) ProtoMessage

func (*RateLimitRouteExtension) ProtoMessage()

func (*RateLimitRouteExtension) Reset

func (m *RateLimitRouteExtension) Reset()

func (*RateLimitRouteExtension) String

func (m *RateLimitRouteExtension) String() string

func (*RateLimitRouteExtension) XXX_DiscardUnknown

func (m *RateLimitRouteExtension) XXX_DiscardUnknown()

func (*RateLimitRouteExtension) XXX_Marshal

func (m *RateLimitRouteExtension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*RateLimitRouteExtension) XXX_Merge

func (m *RateLimitRouteExtension) XXX_Merge(src proto.Message)

func (*RateLimitRouteExtension) XXX_Size

func (m *RateLimitRouteExtension) XXX_Size() int

func (*RateLimitRouteExtension) XXX_Unmarshal

func (m *RateLimitRouteExtension) XXX_Unmarshal(b []byte) error

type RateLimitVhostExtension

type RateLimitVhostExtension struct {
	// Define individual rate limits here. Each rate limit will be evaluated, if any rate limit
	// would be throttled, the entire request returns a 429 (gets throttled)
	RateLimits           []*RateLimitActions `protobuf:"bytes,1,rep,name=rate_limits,json=rateLimits,proto3" json:"rate_limits,omitempty"`
	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
	XXX_unrecognized     []byte              `json:"-"`
	XXX_sizecache        int32               `json:"-"`
}

func (*RateLimitVhostExtension) Descriptor

func (*RateLimitVhostExtension) Descriptor() ([]byte, []int)

func (*RateLimitVhostExtension) Equal

func (this *RateLimitVhostExtension) Equal(that interface{}) bool

func (*RateLimitVhostExtension) GetRateLimits

func (m *RateLimitVhostExtension) GetRateLimits() []*RateLimitActions

func (*RateLimitVhostExtension) Hash added in v1.2.13

func (m *RateLimitVhostExtension) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*RateLimitVhostExtension) ProtoMessage

func (*RateLimitVhostExtension) ProtoMessage()

func (*RateLimitVhostExtension) Reset

func (m *RateLimitVhostExtension) Reset()

func (*RateLimitVhostExtension) String

func (m *RateLimitVhostExtension) String() string

func (*RateLimitVhostExtension) XXX_DiscardUnknown

func (m *RateLimitVhostExtension) XXX_DiscardUnknown()

func (*RateLimitVhostExtension) XXX_Marshal

func (m *RateLimitVhostExtension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*RateLimitVhostExtension) XXX_Merge

func (m *RateLimitVhostExtension) XXX_Merge(src proto.Message)

func (*RateLimitVhostExtension) XXX_Size

func (m *RateLimitVhostExtension) XXX_Size() int

func (*RateLimitVhostExtension) XXX_Unmarshal

func (m *RateLimitVhostExtension) XXX_Unmarshal(b []byte) error

type RateLimit_Unit

type RateLimit_Unit int32
const (
	RateLimit_UNKNOWN RateLimit_Unit = 0
	RateLimit_SECOND  RateLimit_Unit = 1
	RateLimit_MINUTE  RateLimit_Unit = 2
	RateLimit_HOUR    RateLimit_Unit = 3
	RateLimit_DAY     RateLimit_Unit = 4
)

func (RateLimit_Unit) EnumDescriptor

func (RateLimit_Unit) EnumDescriptor() ([]byte, []int)

func (RateLimit_Unit) String

func (x RateLimit_Unit) String() string

type ServiceSettings

type ServiceSettings struct {
	Descriptors          []*Descriptor `protobuf:"bytes,1,rep,name=descriptors,proto3" json:"descriptors,omitempty"`
	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
	XXX_unrecognized     []byte        `json:"-"`
	XXX_sizecache        int32         `json:"-"`
}

API based on Envoy's rate-limit service API. (reference here: https://github.com/lyft/ratelimit#configuration) Sample configuration below

descriptors:

  • key: account_id descriptors:
  • key: plan value: BASIC rateLimit: requestsPerUnit: 1 unit: MINUTE
  • key: plan value: PLUS rateLimit: requestsPerUnit: 20 unit: MINUTE

func (*ServiceSettings) Descriptor

func (*ServiceSettings) Descriptor() ([]byte, []int)

func (*ServiceSettings) Equal

func (this *ServiceSettings) Equal(that interface{}) bool

func (*ServiceSettings) GetDescriptors

func (m *ServiceSettings) GetDescriptors() []*Descriptor

func (*ServiceSettings) Hash added in v1.2.13

func (m *ServiceSettings) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*ServiceSettings) ProtoMessage

func (*ServiceSettings) ProtoMessage()

func (*ServiceSettings) Reset

func (m *ServiceSettings) Reset()

func (*ServiceSettings) String

func (m *ServiceSettings) String() string

func (*ServiceSettings) XXX_DiscardUnknown

func (m *ServiceSettings) XXX_DiscardUnknown()

func (*ServiceSettings) XXX_Marshal

func (m *ServiceSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ServiceSettings) XXX_Merge

func (m *ServiceSettings) XXX_Merge(src proto.Message)

func (*ServiceSettings) XXX_Size

func (m *ServiceSettings) XXX_Size() int

func (*ServiceSettings) XXX_Unmarshal

func (m *ServiceSettings) XXX_Unmarshal(b []byte) error

type Settings

type Settings struct {
	RatelimitServerRef *core.ResourceRef `protobuf:"bytes,1,opt,name=ratelimit_server_ref,json=ratelimitServerRef,proto3" json:"ratelimit_server_ref,omitempty"`
	RequestTimeout     *time.Duration    `protobuf:"bytes,2,opt,name=request_timeout,json=requestTimeout,proto3,stdduration" json:"request_timeout,omitempty"`
	DenyOnFail         bool              `protobuf:"varint,3,opt,name=deny_on_fail,json=denyOnFail,proto3" json:"deny_on_fail,omitempty"`
	// Set this is set to true if you would like to rate limit traffic before applying external auth to it.
	// *Note*: When this is true, you will lose some features like being able to rate limit a request based on its auth state
	RateLimitBeforeAuth  bool     `protobuf:"varint,9,opt,name=rate_limit_before_auth,json=rateLimitBeforeAuth,proto3" json:"rate_limit_before_auth,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*Settings) Descriptor

func (*Settings) Descriptor() ([]byte, []int)

func (*Settings) Equal

func (this *Settings) Equal(that interface{}) bool

func (*Settings) GetDenyOnFail

func (m *Settings) GetDenyOnFail() bool

func (*Settings) GetRateLimitBeforeAuth

func (m *Settings) GetRateLimitBeforeAuth() bool

func (*Settings) GetRatelimitServerRef

func (m *Settings) GetRatelimitServerRef() *core.ResourceRef

func (*Settings) GetRequestTimeout

func (m *Settings) GetRequestTimeout() *time.Duration

func (*Settings) Hash added in v1.2.13

func (m *Settings) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*Settings) ProtoMessage

func (*Settings) ProtoMessage()

func (*Settings) Reset

func (m *Settings) Reset()

func (*Settings) String

func (m *Settings) String() string

func (*Settings) XXX_DiscardUnknown

func (m *Settings) XXX_DiscardUnknown()

func (*Settings) XXX_Marshal

func (m *Settings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Settings) XXX_Merge

func (m *Settings) XXX_Merge(src proto.Message)

func (*Settings) XXX_Size

func (m *Settings) XXX_Size() int

func (*Settings) XXX_Unmarshal

func (m *Settings) XXX_Unmarshal(b []byte) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL