From 6d6fb22d78507f0c0b4d43260d4924e85496b0ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Tue, 22 Sep 2020 11:36:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E8=B7=AF=E5=BE=84=E8=A7=84?= =?UTF-8?q?=E5=88=99=E5=90=84=E9=A1=B9=E6=95=B0=E6=8D=AE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/rpc/rpc_client.go | 14 +- .../actions/default/servers/addOriginPopup.go | 4 +- .../web/actions/default/servers/create.go | 2 +- .../server/settings/locations/access/index.go | 20 +++ .../server/settings/locations/access/init.go | 21 +++ .../settings/locations/accessLog/index.go | 72 ++++++++++ .../settings/locations/accessLog/init.go | 21 +++ .../server/settings/locations/cache/index.go | 67 +++++++++ .../server/settings/locations/cache/init.go | 21 +++ .../settings/locations/charset/index.go | 52 +++++++ .../server/settings/locations/charset/init.go | 21 +++ .../server/settings/locations/gzip/index.go | 133 ++++++++++++++++++ .../server/settings/locations/gzip/init.go | 21 +++ .../settings/locations/headers/index.go | 78 ++++++++++ .../server/settings/locations/headers/init.go | 21 +++ .../settings/locations/location/index.go | 76 ++++++++-- .../settings/locations/location/init.go | 1 + .../locationutils/location_helper.go | 20 ++- .../settings/locations/locationutils/utils.go | 33 +++++ .../server/settings/locations/pages/index.go | 60 ++++++++ .../server/settings/locations/pages/init.go | 21 +++ .../settings/locations/reverseProxy/index.go | 97 +++++++++++++ .../settings/locations/reverseProxy/init.go | 23 +++ .../locations/reverseProxy/scheduling.go | 46 ++++++ .../server/settings/locations/stat/index.go | 49 +++++++ .../server/settings/locations/stat/init.go | 21 +++ .../server/settings/locations/waf/index.go | 67 +++++++++ .../server/settings/locations/waf/init.go | 21 +++ .../server/settings/locations/web/index.go | 48 +++++++ .../server/settings/locations/web/init.go | 21 +++ .../server/settings/origins/addPopup.go | 20 +-- .../servers/server/settings/origins/delete.go | 6 +- .../server/settings/origins/updatePopup.go | 81 +---------- .../servers/server/settings/web/index.go | 62 ++------ internal/web/import.go | 11 ++ .../js/components/server/http-charsets-box.js | 2 +- web/views/@default/@layout.css | 6 +- web/views/@default/@layout.css.map | 2 +- web/views/@default/@left_menu.less | 7 +- .../settings/locations/@location_menu.html | 4 + .../settings/locations/access/index.css | 0 .../settings/locations/access/index.css.map | 1 + .../settings/locations/access/index.html | 13 ++ .../settings/locations/access/index.less | 0 .../settings/locations/accessLog/index.css | 0 .../locations/accessLog/index.css.map | 1 + .../settings/locations/accessLog/index.html | 20 +++ .../settings/locations/accessLog/index.js | 3 + .../settings/locations/accessLog/index.less | 0 .../server/settings/locations/cache/index.css | 0 .../settings/locations/cache/index.css.map | 1 + .../settings/locations/cache/index.html | 16 +++ .../server/settings/locations/cache/index.js | 3 + .../settings/locations/cache/index.less | 0 .../settings/locations/charset/index.css | 0 .../settings/locations/charset/index.css.map | 1 + .../settings/locations/charset/index.html | 17 +++ .../settings/locations/charset/index.js | 3 + .../settings/locations/charset/index.less | 0 .../server/settings/locations/create.html | 4 +- .../server/settings/locations/gzip/index.css | 0 .../settings/locations/gzip/index.css.map | 1 + .../server/settings/locations/gzip/index.html | 21 +++ .../server/settings/locations/gzip/index.js | 3 + .../server/settings/locations/gzip/index.less | 0 .../locations/headers/createDeletePopup.html | 15 ++ .../locations/headers/createDeletePopup.js | 3 + .../locations/headers/createSetPopup.html | 22 +++ .../locations/headers/createSetPopup.js | 3 + .../settings/locations/headers/index.css | 0 .../settings/locations/headers/index.css.map | 1 + .../settings/locations/headers/index.html | 12 ++ .../settings/locations/headers/index.less | 0 .../locations/headers/updateSetPopup.html | 23 +++ .../locations/headers/updateSetPopup.js | 3 + .../settings/locations/location/index.html | 80 ++++++++++- .../settings/locations/location/index.js | 15 ++ .../settings/locations/pages/createPopup.html | 28 ++++ .../settings/locations/pages/createPopup.js | 3 + .../server/settings/locations/pages/index.css | 0 .../settings/locations/pages/index.css.map | 1 + .../settings/locations/pages/index.html | 16 +++ .../server/settings/locations/pages/index.js | 3 + .../settings/locations/pages/index.less | 0 .../settings/locations/pages/updatePopup.html | 29 ++++ .../settings/locations/pages/updatePopup.js | 8 ++ .../locations/reverseProxy/@menu.html | 4 + .../settings/locations/reverseProxy/index.css | 0 .../locations/reverseProxy/index.css.map | 1 + .../locations/reverseProxy/index.html | 34 +++++ .../settings/locations/reverseProxy/index.js | 17 +++ .../locations/reverseProxy/index.less | 0 .../locations/reverseProxy/scheduling.html | 13 ++ .../reverseProxy/updateSchedulingPopup.html | 60 ++++++++ .../reverseProxy/updateSchedulingPopup.js | 39 +++++ .../server/settings/locations/stat/index.css | 0 .../settings/locations/stat/index.css.map | 1 + .../server/settings/locations/stat/index.html | 16 +++ .../server/settings/locations/stat/index.js | 3 + .../server/settings/locations/stat/index.less | 0 .../server/settings/locations/waf/index.css | 0 .../settings/locations/waf/index.css.map | 1 + .../server/settings/locations/waf/index.html | 16 +++ .../server/settings/locations/waf/index.js | 3 + .../server/settings/locations/waf/index.less | 0 .../server/settings/locations/web/index.css | 0 .../settings/locations/web/index.css.map | 1 + .../server/settings/locations/web/index.html | 23 +++ .../server/settings/locations/web/index.js | 3 + .../server/settings/locations/web/index.less | 0 110 files changed, 1799 insertions(+), 182 deletions(-) create mode 100644 internal/web/actions/default/servers/server/settings/locations/access/index.go create mode 100644 internal/web/actions/default/servers/server/settings/locations/access/init.go create mode 100644 internal/web/actions/default/servers/server/settings/locations/accessLog/index.go create mode 100644 internal/web/actions/default/servers/server/settings/locations/accessLog/init.go create mode 100644 internal/web/actions/default/servers/server/settings/locations/cache/index.go create mode 100644 internal/web/actions/default/servers/server/settings/locations/cache/init.go create mode 100644 internal/web/actions/default/servers/server/settings/locations/charset/index.go create mode 100644 internal/web/actions/default/servers/server/settings/locations/charset/init.go create mode 100644 internal/web/actions/default/servers/server/settings/locations/gzip/index.go create mode 100644 internal/web/actions/default/servers/server/settings/locations/gzip/init.go create mode 100644 internal/web/actions/default/servers/server/settings/locations/headers/index.go create mode 100644 internal/web/actions/default/servers/server/settings/locations/headers/init.go create mode 100644 internal/web/actions/default/servers/server/settings/locations/locationutils/utils.go create mode 100644 internal/web/actions/default/servers/server/settings/locations/pages/index.go create mode 100644 internal/web/actions/default/servers/server/settings/locations/pages/init.go create mode 100644 internal/web/actions/default/servers/server/settings/locations/reverseProxy/index.go create mode 100644 internal/web/actions/default/servers/server/settings/locations/reverseProxy/init.go create mode 100644 internal/web/actions/default/servers/server/settings/locations/reverseProxy/scheduling.go create mode 100644 internal/web/actions/default/servers/server/settings/locations/stat/index.go create mode 100644 internal/web/actions/default/servers/server/settings/locations/stat/init.go create mode 100644 internal/web/actions/default/servers/server/settings/locations/waf/index.go create mode 100644 internal/web/actions/default/servers/server/settings/locations/waf/init.go create mode 100644 internal/web/actions/default/servers/server/settings/locations/web/index.go create mode 100644 internal/web/actions/default/servers/server/settings/locations/web/init.go create mode 100644 web/views/@default/servers/server/settings/locations/@location_menu.html create mode 100644 web/views/@default/servers/server/settings/locations/access/index.css create mode 100644 web/views/@default/servers/server/settings/locations/access/index.css.map create mode 100644 web/views/@default/servers/server/settings/locations/access/index.html create mode 100644 web/views/@default/servers/server/settings/locations/access/index.less create mode 100644 web/views/@default/servers/server/settings/locations/accessLog/index.css create mode 100644 web/views/@default/servers/server/settings/locations/accessLog/index.css.map create mode 100644 web/views/@default/servers/server/settings/locations/accessLog/index.html create mode 100644 web/views/@default/servers/server/settings/locations/accessLog/index.js create mode 100644 web/views/@default/servers/server/settings/locations/accessLog/index.less create mode 100644 web/views/@default/servers/server/settings/locations/cache/index.css create mode 100644 web/views/@default/servers/server/settings/locations/cache/index.css.map create mode 100644 web/views/@default/servers/server/settings/locations/cache/index.html create mode 100644 web/views/@default/servers/server/settings/locations/cache/index.js create mode 100644 web/views/@default/servers/server/settings/locations/cache/index.less create mode 100644 web/views/@default/servers/server/settings/locations/charset/index.css create mode 100644 web/views/@default/servers/server/settings/locations/charset/index.css.map create mode 100644 web/views/@default/servers/server/settings/locations/charset/index.html create mode 100644 web/views/@default/servers/server/settings/locations/charset/index.js create mode 100644 web/views/@default/servers/server/settings/locations/charset/index.less create mode 100644 web/views/@default/servers/server/settings/locations/gzip/index.css create mode 100644 web/views/@default/servers/server/settings/locations/gzip/index.css.map create mode 100644 web/views/@default/servers/server/settings/locations/gzip/index.html create mode 100644 web/views/@default/servers/server/settings/locations/gzip/index.js create mode 100644 web/views/@default/servers/server/settings/locations/gzip/index.less create mode 100644 web/views/@default/servers/server/settings/locations/headers/createDeletePopup.html create mode 100644 web/views/@default/servers/server/settings/locations/headers/createDeletePopup.js create mode 100644 web/views/@default/servers/server/settings/locations/headers/createSetPopup.html create mode 100644 web/views/@default/servers/server/settings/locations/headers/createSetPopup.js create mode 100644 web/views/@default/servers/server/settings/locations/headers/index.css create mode 100644 web/views/@default/servers/server/settings/locations/headers/index.css.map create mode 100644 web/views/@default/servers/server/settings/locations/headers/index.html create mode 100644 web/views/@default/servers/server/settings/locations/headers/index.less create mode 100644 web/views/@default/servers/server/settings/locations/headers/updateSetPopup.html create mode 100644 web/views/@default/servers/server/settings/locations/headers/updateSetPopup.js create mode 100644 web/views/@default/servers/server/settings/locations/location/index.js create mode 100644 web/views/@default/servers/server/settings/locations/pages/createPopup.html create mode 100644 web/views/@default/servers/server/settings/locations/pages/createPopup.js create mode 100644 web/views/@default/servers/server/settings/locations/pages/index.css create mode 100644 web/views/@default/servers/server/settings/locations/pages/index.css.map create mode 100644 web/views/@default/servers/server/settings/locations/pages/index.html create mode 100644 web/views/@default/servers/server/settings/locations/pages/index.js create mode 100644 web/views/@default/servers/server/settings/locations/pages/index.less create mode 100644 web/views/@default/servers/server/settings/locations/pages/updatePopup.html create mode 100644 web/views/@default/servers/server/settings/locations/pages/updatePopup.js create mode 100644 web/views/@default/servers/server/settings/locations/reverseProxy/@menu.html create mode 100644 web/views/@default/servers/server/settings/locations/reverseProxy/index.css create mode 100644 web/views/@default/servers/server/settings/locations/reverseProxy/index.css.map create mode 100644 web/views/@default/servers/server/settings/locations/reverseProxy/index.html create mode 100644 web/views/@default/servers/server/settings/locations/reverseProxy/index.js create mode 100644 web/views/@default/servers/server/settings/locations/reverseProxy/index.less create mode 100644 web/views/@default/servers/server/settings/locations/reverseProxy/scheduling.html create mode 100644 web/views/@default/servers/server/settings/locations/reverseProxy/updateSchedulingPopup.html create mode 100644 web/views/@default/servers/server/settings/locations/reverseProxy/updateSchedulingPopup.js create mode 100644 web/views/@default/servers/server/settings/locations/stat/index.css create mode 100644 web/views/@default/servers/server/settings/locations/stat/index.css.map create mode 100644 web/views/@default/servers/server/settings/locations/stat/index.html create mode 100644 web/views/@default/servers/server/settings/locations/stat/index.js create mode 100644 web/views/@default/servers/server/settings/locations/stat/index.less create mode 100644 web/views/@default/servers/server/settings/locations/waf/index.css create mode 100644 web/views/@default/servers/server/settings/locations/waf/index.css.map create mode 100644 web/views/@default/servers/server/settings/locations/waf/index.html create mode 100644 web/views/@default/servers/server/settings/locations/waf/index.js create mode 100644 web/views/@default/servers/server/settings/locations/waf/index.less create mode 100644 web/views/@default/servers/server/settings/locations/web/index.css create mode 100644 web/views/@default/servers/server/settings/locations/web/index.css.map create mode 100644 web/views/@default/servers/server/settings/locations/web/index.html create mode 100644 web/views/@default/servers/server/settings/locations/web/index.js create mode 100644 web/views/@default/servers/server/settings/locations/web/index.less diff --git a/internal/rpc/rpc_client.go b/internal/rpc/rpc_client.go index 5f62acce..06fcc594 100644 --- a/internal/rpc/rpc_client.go +++ b/internal/rpc/rpc_client.go @@ -25,7 +25,7 @@ type RPCClient struct { nodeIPAddressClients []pb.NodeIPAddressServiceClient serverClients []pb.ServerServiceClient apiNodeClients []pb.APINodeServiceClient - originNodeClients []pb.OriginServerServiceClient + originClients []pb.OriginServiceClient httpWebClients []pb.HTTPWebServiceClient reverseProxyClients []pb.ReverseProxyServiceClient httpGzipClients []pb.HTTPGzipServiceClient @@ -50,7 +50,7 @@ func NewRPCClient(apiConfig *configs.APIConfig) (*RPCClient, error) { nodeIPAddressClients := []pb.NodeIPAddressServiceClient{} serverClients := []pb.ServerServiceClient{} apiNodeClients := []pb.APINodeServiceClient{} - originNodeClients := []pb.OriginServerServiceClient{} + originClients := []pb.OriginServiceClient{} httpWebClients := []pb.HTTPWebServiceClient{} reverseProxyClients := []pb.ReverseProxyServiceClient{} httpGzipClients := []pb.HTTPGzipServiceClient{} @@ -83,7 +83,7 @@ func NewRPCClient(apiConfig *configs.APIConfig) (*RPCClient, error) { nodeIPAddressClients = append(nodeIPAddressClients, pb.NewNodeIPAddressServiceClient(conn)) serverClients = append(serverClients, pb.NewServerServiceClient(conn)) apiNodeClients = append(apiNodeClients, pb.NewAPINodeServiceClient(conn)) - originNodeClients = append(originNodeClients, pb.NewOriginServerServiceClient(conn)) + originClients = append(originClients, pb.NewOriginServiceClient(conn)) httpWebClients = append(httpWebClients, pb.NewHTTPWebServiceClient(conn)) reverseProxyClients = append(reverseProxyClients, pb.NewReverseProxyServiceClient(conn)) httpGzipClients = append(httpGzipClients, pb.NewHTTPGzipServiceClient(conn)) @@ -105,7 +105,7 @@ func NewRPCClient(apiConfig *configs.APIConfig) (*RPCClient, error) { nodeIPAddressClients: nodeIPAddressClients, serverClients: serverClients, apiNodeClients: apiNodeClients, - originNodeClients: originNodeClients, + originClients: originClients, httpWebClients: httpWebClients, reverseProxyClients: reverseProxyClients, httpGzipClients: httpGzipClients, @@ -168,9 +168,9 @@ func (this *RPCClient) APINodeRPC() pb.APINodeServiceClient { return nil } -func (this *RPCClient) OriginServerRPC() pb.OriginServerServiceClient { - if len(this.originNodeClients) > 0 { - return this.originNodeClients[rands.Int(0, len(this.originNodeClients)-1)] +func (this *RPCClient) OriginRPC() pb.OriginServiceClient { + if len(this.originClients) > 0 { + return this.originClients[rands.Int(0, len(this.originClients)-1)] } return nil } diff --git a/internal/web/actions/default/servers/addOriginPopup.go b/internal/web/actions/default/servers/addOriginPopup.go index 60dad1df..843730a4 100644 --- a/internal/web/actions/default/servers/addOriginPopup.go +++ b/internal/web/actions/default/servers/addOriginPopup.go @@ -43,7 +43,7 @@ func (this *AddOriginPopupAction) RunPost(params struct { host := addr[:portIndex] port := addr[portIndex+1:] - resp, err := this.RPC().OriginServerRPC().CreateOriginServer(this.AdminContext(), &pb.CreateOriginServerRequest{ + resp, err := this.RPC().OriginRPC().CreateOrigin(this.AdminContext(), &pb.CreateOriginRequest{ Name: "", Addr: &pb.NetworkAddress{ Protocol: params.Protocol, @@ -57,7 +57,7 @@ func (this *AddOriginPopupAction) RunPost(params struct { return } - origin := &serverconfigs.OriginServerConfig{ + origin := &serverconfigs.OriginConfig{ Id: resp.OriginId, IsOn: true, Addr: &serverconfigs.NetworkAddressConfig{ diff --git a/internal/web/actions/default/servers/create.go b/internal/web/actions/default/servers/create.go index 2ef2f87f..a9f8c588 100644 --- a/internal/web/actions/default/servers/create.go +++ b/internal/web/actions/default/servers/create.go @@ -159,7 +159,7 @@ func (this *CreateAction) RunPost(params struct { reverseProxyRefJSON := []byte{} switch params.ServerType { case serverconfigs.ServerTypeHTTPProxy, serverconfigs.ServerTypeTCPProxy: - origins := []*serverconfigs.OriginServerConfig{} + origins := []*serverconfigs.OriginConfig{} err := json.Unmarshal([]byte(params.Origins), &origins) if err != nil { this.Fail("源站地址解析失败:" + err.Error()) diff --git a/internal/web/actions/default/servers/server/settings/locations/access/index.go b/internal/web/actions/default/servers/server/settings/locations/access/index.go new file mode 100644 index 00000000..36a5c0e6 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/access/index.go @@ -0,0 +1,20 @@ +package access + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" +) + +type IndexAction struct { + actionutils.ParentAction +} + +func (this *IndexAction) Init() { +} + +func (this *IndexAction) RunGet(params struct { + ServerId int64 +}) { + // TODO + + this.Show() +} diff --git a/internal/web/actions/default/servers/server/settings/locations/access/init.go b/internal/web/actions/default/servers/server/settings/locations/access/init.go new file mode 100644 index 00000000..ef3edce7 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/access/init.go @@ -0,0 +1,21 @@ +package access + +import ( + "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()). + Helper(locationutils.NewLocationHelper()). + Helper(serverutils.NewServerHelper()). + Data("tinyMenuItem", "access"). + Prefix("/servers/server/settings/locations/access"). + Get("", new(IndexAction)). + EndAll() + }) +} diff --git a/internal/web/actions/default/servers/server/settings/locations/accessLog/index.go b/internal/web/actions/default/servers/server/settings/locations/accessLog/index.go new file mode 100644 index 00000000..b74bb201 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/accessLog/index.go @@ -0,0 +1,72 @@ +package accessLog + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/webutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" + "github.com/iwind/TeaGo/actions" + "github.com/iwind/TeaGo/maps" +) + +type IndexAction struct { + actionutils.ParentAction +} + +func (this *IndexAction) Init() { +} + +func (this *IndexAction) RunGet(params struct { + LocationId int64 +}) { + // 获取配置 + webConfig, err := webutils.FindWebConfigWithLocationId(this.Parent(), params.LocationId) + if err != nil { + this.ErrorPage(err) + return + } + this.Data["webId"] = webConfig.Id + this.Data["accessLogConfig"] = webConfig.AccessLogRef + + // 可选的缓存策略 + policiesResp, err := this.RPC().HTTPAccessLogPolicyRPC().FindAllEnabledHTTPAccessLogPolicies(this.AdminContext(), &pb.FindAllEnabledHTTPAccessLogPoliciesRequest{}) + if err != nil { + this.ErrorPage(err) + return + } + policyMaps := []maps.Map{} + for _, policy := range policiesResp.AccessLogPolicies { + policyMaps = append(policyMaps, maps.Map{ + "id": policy.Id, + "name": policy.Name, + "isOn": policy.IsOn, // TODO 这里界面上显示是否开启状态 + }) + } + this.Data["accessLogPolicies"] = policyMaps + + // 通用变量 + this.Data["fields"] = serverconfigs.HTTPAccessLogFields + this.Data["defaultFieldCodes"] = serverconfigs.HTTPAccessLogDefaultFieldsCodes + + this.Show() +} + +func (this *IndexAction) RunPost(params struct { + WebId int64 + AccessLogJSON []byte + + Must *actions.Must +}) { + // TODO 检查参数 + + _, err := this.RPC().HTTPWebRPC().UpdateHTTPWebAccessLog(this.AdminContext(), &pb.UpdateHTTPWebAccessLogRequest{ + WebId: params.WebId, + AccessLogJSON: params.AccessLogJSON, + }) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/servers/server/settings/locations/accessLog/init.go b/internal/web/actions/default/servers/server/settings/locations/accessLog/init.go new file mode 100644 index 00000000..774c0e1d --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/accessLog/init.go @@ -0,0 +1,21 @@ +package accessLog + +import ( + "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()). + Helper(locationutils.NewLocationHelper()). + Helper(serverutils.NewServerHelper()). + Data("tinyMenuItem", "accessLog"). + Prefix("/servers/server/settings/locations/accessLog"). + GetPost("", new(IndexAction)). + EndAll() + }) +} diff --git a/internal/web/actions/default/servers/server/settings/locations/cache/index.go b/internal/web/actions/default/servers/server/settings/locations/cache/index.go new file mode 100644 index 00000000..b834f580 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/cache/index.go @@ -0,0 +1,67 @@ +package cache + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/webutils" + "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() { +} + +func (this *IndexAction) RunGet(params struct { + LocationId int64 +}) { + webConfig, err := webutils.FindWebConfigWithLocationId(this.Parent(), params.LocationId) + if err != nil { + this.ErrorPage(err) + return + } + + this.Data["webId"] = webConfig.Id + this.Data["cacheConfig"] = webConfig.CacheRef + + // 所有缓存策略 + cachePoliciesResp, err := this.RPC().HTTPCachePolicyRPC().FindAllEnabledHTTPCachePolicies(this.AdminContext(), &pb.FindAllEnabledHTTPCachePoliciesRequest{}) + if err != nil { + this.ErrorPage(err) + return + } + policyMaps := []maps.Map{} + for _, policy := range cachePoliciesResp.CachePolicies { + policyMaps = append(policyMaps, maps.Map{ + "id": policy.Id, + "name": policy.Name, + "isOn": policy.IsOn, + }) + } + this.Data["policies"] = policyMaps + + this.Show() +} + +func (this *IndexAction) RunPost(params struct { + WebId int64 + CacheJSON []byte + + Must *actions.Must +}) { + // TODO 校验配置 + + _, err := this.RPC().HTTPWebRPC().UpdateHTTPWebCache(this.AdminContext(), &pb.UpdateHTTPWebCacheRequest{ + WebId: params.WebId, + CacheJSON: params.CacheJSON, + }) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/servers/server/settings/locations/cache/init.go b/internal/web/actions/default/servers/server/settings/locations/cache/init.go new file mode 100644 index 00000000..d40fdd28 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/cache/init.go @@ -0,0 +1,21 @@ +package cache + +import ( + "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()). + Helper(locationutils.NewLocationHelper()). + Helper(serverutils.NewServerHelper()). + Data("tinyMenuItem", "cache"). + Prefix("/servers/server/settings/locations/cache"). + GetPost("", new(IndexAction)). + EndAll() + }) +} diff --git a/internal/web/actions/default/servers/server/settings/locations/charset/index.go b/internal/web/actions/default/servers/server/settings/locations/charset/index.go new file mode 100644 index 00000000..fc73a4d6 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/charset/index.go @@ -0,0 +1,52 @@ +package charset + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/webutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/configutils" + "github.com/iwind/TeaGo/actions" +) + +type IndexAction struct { + actionutils.ParentAction +} + +func (this *IndexAction) Init() { +} + +func (this *IndexAction) RunGet(params struct { + LocationId int64 +}) { + webConfig, err := webutils.FindWebConfigWithLocationId(this.Parent(), params.LocationId) + if err != nil { + this.ErrorPage(err) + return + } + + this.Data["webId"] = webConfig.Id + this.Data["charset"] = webConfig.Charset + + this.Data["usualCharsets"] = configutils.UsualCharsets + this.Data["allCharsets"] = configutils.AllCharsets + + this.Show() +} + +func (this *IndexAction) RunPost(params struct { + WebId int64 + Charset string + + Must *actions.Must +}) { + _, err := this.RPC().HTTPWebRPC().UpdateHTTPWebCharset(this.AdminContext(), &pb.UpdateHTTPWebCharsetRequest{ + WebId: params.WebId, + Charset: params.Charset, + }) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/servers/server/settings/locations/charset/init.go b/internal/web/actions/default/servers/server/settings/locations/charset/init.go new file mode 100644 index 00000000..ebd4a44c --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/charset/init.go @@ -0,0 +1,21 @@ +package charset + +import ( + "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()). + Helper(locationutils.NewLocationHelper()). + Helper(serverutils.NewServerHelper()). + Data("tinyMenuItem", "charset"). + Prefix("/servers/server/settings/locations/charset"). + GetPost("", new(IndexAction)). + EndAll() + }) +} diff --git a/internal/web/actions/default/servers/server/settings/locations/gzip/index.go b/internal/web/actions/default/servers/server/settings/locations/gzip/index.go new file mode 100644 index 00000000..53a52165 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/gzip/index.go @@ -0,0 +1,133 @@ +package gzip + +import ( + "encoding/json" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/webutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" + "github.com/iwind/TeaGo/actions" + "github.com/iwind/TeaGo/types" +) + +type IndexAction struct { + actionutils.ParentAction +} + +func (this *IndexAction) Init() { + this.Nav("", "setting", "index") + this.SecondMenu("gzip") +} + +func (this *IndexAction) RunGet(params struct { + LocationId int64 +}) { + webConfig, err := webutils.FindWebConfigWithLocationId(this.Parent(), params.LocationId) + if err != nil { + this.ErrorPage(err) + return + } + + this.Data["webId"] = webConfig.Id + + gzipId := int64(0) + if webConfig.GzipRef != nil { + gzipId = webConfig.GzipRef.GzipId + } + gzipConfig := &serverconfigs.HTTPGzipConfig{ + Id: 0, + IsOn: true, + } + if gzipId > 0 { + resp, err := this.RPC().HTTPGzipRPC().FindEnabledHTTPGzipConfig(this.AdminContext(), &pb.FindEnabledGzipConfigRequest{GzipId: gzipId}) + if err != nil { + this.ErrorPage(err) + return + } + err = json.Unmarshal(resp.GzipJSON, gzipConfig) + if err != nil { + this.ErrorPage(err) + return + } + } + + this.Data["gzipConfig"] = gzipConfig + + this.Show() +} + +func (this *IndexAction) RunPost(params struct { + WebId int64 + GzipId int64 + Level int + MinLength string + MaxLength string + + Must *actions.Must +}) { + if params.Level < 0 || params.Level > 9 { + this.Fail("请选择正确的压缩级别") + } + + minLength := &pb.SizeCapacity{Count: -1} + if len(params.MinLength) > 0 { + err := json.Unmarshal([]byte(params.MinLength), minLength) + if err != nil { + this.ErrorPage(err) + return + } + } + + maxLength := &pb.SizeCapacity{Count: -1} + if len(params.MaxLength) > 0 { + err := json.Unmarshal([]byte(params.MaxLength), maxLength) + if err != nil { + this.ErrorPage(err) + return + } + } + + if params.GzipId > 0 { + _, err := this.RPC().HTTPGzipRPC().UpdateHTTPGzip(this.AdminContext(), &pb.UpdateHTTPGzipRequest{ + GzipId: params.GzipId, + Level: types.Int32(params.Level), + MinLength: minLength, + MaxLength: maxLength, + }) + if err != nil { + this.ErrorPage(err) + return + } + } else { + resp, err := this.RPC().HTTPGzipRPC().CreateHTTPGzip(this.AdminContext(), &pb.CreateHTTPGzipRequest{ + Level: types.Int32(params.Level), + MinLength: minLength, + MaxLength: maxLength, + }) + if err != nil { + this.ErrorPage(err) + return + } + gzipId := resp.GzipId + + gzipRef := &serverconfigs.HTTPGzipRef{ + IsOn: true, + GzipId: gzipId, + } + gzipRefJSON, err := json.Marshal(gzipRef) + if err != nil { + this.ErrorPage(err) + return + } + + _, err = this.RPC().HTTPWebRPC().UpdateHTTPWebGzip(this.AdminContext(), &pb.UpdateHTTPWebGzipRequest{ + WebId: params.WebId, + GzipJSON: gzipRefJSON, + }) + if err != nil { + this.ErrorPage(err) + } + } + + this.Success() +} diff --git a/internal/web/actions/default/servers/server/settings/locations/gzip/init.go b/internal/web/actions/default/servers/server/settings/locations/gzip/init.go new file mode 100644 index 00000000..1dcf483b --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/gzip/init.go @@ -0,0 +1,21 @@ +package gzip + +import ( + "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()). + Helper(locationutils.NewLocationHelper()). + Helper(serverutils.NewServerHelper()). + Data("tinyMenuItem", "gzip"). + Prefix("/servers/server/settings/locations/gzip"). + GetPost("", new(IndexAction)). + EndAll() + }) +} diff --git a/internal/web/actions/default/servers/server/settings/locations/headers/index.go b/internal/web/actions/default/servers/server/settings/locations/headers/index.go new file mode 100644 index 00000000..853cd098 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/headers/index.go @@ -0,0 +1,78 @@ +package headers + +import ( + "errors" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/webutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" +) + +type IndexAction struct { + actionutils.ParentAction +} + +func (this *IndexAction) Init() { +} + +func (this *IndexAction) RunGet(params struct { + LocationId int64 +}) { + webConfig, err := webutils.FindWebConfigWithLocationId(this.Parent(), params.LocationId) + if err != nil { + this.ErrorPage(err) + return + } + + // 初始化Header + webResp, err := this.RPC().HTTPWebRPC().FindEnabledHTTPWeb(this.AdminContext(), &pb.FindEnabledHTTPWebRequest{WebId: webConfig.Id}) + if err != nil { + this.ErrorPage(err) + return + } + web := webResp.Web + if web == nil { + this.ErrorPage(errors.New("web should not be nil")) + return + } + isChanged := false + if web.RequestHeaderPolicyId <= 0 { + createHeaderPolicyResp, err := this.RPC().HTTPHeaderPolicyRPC().CreateHTTPHeaderPolicy(this.AdminContext(), &pb.CreateHTTPHeaderPolicyRequest{}) + if err != nil { + this.ErrorPage(err) + return + } + headerPolicyId := createHeaderPolicyResp.HeaderPolicyId + _, err = this.RPC().HTTPWebRPC().UpdateHTTPWebRequestHeaderPolicy(this.AdminContext(), &pb.UpdateHTTPWebRequestHeaderPolicyRequest{ + WebId: web.Id, + HeaderPolicyId: headerPolicyId, + }) + isChanged = true + } + if web.ResponseHeaderPolicyId <= 0 { + createHeaderPolicyResp, err := this.RPC().HTTPHeaderPolicyRPC().CreateHTTPHeaderPolicy(this.AdminContext(), &pb.CreateHTTPHeaderPolicyRequest{}) + if err != nil { + this.ErrorPage(err) + return + } + headerPolicyId := createHeaderPolicyResp.HeaderPolicyId + _, err = this.RPC().HTTPWebRPC().UpdateHTTPWebResponseHeaderPolicy(this.AdminContext(), &pb.UpdateHTTPWebResponseHeaderPolicyRequest{ + WebId: web.Id, + HeaderPolicyId: headerPolicyId, + }) + isChanged = true + } + + // 重新获取配置 + if isChanged { + webConfig, err = webutils.FindWebConfigWithLocationId(this.Parent(), params.LocationId) + if err != nil { + this.ErrorPage(err) + return + } + } + + this.Data["requestHeaderPolicy"] = webConfig.RequestHeaders + this.Data["responseHeaderPolicy"] = webConfig.ResponseHeaders + + this.Show() +} diff --git a/internal/web/actions/default/servers/server/settings/locations/headers/init.go b/internal/web/actions/default/servers/server/settings/locations/headers/init.go new file mode 100644 index 00000000..4f69a9e0 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/headers/init.go @@ -0,0 +1,21 @@ +package headers + +import ( + "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()). + Helper(locationutils.NewLocationHelper()). + Helper(serverutils.NewServerHelper()). + Data("tinyMenuItem", "header"). + Prefix("/servers/server/settings/locations/headers"). + Get("", new(IndexAction)). + EndAll() + }) +} diff --git a/internal/web/actions/default/servers/server/settings/locations/location/index.go b/internal/web/actions/default/servers/server/settings/locations/location/index.go index 070f5d4a..7bac3b57 100644 --- a/internal/web/actions/default/servers/server/settings/locations/location/index.go +++ b/internal/web/actions/default/servers/server/settings/locations/location/index.go @@ -1,10 +1,12 @@ package location import ( - "encoding/json" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" + "github.com/iwind/TeaGo/actions" + "regexp" + "strings" ) // 路径规则详情 @@ -13,26 +15,70 @@ type IndexAction struct { } func (this *IndexAction) Init() { - this.TinyMenu("basic") } func (this *IndexAction) RunGet(params struct { LocationId int64 }) { - locationConfigResp, err := this.RPC().HTTPLocationRPC().FindEnabledHTTPLocationConfig(this.AdminContext(), &pb.FindEnabledHTTPLocationConfigRequest{LocationId: params.LocationId}) - if err != nil { - this.ErrorPage(err) - return - } - locationConfig := &serverconfigs.HTTPLocationConfig{} - err = json.Unmarshal(locationConfigResp.LocationJSON, locationConfig) - if err != nil { - this.ErrorPage(err) - return - } + locationConfig := this.Data.Get("locationConfig").(*serverconfigs.HTTPLocationConfig) - this.Data["locationId"] = locationConfig.Id - this.Data["locationConfig"] = locationConfig + this.Data["patternTypes"] = serverconfigs.AllLocationPatternTypes() + + this.Data["pattern"] = locationConfig.PatternString() + this.Data["type"] = locationConfig.PatternType() + this.Data["isReverse"] = locationConfig.IsReverse() + this.Data["isCaseInsensitive"] = locationConfig.IsCaseInsensitive() this.Show() } + +func (this *IndexAction) RunPost(params struct { + LocationId int64 + + Name string + Pattern string + PatternType int + Description string + + IsBreak bool + IsCaseInsensitive bool + IsReverse bool + + Must *actions.Must +}) { + params.Must. + Field("pattern", params.Pattern). + Require("请输入路径匹配规则") + + // 校验正则 + if params.PatternType == serverconfigs.HTTPLocationPatternTypeRegexp { + _, err := regexp.Compile(params.Pattern) + if err != nil { + this.Fail("正则表达式校验失败:" + err.Error()) + } + } + + // 自动加上前缀斜杠 + if params.PatternType == serverconfigs.HTTPLocationPatternTypePrefix || + params.PatternType == serverconfigs.HTTPLocationPatternTypeExact { + params.Pattern = "/" + strings.TrimLeft(params.Pattern, "/") + } + + location := &serverconfigs.HTTPLocationConfig{} + location.SetPattern(params.Pattern, params.PatternType, params.IsCaseInsensitive, params.IsReverse) + resultPattern := location.Pattern + + _, err := this.RPC().HTTPLocationRPC().UpdateHTTPLocation(this.AdminContext(), &pb.UpdateHTTPLocationRequest{ + LocationId: params.LocationId, + Name: params.Name, + Description: params.Description, + Pattern: resultPattern, + IsBreak: params.IsBreak, + }) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/servers/server/settings/locations/location/init.go b/internal/web/actions/default/servers/server/settings/locations/location/init.go index 708306a5..09731895 100644 --- a/internal/web/actions/default/servers/server/settings/locations/location/init.go +++ b/internal/web/actions/default/servers/server/settings/locations/location/init.go @@ -13,6 +13,7 @@ func init() { Helper(helpers.NewUserMustAuth()). Helper(locationutils.NewLocationHelper()). Helper(serverutils.NewServerHelper()). + Data("tinyMenuItem", "basic"). Prefix("/servers/server/settings/locations/location"). GetPost("", new(IndexAction)). EndAll() 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 6b6e2ef4..ca811a65 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 @@ -1,9 +1,11 @@ package locationutils import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/maps" "net/http" + "reflect" ) type LocationHelper struct { @@ -13,7 +15,8 @@ func NewLocationHelper() *LocationHelper { return &LocationHelper{} } -func (this *LocationHelper) BeforeAction(action *actions.ActionObject) { +func (this *LocationHelper) BeforeAction(actionPtr actions.ActionWrapper) { + action := actionPtr.Object() if action.Request.Method != http.MethodGet { return } @@ -26,6 +29,21 @@ func (this *LocationHelper) BeforeAction(action *actions.ActionObject) { action.Data["mainTab"] = "setting" action.Data["secondMenuItem"] = "locations" action.Data["tinyLeftMenuItems"] = this.createMenus(serverIdString, locationIdString, action.Data.GetString("tinyMenuItem")) + + // 路径信息 + parentActionValue := reflect.ValueOf(actionPtr).Elem().FieldByName("ParentAction") + if parentActionValue.IsValid() { + parentAction, isOk := parentActionValue.Interface().(actionutils.ParentAction) + if isOk { + locationId := action.ParamInt64("locationId") + locationConfig, isOk := FindLocationConfig(&parentAction, locationId) + if !isOk { + return + } + action.Data["locationId"] = locationId + action.Data["locationConfig"] = locationConfig + } + } } func (this *LocationHelper) createMenus(serverIdString string, locationIdString string, secondMenuItem string) []maps.Map { diff --git a/internal/web/actions/default/servers/server/settings/locations/locationutils/utils.go b/internal/web/actions/default/servers/server/settings/locations/locationutils/utils.go new file mode 100644 index 00000000..e2540c36 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/locationutils/utils.go @@ -0,0 +1,33 @@ +package locationutils + +import ( + "encoding/json" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" +) + +// 查找路径规则配置 +func FindLocationConfig(parentAction *actionutils.ParentAction, locationId int64) (locationConfig *serverconfigs.HTTPLocationConfig, isOk bool) { + locationConfigResp, err := parentAction.RPC().HTTPLocationRPC().FindEnabledHTTPLocationConfig(parentAction.AdminContext(), &pb.FindEnabledHTTPLocationConfigRequest{LocationId: locationId}) + if err != nil { + parentAction.ErrorPage(err) + return + } + + locationConfig = &serverconfigs.HTTPLocationConfig{} + err = json.Unmarshal(locationConfigResp.LocationJSON, locationConfig) + if err != nil { + parentAction.ErrorPage(err) + return + } + + err = locationConfig.Init() + if err != nil { + parentAction.ErrorPage(err) + return + } + + isOk = true + return +} diff --git a/internal/web/actions/default/servers/server/settings/locations/pages/index.go b/internal/web/actions/default/servers/server/settings/locations/pages/index.go new file mode 100644 index 00000000..fdaeefc2 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/pages/index.go @@ -0,0 +1,60 @@ +package pages + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/webutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/iwind/TeaGo/actions" +) + +type IndexAction struct { + actionutils.ParentAction +} + +func (this *IndexAction) Init() { +} + +func (this *IndexAction) RunGet(params struct { + LocationId int64 +}) { + webConfig, err := webutils.FindWebConfigWithLocationId(this.Parent(), params.LocationId) + if err != nil { + this.ErrorPage(err) + return + } + + this.Data["webId"] = webConfig.Id + this.Data["pages"] = webConfig.Pages + this.Data["shutdownConfig"] = webConfig.Shutdown + + this.Show() +} + +func (this *IndexAction) RunPost(params struct { + WebId int64 + PagesJSON string + ShutdownJSON string + Must *actions.Must +}) { + // TODO 检查配置 + + _, err := this.RPC().HTTPWebRPC().UpdateHTTPWebPages(this.AdminContext(), &pb.UpdateHTTPWebPagesRequest{ + WebId: params.WebId, + PagesJSON: []byte(params.PagesJSON), + }) + if err != nil { + this.ErrorPage(err) + return + } + + _, err = this.RPC().HTTPWebRPC().UpdateHTTPWebShutdown(this.AdminContext(), &pb.UpdateHTTPWebShutdownRequest{ + WebId: params.WebId, + ShutdownJSON: []byte(params.ShutdownJSON), + }) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/servers/server/settings/locations/pages/init.go b/internal/web/actions/default/servers/server/settings/locations/pages/init.go new file mode 100644 index 00000000..7e036a1e --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/pages/init.go @@ -0,0 +1,21 @@ +package pages + +import ( + "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()). + Helper(locationutils.NewLocationHelper()). + Helper(serverutils.NewServerHelper()). + Data("tinyMenuItem", "pages"). + Prefix("/servers/server/settings/locations/pages"). + GetPost("", new(IndexAction)). + EndAll() + }) +} diff --git a/internal/web/actions/default/servers/server/settings/locations/reverseProxy/index.go b/internal/web/actions/default/servers/server/settings/locations/reverseProxy/index.go new file mode 100644 index 00000000..a07fa732 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/reverseProxy/index.go @@ -0,0 +1,97 @@ +package reverseProxy + +import ( + "encoding/json" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" + "github.com/iwind/TeaGo/actions" + "github.com/iwind/TeaGo/maps" +) + +// 源站列表 +type IndexAction struct { + actionutils.ParentAction +} + +func (this *IndexAction) Init() { + this.FirstMenu("index") +} + +func (this *IndexAction) RunGet(params struct { + ServerId int64 + LocationId int64 +}) { + serverTypeResp, err := this.RPC().ServerRPC().FindEnabledServerType(this.AdminContext(), &pb.FindEnabledServerTypeRequest{ServerId: params.ServerId}) + if err != nil { + this.ErrorPage(err) + return + } + serverType := serverTypeResp.Type + + reverseProxyResp, err := this.RPC().HTTPLocationRPC().FindAndInitHTTPLocationReverseProxyConfig(this.AdminContext(), &pb.FindAndInitHTTPLocationReverseProxyConfigRequest{LocationId: params.LocationId}) + if err != nil { + this.ErrorPage(err) + return + } + reverseProxyRef := &serverconfigs.ReverseProxyRef{} + err = json.Unmarshal(reverseProxyResp.ReverseProxyRefJSON, reverseProxyRef) + if err != nil { + this.ErrorPage(err) + return + } + + reverseProxy := &serverconfigs.ReverseProxyConfig{} + err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy) + if err != nil { + this.ErrorPage(err) + return + } + + this.Data["serverType"] = serverType + this.Data["reverseProxyRef"] = reverseProxyRef + this.Data["reverseProxyConfig"] = reverseProxy + + primaryOriginMaps := []maps.Map{} + backupOriginMaps := []maps.Map{} + for _, originConfig := range reverseProxy.PrimaryOrigins { + m := maps.Map{ + "id": originConfig.Id, + "weight": originConfig.Weight, + "addr": originConfig.Addr.Protocol.String() + "://" + originConfig.Addr.Host + ":" + originConfig.Addr.PortRange, + } + primaryOriginMaps = append(primaryOriginMaps, m) + } + for _, originConfig := range reverseProxy.BackupOrigins { + m := maps.Map{ + "id": originConfig.Id, + "weight": originConfig.Weight, + "addr": originConfig.Addr.Protocol.String() + "://" + originConfig.Addr.Host + ":" + originConfig.Addr.PortRange, + } + backupOriginMaps = append(backupOriginMaps, m) + } + this.Data["primaryOrigins"] = primaryOriginMaps + this.Data["backupOrigins"] = backupOriginMaps + + this.Show() +} + +func (this *IndexAction) RunPost(params struct { + LocationId int64 + ReverseProxyRefJSON []byte + + Must *actions.Must +}) { + // TODO 校验配置 + + _, err := this.RPC().HTTPLocationRPC().UpdateHTTPLocationReverseProxy(this.AdminContext(), &pb.UpdateHTTPLocationReverseProxyRequest{ + LocationId: params.LocationId, + ReverseProxyJSON: params.ReverseProxyRefJSON, + }) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/servers/server/settings/locations/reverseProxy/init.go b/internal/web/actions/default/servers/server/settings/locations/reverseProxy/init.go new file mode 100644 index 00000000..f829718f --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/reverseProxy/init.go @@ -0,0 +1,23 @@ +package reverseProxy + +import ( + "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()). + Helper(locationutils.NewLocationHelper()). + Helper(serverutils.NewServerHelper()). + Data("mainTab", "setting"). + Data("tinyMenuItem", "reverseProxy"). + Prefix("/servers/server/settings/locations/reverseProxy"). + GetPost("", new(IndexAction)). + GetPost("/scheduling", new(SchedulingAction)). + EndAll() + }) +} diff --git a/internal/web/actions/default/servers/server/settings/locations/reverseProxy/scheduling.go b/internal/web/actions/default/servers/server/settings/locations/reverseProxy/scheduling.go new file mode 100644 index 00000000..b0655c6d --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/reverseProxy/scheduling.go @@ -0,0 +1,46 @@ +package reverseProxy + +import ( + "encoding/json" + "errors" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/schedulingconfigs" +) + +type SchedulingAction struct { + actionutils.ParentAction +} + +func (this *SchedulingAction) Init() { + this.FirstMenu("scheduling") +} + +func (this *SchedulingAction) RunGet(params struct { + ServerId int64 + LocationId int64 +}) { + reverseProxyResp, err := this.RPC().HTTPLocationRPC().FindAndInitHTTPLocationReverseProxyConfig(this.AdminContext(), &pb.FindAndInitHTTPLocationReverseProxyConfigRequest{LocationId: params.LocationId}) + if err != nil { + this.ErrorPage(err) + return + } + reverseProxy := &serverconfigs.ReverseProxyConfig{} + err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy) + if err != nil { + this.ErrorPage(err) + return + } + this.Data["reverseProxyId"] = reverseProxy.Id + + schedulingCode := reverseProxy.FindSchedulingConfig().Code + schedulingMap := schedulingconfigs.FindSchedulingType(schedulingCode) + if schedulingMap == nil { + this.ErrorPage(errors.New("invalid scheduling code '" + schedulingCode + "'")) + return + } + this.Data["scheduling"] = schedulingMap + + this.Show() +} diff --git a/internal/web/actions/default/servers/server/settings/locations/stat/index.go b/internal/web/actions/default/servers/server/settings/locations/stat/index.go new file mode 100644 index 00000000..658db374 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/stat/index.go @@ -0,0 +1,49 @@ +package stat + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/webutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/iwind/TeaGo/actions" +) + +type IndexAction struct { + actionutils.ParentAction +} + +func (this *IndexAction) Init() { +} + +func (this *IndexAction) RunGet(params struct { + LocationId int64 +}) { + webConfig, err := webutils.FindWebConfigWithLocationId(this.Parent(), params.LocationId) + if err != nil { + this.ErrorPage(err) + return + } + + this.Data["webId"] = webConfig.Id + this.Data["statConfig"] = webConfig.StatRef + + this.Show() +} + +func (this *IndexAction) RunPost(params struct { + WebId int64 + StatJSON []byte + + Must *actions.Must +}) { + // TODO 校验配置 + + _, err := this.RPC().HTTPWebRPC().UpdateHTTPWebStat(this.AdminContext(), &pb.UpdateHTTPWebStatRequest{ + WebId: params.WebId, + StatJSON: params.StatJSON, + }) + if err != nil { + this.ErrorPage(err) + return + } + this.Success() +} diff --git a/internal/web/actions/default/servers/server/settings/locations/stat/init.go b/internal/web/actions/default/servers/server/settings/locations/stat/init.go new file mode 100644 index 00000000..54f32572 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/stat/init.go @@ -0,0 +1,21 @@ +package stat + +import ( + "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()). + Helper(locationutils.NewLocationHelper()). + Helper(serverutils.NewServerHelper()). + Data("tinyMenuItem", "stat"). + Prefix("/servers/server/settings/locations/stat"). + GetPost("", new(IndexAction)). + EndAll() + }) +} diff --git a/internal/web/actions/default/servers/server/settings/locations/waf/index.go b/internal/web/actions/default/servers/server/settings/locations/waf/index.go new file mode 100644 index 00000000..08c273a8 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/waf/index.go @@ -0,0 +1,67 @@ +package waf + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/webutils" + "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() { +} + +func (this *IndexAction) RunGet(params struct { + LocationId int64 +}) { + webConfig, err := webutils.FindWebConfigWithLocationId(this.Parent(), params.LocationId) + if err != nil { + this.ErrorPage(err) + return + } + + this.Data["webId"] = webConfig.Id + this.Data["firewallConfig"] = webConfig.FirewallRef + + // 当前已有策略 + policiesResp, err := this.RPC().HTTPFirewallPolicyRPC().FindAllEnabledHTTPFirewallPolicies(this.AdminContext(), &pb.FindAllEnabledHTTPFirewallPoliciesRequest{}) + if err != nil { + this.ErrorPage(err) + return + } + policyMaps := []maps.Map{} + for _, p := range policiesResp.FirewallPolicies { + policyMaps = append(policyMaps, maps.Map{ + "id": p.Id, + "name": p.Name, + "isOn": p.IsOn, + }) + } + this.Data["firewallPolicies"] = policyMaps + + this.Show() +} + +func (this *IndexAction) RunPost(params struct { + WebId int64 + FirewallJSON []byte + + Must *actions.Must +}) { + // TODO 检查配置 + + _, err := this.RPC().HTTPWebRPC().UpdateHTTPWebFirewall(this.AdminContext(), &pb.UpdateHTTPWebFirewallRequest{ + WebId: params.WebId, + FirewallJSON: params.FirewallJSON, + }) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/servers/server/settings/locations/waf/init.go b/internal/web/actions/default/servers/server/settings/locations/waf/init.go new file mode 100644 index 00000000..635cb54f --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/waf/init.go @@ -0,0 +1,21 @@ +package waf + +import ( + "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()). + Helper(locationutils.NewLocationHelper()). + Helper(serverutils.NewServerHelper()). + Data("tinyMenuItem", "waf"). + Prefix("/servers/server/settings/locations/waf"). + GetPost("", new(IndexAction)). + EndAll() + }) +} diff --git a/internal/web/actions/default/servers/server/settings/locations/web/index.go b/internal/web/actions/default/servers/server/settings/locations/web/index.go new file mode 100644 index 00000000..01c692e9 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/web/index.go @@ -0,0 +1,48 @@ +package web + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/webutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/iwind/TeaGo/actions" +) + +type IndexAction struct { + actionutils.ParentAction +} + +func (this *IndexAction) Init() { +} + +func (this *IndexAction) RunGet(params struct { + LocationId int64 +}) { + webConfig, err := webutils.FindWebConfigWithLocationId(this.Parent(), params.LocationId) + if err != nil { + this.ErrorPage(err) + return + } + + this.Data["webConfig"] = webConfig + + this.Show() +} + +func (this *IndexAction) RunPost(params struct { + WebId int64 + Root string + + Must *actions.Must +}) { + + _, err := this.RPC().HTTPWebRPC().UpdateHTTPWeb(this.AdminContext(), &pb.UpdateHTTPWebRequest{ + WebId: params.WebId, + Root: params.Root, + }) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/servers/server/settings/locations/web/init.go b/internal/web/actions/default/servers/server/settings/locations/web/init.go new file mode 100644 index 00000000..d3570db3 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/web/init.go @@ -0,0 +1,21 @@ +package web + +import ( + "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()). + Helper(locationutils.NewLocationHelper()). + Helper(serverutils.NewServerHelper()). + Data("tinyMenuItem", "web"). + Prefix("/servers/server/settings/locations/web"). + GetPost("", new(IndexAction)). + EndAll() + }) +} diff --git a/internal/web/actions/default/servers/server/settings/origins/addPopup.go b/internal/web/actions/default/servers/server/settings/origins/addPopup.go index f35712c4..7b843c52 100644 --- a/internal/web/actions/default/servers/server/settings/origins/addPopup.go +++ b/internal/web/actions/default/servers/server/settings/origins/addPopup.go @@ -56,7 +56,7 @@ func (this *AddPopupAction) RunPost(params struct { host := addr[:portIndex] port := addr[portIndex+1:] - resp, err := this.RPC().OriginServerRPC().CreateOriginServer(this.AdminContext(), &pb.CreateOriginServerRequest{ + resp, err := this.RPC().OriginRPC().CreateOrigin(this.AdminContext(), &pb.CreateOriginRequest{ Name: "", Addr: &pb.NetworkAddress{ Protocol: params.Protocol, @@ -70,17 +70,9 @@ func (this *AddPopupAction) RunPost(params struct { return } originId := resp.OriginId - originConfigResp, err := this.RPC().OriginServerRPC().FindEnabledOriginServerConfig(this.AdminContext(), &pb.FindEnabledOriginServerConfigRequest{OriginId: originId}) - if err != nil { - this.ErrorPage(err) - return - } - originConfigData := originConfigResp.OriginJSON - var originConfig = &serverconfigs.OriginServerConfig{} - err = json.Unmarshal(originConfigData, originConfig) - if err != nil { - this.ErrorPage(err) - return + originRef := &serverconfigs.OriginRef{ + IsOn: true, + OriginId: originId, } reverseProxyResp, err := this.RPC().ReverseProxyRPC().FindEnabledReverseProxy(this.AdminContext(), &pb.FindEnabledReverseProxyRequest{ReverseProxyId: params.ReverseProxyId}) @@ -94,7 +86,7 @@ func (this *AddPopupAction) RunPost(params struct { return } - origins := []*serverconfigs.OriginServerConfig{} + origins := []*serverconfigs.OriginRef{} switch params.OriginType { case "primary": if len(reverseProxy.PrimaryOriginsJSON) > 0 { @@ -113,7 +105,7 @@ func (this *AddPopupAction) RunPost(params struct { } } } - origins = append(origins, originConfig) + origins = append(origins, originRef) originsData, err := json.Marshal(origins) if err != nil { this.ErrorPage(err) diff --git a/internal/web/actions/default/servers/server/settings/origins/delete.go b/internal/web/actions/default/servers/server/settings/origins/delete.go index 4913848a..4bf0ae3d 100644 --- a/internal/web/actions/default/servers/server/settings/origins/delete.go +++ b/internal/web/actions/default/servers/server/settings/origins/delete.go @@ -28,7 +28,7 @@ func (this *DeleteAction) RunPost(params struct { return } - origins := []*serverconfigs.OriginServerConfig{} + origins := []*serverconfigs.OriginRef{} switch params.OriginType { case "primary": err = json.Unmarshal(reverseProxy.PrimaryOriginsJSON, &origins) @@ -47,9 +47,9 @@ func (this *DeleteAction) RunPost(params struct { return } - result := []*serverconfigs.OriginServerConfig{} + result := []*serverconfigs.OriginRef{} for _, origin := range origins { - if origin.Id == params.OriginId { + if origin.OriginId == params.OriginId { continue } result = append(result, origin) diff --git a/internal/web/actions/default/servers/server/settings/origins/updatePopup.go b/internal/web/actions/default/servers/server/settings/origins/updatePopup.go index b6a69202..bdccdfdc 100644 --- a/internal/web/actions/default/servers/server/settings/origins/updatePopup.go +++ b/internal/web/actions/default/servers/server/settings/origins/updatePopup.go @@ -2,7 +2,6 @@ package origins import ( "encoding/json" - "errors" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" @@ -41,13 +40,13 @@ func (this *UpdatePopupAction) RunGet(params struct { this.Data["serverType"] = serverTypeResp.Type // 源站信息 - originResp, err := this.RPC().OriginServerRPC().FindEnabledOriginServerConfig(this.AdminContext(), &pb.FindEnabledOriginServerConfigRequest{OriginId: params.OriginId}) + originResp, err := this.RPC().OriginRPC().FindEnabledOriginConfig(this.AdminContext(), &pb.FindEnabledOriginConfigRequest{OriginId: params.OriginId}) if err != nil { this.ErrorPage(err) return } configData := originResp.OriginJSON - config := &serverconfigs.OriginServerConfig{} + config := &serverconfigs.OriginConfig{} err = json.Unmarshal(configData, config) if err != nil { this.ErrorPage(err) @@ -85,7 +84,7 @@ func (this *UpdatePopupAction) RunPost(params struct { host := addr[:portIndex] port := addr[portIndex+1:] - _, err := this.RPC().OriginServerRPC().UpdateOriginServer(this.AdminContext(), &pb.UpdateOriginServerRequest{ + _, err := this.RPC().OriginRPC().UpdateOrigin(this.AdminContext(), &pb.UpdateOriginRequest{ OriginId: params.OriginId, Name: "", Addr: &pb.NetworkAddress{ @@ -100,79 +99,5 @@ func (this *UpdatePopupAction) RunPost(params struct { return } - originConfigResp, err := this.RPC().OriginServerRPC().FindEnabledOriginServerConfig(this.AdminContext(), &pb.FindEnabledOriginServerConfigRequest{OriginId: params.OriginId}) - if err != nil { - this.ErrorPage(err) - return - } - originConfigData := originConfigResp.OriginJSON - var originConfig = &serverconfigs.OriginServerConfig{} - err = json.Unmarshal(originConfigData, originConfig) - if err != nil { - this.ErrorPage(err) - return - } - - // 查找反向代理信息 - reverseProxyResp, err := this.RPC().ReverseProxyRPC().FindEnabledReverseProxy(this.AdminContext(), &pb.FindEnabledReverseProxyRequest{ReverseProxyId: params.ReverseProxyId}) - if err != nil { - this.ErrorPage(err) - return - } - reverseProxy := reverseProxyResp.ReverseProxy - if reverseProxy == nil { - this.ErrorPage(errors.New("reverse proxy should not be nil")) - return - } - - origins := []*serverconfigs.OriginServerConfig{} - switch params.OriginType { - case "primary": - if len(reverseProxy.PrimaryOriginsJSON) > 0 { - err = json.Unmarshal(reverseProxy.PrimaryOriginsJSON, &origins) - if err != nil { - this.ErrorPage(err) - return - } - } - case "backup": - if len(reverseProxy.BackupOriginsJSON) > 0 { - err = json.Unmarshal(reverseProxy.BackupOriginsJSON, &origins) - if err != nil { - this.ErrorPage(err) - return - } - } - } - - for index, origin := range origins { - if origin.Id == params.OriginId { - origins[index] = originConfig - } - } - - // 保存 - originsData, err := json.Marshal(origins) - if err != nil { - this.ErrorPage(err) - return - } - switch params.OriginType { - case "primary": - _, err = this.RPC().ReverseProxyRPC().UpdateReverseProxyPrimaryOrigins(this.AdminContext(), &pb.UpdateReverseProxyPrimaryOriginsRequest{ - ReverseProxyId: params.ReverseProxyId, - OriginsJSON: originsData, - }) - case "backup": - _, err = this.RPC().ReverseProxyRPC().UpdateReverseProxyBackupOrigins(this.AdminContext(), &pb.UpdateReverseProxyBackupOriginsRequest{ - ReverseProxyId: params.ReverseProxyId, - OriginsJSON: originsData, - }) - } - if err != nil { - this.ErrorPage(err) - return - } - this.Success() } diff --git a/internal/web/actions/default/servers/server/settings/web/index.go b/internal/web/actions/default/servers/server/settings/web/index.go index 8cdbf57a..a7d2e995 100644 --- a/internal/web/actions/default/servers/server/settings/web/index.go +++ b/internal/web/actions/default/servers/server/settings/web/index.go @@ -2,9 +2,8 @@ package web import ( "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" - "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/serverutils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/webutils" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" - "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" "github.com/iwind/TeaGo/actions" ) @@ -20,30 +19,11 @@ func (this *IndexAction) Init() { func (this *IndexAction) RunGet(params struct { ServerId int64 }) { - server, _, isOk := serverutils.FindServer(this.Parent(), params.ServerId) - if !isOk { + webConfig, err := webutils.FindWebConfigWithServerId(this.Parent(), params.ServerId) + if err != nil { + this.ErrorPage(err) return } - webId := server.WebId - - webConfig := &serverconfigs.HTTPWebConfig{ - Id: webId, - IsOn: true, - } - if webId > 0 { - resp, err := this.RPC().HTTPWebRPC().FindEnabledHTTPWeb(this.AdminContext(), &pb.FindEnabledHTTPWebRequest{WebId: webId}) - if err != nil { - this.ErrorPage(err) - return - } - if resp.Web != nil { - web := resp.Web - - webConfig.Id = webId - webConfig.IsOn = web.IsOn - webConfig.Root = web.Root - } - } this.Data["webConfig"] = webConfig @@ -57,32 +37,14 @@ func (this *IndexAction) RunPost(params struct { Must *actions.Must }) { - if params.WebId <= 0 { - resp, err := this.RPC().HTTPWebRPC().CreateHTTPWeb(this.AdminContext(), &pb.CreateHTTPWebRequest{ - Root: params.Root, - }) - if err != nil { - this.ErrorPage(err) - return - } - webId := resp.WebId - _, err = this.RPC().ServerRPC().UpdateServerWeb(this.AdminContext(), &pb.UpdateServerWebRequest{ - ServerId: params.ServerId, - WebId: webId, - }) - if err != nil { - this.ErrorPage(err) - return - } - } else { - _, err := this.RPC().HTTPWebRPC().UpdateHTTPWeb(this.AdminContext(), &pb.UpdateHTTPWebRequest{ - WebId: params.WebId, - Root: params.Root, - }) - if err != nil { - this.ErrorPage(err) - return - } + + _, err := this.RPC().HTTPWebRPC().UpdateHTTPWeb(this.AdminContext(), &pb.UpdateHTTPWebRequest{ + WebId: params.WebId, + Root: params.Root, + }) + if err != nil { + this.ErrorPage(err) + return } this.Success() diff --git a/internal/web/import.go b/internal/web/import.go index db631db3..8fe1ee64 100644 --- a/internal/web/import.go +++ b/internal/web/import.go @@ -35,7 +35,18 @@ import ( _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/http" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/https" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/locations" + _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/locations/access" + _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/locations/accessLog" + _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/locations/cache" + _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/locations/charset" + _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/locations/gzip" + _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/locations/headers" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/locations/location" + _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/locations/pages" + _ "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/stat" + _ "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/origins" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/pages" _ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/server/settings/reverseProxy" diff --git a/web/public/js/components/server/http-charsets-box.js b/web/public/js/components/server/http-charsets-box.js index 6adb731c..9f06133a 100644 --- a/web/public/js/components/server/http-charsets-box.js +++ b/web/public/js/components/server/http-charsets-box.js @@ -13,7 +13,7 @@ Vue.component("http-charsets-box", { - @@ -36,7 +36,7 @@ diff --git a/web/views/@default/servers/server/settings/locations/gzip/index.css b/web/views/@default/servers/server/settings/locations/gzip/index.css new file mode 100644 index 00000000..e69de29b diff --git a/web/views/@default/servers/server/settings/locations/gzip/index.css.map b/web/views/@default/servers/server/settings/locations/gzip/index.css.map new file mode 100644 index 00000000..66dc9051 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/gzip/index.css.map @@ -0,0 +1 @@ +undefined \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/gzip/index.html b/web/views/@default/servers/server/settings/locations/gzip/index.html new file mode 100644 index 00000000..5b61579b --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/gzip/index.html @@ -0,0 +1,21 @@ +{$layout} + +{$template "/left_menu"} + +
+ {$template "../location_menu"} + {$template "../left_menu"} + +
+
+
+ + + + + +
+ + +
+
\ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/gzip/index.js b/web/views/@default/servers/server/settings/locations/gzip/index.js new file mode 100644 index 00000000..295a9aaf --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/gzip/index.js @@ -0,0 +1,3 @@ +Tea.context(function () { + this.success = NotifyReloadSuccess("保存成功") +}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/gzip/index.less b/web/views/@default/servers/server/settings/locations/gzip/index.less new file mode 100644 index 00000000..e69de29b diff --git a/web/views/@default/servers/server/settings/locations/headers/createDeletePopup.html b/web/views/@default/servers/server/settings/locations/headers/createDeletePopup.html new file mode 100644 index 00000000..e8084a70 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/headers/createDeletePopup.html @@ -0,0 +1,15 @@ +{$layout "layout_popup"} + +

添加需要删除的Header

+ + +
选择字符编码 + + + + + \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/accessLog/index.js b/web/views/@default/servers/server/settings/locations/accessLog/index.js new file mode 100644 index 00000000..295a9aaf --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/accessLog/index.js @@ -0,0 +1,3 @@ +Tea.context(function () { + this.success = NotifyReloadSuccess("保存成功") +}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/accessLog/index.less b/web/views/@default/servers/server/settings/locations/accessLog/index.less new file mode 100644 index 00000000..e69de29b diff --git a/web/views/@default/servers/server/settings/locations/cache/index.css b/web/views/@default/servers/server/settings/locations/cache/index.css new file mode 100644 index 00000000..e69de29b diff --git a/web/views/@default/servers/server/settings/locations/cache/index.css.map b/web/views/@default/servers/server/settings/locations/cache/index.css.map new file mode 100644 index 00000000..66dc9051 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/cache/index.css.map @@ -0,0 +1 @@ +undefined \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/cache/index.html b/web/views/@default/servers/server/settings/locations/cache/index.html new file mode 100644 index 00000000..faebd1a4 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/cache/index.html @@ -0,0 +1,16 @@ +{$layout} + +{$template "/left_menu"} + +
+ {$template "../location_menu"} + {$template "../left_menu"} + +
+
+ + + +
+
+
\ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/cache/index.js b/web/views/@default/servers/server/settings/locations/cache/index.js new file mode 100644 index 00000000..295a9aaf --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/cache/index.js @@ -0,0 +1,3 @@ +Tea.context(function () { + this.success = NotifyReloadSuccess("保存成功") +}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/cache/index.less b/web/views/@default/servers/server/settings/locations/cache/index.less new file mode 100644 index 00000000..e69de29b diff --git a/web/views/@default/servers/server/settings/locations/charset/index.css b/web/views/@default/servers/server/settings/locations/charset/index.css new file mode 100644 index 00000000..e69de29b diff --git a/web/views/@default/servers/server/settings/locations/charset/index.css.map b/web/views/@default/servers/server/settings/locations/charset/index.css.map new file mode 100644 index 00000000..66dc9051 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/charset/index.css.map @@ -0,0 +1 @@ +undefined \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/charset/index.html b/web/views/@default/servers/server/settings/locations/charset/index.html new file mode 100644 index 00000000..ab7e46e1 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/charset/index.html @@ -0,0 +1,17 @@ +{$layout} + +{$template "/left_menu"} + +
+ {$template "../location_menu"} + {$template "../left_menu"} + +
+
+
+ + + +
+
+
\ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/charset/index.js b/web/views/@default/servers/server/settings/locations/charset/index.js new file mode 100644 index 00000000..295a9aaf --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/charset/index.js @@ -0,0 +1,3 @@ +Tea.context(function () { + this.success = NotifyReloadSuccess("保存成功") +}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/charset/index.less b/web/views/@default/servers/server/settings/locations/charset/index.less new file mode 100644 index 00000000..e69de29b diff --git a/web/views/@default/servers/server/settings/locations/create.html b/web/views/@default/servers/server/settings/locations/create.html index 6785561a..95d9fc4f 100644 --- a/web/views/@default/servers/server/settings/locations/create.html +++ b/web/views/@default/servers/server/settings/locations/create.html @@ -10,7 +10,7 @@
路径匹配规则 * - +

路径通常以斜杠(/)开头,比如/hello。如果匹配类型是正则表达式匹配,则可以是一个正则表达式

名称 - +

可以用来说明此规则用途。。

+ + + + +
名称(Name) + +
+ + diff --git a/web/views/@default/servers/server/settings/locations/headers/createDeletePopup.js b/web/views/@default/servers/server/settings/locations/headers/createDeletePopup.js new file mode 100644 index 00000000..c8fe9515 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/headers/createDeletePopup.js @@ -0,0 +1,3 @@ +Tea.context(function () { + this.success = NotifyPopup +}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/headers/createSetPopup.html b/web/views/@default/servers/server/settings/locations/headers/createSetPopup.html new file mode 100644 index 00000000..f83492e6 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/headers/createSetPopup.html @@ -0,0 +1,22 @@ +{$layout "layout_popup"} +

设置Header

+ +
+ + + + + + + + + + + +
名称(Name) + +
(Value) + +
+ +
diff --git a/web/views/@default/servers/server/settings/locations/headers/createSetPopup.js b/web/views/@default/servers/server/settings/locations/headers/createSetPopup.js new file mode 100644 index 00000000..c8fe9515 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/headers/createSetPopup.js @@ -0,0 +1,3 @@ +Tea.context(function () { + this.success = NotifyPopup +}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/headers/index.css b/web/views/@default/servers/server/settings/locations/headers/index.css new file mode 100644 index 00000000..e69de29b diff --git a/web/views/@default/servers/server/settings/locations/headers/index.css.map b/web/views/@default/servers/server/settings/locations/headers/index.css.map new file mode 100644 index 00000000..66dc9051 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/headers/index.css.map @@ -0,0 +1 @@ +undefined \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/headers/index.html b/web/views/@default/servers/server/settings/locations/headers/index.html new file mode 100644 index 00000000..e27fd2a7 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/headers/index.html @@ -0,0 +1,12 @@ +{$layout} + +{$template "/left_menu"} + +
+ {$template "../location_menu"} + {$template "../left_menu"} + +
+ +
+
\ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/headers/index.less b/web/views/@default/servers/server/settings/locations/headers/index.less new file mode 100644 index 00000000..e69de29b diff --git a/web/views/@default/servers/server/settings/locations/headers/updateSetPopup.html b/web/views/@default/servers/server/settings/locations/headers/updateSetPopup.html new file mode 100644 index 00000000..6fd1c02e --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/headers/updateSetPopup.html @@ -0,0 +1,23 @@ +{$layout "layout_popup"} +

修改Header

+ +
+ + + + + + + + + + + + +
名称(Name) + +
(Value) + +
+ +
diff --git a/web/views/@default/servers/server/settings/locations/headers/updateSetPopup.js b/web/views/@default/servers/server/settings/locations/headers/updateSetPopup.js new file mode 100644 index 00000000..c8fe9515 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/headers/updateSetPopup.js @@ -0,0 +1,3 @@ +Tea.context(function () { + this.success = NotifyPopup +}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/location/index.html b/web/views/@default/servers/server/settings/locations/location/index.html index 0eedaf54..0a6a5a44 100644 --- a/web/views/@default/servers/server/settings/locations/location/index.html +++ b/web/views/@default/servers/server/settings/locations/location/index.html @@ -2,9 +2,79 @@ {$template "/left_menu"}
- - 所有路径规则 » - {{locationConfig.pattern}} - - {$template "/servers/server/settings/locations/left_menu"} + {$template "../location_menu"} + {$template "../left_menu"} + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
路径匹配规则 * + +

路径通常以斜杠(/)开头,比如/hello。如果匹配类型是正则表达式匹配,则可以是一个正则表达式

+
匹配类型 + +

+
是否终止往下匹配 +
+ + +
+

如果选中了此选项,一旦匹配成功,不会继续匹配其他的路径规则。

+
名称 + +

可以用来说明此规则用途。。

+
不区分大小写 +
+ + +
+

选中表示匹配规则中的路径中的英文字母不区分大小写。

+
反向匹配 +
+ + +
+

选中表示匹配所有不符合规则的路径。

+
描述 + +
+ +
+
\ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/location/index.js b/web/views/@default/servers/server/settings/locations/location/index.js new file mode 100644 index 00000000..526a147b --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/location/index.js @@ -0,0 +1,15 @@ +Tea.context(function () { + this.success = NotifyReloadSuccess("保存成功") + + this.$delay(function () { + this.changePatternType(this.type) + }) + + this.selectedType = null + + this.changePatternType = function (type) { + this.selectedType = this.patternTypes.$find(function (k, v) { + return v.type == type; + }) + } +}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/pages/createPopup.html b/web/views/@default/servers/server/settings/locations/pages/createPopup.html new file mode 100644 index 00000000..565ea8cb --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/pages/createPopup.html @@ -0,0 +1,28 @@ +{$layout "layout_popup"} +

添加特殊页面

+
+ + + + + + + + + + + + + +
响应状态码 * + +

比如404,或者50x。

+
URL * + +

页面文件是相对于节点安装目录的页面文件比如web/pages/40x.html,或者一个完整的URL。

+
新状态码 + +

可以用来修改响应的状态码,不填表示不改变原有状态码。

+
+ +
\ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/pages/createPopup.js b/web/views/@default/servers/server/settings/locations/pages/createPopup.js new file mode 100644 index 00000000..c8fe9515 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/pages/createPopup.js @@ -0,0 +1,3 @@ +Tea.context(function () { + this.success = NotifyPopup +}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/pages/index.css b/web/views/@default/servers/server/settings/locations/pages/index.css new file mode 100644 index 00000000..e69de29b diff --git a/web/views/@default/servers/server/settings/locations/pages/index.css.map b/web/views/@default/servers/server/settings/locations/pages/index.css.map new file mode 100644 index 00000000..66dc9051 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/pages/index.css.map @@ -0,0 +1 @@ +undefined \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/pages/index.html b/web/views/@default/servers/server/settings/locations/pages/index.html new file mode 100644 index 00000000..ac521efb --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/pages/index.html @@ -0,0 +1,16 @@ +{$layout} + +{$template "/left_menu"} + +
+ {$template "../location_menu"} + {$template "../left_menu"} + +
+
+ + + +
+
+
\ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/pages/index.js b/web/views/@default/servers/server/settings/locations/pages/index.js new file mode 100644 index 00000000..295a9aaf --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/pages/index.js @@ -0,0 +1,3 @@ +Tea.context(function () { + this.success = NotifyReloadSuccess("保存成功") +}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/pages/index.less b/web/views/@default/servers/server/settings/locations/pages/index.less new file mode 100644 index 00000000..e69de29b diff --git a/web/views/@default/servers/server/settings/locations/pages/updatePopup.html b/web/views/@default/servers/server/settings/locations/pages/updatePopup.html new file mode 100644 index 00000000..89fa18dc --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/pages/updatePopup.html @@ -0,0 +1,29 @@ +{$layout "layout_popup"} +

修改特殊页面

+
+ + + + + + + + + + + + + + +
响应状态码 * + +

比如404,或者50x。

+
URL * + +

页面文件是相对于节点安装目录的页面文件比如web/pages/40x.html,或者一个完整的URL。

+
新状态码 + +

可以用来修改响应的状态码,不填表示不改变原有状态码。

+
+ +
\ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/pages/updatePopup.js b/web/views/@default/servers/server/settings/locations/pages/updatePopup.js new file mode 100644 index 00000000..c064bd22 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/pages/updatePopup.js @@ -0,0 +1,8 @@ +Tea.context(function () { + this.success = NotifyPopup + + this.newStatus = "" + if (this.pageConfig.newStatus > 0) { + this.newStatus = this.pageConfig.newStatus + } +}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/reverseProxy/@menu.html b/web/views/@default/servers/server/settings/locations/reverseProxy/@menu.html new file mode 100644 index 00000000..36173cbc --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/reverseProxy/@menu.html @@ -0,0 +1,4 @@ + + 源站列表 + 调度算法 + \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/reverseProxy/index.css b/web/views/@default/servers/server/settings/locations/reverseProxy/index.css new file mode 100644 index 00000000..e69de29b diff --git a/web/views/@default/servers/server/settings/locations/reverseProxy/index.css.map b/web/views/@default/servers/server/settings/locations/reverseProxy/index.css.map new file mode 100644 index 00000000..66dc9051 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/reverseProxy/index.css.map @@ -0,0 +1 @@ +undefined \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/reverseProxy/index.html b/web/views/@default/servers/server/settings/locations/reverseProxy/index.html new file mode 100644 index 00000000..a092e79d --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/reverseProxy/index.html @@ -0,0 +1,34 @@ +{$layout} +{$template "/left_menu"} + +
+ {$template "../location_menu"} + {$template "../left_menu"} + +
+ {$template "menu"} +
+
+ + + + + + + +
是否启用反向代理 +
+ + +
+
+ +
+ +
+
+ +
+
+
\ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/reverseProxy/index.js b/web/views/@default/servers/server/settings/locations/reverseProxy/index.js new file mode 100644 index 00000000..240ff02b --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/reverseProxy/index.js @@ -0,0 +1,17 @@ +Tea.context(function () { + this.success = NotifyReloadSuccess("保存成功") + + this.updateOn = function (b) { + teaweb.confirm(b ? "确定要启用反向代理服务吗?" : "确定要停用反向代理服务吗?", function () { + this.$post(".updateOn") + .params({ + "serverId": this.serverId, + "isOn": b ? 1 : 0, + "reverseProxyId": this.reverseProxyId + }) + .success(function () { + window.location.reload() + }) + }) + } +}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/reverseProxy/index.less b/web/views/@default/servers/server/settings/locations/reverseProxy/index.less new file mode 100644 index 00000000..e69de29b diff --git a/web/views/@default/servers/server/settings/locations/reverseProxy/scheduling.html b/web/views/@default/servers/server/settings/locations/reverseProxy/scheduling.html new file mode 100644 index 00000000..05d5db74 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/reverseProxy/scheduling.html @@ -0,0 +1,13 @@ +{$layout} +{$template "/left_menu"} + +
+ {$template "../location_menu"} + {$template "../left_menu"} + +
+ {$template "menu"} + + +
+
\ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/reverseProxy/updateSchedulingPopup.html b/web/views/@default/servers/server/settings/locations/reverseProxy/updateSchedulingPopup.html new file mode 100644 index 00000000..d6707748 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/reverseProxy/updateSchedulingPopup.html @@ -0,0 +1,60 @@ +{$layout "layout_popup"} + +

修改调度算法

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
选择调度算法 + +

{{schedulingTypeDescription}}

+
+ Key + + +

用来计算Hash的字符串,其中可以使用变量。

+
常用变量 + +
参数类型 + +
参数名 + +

记录或指定后端服务器的参数名,只能是英文字母和数字的组合,不允许有下划线(因为在HTTP Header中下划线是不标准的)

+
+ +
\ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/reverseProxy/updateSchedulingPopup.js b/web/views/@default/servers/server/settings/locations/reverseProxy/updateSchedulingPopup.js new file mode 100644 index 00000000..b7e8bce3 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/reverseProxy/updateSchedulingPopup.js @@ -0,0 +1,39 @@ +Tea.context(function () { + var that = this; + + this.success = NotifyPopup + + this.selectedType = this.scheduling.code; + this.schedulingTypeDescription = null; + + this.changeSchedulingType = function () { + this.schedulingTypeDescription = this.schedulingTypes.$find(function (k, v) { + return v.code == that.selectedType; + }).description; + }; + this.changeSchedulingType(); + + // hash + this.hashKey = ""; + this.hashVar = ""; + if (this.scheduling.code == "hash") { + this.hashKey = this.scheduling.options.key; + } else { + this.hashKey = "${remoteAddr}"; + } + + this.changeHashVar = function () { + if (this.hashVar.length > 0) { + this.hashKey = this.hashVar; + } + }; + + // sticky + if (this.scheduling.code == "sticky") { + this.stickyType = this.scheduling.options.type; + this.stickyParam = this.scheduling.options.param; + } else { + this.stickyType = "cookie"; + this.stickyParam = "Origin"; + } +}); \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/stat/index.css b/web/views/@default/servers/server/settings/locations/stat/index.css new file mode 100644 index 00000000..e69de29b diff --git a/web/views/@default/servers/server/settings/locations/stat/index.css.map b/web/views/@default/servers/server/settings/locations/stat/index.css.map new file mode 100644 index 00000000..66dc9051 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/stat/index.css.map @@ -0,0 +1 @@ +undefined \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/stat/index.html b/web/views/@default/servers/server/settings/locations/stat/index.html new file mode 100644 index 00000000..e488e060 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/stat/index.html @@ -0,0 +1,16 @@ +{$layout} + +{$template "/left_menu"} + +
+ {$template "../location_menu"} + {$template "../left_menu"} + +
+
+ + + +
+
+
\ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/stat/index.js b/web/views/@default/servers/server/settings/locations/stat/index.js new file mode 100644 index 00000000..295a9aaf --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/stat/index.js @@ -0,0 +1,3 @@ +Tea.context(function () { + this.success = NotifyReloadSuccess("保存成功") +}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/stat/index.less b/web/views/@default/servers/server/settings/locations/stat/index.less new file mode 100644 index 00000000..e69de29b diff --git a/web/views/@default/servers/server/settings/locations/waf/index.css b/web/views/@default/servers/server/settings/locations/waf/index.css new file mode 100644 index 00000000..e69de29b diff --git a/web/views/@default/servers/server/settings/locations/waf/index.css.map b/web/views/@default/servers/server/settings/locations/waf/index.css.map new file mode 100644 index 00000000..66dc9051 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/waf/index.css.map @@ -0,0 +1 @@ +undefined \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/waf/index.html b/web/views/@default/servers/server/settings/locations/waf/index.html new file mode 100644 index 00000000..fbffc8c9 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/waf/index.html @@ -0,0 +1,16 @@ +{$layout} + +{$template "/left_menu"} + +
+ {$template "../location_menu"} + {$template "../left_menu"} + +
+
+ + + +
+
+
\ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/waf/index.js b/web/views/@default/servers/server/settings/locations/waf/index.js new file mode 100644 index 00000000..295a9aaf --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/waf/index.js @@ -0,0 +1,3 @@ +Tea.context(function () { + this.success = NotifyReloadSuccess("保存成功") +}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/waf/index.less b/web/views/@default/servers/server/settings/locations/waf/index.less new file mode 100644 index 00000000..e69de29b diff --git a/web/views/@default/servers/server/settings/locations/web/index.css b/web/views/@default/servers/server/settings/locations/web/index.css new file mode 100644 index 00000000..e69de29b diff --git a/web/views/@default/servers/server/settings/locations/web/index.css.map b/web/views/@default/servers/server/settings/locations/web/index.css.map new file mode 100644 index 00000000..66dc9051 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/web/index.css.map @@ -0,0 +1 @@ +undefined \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/web/index.html b/web/views/@default/servers/server/settings/locations/web/index.html new file mode 100644 index 00000000..31048238 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/web/index.html @@ -0,0 +1,23 @@ +{$layout} + +{$template "/left_menu"} + +
+ {$template "../location_menu"} + {$template "../left_menu"} + +
+
+ + + + + + +
Web目录 + +
+ +
+
+
\ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/web/index.js b/web/views/@default/servers/server/settings/locations/web/index.js new file mode 100644 index 00000000..295a9aaf --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/web/index.js @@ -0,0 +1,3 @@ +Tea.context(function () { + this.success = NotifyReloadSuccess("保存成功") +}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/locations/web/index.less b/web/views/@default/servers/server/settings/locations/web/index.less new file mode 100644 index 00000000..e69de29b