修改反向代理实现方式

This commit is contained in:
GoEdgeLab
2020-09-21 20:21:26 +08:00
parent 8a1cfa92ca
commit 20fafde4ba
7 changed files with 58 additions and 58 deletions

View File

@@ -58,7 +58,7 @@ func (this *APINode) listenRPC() error {
pb.RegisterNodeClusterServiceServer(rpcServer, &services.NodeClusterService{}) pb.RegisterNodeClusterServiceServer(rpcServer, &services.NodeClusterService{})
pb.RegisterNodeIPAddressServiceServer(rpcServer, &services.NodeIPAddressService{}) pb.RegisterNodeIPAddressServiceServer(rpcServer, &services.NodeIPAddressService{})
pb.RegisterAPINodeServiceServer(rpcServer, &services.APINodeService{}) pb.RegisterAPINodeServiceServer(rpcServer, &services.APINodeService{})
pb.RegisterOriginServerServiceServer(rpcServer, &services.OriginServerService{}) pb.RegisterOriginServiceServer(rpcServer, &services.OriginService{})
pb.RegisterHTTPWebServiceServer(rpcServer, &services.HTTPWebService{}) pb.RegisterHTTPWebServiceServer(rpcServer, &services.HTTPWebService{})
pb.RegisterReverseProxyServiceServer(rpcServer, &services.ReverseProxyService{}) pb.RegisterReverseProxyServiceServer(rpcServer, &services.ReverseProxyService{})
pb.RegisterHTTPGzipServiceServer(rpcServer, &services.HTTPGzipService{}) pb.RegisterHTTPGzipServiceServer(rpcServer, &services.HTTPGzipService{})

View File

@@ -13,57 +13,57 @@ import (
) )
const ( const (
OriginServerStateEnabled = 1 // 已启用 OriginStateEnabled = 1 // 已启用
OriginServerStateDisabled = 0 // 已禁用 OriginStateDisabled = 0 // 已禁用
) )
type OriginServerDAO dbs.DAO type OriginDAO dbs.DAO
func NewOriginServerDAO() *OriginServerDAO { func NewOriginDAO() *OriginDAO {
return dbs.NewDAO(&OriginServerDAO{ return dbs.NewDAO(&OriginDAO{
DAOObject: dbs.DAOObject{ DAOObject: dbs.DAOObject{
DB: Tea.Env, DB: Tea.Env,
Table: "edgeOriginServers", Table: "edgeOrigins",
Model: new(OriginServer), Model: new(Origin),
PkName: "id", PkName: "id",
}, },
}).(*OriginServerDAO) }).(*OriginDAO)
} }
var SharedOriginServerDAO = NewOriginServerDAO() var SharedOriginDAO = NewOriginDAO()
// 启用条目 // 启用条目
func (this *OriginServerDAO) EnableOriginServer(id int64) error { func (this *OriginDAO) EnableOrigin(id int64) error {
_, err := this.Query(). _, err := this.Query().
Pk(id). Pk(id).
Set("state", OriginServerStateEnabled). Set("state", OriginStateEnabled).
Update() Update()
return err return err
} }
// 禁用条目 // 禁用条目
func (this *OriginServerDAO) DisableOriginServer(id int64) error { func (this *OriginDAO) DisableOrigin(id int64) error {
_, err := this.Query(). _, err := this.Query().
Pk(id). Pk(id).
Set("state", OriginServerStateDisabled). Set("state", OriginStateDisabled).
Update() Update()
return err return err
} }
// 查找启用中的条目 // 查找启用中的条目
func (this *OriginServerDAO) FindEnabledOriginServer(id int64) (*OriginServer, error) { func (this *OriginDAO) FindEnabledOrigin(id int64) (*Origin, error) {
result, err := this.Query(). result, err := this.Query().
Pk(id). Pk(id).
Attr("state", OriginServerStateEnabled). Attr("state", OriginStateEnabled).
Find() Find()
if result == nil { if result == nil {
return nil, err return nil, err
} }
return result.(*OriginServer), err return result.(*Origin), err
} }
// 根据主键查找名称 // 根据主键查找名称
func (this *OriginServerDAO) FindOriginServerName(id int64) (string, error) { func (this *OriginDAO) FindOriginName(id int64) (string, error) {
return this.Query(). return this.Query().
Pk(id). Pk(id).
Result("name"). Result("name").
@@ -71,13 +71,13 @@ func (this *OriginServerDAO) FindOriginServerName(id int64) (string, error) {
} }
// 创建源站 // 创建源站
func (this *OriginServerDAO) CreateOriginServer(name string, addrJSON string, description string) (originId int64, err error) { func (this *OriginDAO) CreateOrigin(name string, addrJSON string, description string) (originId int64, err error) {
op := NewOriginServerOperator() op := NewOriginOperator()
op.IsOn = true op.IsOn = true
op.Name = name op.Name = name
op.Addr = addrJSON op.Addr = addrJSON
op.Description = description op.Description = description
op.State = OriginServerStateEnabled op.State = OriginStateEnabled
_, err = this.Save(op) _, err = this.Save(op)
if err != nil { if err != nil {
return return
@@ -86,11 +86,11 @@ func (this *OriginServerDAO) CreateOriginServer(name string, addrJSON string, de
} }
// 修改源站 // 修改源站
func (this *OriginServerDAO) UpdateOriginServer(originId int64, name string, addrJSON string, description string) error { func (this *OriginDAO) UpdateOrigin(originId int64, name string, addrJSON string, description string) error {
if originId <= 0 { if originId <= 0 {
return errors.New("invalid originId") return errors.New("invalid originId")
} }
op := NewOriginServerOperator() op := NewOriginOperator()
op.Id = originId op.Id = originId
op.Name = name op.Name = name
op.Addr = addrJSON op.Addr = addrJSON
@@ -101,8 +101,8 @@ func (this *OriginServerDAO) UpdateOriginServer(originId int64, name string, add
} }
// 将源站信息转换为配置 // 将源站信息转换为配置
func (this *OriginServerDAO) ComposeOriginConfig(originId int64) (*serverconfigs.OriginServerConfig, error) { func (this *OriginDAO) ComposeOriginConfig(originId int64) (*serverconfigs.OriginConfig, error) {
origin, err := this.FindEnabledOriginServer(originId) origin, err := this.FindEnabledOrigin(originId)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -110,7 +110,7 @@ func (this *OriginServerDAO) ComposeOriginConfig(originId int64) (*serverconfigs
return nil, errors.New("not found") return nil, errors.New("not found")
} }
config := &serverconfigs.OriginServerConfig{ config := &serverconfigs.OriginConfig{
Id: int64(origin.Id), Id: int64(origin.Id),
IsOn: origin.IsOn == 1, IsOn: origin.IsOn == 1,
Version: int(origin.Version), Version: int(origin.Version),
@@ -200,7 +200,7 @@ func (this *OriginServerDAO) ComposeOriginConfig(originId int64) (*serverconfigs
} }
if len(origin.Ftp) > 0 && origin.Ftp != "null" { if len(origin.Ftp) > 0 && origin.Ftp != "null" {
ftp := &serverconfigs.OriginServerFTPConfig{} ftp := &serverconfigs.OriginFTPConfig{}
err = json.Unmarshal([]byte(origin.Ftp), ftp) err = json.Unmarshal([]byte(origin.Ftp), ftp)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@@ -1,7 +1,7 @@
package models package models
// 源站 // 源站
type OriginServer struct { type Origin struct {
Id uint32 `field:"id"` // ID Id uint32 `field:"id"` // ID
AdminId uint32 `field:"adminId"` // 管理员ID AdminId uint32 `field:"adminId"` // 管理员ID
UserId uint32 `field:"userId"` // 用户ID UserId uint32 `field:"userId"` // 用户ID
@@ -29,7 +29,7 @@ type OriginServer struct {
State uint8 `field:"state"` // 状态 State uint8 `field:"state"` // 状态
} }
type OriginServerOperator struct { type OriginOperator struct {
Id interface{} // ID Id interface{} // ID
AdminId interface{} // 管理员ID AdminId interface{} // 管理员ID
UserId interface{} // 用户ID UserId interface{} // 用户ID
@@ -57,6 +57,6 @@ type OriginServerOperator struct {
State interface{} // 状态 State interface{} // 状态
} }
func NewOriginServerOperator() *OriginServerOperator { func NewOriginOperator() *OriginOperator {
return &OriginServerOperator{} return &OriginOperator{}
} }

View File

@@ -7,7 +7,7 @@ import (
) )
// 解析地址 // 解析地址
func (this *OriginServer) DecodeAddr() (*serverconfigs.NetworkAddressConfig, error) { func (this *Origin) DecodeAddr() (*serverconfigs.NetworkAddressConfig, error) {
if len(this.Addr) == 0 || this.Addr == "null" { if len(this.Addr) == 0 || this.Addr == "null" {
return nil, errors.New("addr is empty") return nil, errors.New("addr is empty")
} }

View File

@@ -83,35 +83,35 @@ func (this *ReverseProxyDAO) ComposeReverseProxyConfig(reverseProxyId int64) (*s
config.Scheduling = schedulingConfig config.Scheduling = schedulingConfig
} }
if len(reverseProxy.PrimaryOrigins) > 0 && reverseProxy.PrimaryOrigins != "null" { if len(reverseProxy.PrimaryOrigins) > 0 && reverseProxy.PrimaryOrigins != "null" {
originConfigs := []*serverconfigs.OriginServerConfig{} originRefs := []*serverconfigs.OriginRef{}
err = json.Unmarshal([]byte(reverseProxy.PrimaryOrigins), &originConfigs) err = json.Unmarshal([]byte(reverseProxy.PrimaryOrigins), &originRefs)
if err != nil { if err != nil {
return nil, err return nil, err
} }
for _, originConfig := range originConfigs { for _, ref := range originRefs {
newOriginConfig, err := SharedOriginServerDAO.ComposeOriginConfig(originConfig.Id) originConfig, err := SharedOriginDAO.ComposeOriginConfig(ref.OriginId)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if newOriginConfig != nil { if originConfig != nil {
config.AddPrimaryOrigin(newOriginConfig) config.AddPrimaryOrigin(originConfig)
} }
} }
} }
if len(reverseProxy.BackupOrigins) > 0 && reverseProxy.BackupOrigins != "null" { if len(reverseProxy.BackupOrigins) > 0 && reverseProxy.BackupOrigins != "null" {
originConfigs := []*serverconfigs.OriginServerConfig{} originRefs := []*serverconfigs.OriginRef{}
err = json.Unmarshal([]byte(reverseProxy.BackupOrigins), &originConfigs) err = json.Unmarshal([]byte(reverseProxy.BackupOrigins), &originRefs)
if err != nil { if err != nil {
return nil, err return nil, err
} }
for _, originConfig := range originConfigs { for _, originConfig := range originRefs {
newOriginConfig, err := SharedOriginServerDAO.ComposeOriginConfig(int64(originConfig.Id)) originConfig, err := SharedOriginDAO.ComposeOriginConfig(int64(originConfig.OriginId))
if err != nil { if err != nil {
return nil, err return nil, err
} }
if newOriginConfig != nil { if originConfig != nil {
config.AddBackupOrigin(newOriginConfig) config.AddBackupOrigin(originConfig)
} }
} }
} }

View File

@@ -11,11 +11,11 @@ import (
) )
// 源站相关管理 // 源站相关管理
type OriginServerService struct { type OriginService struct {
} }
// 创建源站 // 创建源站
func (this *OriginServerService) CreateOriginServer(ctx context.Context, req *pb.CreateOriginServerRequest) (*pb.CreateOriginServerResponse, error) { func (this *OriginService) CreateOrigin(ctx context.Context, req *pb.CreateOriginRequest) (*pb.CreateOriginResponse, error) {
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin) _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil { if err != nil {
return nil, err return nil, err
@@ -29,16 +29,16 @@ func (this *OriginServerService) CreateOriginServer(ctx context.Context, req *pb
"portRange": req.Addr.PortRange, "portRange": req.Addr.PortRange,
"host": req.Addr.Host, "host": req.Addr.Host,
} }
originId, err := models.SharedOriginServerDAO.CreateOriginServer(req.Name, string(addrMap.AsJSON()), req.Description) originId, err := models.SharedOriginDAO.CreateOrigin(req.Name, string(addrMap.AsJSON()), req.Description)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return &pb.CreateOriginServerResponse{OriginId: originId}, nil return &pb.CreateOriginResponse{OriginId: originId}, nil
} }
// 修改源站 // 修改源站
func (this *OriginServerService) UpdateOriginServer(ctx context.Context, req *pb.UpdateOriginServerRequest) (*pb.RPCUpdateSuccess, error) { func (this *OriginService) UpdateOrigin(ctx context.Context, req *pb.UpdateOriginRequest) (*pb.RPCUpdateSuccess, error) {
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin) _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil { if err != nil {
return nil, err return nil, err
@@ -52,7 +52,7 @@ func (this *OriginServerService) UpdateOriginServer(ctx context.Context, req *pb
"portRange": req.Addr.PortRange, "portRange": req.Addr.PortRange,
"host": req.Addr.Host, "host": req.Addr.Host,
} }
err = models.SharedOriginServerDAO.UpdateOriginServer(req.OriginId, req.Name, string(addrMap.AsJSON()), req.Description) err = models.SharedOriginDAO.UpdateOrigin(req.OriginId, req.Name, string(addrMap.AsJSON()), req.Description)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -61,19 +61,19 @@ func (this *OriginServerService) UpdateOriginServer(ctx context.Context, req *pb
} }
// 查找单个源站信息 // 查找单个源站信息
func (this *OriginServerService) FindEnabledOriginServer(ctx context.Context, req *pb.FindEnabledOriginServerRequest) (*pb.FindEnabledOriginServerResponse, error) { func (this *OriginService) FindEnabledOrigin(ctx context.Context, req *pb.FindEnabledOriginRequest) (*pb.FindEnabledOriginResponse, error) {
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin) _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil { if err != nil {
return nil, err return nil, err
} }
origin, err := models.SharedOriginServerDAO.FindEnabledOriginServer(req.OriginId) origin, err := models.SharedOriginDAO.FindEnabledOrigin(req.OriginId)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if origin == nil { if origin == nil {
return &pb.FindEnabledOriginServerResponse{Origin: nil}, nil return &pb.FindEnabledOriginResponse{Origin: nil}, nil
} }
addr, err := origin.DecodeAddr() addr, err := origin.DecodeAddr()
@@ -81,7 +81,7 @@ func (this *OriginServerService) FindEnabledOriginServer(ctx context.Context, re
return nil, err return nil, err
} }
result := &pb.OriginServer{ result := &pb.Origin{
Id: int64(origin.Id), Id: int64(origin.Id),
IsOn: origin.IsOn == 1, IsOn: origin.IsOn == 1,
Name: origin.Name, Name: origin.Name,
@@ -92,17 +92,17 @@ func (this *OriginServerService) FindEnabledOriginServer(ctx context.Context, re
}, },
Description: origin.Description, Description: origin.Description,
} }
return &pb.FindEnabledOriginServerResponse{Origin: result}, nil return &pb.FindEnabledOriginResponse{Origin: result}, nil
} }
// 查找源站配置 // 查找源站配置
func (this *OriginServerService) FindEnabledOriginServerConfig(ctx context.Context, req *pb.FindEnabledOriginServerConfigRequest) (*pb.FindEnabledOriginServerConfigResponse, error) { func (this *OriginService) FindEnabledOriginConfig(ctx context.Context, req *pb.FindEnabledOriginConfigRequest) (*pb.FindEnabledOriginConfigResponse, error) {
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin) _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil { if err != nil {
return nil, err return nil, err
} }
config, err := models.SharedOriginServerDAO.ComposeOriginConfig(req.OriginId) config, err := models.SharedOriginDAO.ComposeOriginConfig(req.OriginId)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -112,5 +112,5 @@ func (this *OriginServerService) FindEnabledOriginServerConfig(ctx context.Conte
return nil, err return nil, err
} }
return &pb.FindEnabledOriginServerConfigResponse{OriginJSON: configData}, nil return &pb.FindEnabledOriginConfigResponse{OriginJSON: configData}, nil
} }