重构远程接口,替换为Baiyin SDK & 添加实名认证处理逻辑

This commit is contained in:
2025-04-16 10:41:04 +08:00
parent 0cf9b98059
commit f1456d01ea
11 changed files with 319 additions and 88 deletions

View File

@@ -11,7 +11,7 @@ import (
"platform/pkg/env"
"platform/pkg/orm"
"platform/pkg/rds"
"platform/pkg/remote"
"platform/pkg/sdks/baiyin"
"platform/pkg/u"
"platform/web/common"
"platform/web/models"
@@ -132,18 +132,18 @@ func (s *channelService) RemoveChannels(ctx context.Context, auth *AuthContext,
step = time.Now()
// 组织数据
var configMap = make(map[int32][]remote.PortConfigsReq, len(proxies))
var configMap = make(map[int32][]baiyin.PortConfigsReq, len(proxies))
var proxyMap = make(map[int32]*models.Proxy, len(proxies))
for _, proxy := range proxies {
configMap[proxy.ID] = make([]remote.PortConfigsReq, 0)
configMap[proxy.ID] = make([]baiyin.PortConfigsReq, 0)
proxyMap[proxy.ID] = proxy
}
var portMap = make(map[uint64]struct{})
for _, channel := range channels {
var config = remote.PortConfigsReq{
var config = baiyin.PortConfigsReq{
Port: int(channel.ProxyPort),
Edge: &[]string{},
AutoEdgeConfig: &remote.AutoEdgeConfig{
AutoEdgeConfig: &baiyin.AutoEdgeConfig{
Count: u.P(0),
},
Status: false,
@@ -167,7 +167,7 @@ func (s *channelService) RemoveChannels(ctx context.Context, auth *AuthContext,
}
var secret = strings.Split(proxy.Secret, ":")
gateway := remote.NewGateway(
gateway := baiyin.NewGateway(
proxy.Host,
secret[0],
secret[1],
@@ -208,7 +208,7 @@ func (s *channelService) RemoveChannels(ctx context.Context, auth *AuthContext,
}
}
if len(edges) > 0 {
_, err := remote.Cloud.CloudDisconnect(remote.CloudDisconnectReq{
_, err := baiyin.Cloud.CloudDisconnect(baiyin.CloudDisconnectReq{
Uuid: proxy.Name,
Edge: edges,
})
@@ -406,7 +406,7 @@ func assignEdge(q *q.Query, count int, filter NodeFilterConfig) (*AssignEdgeResu
// 查询已配置的节点
step = time.Now()
rProxyConfigs, err := remote.Cloud.CloudAutoQuery()
rProxyConfigs, err := baiyin.Cloud.CloudAutoQuery()
if err != nil {
return nil, err
}
@@ -480,13 +480,13 @@ func assignEdge(q *q.Query, count int, filter NodeFilterConfig) (*AssignEdgeResu
rConfigs := rProxyConfigs[info.proxy.Name]
var newConfig = remote.AutoConfig{
var newConfig = baiyin.AutoConfig{
Province: filter.Prov,
City: filter.City,
Isp: filter.Isp,
Count: int(math.Ceil(float64(info.used) * 2)),
}
var newConfigs []remote.AutoConfig
var newConfigs []baiyin.AutoConfig
var update = false
for _, rConfig := range rConfigs {
if rConfig.Isp == filter.Isp && rConfig.City == filter.City && rConfig.Province == filter.Prov {
@@ -500,7 +500,7 @@ func assignEdge(q *q.Query, count int, filter NodeFilterConfig) (*AssignEdgeResu
newConfigs = append(newConfigs, newConfig)
}
err := remote.Cloud.CloudConnect(remote.CloudConnectReq{
err := baiyin.Cloud.CloudConnect(baiyin.CloudConnectReq{
Uuid: info.proxy.Name,
Edge: nil,
AutoConfig: newConfigs,
@@ -587,7 +587,7 @@ func assignPort(
var count = config.count
// 筛选可用端口
var configs = make([]remote.PortConfigsReq, 0, count)
var configs = make([]baiyin.PortConfigsReq, 0, count)
for port := 10000; port < 20000 && len(configs) < count; port++ {
// 跳过存在的端口
key := uint64(proxy.ID)<<32 | uint64(port)
@@ -598,11 +598,11 @@ func assignPort(
// 配置新端口
var i = len(configs)
configs = append(configs, remote.PortConfigsReq{
configs = append(configs, baiyin.PortConfigsReq{
Port: port,
Edge: nil,
Status: true,
AutoEdgeConfig: &remote.AutoEdgeConfig{
AutoEdgeConfig: &baiyin.AutoEdgeConfig{
Province: filter.Prov,
City: filter.City,
Isp: filter.Isp,
@@ -682,7 +682,7 @@ func assignPort(
step = time.Now()
var secret = strings.Split(proxy.Secret, ":")
gateway := remote.NewGateway(
gateway := baiyin.NewGateway(
proxy.Host,
secret[0],
secret[1],

View File

@@ -4,7 +4,7 @@ import (
"context"
"encoding/json"
"fmt"
"platform/pkg/remote"
"platform/pkg/sdks/baiyin"
"platform/pkg/testutil"
"platform/web/common"
"platform/web/models"
@@ -288,9 +288,9 @@ func Test_channelService_CreateChannel(t *testing.T) {
ctx := context.WithValue(context.Background(), requestid.ConfigDefault.ContextKey, "test-request-id")
var adminAuth = &AuthContext{Payload: Payload{Id: 100, Type: PayloadAdmin}}
var userAuth = &AuthContext{Payload: Payload{Id: 101, Type: PayloadUser}}
mc.AutoQueryMock = func() (remote.CloudConnectResp, error) {
return remote.CloudConnectResp{
"test-proxy": []remote.AutoConfig{
mc.AutoQueryMock = func() (baiyin.CloudConnectResp, error) {
return baiyin.CloudConnectResp{
"test-proxy": []baiyin.AutoConfig{
{Province: "河南省", Count: 10},
},
}, nil
@@ -373,14 +373,14 @@ func Test_channelService_CreateChannel(t *testing.T) {
mr.FlushAll()
resetDb()
mc.ConnectMock = func(param remote.CloudConnectReq) error {
mc.ConnectMock = func(param baiyin.CloudConnectReq) error {
if param.Uuid != proxy.Name {
return fmt.Errorf("代理名称不符合预期: %s", param.Uuid)
}
if len(param.Edge) != 0 {
return fmt.Errorf("边缘节点不符合预期: %v", param.Edge)
}
if !reflect.DeepEqual(param.AutoConfig, []remote.AutoConfig{
if !reflect.DeepEqual(param.AutoConfig, []baiyin.AutoConfig{
{Province: "河南省", Count: 10},
{Province: "北京市", Count: 6},
}) {
@@ -389,7 +389,7 @@ func Test_channelService_CreateChannel(t *testing.T) {
return nil
}
mg.PortConfigsMock = func(c *testutil.MockGatewayClient, params []remote.PortConfigsReq) error {
mg.PortConfigsMock = func(c *testutil.MockGatewayClient, params []baiyin.PortConfigsReq) error {
if c.Host != proxy.Host {
return fmt.Errorf("代理主机不符合预期: %s", c.Host)
}
@@ -523,14 +523,14 @@ func Test_channelService_CreateChannel(t *testing.T) {
mr.FlushAll()
resetDb()
mc.ConnectMock = func(param remote.CloudConnectReq) error {
mc.ConnectMock = func(param baiyin.CloudConnectReq) error {
if param.Uuid != proxy.Name {
return fmt.Errorf("代理名称不符合预期: %s", param.Uuid)
}
if len(param.Edge) != 0 {
return fmt.Errorf("边缘节点不符合预期: %v", param.Edge)
}
if !reflect.DeepEqual(param.AutoConfig, []remote.AutoConfig{
if !reflect.DeepEqual(param.AutoConfig, []baiyin.AutoConfig{
{Province: "河南省", Count: 10},
{Province: "北京市", Count: 6},
}) {
@@ -539,7 +539,7 @@ func Test_channelService_CreateChannel(t *testing.T) {
return nil
}
mg.PortConfigsMock = func(c *testutil.MockGatewayClient, params []remote.PortConfigsReq) error {
mg.PortConfigsMock = func(c *testutil.MockGatewayClient, params []baiyin.PortConfigsReq) error {
if c.Host != proxy.Host {
return fmt.Errorf("代理主机不符合预期: %s", c.Host)
}
@@ -667,14 +667,14 @@ func Test_channelService_CreateChannel(t *testing.T) {
mr.FlushAll()
resetDb()
mc.ConnectMock = func(param remote.CloudConnectReq) error {
mc.ConnectMock = func(param baiyin.CloudConnectReq) error {
if param.Uuid != proxy.Name {
return fmt.Errorf("代理名称不符合预期: %s", param.Uuid)
}
if len(param.Edge) != 0 {
return fmt.Errorf("边缘节点不符合预期: %v", param.Edge)
}
if !reflect.DeepEqual(param.AutoConfig, []remote.AutoConfig{
if !reflect.DeepEqual(param.AutoConfig, []baiyin.AutoConfig{
{Province: "河南省", Count: 10},
{Province: "北京市", Count: 6},
}) {
@@ -683,7 +683,7 @@ func Test_channelService_CreateChannel(t *testing.T) {
return nil
}
mg.PortConfigsMock = func(c *testutil.MockGatewayClient, params []remote.PortConfigsReq) error {
mg.PortConfigsMock = func(c *testutil.MockGatewayClient, params []baiyin.PortConfigsReq) error {
if c.Host != proxy.Host {
return fmt.Errorf("代理主机不符合预期: %s", c.Host)
}
@@ -899,9 +899,9 @@ func Test_channelService_CreateChannel(t *testing.T) {
setup: func() {
mr.FlushAll()
resetDb()
mc.AutoQueryMock = func() (remote.CloudConnectResp, error) {
return remote.CloudConnectResp{
"test-proxy": []remote.AutoConfig{
mc.AutoQueryMock = func() (baiyin.CloudConnectResp, error) {
return baiyin.CloudConnectResp{
"test-proxy": []baiyin.AutoConfig{
{Count: 20000},
},
}, nil
@@ -1054,21 +1054,21 @@ func Test_channelService_RemoveChannels(t *testing.T) {
}
// 模拟网关客户端的响应
mg.PortActiveMock = func(m *testutil.MockGatewayClient, param ...remote.PortActiveReq) (map[string]remote.PortData, error) {
mg.PortActiveMock = func(m *testutil.MockGatewayClient, param ...baiyin.PortActiveReq) (map[string]baiyin.PortData, error) {
switch {
case m.Host == proxy.Host:
return map[string]remote.PortData{
return map[string]baiyin.PortData{
"10001": {Edge: []string{"edge1", "edge4"}},
"10002": {Edge: []string{"edge2"}},
}, nil
case m.Host == proxy2.Host:
return map[string]remote.PortData{
return map[string]baiyin.PortData{
"10001": {Edge: []string{"edge3"}},
}, nil
}
return nil, fmt.Errorf("代理主机不符合预期: %s", m.Host)
}
mg.PortConfigsMock = func(m *testutil.MockGatewayClient, params []remote.PortConfigsReq) error {
mg.PortConfigsMock = func(m *testutil.MockGatewayClient, params []baiyin.PortConfigsReq) error {
switch {
case m.Host == proxy.Host:
for _, param := range params {
@@ -1099,7 +1099,7 @@ func Test_channelService_RemoveChannels(t *testing.T) {
}
return fmt.Errorf("代理主机不符合预期: %s", m.Host)
}
mc.DisconnectMock = func(param remote.CloudDisconnectReq) (int, error) {
mc.DisconnectMock = func(param baiyin.CloudDisconnectReq) (int, error) {
switch {
case param.Uuid == proxy.Name:
var edges = []string{"edge1", "edge2", "edge4"}
@@ -1168,21 +1168,21 @@ func Test_channelService_RemoveChannels(t *testing.T) {
}
// 模拟网关客户端的响应
mg.PortActiveMock = func(m *testutil.MockGatewayClient, param ...remote.PortActiveReq) (map[string]remote.PortData, error) {
mg.PortActiveMock = func(m *testutil.MockGatewayClient, param ...baiyin.PortActiveReq) (map[string]baiyin.PortData, error) {
switch {
case m.Host == proxy.Host:
return map[string]remote.PortData{
return map[string]baiyin.PortData{
"10001": {Edge: []string{"edge1", "edge4"}},
"10002": {Edge: []string{"edge2"}},
}, nil
case m.Host == proxy2.Host:
return map[string]remote.PortData{
return map[string]baiyin.PortData{
"10001": {Edge: []string{"edge3"}},
}, nil
}
return nil, fmt.Errorf("代理主机不符合预期: %s", m.Host)
}
mg.PortConfigsMock = func(m *testutil.MockGatewayClient, params []remote.PortConfigsReq) error {
mg.PortConfigsMock = func(m *testutil.MockGatewayClient, params []baiyin.PortConfigsReq) error {
switch {
case m.Host == proxy.Host:
for _, param := range params {
@@ -1213,7 +1213,7 @@ func Test_channelService_RemoveChannels(t *testing.T) {
}
return fmt.Errorf("代理主机不符合预期: %s", m.Host)
}
mc.DisconnectMock = func(param remote.CloudDisconnectReq) (int, error) {
mc.DisconnectMock = func(param baiyin.CloudDisconnectReq) (int, error) {
switch {
case param.Uuid == proxy.Name:
var edges = []string{"edge1", "edge2", "edge4"}