memos/server/router/mcp/origin.go

31 lines
732 B
Go

package mcp
import (
"net/url"
"strings"
"github.com/usememos/memos/internal/profile"
)
func isAllowedMCPOrigin(host string, origin string, profile *profile.Profile) bool {
if origin == "" {
return true
}
originURL, err := url.Parse(origin)
if err != nil || originURL.Scheme == "" || originURL.Host == "" {
return false
}
if strings.EqualFold(originURL.Host, host) {
return true
}
if profile == nil || profile.InstanceURL == "" {
return false
}
instanceURL, err := url.Parse(profile.InstanceURL)
if err != nil || instanceURL.Scheme == "" || instanceURL.Host == "" {
return false
}
return strings.EqualFold(originURL.Scheme, instanceURL.Scheme) && strings.EqualFold(originURL.Host, instanceURL.Host)
}