diff --git a/internal/web/actions/default/servers/server/settings/common/index.go b/internal/web/actions/default/servers/server/settings/common/index.go new file mode 100644 index 00000000..199444a7 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/common/index.go @@ -0,0 +1,61 @@ +// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved. + +package common + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/dao" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/iwind/TeaGo/actions" + "github.com/iwind/TeaGo/maps" +) + +type IndexAction struct { + actionutils.ParentAction +} + +func (this *IndexAction) Init() { + this.Nav("", "setting", "index") + this.SecondMenu("common") +} + +func (this *IndexAction) RunGet(params struct { + ServerId int64 +}) { + this.Data["hasGroupConfig"] = false + + webConfig, err := dao.SharedHTTPWebDAO.FindWebConfigWithServerId(this.AdminContext(), params.ServerId) + if err != nil { + this.ErrorPage(err) + return + } + + this.Data["webId"] = webConfig.Id + + this.Data["commonConfig"] = maps.Map{ + "mergeSlashes": webConfig.MergeSlashes, + } + + this.Show() +} + +func (this *IndexAction) RunPost(params struct { + WebId int64 + MergeSlashes bool + + Must *actions.Must + CSRF *actionutils.CSRF +}) { + defer this.CreateLogInfo("修改服务Web %d 设置的其他设置", params.WebId) + + _, err := this.RPC().HTTPWebRPC().UpdateHTTPWebCommon(this.AdminContext(), &pb.UpdateHTTPWebCommonRequest{ + HttpWebId: params.WebId, + MergeSlashes: params.MergeSlashes, + }) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/servers/server/settings/common/init.go b/internal/web/actions/default/servers/server/settings/common/init.go new file mode 100644 index 00000000..4eb5ca5b --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/common/init.go @@ -0,0 +1,19 @@ +package common + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/configloaders" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/serverutils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/helpers" + "github.com/iwind/TeaGo" +) + +func init() { + TeaGo.BeforeStart(func(server *TeaGo.Server) { + server. + Helper(helpers.NewUserMustAuth(configloaders.AdminModuleCodeServer)). + Helper(serverutils.NewServerHelper()). + Prefix("/servers/server/settings/common"). + GetPost("", new(IndexAction)). + EndAll() + }) +} diff --git a/internal/web/actions/default/servers/serverutils/server_helper.go b/internal/web/actions/default/servers/serverutils/server_helper.go index 5c4288e8..897655ca 100644 --- a/internal/web/actions/default/servers/serverutils/server_helper.go +++ b/internal/web/actions/default/servers/serverutils/server_helper.go @@ -357,6 +357,19 @@ func (this *ServerHelper) createSettingsMenu(secondMenuItem string, serverIdStri "isOn": serverConfig.TrafficLimit != nil && serverConfig.TrafficLimit.IsOn, }) } + + menuItems = append(menuItems, maps.Map{ + "name": "-", + "url": "", + "isActive": false, + }) + + menuItems = append(menuItems, maps.Map{ + "name": "其他设置", + "url": "/servers/server/settings/common?serverId=" + serverIdString, + "isActive": secondMenuItem == "common", + "isOn": serverConfig.Web != nil && serverConfig.Web.MergeSlashes, + }) } else if serverConfig.IsTCPFamily() { menuItems = append(menuItems, maps.Map{ "name": "TCP", diff --git a/internal/web/import.go b/internal/web/import.go index d94bdc4d..9348350e 100644 --- a/internal/web/import.go +++ b/internal/web/import.go @@ -57,6 +57,7 @@ import ( _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/accessLog" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/cache" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/charset" + _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/common" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/compression" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/conds" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/dns" diff --git a/web/public/js/components/server/http-common-config-box.js b/web/public/js/components/server/http-common-config-box.js new file mode 100644 index 00000000..9db7477e --- /dev/null +++ b/web/public/js/components/server/http-common-config-box.js @@ -0,0 +1,30 @@ +// 通用设置 +Vue.component("http-common-config-box", { + props: ["v-common-config"], + data: function () { + let config = this.vCommonConfig + if (config == null) { + config = { + mergeSlashes: false + } + } + return { + config: config + } + }, + template: `
| 合并重复的路径分隔符 | +
+
+
+
+
+ 合并URL中重复的路径分隔符为一个,比如 |
+