28 lines
683 B
Go
28 lines
683 B
Go
package middlewares
|
|
|
|
import (
|
|
"github.com/mayswind/ezbookkeeping/pkg/core"
|
|
"github.com/mayswind/ezbookkeeping/pkg/errs"
|
|
"github.com/mayswind/ezbookkeeping/pkg/settings"
|
|
"github.com/mayswind/ezbookkeeping/pkg/utils"
|
|
)
|
|
|
|
// MCPServerIpLimit limits access to the MCP server based on IP address.
|
|
func MCPServerIpLimit(config *settings.Config) core.MiddlewareHandlerFunc {
|
|
return func(c *core.WebContext) {
|
|
if len(config.MCPAllowedRemoteIPs) < 1 {
|
|
c.Next()
|
|
return
|
|
}
|
|
|
|
for i := 0; i < len(config.MCPAllowedRemoteIPs); i++ {
|
|
if config.MCPAllowedRemoteIPs[i].Match(c.ClientIP()) {
|
|
c.Next()
|
|
return
|
|
}
|
|
}
|
|
|
|
utils.PrintJsonErrorResult(c, errs.ErrIPForbidden)
|
|
}
|
|
}
|