mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-03 23:20:26 +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