145 lines
6.6 KiB
Go
145 lines
6.6 KiB
Go
|
package middleware
|
||
|
|
||
|
import "github.com/hashicorp/consul/agent/consul/rate"
|
||
|
|
||
|
// Maps each net/rpc endpoint to a read or write operation type
|
||
|
// for rate limiting purposes. Please be sure to update this list
|
||
|
// if a net/rpc endpoint is removed.
|
||
|
var rpcRateLimitSpecs = map[string]rate.OperationType{
|
||
|
"ACL.AuthMethodDelete": rate.OperationTypeWrite,
|
||
|
"ACL.AuthMethodList": rate.OperationTypeRead,
|
||
|
"ACL.AuthMethodRead": rate.OperationTypeRead,
|
||
|
"ACL.AuthMethodSet": rate.OperationTypeWrite,
|
||
|
"ACL.Authorize": rate.OperationTypeRead,
|
||
|
"ACL.BindingRuleDelete": rate.OperationTypeWrite,
|
||
|
"ACL.BindingRuleList": rate.OperationTypeRead,
|
||
|
"ACL.BindingRuleRead": rate.OperationTypeRead,
|
||
|
"ACL.BindingRuleSet": rate.OperationTypeWrite,
|
||
|
"ACL.BootstrapTokens": rate.OperationTypeRead,
|
||
|
"ACL.Login": rate.OperationTypeWrite,
|
||
|
"ACL.Logout": rate.OperationTypeWrite,
|
||
|
"ACL.PolicyBatchRead": rate.OperationTypeRead,
|
||
|
"ACL.PolicyDelete": rate.OperationTypeWrite,
|
||
|
"ACL.PolicyList": rate.OperationTypeRead,
|
||
|
"ACL.PolicyRead": rate.OperationTypeRead,
|
||
|
"ACL.PolicyResolve": rate.OperationTypeRead,
|
||
|
"ACL.PolicySet": rate.OperationTypeWrite,
|
||
|
"ACL.ReplicationStatus": rate.OperationTypeRead,
|
||
|
"ACL.RoleBatchRead": rate.OperationTypeRead,
|
||
|
"ACL.RoleDelete": rate.OperationTypeWrite,
|
||
|
"ACL.RoleList": rate.OperationTypeRead,
|
||
|
"ACL.RoleRead": rate.OperationTypeRead,
|
||
|
"ACL.RoleResolve": rate.OperationTypeRead,
|
||
|
"ACL.RoleSet": rate.OperationTypeWrite,
|
||
|
"ACL.TokenBatchRead": rate.OperationTypeRead,
|
||
|
"ACL.TokenClone": rate.OperationTypeRead,
|
||
|
"ACL.TokenDelete": rate.OperationTypeWrite,
|
||
|
"ACL.TokenList": rate.OperationTypeRead,
|
||
|
"ACL.TokenRead": rate.OperationTypeRead,
|
||
|
"ACL.TokenSet": rate.OperationTypeWrite,
|
||
|
|
||
|
"AutoConfig.InitialConfiguration": rate.OperationTypeRead,
|
||
|
|
||
|
"AutoEncrypt.Sign": rate.OperationTypeWrite,
|
||
|
|
||
|
"Catalog.Deregister": rate.OperationTypeWrite,
|
||
|
"Catalog.GatewayServices": rate.OperationTypeRead,
|
||
|
"Catalog.ListDatacenters": rate.OperationTypeRead,
|
||
|
"Catalog.ListNodes": rate.OperationTypeRead,
|
||
|
"Catalog.ListServices": rate.OperationTypeRead,
|
||
|
"Catalog.NodeServiceList": rate.OperationTypeRead,
|
||
|
"Catalog.NodeServices": rate.OperationTypeRead,
|
||
|
"Catalog.Register": rate.OperationTypeWrite,
|
||
|
"Catalog.ServiceList": rate.OperationTypeRead,
|
||
|
"Catalog.ServiceNodes": rate.OperationTypeRead,
|
||
|
"Catalog.VirtualIPForService": rate.OperationTypeRead,
|
||
|
|
||
|
"ConfigEntry.Apply": rate.OperationTypeWrite,
|
||
|
"ConfigEntry.Delete": rate.OperationTypeWrite,
|
||
|
"ConfigEntry.Get": rate.OperationTypeRead,
|
||
|
"ConfigEntry.List": rate.OperationTypeRead,
|
||
|
"ConfigEntry.ListAll": rate.OperationTypeRead,
|
||
|
"ConfigEntry.ResolveServiceConfig": rate.OperationTypeRead,
|
||
|
|
||
|
"ConnectCA.ConfigurationGet": rate.OperationTypeRead,
|
||
|
"ConnectCA.ConfigurationSet": rate.OperationTypeWrite,
|
||
|
"ConnectCA.Roots": rate.OperationTypeRead,
|
||
|
"ConnectCA.Sign": rate.OperationTypeWrite,
|
||
|
"ConnectCA.SignIntermediate": rate.OperationTypeWrite,
|
||
|
|
||
|
"Coordinate.ListDatacenters": rate.OperationTypeRead,
|
||
|
"Coordinate.ListNodes": rate.OperationTypeRead,
|
||
|
"Coordinate.Node": rate.OperationTypeRead,
|
||
|
"Coordinate.Update": rate.OperationTypeWrite,
|
||
|
|
||
|
"DiscoveryChain.Get": rate.OperationTypeRead,
|
||
|
|
||
|
"FederationState.Apply": rate.OperationTypeWrite,
|
||
|
"FederationState.Delete": rate.OperationTypeWrite,
|
||
|
"FederationState.Get": rate.OperationTypeRead,
|
||
|
"FederationState.List": rate.OperationTypeRead,
|
||
|
"FederationState.ListMeshGateways": rate.OperationTypeRead,
|
||
|
|
||
|
"Health.ChecksInState": rate.OperationTypeRead,
|
||
|
"Health.NodeChecks": rate.OperationTypeRead,
|
||
|
"Health.ServiceChecks": rate.OperationTypeRead,
|
||
|
"Health.ServiceNodes": rate.OperationTypeRead,
|
||
|
|
||
|
"Intention.Apply": rate.OperationTypeWrite,
|
||
|
"Intention.Check": rate.OperationTypeRead,
|
||
|
"Intention.Get": rate.OperationTypeRead,
|
||
|
"Intention.List": rate.OperationTypeRead,
|
||
|
"Intention.Match": rate.OperationTypeRead,
|
||
|
|
||
|
"Internal.CatalogOverview": rate.OperationTypeRead,
|
||
|
"Internal.EventFire": rate.OperationTypeWrite,
|
||
|
"Internal.ExportedPeeredServices": rate.OperationTypeRead,
|
||
|
"Internal.ExportedServicesForPeer": rate.OperationTypeRead,
|
||
|
"Internal.GatewayIntentions": rate.OperationTypeRead,
|
||
|
"Internal.GatewayServiceDump": rate.OperationTypeRead,
|
||
|
"Internal.IntentionUpstreams": rate.OperationTypeRead,
|
||
|
"Internal.IntentionUpstreamsDestination": rate.OperationTypeRead,
|
||
|
"Internal.KeyringOperation": rate.OperationTypeRead,
|
||
|
"Internal.NodeDump": rate.OperationTypeRead,
|
||
|
"Internal.NodeInfo": rate.OperationTypeRead,
|
||
|
"Internal.PeeredUpstreams": rate.OperationTypeRead,
|
||
|
"Internal.ServiceDump": rate.OperationTypeRead,
|
||
|
"Internal.ServiceGateways": rate.OperationTypeRead,
|
||
|
"Internal.ServiceTopology": rate.OperationTypeRead,
|
||
|
|
||
|
"KVS.Apply": rate.OperationTypeWrite,
|
||
|
"KVS.Get": rate.OperationTypeRead,
|
||
|
"KVS.List": rate.OperationTypeRead,
|
||
|
"KVS.ListKeys": rate.OperationTypeRead,
|
||
|
|
||
|
"Operator.AutopilotGetConfiguration": rate.OperationTypeExempt,
|
||
|
"Operator.AutopilotSetConfiguration": rate.OperationTypeExempt,
|
||
|
"Operator.AutopilotState": rate.OperationTypeExempt,
|
||
|
"Operator.RaftGetConfiguration": rate.OperationTypeExempt,
|
||
|
"Operator.RaftRemovePeerByAddress": rate.OperationTypeExempt,
|
||
|
"Operator.RaftRemovePeerByID": rate.OperationTypeExempt,
|
||
|
"Operator.ServerHealth": rate.OperationTypeExempt,
|
||
|
|
||
|
"PreparedQuery.Apply": rate.OperationTypeWrite,
|
||
|
"PreparedQuery.Execute": rate.OperationTypeRead,
|
||
|
"PreparedQuery.ExecuteRemote": rate.OperationTypeRead,
|
||
|
"PreparedQuery.Explain": rate.OperationTypeRead,
|
||
|
"PreparedQuery.Get": rate.OperationTypeRead,
|
||
|
"PreparedQuery.List": rate.OperationTypeRead,
|
||
|
|
||
|
"Session.Apply": rate.OperationTypeWrite,
|
||
|
"Session.Check": rate.OperationTypeRead,
|
||
|
"Session.Get": rate.OperationTypeRead,
|
||
|
"Session.List": rate.OperationTypeRead,
|
||
|
"Session.NodeSessions": rate.OperationTypeRead,
|
||
|
"Session.Renew": rate.OperationTypeWrite,
|
||
|
|
||
|
"Status.Leader": rate.OperationTypeExempt,
|
||
|
"Status.Peers": rate.OperationTypeExempt,
|
||
|
"Status.Ping": rate.OperationTypeExempt,
|
||
|
"Status.RaftStats": rate.OperationTypeExempt,
|
||
|
|
||
|
"Txn.Apply": rate.OperationTypeWrite,
|
||
|
"Txn.Read": rate.OperationTypeRead,
|
||
|
}
|