mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 07:50:25 +08:00 
			
		
		
		
	修改反向代理实现方式
This commit is contained in:
		@@ -58,7 +58,7 @@ func (this *APINode) listenRPC() error {
 | 
			
		||||
	pb.RegisterNodeClusterServiceServer(rpcServer, &services.NodeClusterService{})
 | 
			
		||||
	pb.RegisterNodeIPAddressServiceServer(rpcServer, &services.NodeIPAddressService{})
 | 
			
		||||
	pb.RegisterAPINodeServiceServer(rpcServer, &services.APINodeService{})
 | 
			
		||||
	pb.RegisterOriginServerServiceServer(rpcServer, &services.OriginServerService{})
 | 
			
		||||
	pb.RegisterOriginServiceServer(rpcServer, &services.OriginService{})
 | 
			
		||||
	pb.RegisterHTTPWebServiceServer(rpcServer, &services.HTTPWebService{})
 | 
			
		||||
	pb.RegisterReverseProxyServiceServer(rpcServer, &services.ReverseProxyService{})
 | 
			
		||||
	pb.RegisterHTTPGzipServiceServer(rpcServer, &services.HTTPGzipService{})
 | 
			
		||||
 
 | 
			
		||||
@@ -13,57 +13,57 @@ import (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	OriginServerStateEnabled  = 1 // 已启用
 | 
			
		||||
	OriginServerStateDisabled = 0 // 已禁用
 | 
			
		||||
	OriginStateEnabled  = 1 // 已启用
 | 
			
		||||
	OriginStateDisabled = 0 // 已禁用
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type OriginServerDAO dbs.DAO
 | 
			
		||||
type OriginDAO dbs.DAO
 | 
			
		||||
 | 
			
		||||
func NewOriginServerDAO() *OriginServerDAO {
 | 
			
		||||
	return dbs.NewDAO(&OriginServerDAO{
 | 
			
		||||
func NewOriginDAO() *OriginDAO {
 | 
			
		||||
	return dbs.NewDAO(&OriginDAO{
 | 
			
		||||
		DAOObject: dbs.DAOObject{
 | 
			
		||||
			DB:     Tea.Env,
 | 
			
		||||
			Table:  "edgeOriginServers",
 | 
			
		||||
			Model:  new(OriginServer),
 | 
			
		||||
			Table:  "edgeOrigins",
 | 
			
		||||
			Model:  new(Origin),
 | 
			
		||||
			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().
 | 
			
		||||
		Pk(id).
 | 
			
		||||
		Set("state", OriginServerStateEnabled).
 | 
			
		||||
		Set("state", OriginStateEnabled).
 | 
			
		||||
		Update()
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 禁用条目
 | 
			
		||||
func (this *OriginServerDAO) DisableOriginServer(id int64) error {
 | 
			
		||||
func (this *OriginDAO) DisableOrigin(id int64) error {
 | 
			
		||||
	_, err := this.Query().
 | 
			
		||||
		Pk(id).
 | 
			
		||||
		Set("state", OriginServerStateDisabled).
 | 
			
		||||
		Set("state", OriginStateDisabled).
 | 
			
		||||
		Update()
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 查找启用中的条目
 | 
			
		||||
func (this *OriginServerDAO) FindEnabledOriginServer(id int64) (*OriginServer, error) {
 | 
			
		||||
func (this *OriginDAO) FindEnabledOrigin(id int64) (*Origin, error) {
 | 
			
		||||
	result, err := this.Query().
 | 
			
		||||
		Pk(id).
 | 
			
		||||
		Attr("state", OriginServerStateEnabled).
 | 
			
		||||
		Attr("state", OriginStateEnabled).
 | 
			
		||||
		Find()
 | 
			
		||||
	if result == nil {
 | 
			
		||||
		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().
 | 
			
		||||
		Pk(id).
 | 
			
		||||
		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) {
 | 
			
		||||
	op := NewOriginServerOperator()
 | 
			
		||||
func (this *OriginDAO) CreateOrigin(name string, addrJSON string, description string) (originId int64, err error) {
 | 
			
		||||
	op := NewOriginOperator()
 | 
			
		||||
	op.IsOn = true
 | 
			
		||||
	op.Name = name
 | 
			
		||||
	op.Addr = addrJSON
 | 
			
		||||
	op.Description = description
 | 
			
		||||
	op.State = OriginServerStateEnabled
 | 
			
		||||
	op.State = OriginStateEnabled
 | 
			
		||||
	_, err = this.Save(op)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		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 {
 | 
			
		||||
		return errors.New("invalid originId")
 | 
			
		||||
	}
 | 
			
		||||
	op := NewOriginServerOperator()
 | 
			
		||||
	op := NewOriginOperator()
 | 
			
		||||
	op.Id = originId
 | 
			
		||||
	op.Name = name
 | 
			
		||||
	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) {
 | 
			
		||||
	origin, err := this.FindEnabledOriginServer(originId)
 | 
			
		||||
func (this *OriginDAO) ComposeOriginConfig(originId int64) (*serverconfigs.OriginConfig, error) {
 | 
			
		||||
	origin, err := this.FindEnabledOrigin(originId)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
@@ -110,7 +110,7 @@ func (this *OriginServerDAO) ComposeOriginConfig(originId int64) (*serverconfigs
 | 
			
		||||
		return nil, errors.New("not found")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	config := &serverconfigs.OriginServerConfig{
 | 
			
		||||
	config := &serverconfigs.OriginConfig{
 | 
			
		||||
		Id:           int64(origin.Id),
 | 
			
		||||
		IsOn:         origin.IsOn == 1,
 | 
			
		||||
		Version:      int(origin.Version),
 | 
			
		||||
@@ -200,7 +200,7 @@ func (this *OriginServerDAO) ComposeOriginConfig(originId int64) (*serverconfigs
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if len(origin.Ftp) > 0 && origin.Ftp != "null" {
 | 
			
		||||
		ftp := &serverconfigs.OriginServerFTPConfig{}
 | 
			
		||||
		ftp := &serverconfigs.OriginFTPConfig{}
 | 
			
		||||
		err = json.Unmarshal([]byte(origin.Ftp), ftp)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
package models
 | 
			
		||||
 | 
			
		||||
// 源站
 | 
			
		||||
type OriginServer struct {
 | 
			
		||||
type Origin struct {
 | 
			
		||||
	Id                     uint32 `field:"id"`                     // ID
 | 
			
		||||
	AdminId                uint32 `field:"adminId"`                // 管理员ID
 | 
			
		||||
	UserId                 uint32 `field:"userId"`                 // 用户ID
 | 
			
		||||
@@ -29,7 +29,7 @@ type OriginServer struct {
 | 
			
		||||
	State                  uint8  `field:"state"`                  // 状态
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type OriginServerOperator struct {
 | 
			
		||||
type OriginOperator struct {
 | 
			
		||||
	Id                     interface{} // ID
 | 
			
		||||
	AdminId                interface{} // 管理员ID
 | 
			
		||||
	UserId                 interface{} // 用户ID
 | 
			
		||||
@@ -57,6 +57,6 @@ type OriginServerOperator struct {
 | 
			
		||||
	State                  interface{} // 状态
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewOriginServerOperator() *OriginServerOperator {
 | 
			
		||||
	return &OriginServerOperator{}
 | 
			
		||||
func NewOriginOperator() *OriginOperator {
 | 
			
		||||
	return &OriginOperator{}
 | 
			
		||||
}
 | 
			
		||||
@@ -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" {
 | 
			
		||||
		return nil, errors.New("addr is empty")
 | 
			
		||||
	}
 | 
			
		||||
@@ -83,35 +83,35 @@ func (this *ReverseProxyDAO) ComposeReverseProxyConfig(reverseProxyId int64) (*s
 | 
			
		||||
		config.Scheduling = schedulingConfig
 | 
			
		||||
	}
 | 
			
		||||
	if len(reverseProxy.PrimaryOrigins) > 0 && reverseProxy.PrimaryOrigins != "null" {
 | 
			
		||||
		originConfigs := []*serverconfigs.OriginServerConfig{}
 | 
			
		||||
		err = json.Unmarshal([]byte(reverseProxy.PrimaryOrigins), &originConfigs)
 | 
			
		||||
		originRefs := []*serverconfigs.OriginRef{}
 | 
			
		||||
		err = json.Unmarshal([]byte(reverseProxy.PrimaryOrigins), &originRefs)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		for _, originConfig := range originConfigs {
 | 
			
		||||
			newOriginConfig, err := SharedOriginServerDAO.ComposeOriginConfig(originConfig.Id)
 | 
			
		||||
		for _, ref := range originRefs {
 | 
			
		||||
			originConfig, err := SharedOriginDAO.ComposeOriginConfig(ref.OriginId)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
			if newOriginConfig != nil {
 | 
			
		||||
				config.AddPrimaryOrigin(newOriginConfig)
 | 
			
		||||
			if originConfig != nil {
 | 
			
		||||
				config.AddPrimaryOrigin(originConfig)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if len(reverseProxy.BackupOrigins) > 0 && reverseProxy.BackupOrigins != "null" {
 | 
			
		||||
		originConfigs := []*serverconfigs.OriginServerConfig{}
 | 
			
		||||
		err = json.Unmarshal([]byte(reverseProxy.BackupOrigins), &originConfigs)
 | 
			
		||||
		originRefs := []*serverconfigs.OriginRef{}
 | 
			
		||||
		err = json.Unmarshal([]byte(reverseProxy.BackupOrigins), &originRefs)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		for _, originConfig := range originConfigs {
 | 
			
		||||
			newOriginConfig, err := SharedOriginServerDAO.ComposeOriginConfig(int64(originConfig.Id))
 | 
			
		||||
		for _, originConfig := range originRefs {
 | 
			
		||||
			originConfig, err := SharedOriginDAO.ComposeOriginConfig(int64(originConfig.OriginId))
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
			if newOriginConfig != nil {
 | 
			
		||||
				config.AddBackupOrigin(newOriginConfig)
 | 
			
		||||
			if originConfig != nil {
 | 
			
		||||
				config.AddBackupOrigin(originConfig)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
@@ -29,16 +29,16 @@ func (this *OriginServerService) CreateOriginServer(ctx context.Context, req *pb
 | 
			
		||||
		"portRange": req.Addr.PortRange,
 | 
			
		||||
		"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 {
 | 
			
		||||
		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)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
@@ -52,7 +52,7 @@ func (this *OriginServerService) UpdateOriginServer(ctx context.Context, req *pb
 | 
			
		||||
		"portRange": req.Addr.PortRange,
 | 
			
		||||
		"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 {
 | 
			
		||||
		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)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	origin, err := models.SharedOriginServerDAO.FindEnabledOriginServer(req.OriginId)
 | 
			
		||||
	origin, err := models.SharedOriginDAO.FindEnabledOrigin(req.OriginId)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if origin == nil {
 | 
			
		||||
		return &pb.FindEnabledOriginServerResponse{Origin: nil}, nil
 | 
			
		||||
		return &pb.FindEnabledOriginResponse{Origin: nil}, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	addr, err := origin.DecodeAddr()
 | 
			
		||||
@@ -81,7 +81,7 @@ func (this *OriginServerService) FindEnabledOriginServer(ctx context.Context, re
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	result := &pb.OriginServer{
 | 
			
		||||
	result := &pb.Origin{
 | 
			
		||||
		Id:   int64(origin.Id),
 | 
			
		||||
		IsOn: origin.IsOn == 1,
 | 
			
		||||
		Name: origin.Name,
 | 
			
		||||
@@ -92,17 +92,17 @@ func (this *OriginServerService) FindEnabledOriginServer(ctx context.Context, re
 | 
			
		||||
		},
 | 
			
		||||
		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)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	config, err := models.SharedOriginServerDAO.ComposeOriginConfig(req.OriginId)
 | 
			
		||||
	config, err := models.SharedOriginDAO.ComposeOriginConfig(req.OriginId)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
@@ -112,5 +112,5 @@ func (this *OriginServerService) FindEnabledOriginServerConfig(ctx context.Conte
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return &pb.FindEnabledOriginServerConfigResponse{OriginJSON: configData}, nil
 | 
			
		||||
	return &pb.FindEnabledOriginConfigResponse{OriginJSON: configData}, nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user