This commit is contained in:
Mateusz Gruszczyński committed 2026-11-04 23:44:40 +01:00
1 parent 50b53e72f0
commit 439cc20dcf
6 files changed
+110 -8

No files matched your search

+42
View File
@@ -30,6 +30,18 @@ type Config struct {
RRDPath string
GraphDir string
StatsInterval time.Duration
// Per-IP rate limiting. Off by default -- see README "Rate limiting"
// for what each endpoint's limit protects against and reasonable
// values if you turn it on.
RateLimitEnabled bool
RateLimitStats int
RateLimitStatsLive int
RateLimitGraph int
RateLimitChannel int
RateLimitVerify int
RateLimitVerifyDone int
RateLimitCreate int
}
func Load() (Config, error) {
@@ -86,6 +98,36 @@ func Load() (Config, error) {
if c.StatsInterval < 10*time.Second {
return c, errors.New("STATS_INTERVAL must be at least 10s")
}
c.RateLimitEnabled = envBool("RATE_LIMIT_ENABLED", false)
c.RateLimitStats, err = envInt("RATE_LIMIT_STATS", 60)
if err != nil {
return c, err
}
c.RateLimitStatsLive, err = envInt("RATE_LIMIT_STATS_LIVE", 60)
if err != nil {
return c, err
}
c.RateLimitGraph, err = envInt("RATE_LIMIT_GRAPH", 600)
if err != nil {
return c, err
}
c.RateLimitChannel, err = envInt("RATE_LIMIT_CHANNEL", 40)
if err != nil {
return c, err
}
c.RateLimitVerify, err = envInt("RATE_LIMIT_VERIFY", 10)
if err != nil {
return c, err
}
c.RateLimitVerifyDone, err = envInt("RATE_LIMIT_VERIFY_DONE", 10)
if err != nil {
return c, err
}
c.RateLimitCreate, err = envInt("RATE_LIMIT_CREATE", 5)
if err != nil {
return c, err
}
return c, nil
}