internal/pkg/config/limits.go (72 lines of code) (raw):

// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one // or more contributor license agreements. Licensed under the Elastic License; // you may not use this file except in compliance with the Elastic License. package config import ( "time" ) type Limit struct { Interval time.Duration `config:"interval"` Burst int `config:"burst"` Max int64 `config:"max"` MaxBody int64 `config:"max_body_byte_size"` } type ServerLimits struct { MaxAgents int `config:"max_agents"` MaxHeaderByteSize int `config:"max_header_byte_size"` MaxConnections int `config:"max_connections"` ActionLimit Limit `config:"action_limit"` PolicyLimit Limit `config:"policy_limit"` CheckinLimit Limit `config:"checkin_limit"` ArtifactLimit Limit `config:"artifact_limit"` EnrollLimit Limit `config:"enroll_limit"` AckLimit Limit `config:"ack_limit"` StatusLimit Limit `config:"status_limit"` UploadStartLimit Limit `config:"upload_start_limit"` UploadEndLimit Limit `config:"upload_end_limit"` UploadChunkLimit Limit `config:"upload_chunk_limit"` DeliverFileLimit Limit `config:"file_delivery_limit"` GetPGPKey Limit `config:"pgp_retrieval_limit"` AuditUnenrollLimit Limit `config:"audit_unenroll_limit"` } // InitDefaults initializes the defaults for the configuration. func (c *ServerLimits) InitDefaults() {} func (c *ServerLimits) LoadLimits(limits *envLimits) { l := limits.Server if c.MaxHeaderByteSize == 0 { c.MaxHeaderByteSize = 8192 // 8k } if c.MaxConnections == 0 { c.MaxConnections = l.MaxConnections } c.ActionLimit = mergeEnvLimit(c.ActionLimit, l.ActionLimit) c.PolicyLimit = mergeEnvLimit(c.PolicyLimit, l.PolicyLimit) c.CheckinLimit = mergeEnvLimit(c.CheckinLimit, l.CheckinLimit) c.ArtifactLimit = mergeEnvLimit(c.ArtifactLimit, l.ArtifactLimit) c.EnrollLimit = mergeEnvLimit(c.EnrollLimit, l.EnrollLimit) c.AckLimit = mergeEnvLimit(c.AckLimit, l.AckLimit) c.StatusLimit = mergeEnvLimit(c.StatusLimit, l.StatusLimit) c.UploadStartLimit = mergeEnvLimit(c.UploadStartLimit, l.UploadStartLimit) c.UploadEndLimit = mergeEnvLimit(c.UploadEndLimit, l.UploadEndLimit) c.UploadChunkLimit = mergeEnvLimit(c.UploadChunkLimit, l.UploadChunkLimit) c.DeliverFileLimit = mergeEnvLimit(c.DeliverFileLimit, l.DeliverFileLimit) c.GetPGPKey = mergeEnvLimit(c.GetPGPKey, l.GetPGPKeyLimit) c.AuditUnenrollLimit = mergeEnvLimit(c.AuditUnenrollLimit, l.AuditUnenrollLimit) } func mergeEnvLimit(L Limit, l limit) Limit { result := Limit{ Interval: L.Interval, Burst: L.Burst, Max: L.Max, MaxBody: L.MaxBody, } if result.Interval == 0 { result.Interval = l.Interval } if result.Burst == 0 { result.Burst = l.Burst } if result.Max == 0 { result.Max = l.Max } if result.MaxBody == 0 { result.MaxBody = l.MaxBody } return result }