4cddfcf2f3
Backend Tests / Tests (other) (push) Failing after 1s
Backend Tests / Static Checks (push) Failing after 2s
Backend Tests / Tests (internal) (push) Failing after 2s
Backend Tests / Tests (server) (push) Failing after 1s
Backend Tests / Tests (store) (push) Failing after 1s
Build Canary Image / build-frontend (push) Failing after 1s
Frontend Tests / Lint (push) Failing after 1s
Build Canary Image / build-push (linux/amd64) (push) Has been skipped
Build Canary Image / build-push (linux/arm64) (push) Has been skipped
Build Canary Image / merge (push) Has been skipped
Frontend Tests / Build (push) Failing after 1s
Release Please / release-please (push) Failing after 0s
Proto Linter / Lint Protos (push) Failing after 2s
32 lines
732 B
Go
32 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)
|
|
}
|