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 index a07fa732..1f4966ac 100644 --- a/internal/web/actions/default/servers/server/settings/locations/reverseProxy/index.go +++ b/internal/web/actions/default/servers/server/settings/locations/reverseProxy/index.go @@ -5,7 +5,6 @@ import ( "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" ) @@ -40,6 +39,7 @@ func (this *IndexAction) RunGet(params struct { this.ErrorPage(err) return } + this.Data["reverseProxyRef"] = reverseProxyRef reverseProxy := &serverconfigs.ReverseProxyConfig{} err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy) @@ -47,10 +47,9 @@ func (this *IndexAction) RunGet(params struct { this.ErrorPage(err) return } + this.Data["reverseProxyConfig"] = reverseProxy this.Data["serverType"] = serverType - this.Data["reverseProxyRef"] = reverseProxyRef - this.Data["reverseProxyConfig"] = reverseProxy primaryOriginMaps := []maps.Map{} backupOriginMaps := []maps.Map{} @@ -75,23 +74,3 @@ func (this *IndexAction) RunGet(params struct { 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 index f829718f..f7ba5a63 100644 --- a/internal/web/actions/default/servers/server/settings/locations/reverseProxy/init.go +++ b/internal/web/actions/default/servers/server/settings/locations/reverseProxy/init.go @@ -16,8 +16,9 @@ func init() { Data("mainTab", "setting"). Data("tinyMenuItem", "reverseProxy"). Prefix("/servers/server/settings/locations/reverseProxy"). - GetPost("", new(IndexAction)). + Get("", new(IndexAction)). GetPost("/scheduling", new(SchedulingAction)). + GetPost("/setting", new(SettingAction)). EndAll() }) } diff --git a/internal/web/actions/default/servers/server/settings/locations/reverseProxy/setting.go b/internal/web/actions/default/servers/server/settings/locations/reverseProxy/setting.go new file mode 100644 index 00000000..c327b28d --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/locations/reverseProxy/setting.go @@ -0,0 +1,82 @@ +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" +) + +type SettingAction struct { + actionutils.ParentAction +} + +func (this *SettingAction) Init() { + this.FirstMenu("setting") +} + +func (this *SettingAction) RunGet(params struct { + LocationId int64 +}) { + 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["reverseProxyRef"] = reverseProxyRef + this.Data["reverseProxyConfig"] = reverseProxy + + this.Show() +} + +func (this *SettingAction) RunPost(params struct { + LocationId int64 + ReverseProxyRefJSON []byte + ReverseProxyJSON []byte + + Must *actions.Must +}) { + // TODO 校验配置 + + reverseProxyConfig := &serverconfigs.ReverseProxyConfig{} + err := json.Unmarshal(params.ReverseProxyJSON, reverseProxyConfig) + if err != nil { + this.ErrorPage(err) + return + } + + // 设置是否启用 + _, err = this.RPC().HTTPLocationRPC().UpdateHTTPLocationReverseProxy(this.AdminContext(), &pb.UpdateHTTPLocationReverseProxyRequest{ + LocationId: params.LocationId, + ReverseProxyJSON: params.ReverseProxyRefJSON, + }) + if err != nil { + this.ErrorPage(err) + return + } + + // 设置反向代理相关信息 + _, err = this.RPC().ReverseProxyRPC().UpdateReverseProxy(this.AdminContext(), &pb.UpdateReverseProxyRequest{ + ReverseProxyId: reverseProxyConfig.Id, + RequestHost: reverseProxyConfig.RequestHost, + RequestURI: reverseProxyConfig.RequestURI, + StripPrefix: reverseProxyConfig.StripPrefix, + }) + + this.Success() +} diff --git a/internal/web/actions/default/servers/server/settings/reverseProxy/index.go b/internal/web/actions/default/servers/server/settings/reverseProxy/index.go index 6f10d6ec..e4960b67 100644 --- a/internal/web/actions/default/servers/server/settings/reverseProxy/index.go +++ b/internal/web/actions/default/servers/server/settings/reverseProxy/index.go @@ -5,7 +5,6 @@ import ( "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" ) @@ -39,6 +38,7 @@ func (this *IndexAction) RunGet(params struct { this.ErrorPage(err) return } + this.Data["reverseProxyRef"] = reverseProxyRef reverseProxy := &serverconfigs.ReverseProxyConfig{} err = json.Unmarshal(reverseProxyResp.ReverseProxyJSON, reverseProxy) @@ -46,10 +46,9 @@ func (this *IndexAction) RunGet(params struct { this.ErrorPage(err) return } + this.Data["reverseProxyConfig"] = reverseProxy this.Data["serverType"] = serverType - this.Data["reverseProxyRef"] = reverseProxyRef - this.Data["reverseProxyConfig"] = reverseProxy primaryOriginMaps := []maps.Map{} backupOriginMaps := []maps.Map{} @@ -74,23 +73,3 @@ func (this *IndexAction) RunGet(params struct { this.Show() } - -func (this *IndexAction) RunPost(params struct { - ServerId int64 - ReverseProxyRefJSON []byte - - Must *actions.Must -}) { - // TODO 校验配置 - - _, err := this.RPC().ServerRPC().UpdateServerReverseProxy(this.AdminContext(), &pb.UpdateServerReverseProxyRequest{ - ServerId: params.ServerId, - ReverseProxyJSON: params.ReverseProxyRefJSON, - }) - if err != nil { - this.ErrorPage(err) - return - } - - this.Success() -} diff --git a/internal/web/actions/default/servers/server/settings/reverseProxy/init.go b/internal/web/actions/default/servers/server/settings/reverseProxy/init.go index 70e46b4c..0cea5f0a 100644 --- a/internal/web/actions/default/servers/server/settings/reverseProxy/init.go +++ b/internal/web/actions/default/servers/server/settings/reverseProxy/init.go @@ -14,10 +14,10 @@ func init() { Data("mainTab", "setting"). Data("secondMenuItem", "reverseProxy"). Prefix("/servers/server/settings/reverseProxy"). - GetPost("", new(IndexAction)). + Get("", new(IndexAction)). GetPost("/scheduling", new(SchedulingAction)). GetPost("/updateSchedulingPopup", new(UpdateSchedulingPopupAction)). - Post("/updateOn", new(UpdateOnAction)). + GetPost("/setting", new(SettingAction)). EndAll() }) } diff --git a/internal/web/actions/default/servers/server/settings/reverseProxy/setting.go b/internal/web/actions/default/servers/server/settings/reverseProxy/setting.go new file mode 100644 index 00000000..bf845798 --- /dev/null +++ b/internal/web/actions/default/servers/server/settings/reverseProxy/setting.go @@ -0,0 +1,82 @@ +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" +) + +type SettingAction struct { + actionutils.ParentAction +} + +func (this *SettingAction) Init() { + this.FirstMenu("setting") +} + +func (this *SettingAction) RunGet(params struct { + ServerId int64 +}) { + reverseProxyResp, err := this.RPC().ServerRPC().FindAndInitServerReverseProxyConfig(this.AdminContext(), &pb.FindAndInitServerReverseProxyConfigRequest{ServerId: params.ServerId}) + 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["reverseProxyRef"] = reverseProxyRef + this.Data["reverseProxyConfig"] = reverseProxy + + this.Show() +} + +func (this *SettingAction) RunPost(params struct { + ServerId int64 + ReverseProxyRefJSON []byte + ReverseProxyJSON []byte + + Must *actions.Must +}) { + // TODO 校验配置 + + reverseProxyConfig := &serverconfigs.ReverseProxyConfig{} + err := json.Unmarshal(params.ReverseProxyJSON, reverseProxyConfig) + if err != nil { + this.ErrorPage(err) + return + } + + // 设置是否启用 + _, err = this.RPC().ServerRPC().UpdateServerReverseProxy(this.AdminContext(), &pb.UpdateServerReverseProxyRequest{ + ServerId: params.ServerId, + ReverseProxyJSON: params.ReverseProxyRefJSON, + }) + if err != nil { + this.ErrorPage(err) + return + } + + // 设置反向代理相关信息 + _, err = this.RPC().ReverseProxyRPC().UpdateReverseProxy(this.AdminContext(), &pb.UpdateReverseProxyRequest{ + ReverseProxyId: reverseProxyConfig.Id, + RequestHost: reverseProxyConfig.RequestHost, + RequestURI: reverseProxyConfig.RequestURI, + StripPrefix: reverseProxyConfig.StripPrefix, + }) + + this.Success() +} diff --git a/internal/web/actions/default/servers/server/settings/reverseProxy/updateOn.go b/internal/web/actions/default/servers/server/settings/reverseProxy/updateOn.go deleted file mode 100644 index 008572ea..00000000 --- a/internal/web/actions/default/servers/server/settings/reverseProxy/updateOn.go +++ /dev/null @@ -1,68 +0,0 @@ -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" -) - -type UpdateOnAction struct { - actionutils.ParentAction -} - -func (this *UpdateOnAction) RunPost(params struct { - ServerId int64 - ReverseProxyId int64 - IsOn bool -}) { - // 如果没有配置过,则配置 - if params.ReverseProxyId <= 0 { - if !params.IsOn { - this.Success() - } - - resp, err := this.RPC().ReverseProxyRPC().CreateReverseProxy(this.AdminContext(), &pb.CreateReverseProxyRequest{ - SchedulingJSON: nil, - PrimaryOriginsJSON: nil, - BackupOriginsJSON: nil, - }) - if err != nil { - this.ErrorPage(err) - return - } - - reverseProxyId := resp.ReverseProxyId - ref := &serverconfigs.ReverseProxyRef{ - IsOn: true, - ReverseProxyId: reverseProxyId, - } - refJSON, err := json.Marshal(ref) - if err != nil { - this.ErrorPage(err) - return - } - - _, err = this.RPC().ServerRPC().UpdateServerReverseProxy(this.AdminContext(), &pb.UpdateServerReverseProxyRequest{ - ServerId: params.ServerId, - ReverseProxyJSON: refJSON, - }) - if err != nil { - this.ErrorPage(err) - return - } - this.Success() - } - - // 如果已经配置过 - _, err := this.RPC().ReverseProxyRPC().UpdateReverseProxyIsOn(this.AdminContext(), &pb.UpdateReverseProxyIsOnRequest{ - ReverseProxyId: params.ReverseProxyId, - IsOn: params.IsOn, - }) - if err != nil { - this.ErrorPage(err) - return - } - - this.Success() -} diff --git a/web/public/js/components/server/http-web-root-box.js b/web/public/js/components/server/http-web-root-box.js index adca7903..0862f713 100644 --- a/web/public/js/components/server/http-web-root-box.js +++ b/web/public/js/components/server/http-web-root-box.js @@ -42,6 +42,7 @@ Vue.component("http-web-root-box", { } }, template: `
| 去除URL前缀 |
- 可以把请求的路径部分前缀去除后再查找文件,比如把 /web/app/index.html 去除前缀 /web 后就变成 /app/index.html +可以把请求的路径部分前缀去除后再查找文件,比如把 /web/app/index.html 去除前缀 /web 后就变成 /app/index.html。 |
|||||||||||||
| 允许所有来源域(Origin) | +允许所有来源域(Origin) |
@@ -103,7 +103,7 @@ Vue.component("http-websocket-box", {
| ||||||||||||
| 允许的来源域列表(Origin) | +允许的来源域列表(Origin) |
@@ -119,7 +119,7 @@ Vue.component("http-websocket-box", {
是否传递请求来源域 |
+ 是否传递请求来源域 |
|
@@ -131,7 +131,7 @@ Vue.component("http-websocket-box", {
指定传递的来源域 |
+ 指定传递的来源域 |
| 指定向源站传递的Origin字段值。 diff --git a/web/public/js/components/server/origin-list-box.js b/web/public/js/components/server/origin-list-box.js index 659e3610..57ed9bc3 100644 --- a/web/public/js/components/server/origin-list-box.js +++ b/web/public/js/components/server/origin-list-box.js @@ -41,7 +41,7 @@ Vue.component("origin-list-box", { }, template: `主要源站 [添加主要源站]-暂时还没有优先源站。 +暂时还没有主要源站。 备用源站 [添加备用源站]diff --git a/web/public/js/components/server/reverse-proxy-box.js b/web/public/js/components/server/reverse-proxy-box.js index bcb9fbc0..cb04df1d 100644 --- a/web/public/js/components/server/reverse-proxy-box.js +++ b/web/public/js/components/server/reverse-proxy-box.js @@ -1,5 +1,5 @@ Vue.component("reverse-proxy-box", { - props: ["v-reverse-proxy-ref", "v-is-location"], + props: ["v-reverse-proxy-ref", "v-reverse-proxy-config", "v-is-location"], data: function () { let reverseProxyRef = this.vReverseProxyRef if (reverseProxyRef == null) { @@ -9,12 +9,32 @@ Vue.component("reverse-proxy-box", { reverseProxyId: 0 } } + + let reverseProxyConfig = this.vReverseProxyConfig + if (reverseProxyConfig == null) { + reverseProxyConfig = { + requestPath: "", + stripPrefix: "", + requestURI: "" + } + } return { - reverseProxyRef: reverseProxyRef + reverseProxyRef: reverseProxyRef, + reverseProxyConfig: reverseProxyConfig, + advancedVisible: false + } + }, + methods: { + isOn: function () { + return (!this.vIsLocation || this.reverseProxyRef.isPrior) && this.reverseProxyRef.isOn + }, + changeAdvancedVisible: function (v) { + this.advancedVisible = v } }, template: `
+
`
diff --git a/web/views/@default/servers/server/settings/locations/reverseProxy/@menu.html b/web/views/@default/servers/server/settings/locations/reverseProxy/@menu.html
index 36173cbc..1433da1e 100644
--- a/web/views/@default/servers/server/settings/locations/reverseProxy/@menu.html
+++ b/web/views/@default/servers/server/settings/locations/reverseProxy/@menu.html
@@ -1,4 +1,5 @@
{$template "menu"}
-
-
-
\ No newline at end of file
diff --git a/web/views/@default/servers/server/settings/locations/reverseProxy/setting.html b/web/views/@default/servers/server/settings/locations/reverseProxy/setting.html
new file mode 100644
index 00000000..3189b82b
--- /dev/null
+++ b/web/views/@default/servers/server/settings/locations/reverseProxy/setting.html
@@ -0,0 +1,20 @@
+{$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/reverseProxy/setting.js b/web/views/@default/servers/server/settings/locations/reverseProxy/setting.js
new file mode 100644
index 00000000..295a9aaf
--- /dev/null
+++ b/web/views/@default/servers/server/settings/locations/reverseProxy/setting.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/reverseProxy/@menu.html b/web/views/@default/servers/server/settings/reverseProxy/@menu.html
index 5f2fab40..c4b1227f 100644
--- a/web/views/@default/servers/server/settings/reverseProxy/@menu.html
+++ b/web/views/@default/servers/server/settings/reverseProxy/@menu.html
@@ -1,4 +1,5 @@
+ {$template "menu"}
+
+
+
+
{$template "menu"}
-
-
-
-
-
-
\ No newline at end of file
diff --git a/web/views/@default/servers/server/settings/reverseProxy/index.js b/web/views/@default/servers/server/settings/reverseProxy/index.js
deleted file mode 100644
index 240ff02b..00000000
--- a/web/views/@default/servers/server/settings/reverseProxy/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-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/reverseProxy/setting.html b/web/views/@default/servers/server/settings/reverseProxy/setting.html
new file mode 100644
index 00000000..5e53fdbc
--- /dev/null
+++ b/web/views/@default/servers/server/settings/reverseProxy/setting.html
@@ -0,0 +1,14 @@
+{$layout}
+{$template "/left_menu"}
+
+
+
+
+
+
+ {$template "menu"}
+
+
+
+
\ No newline at end of file
diff --git a/web/views/@default/servers/server/settings/reverseProxy/setting.js b/web/views/@default/servers/server/settings/reverseProxy/setting.js
new file mode 100644
index 00000000..295a9aaf
--- /dev/null
+++ b/web/views/@default/servers/server/settings/reverseProxy/setting.js
@@ -0,0 +1,3 @@
+Tea.context(function () {
+ this.success = NotifyReloadSuccess("保存成功")
+})
\ No newline at end of file
|