From 7210cd15f2c9f80f1fe28c1cf87e5550c9970c88 Mon Sep 17 00:00:00 2001 From: CityFun <31820853+zhengkunwang223@users.noreply.github.com> Date: Thu, 15 May 2025 18:47:12 +0800 Subject: [PATCH] feat: fix issue with error domain match (#8677) Refs https://github.com/1Panel-dev/1Panel/issues/8671 --- agent/app/service/app_utils.go | 10 +-- agent/app/service/nginx_utils.go | 26 ++++++++ agent/app/service/website.go | 66 ++++++++----------- agent/app/service/website_utils.go | 18 +++++ .../src/components/complex-table/index.vue | 7 -- frontend/src/views/website/website/index.vue | 2 +- 6 files changed, 80 insertions(+), 49 deletions(-) diff --git a/agent/app/service/app_utils.go b/agent/app/service/app_utils.go index fcc3efe6f..d95588d88 100644 --- a/agent/app/service/app_utils.go +++ b/agent/app/service/app_utils.go @@ -1855,7 +1855,7 @@ func handleOpenrestyFile(appInstall *model.AppInstall) error { break } } - if err := handleSSLConfig(appInstall); err != nil { + if err := handleSSLConfig(appInstall, hasDefaultWebsite); err != nil { return err } if len(websites) == 0 { @@ -1884,7 +1884,7 @@ func handleDefaultServer(appInstall *model.AppInstall) error { return nil } -func handleSSLConfig(appInstall *model.AppInstall) error { +func handleSSLConfig(appInstall *model.AppInstall, hasDefaultWebsite bool) error { sslDir := path.Join(appInstall.GetPath(), "conf", "ssl") fileOp := files.NewFileOp() if !fileOp.Stat(sslDir) { @@ -1923,9 +1923,11 @@ func handleSSLConfig(appInstall *model.AppInstall) error { } defaultConfig.FilePath = defaultConfigPath defaultServer := defaultConfig.FindServers()[0] - defaultServer.UpdateListen(fmt.Sprintf("%d", appInstall.HttpsPort), false, "ssl") + defaultServer.UpdateListen(fmt.Sprintf("%d", appInstall.HttpPort), !hasDefaultWebsite) + defaultServer.UpdateListen(fmt.Sprintf("[::]:%d", appInstall.HttpPort), !hasDefaultWebsite) + defaultServer.UpdateListen(fmt.Sprintf("%d", appInstall.HttpsPort), !hasDefaultWebsite, "ssl") + defaultServer.UpdateListen(fmt.Sprintf("[::]:%d", appInstall.HttpsPort), !hasDefaultWebsite, "ssl") defaultServer.UpdateListen(fmt.Sprintf("%d", appInstall.HttpsPort), false, "quic", "reuseport") - defaultServer.UpdateListen(fmt.Sprintf("[::]:%d", appInstall.HttpsPort), false, "ssl") defaultServer.UpdateListen(fmt.Sprintf("[::]:%d", appInstall.HttpsPort), false, "quic", "reuseport") defaultServer.UpdateDirective("include", []string{"/usr/local/openresty/nginx/conf/ssl/root_ssl.conf"}) defaultServer.UpdateDirective("http2", []string{"on"}) diff --git a/agent/app/service/nginx_utils.go b/agent/app/service/nginx_utils.go index 88e088a1b..114ab850c 100644 --- a/agent/app/service/nginx_utils.go +++ b/agent/app/service/nginx_utils.go @@ -103,6 +103,32 @@ func getNginxParamsByKeys(scope string, keys []string, website *model.Website) ( return res, nil } +func updateDefaultServerConfig(enable bool) error { + nginxInstall, err := getAppInstallByKey("openresty") + if err != nil { + return err + } + defaultConfigPath := path.Join(nginxInstall.GetPath(), "conf", "default", "00.default.conf") + content, err := os.ReadFile(defaultConfigPath) + if err != nil { + return err + } + defaultConfig, err := parser.NewStringParser(string(content)).Parse() + if err != nil { + return err + } + defaultConfig.FilePath = defaultConfigPath + defaultServer := defaultConfig.FindServers()[0] + defaultServer.UpdateListen(fmt.Sprintf("%d", nginxInstall.HttpPort), enable) + defaultServer.UpdateListen(fmt.Sprintf("[::]:%d", nginxInstall.HttpPort), enable) + defaultServer.UpdateListen(fmt.Sprintf("%d", nginxInstall.HttpsPort), enable, "ssl") + defaultServer.UpdateListen(fmt.Sprintf("[::]:%d", nginxInstall.HttpsPort), enable, "ssl") + if err = nginx.WriteConfig(defaultConfig, nginx.IndentedStyle); err != nil { + return err + } + return nginxCheckAndReload(string(content), defaultConfigPath, nginxInstall.ContainerName) +} + func updateNginxConfig(scope string, params []dto.NginxParam, website *model.Website) error { nginxFull, err := getNginxFull(website) if err != nil { diff --git a/agent/app/service/website.go b/agent/app/service/website.go index 2e6dc46a7..250f9051a 100644 --- a/agent/app/service/website.go +++ b/agent/app/service/website.go @@ -1296,44 +1296,36 @@ func (w WebsiteService) ChangeDefaultServer(id uint) error { return err } } - if id > 0 { - website, err := websiteRepo.GetFirst(repo.WithByID(id)) - if err != nil { - return err - } - params, err := getNginxParamsByKeys(constant.NginxScopeServer, []string{"listen"}, &website) - if err != nil { - return err - } - httpPort, httpsPort, err := getAppInstallPort(constant.AppOpenresty) - if err != nil { - return err - } - - var changeParams []dto.NginxParam - for _, param := range params { - paramLen := len(param.Params) - bind := param.Params[0] - var newParam []string - if bind == strconv.Itoa(httpPort) || bind == strconv.Itoa(httpsPort) || bind == "[::]:"+strconv.Itoa(httpPort) || bind == "[::]:"+strconv.Itoa(httpsPort) { - if param.Params[paramLen-1] == components.DefaultServer { - newParam = param.Params - } else { - newParam = append(param.Params, components.DefaultServer) - } - } - changeParams = append(changeParams, dto.NginxParam{ - Name: param.Name, - Params: newParam, - }) - } - if err := updateNginxConfig(constant.NginxScopeServer, changeParams, &website); err != nil { - return err - } - website.DefaultServer = true - return websiteRepo.Save(context.Background(), &website) + if err := updateDefaultServerConfig(!(id > 0)); err != nil { + return err } - return nil + if id == 0 { + return nil + } + website, err := websiteRepo.GetFirst(repo.WithByID(id)) + if err != nil { + return err + } + params, err := getNginxParamsByKeys(constant.NginxScopeServer, []string{"listen"}, &website) + if err != nil { + return err + } + var changeParams []dto.NginxParam + for _, param := range params { + if hasHttp3(param.Params) || hasDefaultServer(param.Params) { + continue + } + newParam := append(param.Params, components.DefaultServer) + changeParams = append(changeParams, dto.NginxParam{ + Name: param.Name, + Params: newParam, + }) + } + if err := updateNginxConfig(constant.NginxScopeServer, changeParams, &website); err != nil { + return err + } + website.DefaultServer = true + return websiteRepo.Save(context.Background(), &website) } func (w WebsiteService) ChangePHPVersion(req request.WebsitePHPVersionReq) error { diff --git a/agent/app/service/website_utils.go b/agent/app/service/website_utils.go index d619b53cc..10cc7d34d 100644 --- a/agent/app/service/website_utils.go +++ b/agent/app/service/website_utils.go @@ -1395,3 +1395,21 @@ func getSystemProxy(useProxy bool) *dto.SystemProxy { systemProxy, _ := settingService.GetSystemProxy() return systemProxy } + +func hasHttp3(params []string) bool { + for _, param := range params { + if param == "quic" { + return true + } + } + return false +} + +func hasDefaultServer(params []string) bool { + for _, param := range params { + if param == "default_server" { + return true + } + } + return false +} diff --git a/frontend/src/components/complex-table/index.vue b/frontend/src/components/complex-table/index.vue index 108abb081..b8d3fb253 100644 --- a/frontend/src/components/complex-table/index.vue +++ b/frontend/src/components/complex-table/index.vue @@ -99,13 +99,6 @@ defineExpose({ }); onMounted(() => { - if (props.paginationConfig?.cacheSizeKey) { - let itemSize = Number(localStorage.getItem(props.paginationConfig.cacheSizeKey)); - if (itemSize) { - props.paginationConfig.pageSize = itemSize; - sizeChange(); - } - } let heightDiff = 320; if (props.heightDiff) { heightDiff = props.heightDiff; diff --git a/frontend/src/views/website/website/index.vue b/frontend/src/views/website/website/index.vue index 040283797..4947d18ab 100644 --- a/frontend/src/views/website/website/index.vue +++ b/frontend/src/views/website/website/index.vue @@ -160,7 +160,7 @@