From 342c04b30a2fc4d01e40fd25b4b06e9ac9146de6 Mon Sep 17 00:00:00 2001 From: zhengkunwang <31820853+zhengkunwang223@users.noreply.github.com> Date: Wed, 9 Apr 2025 11:55:56 +0800 Subject: [PATCH] fix: fix issue with mcp bind website (#8356) --- backend/app/repo/group.go | 7 +++++++ backend/app/service/mcp_server.go | 25 +++++++++++++++---------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/backend/app/repo/group.go b/backend/app/repo/group.go index 5384e188d..caf89e59f 100644 --- a/backend/app/repo/group.go +++ b/backend/app/repo/group.go @@ -16,6 +16,7 @@ type IGroupRepo interface { Delete(opts ...DBOption) error CancelDefault(groupType string) error WithByHostDefault() DBOption + WithByWebsiteDefault() DBOption } func NewIGroupRepo() IGroupRepo { @@ -56,6 +57,12 @@ func (u *GroupRepo) WithByHostDefault() DBOption { } } +func (u *GroupRepo) WithByWebsiteDefault() DBOption { + return func(g *gorm.DB) *gorm.DB { + return g.Where("is_default = ? AND type = ?", 1, "website") + } +} + func (u *GroupRepo) Delete(opts ...DBOption) error { db := global.DB for _, opt := range opts { diff --git a/backend/app/service/mcp_server.go b/backend/app/service/mcp_server.go index 049b27687..cc766d94d 100644 --- a/backend/app/service/mcp_server.go +++ b/backend/app/service/mcp_server.go @@ -279,10 +279,12 @@ func (m McpServerService) BindDomain(req request.McpBindDomain) error { return buserr.New("ErrSSL") } } + group, _ := groupRepo.Get(groupRepo.WithByWebsiteDefault()) createWebsiteReq := request.WebsiteCreate{ - PrimaryDomain: req.Domain, - Alias: strings.ToLower(req.Domain), - Type: constant.Static, + PrimaryDomain: req.Domain, + Alias: strings.ToLower(req.Domain), + Type: constant.Static, + WebsiteGroupID: group.ID, } websiteService := NewIWebsiteService() if err := websiteService.CreateWebsite(createWebsiteReq); err != nil { @@ -386,13 +388,16 @@ func updateMcpConfig(websiteID uint) { } else { baseUrl = fmt.Sprintf("https://%s", websiteDomain.Domain) } - for _, server := range servers { - if server.BaseURL != baseUrl { - server.BaseURL = baseUrl - server.HostIP = "127.0.0.1" - go updateMcpServer(&server) + + go func() { + for _, server := range servers { + if server.BaseURL != baseUrl { + server.BaseURL = baseUrl + server.HostIP = "127.0.0.1" + _ = updateMcpServer(&server) + } } - } + }() } func addProxy(server *model.McpServer) { @@ -502,13 +507,13 @@ func updateMcpServer(mcpServer *model.McpServer) error { if err := gotenv.Write(env, path.Join(mcpServer.Dir, ".env")); err != nil { return err } + _ = mcpServerRepo.Save(mcpServer) composePath := path.Join(constant.McpDir, mcpServer.Name, "docker-compose.yml") _, _ = compose.Down(composePath) if _, err := compose.Up(composePath); err != nil { mcpServer.Status = constant.RuntimeError mcpServer.Message = err.Error() } - return mcpServerRepo.Save(mcpServer) }