diff --git a/internal/rpc/rpc_client.go b/internal/rpc/rpc_client.go index 06fcc594..a561ac7e 100644 --- a/internal/rpc/rpc_client.go +++ b/internal/rpc/rpc_client.go @@ -36,6 +36,7 @@ type RPCClient struct { httpCachePolicyClients []pb.HTTPCachePolicyServiceClient httpFirewallPolicyClients []pb.HTTPFirewallPolicyServiceClient httpLocationClients []pb.HTTPLocationServiceClient + httpWebsocketClients []pb.HTTPWebsocketServiceClient } func NewRPCClient(apiConfig *configs.APIConfig) (*RPCClient, error) { @@ -61,6 +62,7 @@ func NewRPCClient(apiConfig *configs.APIConfig) (*RPCClient, error) { httpCachePolicyClients := []pb.HTTPCachePolicyServiceClient{} httpFirewallPolicyClients := []pb.HTTPFirewallPolicyServiceClient{} httpLocationClients := []pb.HTTPLocationServiceClient{} + httpWebsocketClients := []pb.HTTPWebsocketServiceClient{} conns := []*grpc.ClientConn{} for _, endpoint := range apiConfig.RPC.Endpoints { @@ -94,6 +96,7 @@ func NewRPCClient(apiConfig *configs.APIConfig) (*RPCClient, error) { httpCachePolicyClients = append(httpCachePolicyClients, pb.NewHTTPCachePolicyServiceClient(conn)) httpFirewallPolicyClients = append(httpFirewallPolicyClients, pb.NewHTTPFirewallPolicyServiceClient(conn)) httpLocationClients = append(httpLocationClients, pb.NewHTTPLocationServiceClient(conn)) + httpWebsocketClients = append(httpWebsocketClients, pb.NewHTTPWebsocketServiceClient(conn)) } return &RPCClient{ @@ -116,6 +119,7 @@ func NewRPCClient(apiConfig *configs.APIConfig) (*RPCClient, error) { httpCachePolicyClients: httpCachePolicyClients, httpFirewallPolicyClients: httpFirewallPolicyClients, httpLocationClients: httpLocationClients, + httpWebsocketClients: httpWebsocketClients, }, nil } @@ -245,6 +249,13 @@ func (this *RPCClient) HTTPLocationRPC() pb.HTTPLocationServiceClient { return nil } +func (this *RPCClient) HTTPWebsocketRPC() pb.HTTPWebsocketServiceClient { + if len(this.httpWebsocketClients) > 0 { + return this.httpWebsocketClients[rands.Int(0, len(this.httpWebsocketClients)-1)] + } + return nil +} + func (this *RPCClient) Context(adminId int64) context.Context { ctx := context.Background() m := maps.Map{ 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 22d38344..b1c89687 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 @@ -54,84 +54,81 @@ func (this *LocationHelper) createMenus(serverIdString string, locationIdString "isActive": secondMenuItem == "basic", }, } - menuItems = append(menuItems, maps.Map{ "name": "HTTP", "url": "/servers/server/settings/locations/http?serverId=" + serverIdString + "&locationId=" + locationIdString, "isActive": secondMenuItem == "http", }) - menuItems = append(menuItems, maps.Map{ "name": "Web设置", "url": "/servers/server/settings/locations/web?serverId=" + serverIdString + "&locationId=" + locationIdString, "isActive": secondMenuItem == "web", }) - menuItems = append(menuItems, maps.Map{ "name": "反向代理", "url": "/servers/server/settings/locations/reverseProxy?serverId=" + serverIdString + "&locationId=" + locationIdString, "isActive": secondMenuItem == "reverseProxy", }) - + menuItems = append(menuItems, maps.Map{ + "name": "重写规则", + "url": "/servers/server/settings/locations/rewrite?serverId=" + serverIdString + "&locationId=" + locationIdString, + "isActive": secondMenuItem == "rewrite", + }) menuItems = append(menuItems, maps.Map{ "name": "访问控制", "url": "/servers/server/settings/locations/access?serverId=" + serverIdString + "&locationId=" + locationIdString, "isActive": secondMenuItem == "access", }) - menuItems = append(menuItems, maps.Map{ "name": "WAF", "url": "/servers/server/settings/locations/waf?serverId=" + serverIdString + "&locationId=" + locationIdString, "isActive": secondMenuItem == "waf", }) - menuItems = append(menuItems, maps.Map{ "name": "缓存", "url": "/servers/server/settings/locations/cache?serverId=" + serverIdString + "&locationId=" + locationIdString, "isActive": secondMenuItem == "cache", }) - menuItems = append(menuItems, maps.Map{ "name": "-", "url": "", "isActive": false, }) - menuItems = append(menuItems, maps.Map{ "name": "字符编码", "url": "/servers/server/settings/locations/charset?serverId=" + serverIdString + "&locationId=" + locationIdString, "isActive": secondMenuItem == "charset", }) - menuItems = append(menuItems, maps.Map{ "name": "访问日志", "url": "/servers/server/settings/locations/accessLog?serverId=" + serverIdString + "&locationId=" + locationIdString, "isActive": secondMenuItem == "accessLog", }) - menuItems = append(menuItems, maps.Map{ "name": "统计", "url": "/servers/server/settings/locations/stat?serverId=" + serverIdString + "&locationId=" + locationIdString, "isActive": secondMenuItem == "stat", }) - menuItems = append(menuItems, maps.Map{ "name": "Gzip压缩", "url": "/servers/server/settings/locations/gzip?serverId=" + serverIdString + "&locationId=" + locationIdString, "isActive": secondMenuItem == "gzip", }) - menuItems = append(menuItems, maps.Map{ "name": "特殊页面", "url": "/servers/server/settings/locations/pages?serverId=" + serverIdString + "&locationId=" + locationIdString, "isActive": secondMenuItem == "pages", }) - menuItems = append(menuItems, maps.Map{ "name": "HTTP Header", "url": "/servers/server/settings/locations/headers?serverId=" + serverIdString + "&locationId=" + locationIdString, "isActive": secondMenuItem == "header", }) + menuItems = append(menuItems, maps.Map{ + "name": "Websocket", + "url": "/servers/server/settings/locations/websocket?serverId=" + serverIdString + "&locationId=" + locationIdString, + "isActive": secondMenuItem == "websocket", + }) return menuItems } diff --git a/internal/web/actions/default/servers/server/settings/locations/rewrite/index.go b/internal/web/actions/default/servers/server/settings/locations/rewrite/index.go new file mode 100644 index 00000000..4d481cf1 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/rewrite/index.go @@ -0,0 +1,20 @@ +package rewrite + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" +) + +type IndexAction struct { + actionutils.ParentAction +} + +func (this *IndexAction) Init() { +} + +func (this *IndexAction) RunGet(params struct { + LocationId int64 +}) { + // TODO + + this.Show() +} diff --git a/internal/web/actions/default/servers/server/settings/locations/rewrite/init.go b/internal/web/actions/default/servers/server/settings/locations/rewrite/init.go new file mode 100644 index 00000000..e03b352c --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/rewrite/init.go @@ -0,0 +1,21 @@ +package rewrite + +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", "rewrite"). + Prefix("/servers/server/settings/locations/rewrite"). + Get("", new(IndexAction)). + EndAll() + }) +} diff --git a/internal/web/actions/default/servers/server/settings/locations/websocket/index.go b/internal/web/actions/default/servers/server/settings/locations/websocket/index.go new file mode 100644 index 00000000..58de11b9 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/websocket/index.go @@ -0,0 +1,112 @@ +package websocket + +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" +) + +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["websocketRef"] = webConfig.WebsocketRef + this.Data["websocketConfig"] = webConfig.Websocket + + this.Show() +} + +func (this *IndexAction) RunPost(params struct { + WebId int64 + WebsocketRefJSON []byte + WebsocketJSON []byte + + Must *actions.Must +}) { + // TODO 检查配置 + + websocketRef := &serverconfigs.HTTPWebsocketRef{} + err := json.Unmarshal(params.WebsocketRefJSON, websocketRef) + if err != nil { + this.ErrorPage(err) + return + } + + websocketConfig := &serverconfigs.HTTPWebsocketConfig{} + err = json.Unmarshal(params.WebsocketJSON, websocketConfig) + if err != nil { + this.ErrorPage(err) + return + } + err = websocketConfig.Init() + if err != nil { + this.ErrorPage(err) + return + } + + // 创建 + handshakeTimeoutJSON, err := json.Marshal(websocketConfig.HandshakeTimeout) + if err != nil { + this.ErrorPage(err) + return + } + + // 创建或修改 + if websocketConfig.Id <= 0 { + createResp, err := this.RPC().HTTPWebsocketRPC().CreateHTTPWebsocket(this.AdminContext(), &pb.CreateHTTPWebsocketRequest{ + HandshakeTimeoutJSON: handshakeTimeoutJSON, + AllowAllOrigins: websocketConfig.AllowAllOrigins, + AllowedOrigins: websocketConfig.AllowedOrigins, + RequestSameOrigin: websocketConfig.RequestSameOrigin, + RequestOrigin: websocketConfig.RequestOrigin, + }) + if err != nil { + this.ErrorPage(err) + return + } + websocketConfig.Id = createResp.WebsocketId + } else { + _, err = this.RPC().HTTPWebsocketRPC().UpdateHTTPWebsocket(this.AdminContext(), &pb.UpdateHTTPWebsocketRequest{ + WebsocketId: websocketConfig.Id, + HandshakeTimeoutJSON: handshakeTimeoutJSON, + AllowAllOrigins: websocketConfig.AllowAllOrigins, + AllowedOrigins: websocketConfig.AllowedOrigins, + RequestSameOrigin: websocketConfig.RequestSameOrigin, + RequestOrigin: websocketConfig.RequestOrigin, + }) + } + + websocketRef.WebsocketId = websocketConfig.Id + websocketRefJSON, err := json.Marshal(websocketRef) + if err != nil { + this.ErrorPage(err) + return + } + _, err = this.RPC().HTTPWebRPC().UpdateHTTPWebWebsocket(this.AdminContext(), &pb.UpdateHTTPWebWebsocketRequest{ + WebId: params.WebId, + WebsocketJSON: websocketRefJSON, + }) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/servers/server/settings/locations/websocket/init.go b/internal/web/actions/default/servers/server/settings/locations/websocket/init.go new file mode 100644 index 00000000..3c8c2d55 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/websocket/init.go @@ -0,0 +1,21 @@ +package websocket + +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", "websocket"). + Prefix("/servers/server/settings/locations/websocket"). + GetPost("", new(IndexAction)). + EndAll() + }) +} diff --git a/internal/web/actions/default/servers/server/settings/rewrite/index.go b/internal/web/actions/default/servers/server/settings/rewrite/index.go new file mode 100644 index 00000000..08cba790 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/rewrite/index.go @@ -0,0 +1,22 @@ +package rewrite + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" +) + +type IndexAction struct { + actionutils.ParentAction +} + +func (this *IndexAction) Init() { + this.Nav("", "setting", "index") + this.SecondMenu("rewrite") +} + +func (this *IndexAction) RunGet(params struct { + ServerId int64 +}) { + // TODO + + this.Show() +} diff --git a/internal/web/actions/default/servers/server/settings/rewrite/init.go b/internal/web/actions/default/servers/server/settings/rewrite/init.go new file mode 100644 index 00000000..8d819f4b --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/rewrite/init.go @@ -0,0 +1,18 @@ +package rewrite + +import ( + "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(serverutils.NewServerHelper()). + Prefix("/servers/server/settings/rewrite"). + Get("", new(IndexAction)). + EndAll() + }) +} diff --git a/internal/web/actions/default/servers/server/settings/websocket/createOrigin.go b/internal/web/actions/default/servers/server/settings/websocket/createOrigin.go new file mode 100644 index 00000000..79279a2a --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/websocket/createOrigin.go @@ -0,0 +1,32 @@ +package websocket + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/iwind/TeaGo/actions" +) + +// 添加来源域 +type CreateOriginAction struct { + actionutils.ParentAction +} + +func (this *CreateOriginAction) Init() { + this.Nav("", "", "") +} + +func (this *CreateOriginAction) RunGet(params struct{}) { + this.Show() +} + +func (this *CreateOriginAction) RunPost(params struct { + Origin string + + Must *actions.Must +}) { + params.Must. + Field("origin", params.Origin). + Require("请输入域名") + + this.Data["origin"] = params.Origin + this.Success() +} diff --git a/web/public/js/components/server/http-websocket-box.js b/web/public/js/components/server/http-websocket-box.js new file mode 100644 index 00000000..b2913fda --- /dev/null +++ b/web/public/js/components/server/http-websocket-box.js @@ -0,0 +1,161 @@ +Vue.component("http-websocket-box", { + props: ["v-websocket-ref", "v-websocket-config", "v-is-location"], + data: function () { + let websocketRef = this.vWebsocketRef + if (websocketRef == null) { + websocketRef = { + isPrior: false, + isOn: true, + websocketId: 0 + } + } + + let websocketConfig = this.vWebsocketConfig + if (websocketConfig == null) { + websocketConfig = { + id: 0, + isOn: true, + handshakeTimeout: { + count: 30, + unit: "second" + }, + allowAllOrigins: true, + allowedOrigins: [], + requestSameOrigin: true, + requestOrigin: "" + } + } else { + if (websocketConfig.handshakeTimeout == null) { + websocketConfig.handshakeTimeout = { + count: 30, + unit: "second", + } + } + if (websocketConfig.allowedOrigins == null) { + websocketConfig.allowedOrigins = [] + } + } + + return { + websocketRef: websocketRef, + websocketConfig: websocketConfig, + handshakeTimeoutCountString: websocketConfig.handshakeTimeout.count.toString(), + advancedVisible: false + } + }, + watch: { + handshakeTimeoutCountString: function (v) { + let count = parseInt(v) + if (!isNaN(count) && count >= 0) { + this.websocketConfig.handshakeTimeout.count = count + } else { + this.websocketConfig.handshakeTimeout.count = 0 + } + } + }, + methods: { + isOn: function () { + return (!this.vIsLocation || this.websocketRef.isPrior) && this.websocketRef.isOn + }, + changeAdvancedVisible: function (v) { + this.advancedVisible = v + }, + createOrigin: function () { + let that = this + teaweb.popup("/servers/server/settings/websocket/createOrigin", { + height: "12.5em", + callback: function (resp) { + that.websocketConfig.allowedOrigins.push(resp.data.origin) + } + }) + }, + removeOrigin: function (index) { + this.websocketConfig.allowedOrigins.$remove(index) + } + }, + template: `
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
是否启用配置 +
+ + +
+
允许所有来源域(Origin) +
+ + +
+

选中表示允许所有的来源域。

+
允许的来源域列表(Origin) +
+
+ {{origin}} +
+
+
+ +

只允许在列表中的来源域名访问Websocket服务。

+
是否传递请求来源域 +
+ + +
+

选中表示把接收到的请求中的Origin字段传递到源站。

+
指定传递的来源域 + +

指定向源站传递的Origin字段值。

+
握手超时时间(Handshake) +
+
+ +
+
+ 秒 +
+
+

0表示使用默认的时间设置。

+
+
+
` +}) \ No newline at end of file diff --git a/web/views/@default/@layout.css b/web/views/@default/@layout.css index 2213413f..8efd1bbe 100644 --- a/web/views/@default/@layout.css +++ b/web/views/@default/@layout.css @@ -39,9 +39,6 @@ .left-box.disabled { opacity: 0.1; } -.left-box.disabled:hover { - opacity: 1.0; -} .left-box.tiny { top: 10.5em; } diff --git a/web/views/@default/@layout.css.map b/web/views/@default/@layout.css.map index 596df46c..dc33fb52 100644 --- a/web/views/@default/@layout.css.map +++ b/web/views/@default/@layout.css.map @@ -1 +1 @@ -{"version":3,"sources":["@left_menu.less","@layout.less"],"names":[],"mappings":"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","file":"@layout.css"} \ No newline at end of file +{"version":3,"sources":["@left_menu.less","@layout.less"],"names":[],"mappings":"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","file":"@layout.css"} \ No newline at end of file diff --git a/web/views/@default/@left_menu.less b/web/views/@default/@left_menu.less index f8e922f0..bf0d88a9 100644 --- a/web/views/@default/@left_menu.less +++ b/web/views/@default/@left_menu.less @@ -52,10 +52,6 @@ opacity: 0.1; } -.left-box.disabled:hover { - opacity: 1.0; -} - .left-box.tiny { top: 10.5em; } diff --git a/web/views/@default/servers/server/settings/locations/rewrite/index.html b/web/views/@default/servers/server/settings/locations/rewrite/index.html new file mode 100644 index 00000000..0452db51 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/rewrite/index.html @@ -0,0 +1,11 @@ +{$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.html b/web/views/@default/servers/server/settings/locations/stat/index.html index 037d7896..e13f9093 100644 --- a/web/views/@default/servers/server/settings/locations/stat/index.html +++ b/web/views/@default/servers/server/settings/locations/stat/index.html @@ -1,5 +1,4 @@ {$layout} - {$template "/left_menu"}
diff --git a/web/views/@default/servers/server/settings/locations/waf/index.html b/web/views/@default/servers/server/settings/locations/waf/index.html index 97d01c28..6bffdc60 100644 --- a/web/views/@default/servers/server/settings/locations/waf/index.html +++ b/web/views/@default/servers/server/settings/locations/waf/index.html @@ -1,5 +1,4 @@ {$layout} - {$template "/left_menu"}
diff --git a/web/views/@default/servers/server/settings/locations/websocket/index.html b/web/views/@default/servers/server/settings/locations/websocket/index.html new file mode 100644 index 00000000..cb688418 --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/websocket/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/websocket/index.js b/web/views/@default/servers/server/settings/locations/websocket/index.js new file mode 100644 index 00000000..295a9aaf --- /dev/null +++ b/web/views/@default/servers/server/settings/locations/websocket/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/rewrite/index.html b/web/views/@default/servers/server/settings/rewrite/index.html new file mode 100644 index 00000000..e5a31ca1 --- /dev/null +++ b/web/views/@default/servers/server/settings/rewrite/index.html @@ -0,0 +1,6 @@ +{$layout} +{$template "/left_menu"} + +
+

此功能暂未开放,敬请期待。

+
\ No newline at end of file diff --git a/web/views/@default/servers/server/settings/websocket/createOrigin.html b/web/views/@default/servers/server/settings/websocket/createOrigin.html new file mode 100644 index 00000000..44ece50e --- /dev/null +++ b/web/views/@default/servers/server/settings/websocket/createOrigin.html @@ -0,0 +1,15 @@ +{$layout "layout_popup"} + +

添加来源域

+
+ + + + + +
来源域 * + +

允许客户端通过Websocket可以访问的域名,可以使用星号通配符(*)来表示匹配一组域名,比如www.example.com *.google.com

+
+ +
\ No newline at end of file diff --git a/web/views/@default/servers/server/settings/websocket/createOrigin.js b/web/views/@default/servers/server/settings/websocket/createOrigin.js new file mode 100644 index 00000000..c8fe9515 --- /dev/null +++ b/web/views/@default/servers/server/settings/websocket/createOrigin.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/websocket/index.js b/web/views/@default/servers/server/settings/websocket/index.js new file mode 100644 index 00000000..295a9aaf --- /dev/null +++ b/web/views/@default/servers/server/settings/websocket/index.js @@ -0,0 +1,3 @@ +Tea.context(function () { + this.success = NotifyReloadSuccess("保存成功") +}) \ No newline at end of file