mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-08 03:00:26 +08:00
修改反向代理实现方式
This commit is contained in:
@@ -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{})
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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{}
|
||||||
}
|
}
|
||||||
@@ -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")
|
||||||
}
|
}
|
||||||
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user