From 88a69ad0c9d1fff1593779d15ad075a581247d60 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Wed, 24 Nov 2021 14:49:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=A2=9E=E5=8A=A0=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E5=90=88=E5=B9=B6URL=E4=B8=AD=E7=9A=84=E5=A4=9A?= =?UTF-8?q?=E4=BD=99=E5=88=86=E9=9A=94=E7=AC=A6=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../servers/server/settings/common/index.go | 61 +++++++++++++++++++ .../servers/server/settings/common/init.go | 19 ++++++ .../servers/serverutils/server_helper.go | 13 ++++ internal/web/import.go | 1 + .../server/http-common-config-box.js | 30 +++++++++ .../servers/server/settings/common/index.html | 15 +++++ .../servers/server/settings/common/index.js | 3 + 7 files changed, 142 insertions(+) create mode 100644 internal/web/actions/default/servers/server/settings/common/index.go create mode 100644 internal/web/actions/default/servers/server/settings/common/init.go create mode 100644 web/public/js/components/server/http-common-config-box.js create mode 100644 web/views/@default/servers/server/settings/common/index.html create mode 100644 web/views/@default/servers/server/settings/common/index.js 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中重复的路径分隔符为一个,比如//hello/world中的//

+
+
+
` +}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/common/index.html b/web/views/@default/servers/server/settings/common/index.html new file mode 100644 index 00000000..f0129a17 --- /dev/null +++ b/web/views/@default/servers/server/settings/common/index.html @@ -0,0 +1,15 @@ +{$layout} + +{$template "/left_menu"} + +
+
+
+ + + + + +
+
+
\ No newline at end of file diff --git a/web/views/@default/servers/server/settings/common/index.js b/web/views/@default/servers/server/settings/common/index.js new file mode 100644 index 00000000..295a9aaf --- /dev/null +++ b/web/views/@default/servers/server/settings/common/index.js @@ -0,0 +1,3 @@ +Tea.context(function () { + this.success = NotifyReloadSuccess("保存成功") +}) \ No newline at end of file