mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-03 20:40:26 +08:00
90 lines
2.5 KiB
Go
90 lines
2.5 KiB
Go
package reverseProxy
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
|
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/servers/serverutils"
|
|
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
|
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
|
|
"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
|
|
}) {
|
|
server, _, isOk := serverutils.FindServer(&this.ParentAction, params.ServerId)
|
|
if !isOk {
|
|
return
|
|
}
|
|
this.Data["serverType"] = server.Type
|
|
this.Data["reverseProxyId"] = server.ReverseProxyId
|
|
|
|
if server.ReverseProxyId <= 0 {
|
|
// TODO 应该在界面上提示用户开启
|
|
this.ErrorPage(errors.New("reverse proxy should not be nil"))
|
|
return
|
|
}
|
|
|
|
reverseProxyResp, err := this.RPC().ReverseProxyRPC().FindEnabledReverseProxy(this.AdminContext(), &pb.FindEnabledReverseProxyRequest{ReverseProxyId: server.ReverseProxyId})
|
|
if err != nil {
|
|
this.ErrorPage(err)
|
|
return
|
|
}
|
|
reverseProxy := reverseProxyResp.ReverseProxy
|
|
if reverseProxy == nil {
|
|
// TODO 应该在界面上提示用户开启
|
|
this.ErrorPage(errors.New("reverse proxy should not be nil"))
|
|
return
|
|
}
|
|
|
|
primaryOrigins := []*serverconfigs.OriginServerConfig{}
|
|
backupOrigins := []*serverconfigs.OriginServerConfig{}
|
|
if len(reverseProxy.PrimaryOriginsJSON) > 0 {
|
|
err = json.Unmarshal(reverseProxy.PrimaryOriginsJSON, &primaryOrigins)
|
|
if err != nil {
|
|
this.ErrorPage(err)
|
|
return
|
|
}
|
|
}
|
|
if len(reverseProxy.BackupOriginsJSON) > 0 {
|
|
err = json.Unmarshal(reverseProxy.BackupOriginsJSON, &backupOrigins)
|
|
if err != nil {
|
|
this.ErrorPage(err)
|
|
return
|
|
}
|
|
}
|
|
|
|
primaryOriginMaps := []maps.Map{}
|
|
backupOriginMaps := []maps.Map{}
|
|
for _, originConfig := range 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 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()
|
|
}
|