mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2026-11-07 00:05:14 +00:00
* feat(mcp): add 1Panel MCP and enhance MCP credential management * feat(i18n): implement MCP document localization and remove legacy code
32 lines
568 B
Go
32 lines
568 B
Go
package mcp
|
|
|
|
import (
|
|
"sync"
|
|
"time"
|
|
)
|
|
|
|
var ingress struct {
|
|
sync.Mutex
|
|
start int64
|
|
requests int
|
|
}
|
|
|
|
func AdmitIngress(now time.Time) error {
|
|
ingress.Lock()
|
|
defer ingress.Unlock()
|
|
if now.Unix() >= ingress.start+60 {
|
|
ingress.start = now.Unix()
|
|
ingress.requests = 0
|
|
}
|
|
if ingress.requests >= 1200 {
|
|
err := Fail("MCP_RATE_LIMITED", 429, "MCP entrance request limit exceeded")
|
|
err.RetryAfterSeconds = int(ingress.start + 60 - now.Unix())
|
|
if err.RetryAfterSeconds < 1 {
|
|
err.RetryAfterSeconds = 1
|
|
}
|
|
return err
|
|
}
|
|
ingress.requests++
|
|
return nil
|
|
}
|