diff --git a/internal/web/actions/default/servers/server/settings/locations/locationutils/location_helper.go b/internal/web/actions/default/servers/server/settings/locations/locationutils/location_helper.go index 9a5e457b..6cd3477a 100644 --- a/internal/web/actions/default/servers/server/settings/locations/locationutils/location_helper.go +++ b/internal/web/actions/default/servers/server/settings/locations/locationutils/location_helper.go @@ -109,6 +109,12 @@ func (this *LocationHelper) createMenus(serverIdString string, locationIdString "isActive": secondMenuItem == "referer", "isOn": locationConfig.Web != nil && locationConfig.Web.Referers != nil && locationConfig.Web.Referers.IsPrior, }) + menuItems = append(menuItems, maps.Map{ + "name": "UA名单", + "url": "/servers/server/settings/locations/userAgent?serverId=" + serverIdString + "&locationId=" + locationIdString, + "isActive": secondMenuItem == "userAgent", + "isOn": locationConfig.Web != nil && locationConfig.Web.UserAgent != nil && locationConfig.Web.UserAgent.IsPrior, + }) menuItems = append(menuItems, maps.Map{ "name": "字符编码", "url": "/servers/server/settings/locations/charset?serverId=" + serverIdString + "&locationId=" + locationIdString, diff --git a/internal/web/actions/default/servers/server/settings/locations/referers/index.go b/internal/web/actions/default/servers/server/settings/locations/referers/index.go index e30aec39..4dbccffe 100644 --- a/internal/web/actions/default/servers/server/settings/locations/referers/index.go +++ b/internal/web/actions/default/servers/server/settings/locations/referers/index.go @@ -1,6 +1,6 @@ // Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved. -package uam +package referers import ( "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" diff --git a/internal/web/actions/default/servers/server/settings/locations/referers/init.go b/internal/web/actions/default/servers/server/settings/locations/referers/init.go index f4a1e460..0bb96132 100644 --- a/internal/web/actions/default/servers/server/settings/locations/referers/init.go +++ b/internal/web/actions/default/servers/server/settings/locations/referers/init.go @@ -1,4 +1,4 @@ -package uam +package referers import ( "github.com/TeaOSLab/EdgeAdmin/internal/configloaders" diff --git a/internal/web/actions/default/servers/server/settings/locations/userAgent/index.go b/internal/web/actions/default/servers/server/settings/locations/userAgent/index.go new file mode 100644 index 00000000..494079ac --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/userAgent/index.go @@ -0,0 +1,62 @@ +// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved. + +package useragent + +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/TeaOSLab/EdgeCommon/pkg/serverconfigs" + "github.com/iwind/TeaGo/actions" +) + +type IndexAction struct { + actionutils.ParentAction +} + +func (this *IndexAction) Init() { + this.Nav("", "setting", "index") + this.SecondMenu("userAgent") +} + +func (this *IndexAction) RunGet(params struct { + LocationId int64 +}) { + webConfig, err := dao.SharedHTTPWebDAO.FindWebConfigWithLocationId(this.AdminContext(), params.LocationId) + if err != nil { + this.ErrorPage(err) + return + } + + this.Data["webId"] = webConfig.Id + + var userAgentConfig = webConfig.UserAgent + if userAgentConfig == nil { + userAgentConfig = serverconfigs.NewUserAgentConfig() + } + + this.Data["userAgentConfig"] = userAgentConfig + + this.Show() +} + +func (this *IndexAction) RunPost(params struct { + WebId int64 + UserAgentJSON []byte + + Must *actions.Must + CSRF *actionutils.CSRF +}) { + defer this.CreateLogInfo("修改Web %d User-Agent设置", params.WebId) + + _, err := this.RPC().HTTPWebRPC().UpdateHTTPWebUserAgent(this.AdminContext(), &pb.UpdateHTTPWebUserAgentRequest{ + HttpWebId: params.WebId, + UserAgentJSON: params.UserAgentJSON, + }) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/servers/server/settings/locations/userAgent/init.go b/internal/web/actions/default/servers/server/settings/locations/userAgent/init.go new file mode 100644 index 00000000..debd17be --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/userAgent/init.go @@ -0,0 +1,22 @@ +package useragent + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/configloaders" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/locations/locationutils" + "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(locationutils.NewLocationHelper()). + Helper(serverutils.NewServerHelper()). + Data("tinyMenuItem", "userAgent"). + Prefix("/servers/server/settings/locations/userAgent"). + GetPost("", new(IndexAction)). + EndAll() + }) +} diff --git a/internal/web/actions/default/servers/server/settings/referers/index.go b/internal/web/actions/default/servers/server/settings/referers/index.go index 60049a43..1aa6f3ae 100644 --- a/internal/web/actions/default/servers/server/settings/referers/index.go +++ b/internal/web/actions/default/servers/server/settings/referers/index.go @@ -1,6 +1,6 @@ // Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved. -package uam +package referers import ( "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" diff --git a/internal/web/actions/default/servers/server/settings/referers/init.go b/internal/web/actions/default/servers/server/settings/referers/init.go index 4ecb4874..8dcab903 100644 --- a/internal/web/actions/default/servers/server/settings/referers/init.go +++ b/internal/web/actions/default/servers/server/settings/referers/init.go @@ -1,4 +1,4 @@ -package uam +package referers import ( "github.com/TeaOSLab/EdgeAdmin/internal/configloaders" diff --git a/internal/web/actions/default/servers/server/settings/userAgent/index.go b/internal/web/actions/default/servers/server/settings/userAgent/index.go new file mode 100644 index 00000000..0a82053a --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/userAgent/index.go @@ -0,0 +1,64 @@ +// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved. + +package useragent + +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/TeaOSLab/EdgeCommon/pkg/serverconfigs" + "github.com/iwind/TeaGo/actions" +) + +type IndexAction struct { + actionutils.ParentAction +} + +func (this *IndexAction) Init() { + this.Nav("", "setting", "index") + this.SecondMenu("userAgent") +} + +func (this *IndexAction) RunGet(params struct { + ServerId int64 +}) { + this.Data["serverId"] = params.ServerId + + webConfig, err := dao.SharedHTTPWebDAO.FindWebConfigWithServerId(this.AdminContext(), params.ServerId) + if err != nil { + this.ErrorPage(err) + return + } + + this.Data["webId"] = webConfig.Id + + var userAgentConfig = webConfig.UserAgent + if userAgentConfig == nil { + userAgentConfig = serverconfigs.NewUserAgentConfig() + } + + this.Data["userAgentConfig"] = userAgentConfig + + this.Show() +} + +func (this *IndexAction) RunPost(params struct { + WebId int64 + UserAgentJSON []byte + + Must *actions.Must + CSRF *actionutils.CSRF +}) { + defer this.CreateLogInfo("修改Web %d User-Agent设置", params.WebId) + + _, err := this.RPC().HTTPWebRPC().UpdateHTTPWebUserAgent(this.AdminContext(), &pb.UpdateHTTPWebUserAgentRequest{ + HttpWebId: params.WebId, + UserAgentJSON: params.UserAgentJSON, + }) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/servers/server/settings/userAgent/init.go b/internal/web/actions/default/servers/server/settings/userAgent/init.go new file mode 100644 index 00000000..ba0a1f13 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/userAgent/init.go @@ -0,0 +1,19 @@ +package useragent + +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/userAgent"). + 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 b9e412d5..b79f6bfd 100644 --- a/internal/web/actions/default/servers/serverutils/server_helper.go +++ b/internal/web/actions/default/servers/serverutils/server_helper.go @@ -315,6 +315,12 @@ func (this *ServerHelper) createSettingsMenu(secondMenuItem string, serverIdStri "isActive": secondMenuItem == "referer", "isOn": serverConfig.Web != nil && serverConfig.Web.Referers != nil && serverConfig.Web.Referers.IsOn, }) + menuItems = append(menuItems, maps.Map{ + "name": "UA名单", + "url": "/servers/server/settings/userAgent?serverId=" + serverIdString, + "isActive": secondMenuItem == "userAgent", + "isOn": serverConfig.Web != nil && serverConfig.Web.UserAgent != nil && serverConfig.Web.UserAgent.IsOn, + }) menuItems = append(menuItems, maps.Map{ "name": "字符编码", "url": "/servers/server/settings/charset?serverId=" + serverIdString, diff --git a/internal/web/import.go b/internal/web/import.go index caf87fe6..7d24606a 100644 --- a/internal/web/import.go +++ b/internal/web/import.go @@ -84,6 +84,7 @@ import ( _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/locations/reverseProxy" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/locations/rewrite" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/locations/stat" + _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/locations/userAgent" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/locations/waf" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/locations/web" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/locations/webp" @@ -102,6 +103,7 @@ import ( _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/tls" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/udp" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/unix" + _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/useragent" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/waf" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/web" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/webp" diff --git a/web/public/js/components/common/values-box.js b/web/public/js/components/common/values-box.js index 78b176b2..81f719af 100644 --- a/web/public/js/components/common/values-box.js +++ b/web/public/js/components/common/values-box.js @@ -1,5 +1,5 @@ Vue.component("values-box", { - props: ["values", "v-values", "size", "maxlength", "name", "placeholder"], + props: ["values", "v-values", "size", "maxlength", "name", "placeholder", "v-allow-empty"], data: function () { let values = this.values; if (values == null) { @@ -39,7 +39,9 @@ Vue.component("values-box", { }, confirm: function () { if (this.value.length == 0) { - return + if (typeof(this.vAllowEmpty) != "boolean" || !this.vAllowEmpty) { + return + } } if (this.isUpdating) { @@ -75,12 +77,17 @@ Vue.component("values-box", { }, template: `
| 启用UA名单 | +
+					 
+						
+						
+					 
+					选中后表示开启UserAgent名单。 + | 
+			||||||
| UA名单 | +
+					 
+						 
+					
+					
 
+						
+					 
+				 | 
+