分析优化 channel 接口用时
This commit is contained in:
@@ -1,11 +1,5 @@
|
||||
package main
|
||||
|
||||
import "math"
|
||||
|
||||
var b62Set = make(map[string]struct{})
|
||||
var b64Set = make(map[string]struct{})
|
||||
|
||||
func main() {
|
||||
println(int(math.Ceil(100 * 1.1)))
|
||||
println(int(math.Ceil(float64(100) * 1.1)))
|
||||
println(float64(166) * 11 / 10)
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ create table admin (
|
||||
deleted_at timestamp
|
||||
);
|
||||
create index admin_status_index on admin (status);
|
||||
create index admin_deleted_at_index on admin (deleted_at);
|
||||
|
||||
-- admin表字段注释
|
||||
comment on table admin is '管理员表';
|
||||
@@ -70,6 +71,7 @@ create table admin_role (
|
||||
updated_at timestamp default current_timestamp,
|
||||
deleted_at timestamp
|
||||
);
|
||||
create index admin_role_deleted_at_index on admin_role (deleted_at);
|
||||
|
||||
-- admin_role表字段注释
|
||||
comment on table admin_role is '管理员角色关联表';
|
||||
@@ -119,6 +121,7 @@ create index user_admin_id_index on "user" (admin_id);
|
||||
create index user_username_index on "user" (username);
|
||||
create index user_email_index on "user" (email);
|
||||
create index user_status_index on "user" (status);
|
||||
create index user_deleted_at_index on "user" (deleted_at);
|
||||
|
||||
-- user表字段注释
|
||||
comment on table "user" is '用户表';
|
||||
@@ -155,6 +158,7 @@ create table user_role (
|
||||
updated_at timestamp default current_timestamp,
|
||||
deleted_at timestamp
|
||||
);
|
||||
create index user_role_deleted_at_index on user_role (deleted_at);
|
||||
|
||||
-- user_role表字段注释
|
||||
comment on table user_role is '用户角色表';
|
||||
@@ -194,6 +198,7 @@ create table client (
|
||||
create index client_client_id_index on client (client_id);
|
||||
create index client_name_index on client (name);
|
||||
create index client_status_index on client (status);
|
||||
create index client_deleted_at_index on client (deleted_at);
|
||||
|
||||
-- client表字段注释
|
||||
comment on table client is '客户端表';
|
||||
@@ -233,6 +238,7 @@ create table permission (
|
||||
);
|
||||
create index permission_parent_id_index on permission (parent_id);
|
||||
create index permission_name_index on permission (name);
|
||||
create index permission_deleted_at_index on permission (deleted_at);
|
||||
|
||||
-- permission表字段注释
|
||||
comment on table permission is '权限表';
|
||||
@@ -260,6 +266,7 @@ create table user_role_link (
|
||||
);
|
||||
create index user_role_link_user_id_index on user_role_link (user_id);
|
||||
create index user_role_link_role_id_index on user_role_link (role_id);
|
||||
create index user_role_link_deleted_at_index on user_role_link (deleted_at);
|
||||
|
||||
-- user_role_link表字段注释
|
||||
comment on table user_role_link is '用户角色关联表';
|
||||
@@ -286,6 +293,7 @@ create table admin_role_link (
|
||||
);
|
||||
create index admin_role_link_admin_id_index on admin_role_link (admin_id);
|
||||
create index admin_role_link_role_id_index on admin_role_link (role_id);
|
||||
create index admin_role_link_deleted_at_index on admin_role_link (deleted_at);
|
||||
|
||||
-- admin_role_link表字段注释
|
||||
comment on table admin_role_link is '管理员角色关联表';
|
||||
@@ -312,6 +320,7 @@ create table user_role_permission_link (
|
||||
);
|
||||
create index user_role_permission_link_role_id_index on user_role_permission_link (role_id);
|
||||
create index user_role_permission_link_permission_id_index on user_role_permission_link (permission_id);
|
||||
create index user_role_permission_link_deleted_at_index on user_role_permission_link (deleted_at);
|
||||
|
||||
-- user_role_permission_link表字段注释
|
||||
comment on table user_role_permission_link is '用户角色权限关联表';
|
||||
@@ -338,6 +347,7 @@ create table admin_role_permission_link (
|
||||
);
|
||||
create index admin_role_permission_link_role_id_index on admin_role_permission_link (role_id);
|
||||
create index admin_role_permission_link_permission_id_index on admin_role_permission_link (permission_id);
|
||||
create index admin_role_permission_link_deleted_at_index on admin_role_permission_link (deleted_at);
|
||||
|
||||
-- admin_role_permission_link表字段注释
|
||||
comment on table admin_role_permission_link is '管理员角色权限关联表';
|
||||
@@ -364,6 +374,7 @@ create table client_permission_link (
|
||||
);
|
||||
create index client_permission_link_client_id_index on client_permission_link (client_id);
|
||||
create index client_permission_link_permission_id_index on client_permission_link (permission_id);
|
||||
create index client_permission_link_deleted_at_index on client_permission_link (deleted_at);
|
||||
|
||||
-- client_permission_link表字段注释
|
||||
comment on table client_permission_link is '客户端权限关联表';
|
||||
@@ -395,6 +406,7 @@ create table proxy (
|
||||
);
|
||||
create index proxy_name_index on proxy (name);
|
||||
create index proxy_host_index on proxy (host);
|
||||
create index proxy_deleted_at_index on proxy (deleted_at);
|
||||
|
||||
-- proxy表字段注释
|
||||
comment on table proxy is '代理服务表';
|
||||
@@ -433,6 +445,7 @@ create index node_isp_index on node (isp);
|
||||
create index node_prov_index on node (prov);
|
||||
create index node_city_index on node (city);
|
||||
create index node_proxy_id_index on node (proxy_id);
|
||||
create index node_deleted_at_index on node (deleted_at);
|
||||
|
||||
-- node表字段注释
|
||||
comment on table node is '节点表';
|
||||
@@ -466,6 +479,7 @@ create table whitelist (
|
||||
);
|
||||
create index whitelist_user_id_index on whitelist (user_id);
|
||||
create index whitelist_host_index on whitelist (host);
|
||||
create index whitelist_deleted_at_index on whitelist (deleted_at);
|
||||
|
||||
-- whitelist表字段注释
|
||||
comment on table whitelist is '白名单表';
|
||||
@@ -549,6 +563,7 @@ create table product (
|
||||
updated_at timestamp default current_timestamp,
|
||||
deleted_at timestamp
|
||||
);
|
||||
create index product_deleted_at_index on product (deleted_at);
|
||||
|
||||
-- product表字段注释
|
||||
comment on table product is '产品表';
|
||||
@@ -576,6 +591,7 @@ create table resource (
|
||||
);
|
||||
create index resource_user_id_index on resource (user_id);
|
||||
create index resource_active_index on resource (active);
|
||||
create index resource_deleted_at_index on resource (deleted_at);
|
||||
|
||||
-- resource表字段注释
|
||||
comment on table resource is '套餐表';
|
||||
@@ -606,6 +622,7 @@ create table resource_pss (
|
||||
deleted_at timestamp
|
||||
);
|
||||
create index resource_pss_resource_id_index on resource_pss (resource_id);
|
||||
create index resource_pss_deleted_at_index on resource_pss (deleted_at);
|
||||
|
||||
-- resource_pss表字段注释
|
||||
comment on table resource_pss is '动态代理套餐表';
|
||||
@@ -639,6 +656,7 @@ create table resource_psr (
|
||||
deleted_at timestamp
|
||||
);
|
||||
create index resource_psr_resource_id_index on resource_psr (resource_id);
|
||||
create index resource_psr_deleted_at_index on resource_psr (deleted_at);
|
||||
|
||||
-- resource_psr表字段注释
|
||||
comment on table resource_psr is '隧道代理套餐表';
|
||||
@@ -664,6 +682,7 @@ create table resource_pps (
|
||||
deleted_at timestamp
|
||||
);
|
||||
create index resource_pps_resource_id_index on resource_pps (resource_id);
|
||||
create index resource_pps_deleted_at_index on resource_pps (deleted_at);
|
||||
|
||||
-- resource_pps表字段注释
|
||||
comment on table resource_pps is '独享代理套餐表';
|
||||
@@ -700,6 +719,7 @@ create table trade (
|
||||
);
|
||||
create index trade_user_id_index on trade (user_id);
|
||||
create index trade_status_index on trade (status);
|
||||
create index trade_deleted_at_index on trade (deleted_at);
|
||||
|
||||
-- trade表字段注释
|
||||
comment on table trade is '订单表';
|
||||
@@ -741,6 +761,7 @@ create table bill (
|
||||
);
|
||||
create index bill_order_id_index on bill (order_id);
|
||||
create index bill_product_id_index on bill (product_id);
|
||||
create index bill_deleted_at_index on bill (deleted_at);
|
||||
|
||||
-- bill表字段注释
|
||||
comment on table bill is '账单表';
|
||||
@@ -774,6 +795,7 @@ create table refund (
|
||||
);
|
||||
create index refund_order_id_index on refund (order_id);
|
||||
create index refund_product_id_index on refund (product_id);
|
||||
create index refund_deleted_at_index on refund (deleted_at);
|
||||
|
||||
-- refund表字段注释
|
||||
comment on table refund is '退款记录表';
|
||||
|
||||
@@ -3,7 +3,7 @@ GET http://110.40.82.250:18702/server/index/getToken/key/juipbyjdapiverify
|
||||
|
||||
### remote 配置信息
|
||||
GET http://103.139.212.110:9989/api/auto_query
|
||||
token: et1wWdrLLRsiQPCar8GunNFEZqcxATFa.anVpcA==.MTc0MzM0MjAwMQ==
|
||||
token: yzfO0vSEnbOL9fkmd4bgKiEuYw5Kjlfb.anVpcA==.MTc0MzQyOTAwMQ==
|
||||
|
||||
### remote 配置连接
|
||||
POST http://103.139.212.110:9989/api/connect
|
||||
@@ -21,7 +21,7 @@ Content-Type: application/json
|
||||
|
||||
### remote 下线全部
|
||||
POST http://103.139.212.110:9989/api/disconnect
|
||||
token: et1wWdrLLRsiQPCar8GunNFEZqcxATFa.anVpcA==.MTc0MzM0MjAwMQ==
|
||||
token: yzfO0vSEnbOL9fkmd4bgKiEuYw5Kjlfb.anVpcA==.MTc0MzQyOTAwMQ==
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
|
||||
20
web/handlers/temp.go
Normal file
20
web/handlers/temp.go
Normal file
@@ -0,0 +1,20 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"platform/pkg/rds"
|
||||
|
||||
"github.com/gofiber/fiber/v2"
|
||||
)
|
||||
|
||||
func Temp(c *fiber.Ctx) error {
|
||||
|
||||
id := c.Query("id")
|
||||
result, err := rds.Client.Get(c.Context(), "channel:"+id).Result()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return c.JSON(fiber.Map{
|
||||
"result": result,
|
||||
})
|
||||
}
|
||||
@@ -19,4 +19,6 @@ func ApplyRouters(app *fiber.App) {
|
||||
channel := api.Group("/channel")
|
||||
channel.Post("/create", PermitAll(), handlers.CreateChannel)
|
||||
channel.Post("/remove", PermitAll(), handlers.RemoveChannels)
|
||||
|
||||
app.Get("/temp", handlers.Temp)
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/gofiber/fiber/v2/middleware/requestid"
|
||||
"github.com/google/uuid"
|
||||
"github.com/jxskiss/base62"
|
||||
"github.com/redis/go-redis/v9"
|
||||
@@ -62,8 +63,11 @@ type ResourceInfo struct {
|
||||
// region RemoveChannel
|
||||
|
||||
func (s *channelService) RemoveChannels(ctx context.Context, auth *AuthContext, id ...int32) error {
|
||||
// 删除通道
|
||||
var step = time.Now()
|
||||
var rid = ctx.Value(requestid.ConfigDefault.ContextKey).(string)
|
||||
|
||||
err := q.Q.Transaction(func(tx *q.Query) error {
|
||||
|
||||
// 查找通道
|
||||
channels, err := tx.Channel.Where(
|
||||
q.Channel.ID.In(id...),
|
||||
@@ -72,6 +76,8 @@ func (s *channelService) RemoveChannels(ctx context.Context, auth *AuthContext,
|
||||
return err
|
||||
}
|
||||
|
||||
slog.Debug("查找通道", "rid", rid, "step", time.Since(step))
|
||||
|
||||
// 检查权限,如果为用户操作的话,则只能删除自己的通道
|
||||
for _, channel := range channels {
|
||||
if auth.Payload.Type == PayloadUser && auth.Payload.Id != channel.UserID {
|
||||
@@ -80,6 +86,8 @@ func (s *channelService) RemoveChannels(ctx context.Context, auth *AuthContext,
|
||||
}
|
||||
|
||||
// 查找代理
|
||||
step = time.Now()
|
||||
|
||||
proxySet := make(map[int32]struct{})
|
||||
proxyIds := make([]int32, 0)
|
||||
for _, channel := range channels {
|
||||
@@ -92,6 +100,8 @@ func (s *channelService) RemoveChannels(ctx context.Context, auth *AuthContext,
|
||||
q.Proxy.ID.In(proxyIds...),
|
||||
).Find()
|
||||
|
||||
slog.Debug("查找代理", "rid", rid, "step", time.Since(step))
|
||||
|
||||
// 删除指定的通道
|
||||
result, err := tx.Channel.
|
||||
Where(q.Channel.ID.In(id...)).
|
||||
@@ -104,13 +114,20 @@ func (s *channelService) RemoveChannels(ctx context.Context, auth *AuthContext,
|
||||
}
|
||||
|
||||
// 删除缓存,异步任务直接在消费端处理删除
|
||||
step = time.Now()
|
||||
|
||||
err = deleteCache(ctx, channels)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
slog.Debug("删除缓存", "rid", rid, "step", time.Since(step))
|
||||
|
||||
// 禁用代理端口并下线用过的节点
|
||||
if env.DebugExternalChange {
|
||||
step = time.Now()
|
||||
|
||||
// 组织数据
|
||||
var configMap = make(map[int32][]remote.PortConfigsReq, len(proxies))
|
||||
var proxyMap = make(map[int32]*models.Proxy, len(proxies))
|
||||
for _, proxy := range proxies {
|
||||
@@ -133,6 +150,9 @@ func (s *channelService) RemoveChannels(ctx context.Context, auth *AuthContext,
|
||||
portMap[key] = struct{}{}
|
||||
}
|
||||
|
||||
slog.Debug("组织数据", "rid", rid, "step", time.Since(step))
|
||||
|
||||
// 更新配置
|
||||
for proxyId, configs := range configMap {
|
||||
if len(configs) == 0 {
|
||||
continue
|
||||
@@ -149,19 +169,29 @@ func (s *channelService) RemoveChannels(ctx context.Context, auth *AuthContext,
|
||||
secret[1],
|
||||
)
|
||||
|
||||
// 查询配置的节点
|
||||
// 查询节点配置
|
||||
step = time.Now()
|
||||
|
||||
actives, err := gateway.GatewayPortActive()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 取消配置
|
||||
slog.Debug("查询节点配置", "rid", rid, "step", time.Since(step))
|
||||
|
||||
// 更新节点配置
|
||||
step = time.Now()
|
||||
|
||||
err = gateway.GatewayPortConfigs(configs)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
slog.Debug("更新节点配置", "rid", rid, "step", time.Since(step))
|
||||
|
||||
// 下线对应节点
|
||||
step = time.Now()
|
||||
|
||||
var edges []string
|
||||
for portStr, active := range actives {
|
||||
port, err := strconv.Atoi(portStr)
|
||||
@@ -182,6 +212,8 @@ func (s *channelService) RemoveChannels(ctx context.Context, auth *AuthContext,
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
slog.Debug("下线对应节点", "rid", rid, "step", time.Since(step))
|
||||
}
|
||||
|
||||
}
|
||||
@@ -208,6 +240,8 @@ func (s *channelService) CreateChannel(
|
||||
count int,
|
||||
nodeFilter ...NodeFilterConfig,
|
||||
) ([]string, error) {
|
||||
var step = time.Now()
|
||||
var rid = ctx.Value(requestid.ConfigDefault.ContextKey).(string)
|
||||
|
||||
filter := NodeFilterConfig{}
|
||||
if len(nodeFilter) > 0 {
|
||||
@@ -218,6 +252,8 @@ func (s *channelService) CreateChannel(
|
||||
err := q.Q.Transaction(func(tx *q.Query) error {
|
||||
|
||||
// 查找套餐
|
||||
step = time.Now()
|
||||
|
||||
var resource = new(ResourceInfo)
|
||||
data := q.Resource.As("data")
|
||||
pss := q.ResourcePss.As("pss")
|
||||
@@ -236,6 +272,8 @@ func (s *channelService) CreateChannel(
|
||||
return err
|
||||
}
|
||||
|
||||
slog.Debug("查找套餐", "rid", rid, "step", time.Since(step))
|
||||
|
||||
// 检查用户权限
|
||||
err = checkUser(auth, resource, count)
|
||||
if err != nil {
|
||||
@@ -243,12 +281,18 @@ func (s *channelService) CreateChannel(
|
||||
}
|
||||
|
||||
// 申请节点
|
||||
step = time.Now()
|
||||
|
||||
edgeAssigns, err := assignEdge(count, filter)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
slog.Debug("申请节点", "rid", rid, "total", time.Since(step))
|
||||
|
||||
// 分配端口
|
||||
step = time.Now()
|
||||
|
||||
now := time.Now()
|
||||
expiration := now.Add(time.Duration(resource.Live) * time.Second)
|
||||
_addr, channels, err := assignPort(edgeAssigns, auth.Payload.Id, protocol, authType, expiration, filter)
|
||||
@@ -257,7 +301,11 @@ func (s *channelService) CreateChannel(
|
||||
}
|
||||
addr = _addr
|
||||
|
||||
slog.Debug("分配端口", "rid", rid, "total", time.Since(step))
|
||||
|
||||
// 更新套餐使用记录
|
||||
step = time.Now()
|
||||
|
||||
_, err = q.ResourcePss.
|
||||
Where(q.ResourcePss.ResourceID.Eq(resourceId)).
|
||||
Select(
|
||||
@@ -274,12 +322,18 @@ func (s *channelService) CreateChannel(
|
||||
return err
|
||||
}
|
||||
|
||||
slog.Debug("更新套餐使用记录", "rid", rid, "step", time.Since(step))
|
||||
|
||||
// 缓存通道数据
|
||||
step = time.Now()
|
||||
|
||||
err = cache(ctx, channels)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
slog.Debug("缓存通道数据", "rid", rid, "step", time.Since(step))
|
||||
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
@@ -327,6 +381,8 @@ func checkUser(auth *AuthContext, resource *ResourceInfo, count int) error {
|
||||
func assignEdge(count int, filter NodeFilterConfig) (*AssignEdgeResult, error) {
|
||||
|
||||
// 查询可以使用的网关
|
||||
var step = time.Now()
|
||||
|
||||
proxies, err := q.Proxy.
|
||||
Where(q.Proxy.Type.Eq(1)).
|
||||
Find()
|
||||
@@ -334,13 +390,21 @@ func assignEdge(count int, filter NodeFilterConfig) (*AssignEdgeResult, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
slog.Debug("查找网关", "step", time.Since(step))
|
||||
|
||||
// 查询已配置的节点
|
||||
step = time.Now()
|
||||
|
||||
rProxyConfigs, err := remote.Client.CloudAutoQuery()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
slog.Debug("查询已配置节点 (remote)", "step", time.Since(step))
|
||||
|
||||
// 查询已使用的节点
|
||||
step = time.Now()
|
||||
|
||||
var proxyIds = make([]int32, len(proxies))
|
||||
for i, proxy := range proxies {
|
||||
proxyIds[i] = proxy.ID
|
||||
@@ -364,6 +428,8 @@ func assignEdge(count int, filter NodeFilterConfig) (*AssignEdgeResult, error) {
|
||||
proxyUses[channel.ProxyID]++
|
||||
}
|
||||
|
||||
slog.Debug("查找已使用节点", "step", time.Since(step))
|
||||
|
||||
// 组织数据
|
||||
var infos = make([]*ProxyInfo, len(proxies))
|
||||
for i, proxy := range proxies {
|
||||
@@ -397,6 +463,8 @@ func assignEdge(count int, filter NodeFilterConfig) (*AssignEdgeResult, error) {
|
||||
needed -= info.used
|
||||
|
||||
if env.DebugExternalChange && info.used > info.count {
|
||||
step = time.Now()
|
||||
|
||||
slog.Debug("新增新节点", "proxy", info.proxy.Name, "used", info.used, "count", info.count)
|
||||
err := remote.Client.CloudConnect(remote.CloudConnectReq{
|
||||
Uuid: info.proxy.Name,
|
||||
@@ -405,12 +473,14 @@ func assignEdge(count int, filter NodeFilterConfig) (*AssignEdgeResult, error) {
|
||||
Province: filter.Prov,
|
||||
City: filter.City,
|
||||
Isp: filter.Isp,
|
||||
Count: int(math.Ceil(float64(info.used) * 1.1)),
|
||||
Count: int(math.Ceil(float64(info.used) * 11 / 10)),
|
||||
}},
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
slog.Debug("分配新增的节点", "step", time.Since(step))
|
||||
}
|
||||
|
||||
configs[i] = &ProxyConfig{
|
||||
@@ -450,36 +520,44 @@ func assignPort(
|
||||
expiration time.Time,
|
||||
filter NodeFilterConfig,
|
||||
) ([]string, []*models.Channel, error) {
|
||||
var assigns = proxies.configs
|
||||
var step = time.Now()
|
||||
|
||||
var configs = proxies.configs
|
||||
var exists = proxies.channels
|
||||
|
||||
// 查询代理已配置端口
|
||||
var proxyIds = make([]int32, 0, len(assigns))
|
||||
for _, assigned := range assigns {
|
||||
proxyIds = append(proxyIds, assigned.proxy.ID)
|
||||
}
|
||||
|
||||
// 端口查找表
|
||||
var proxyPorts = make(map[uint64]struct{})
|
||||
var portsMap = make(map[uint64]struct{})
|
||||
for _, channel := range exists {
|
||||
key := uint64(channel.ProxyID)<<32 | uint64(channel.ProxyPort)
|
||||
proxyPorts[key] = struct{}{}
|
||||
portsMap[key] = struct{}{}
|
||||
}
|
||||
|
||||
// 查找用户白名单
|
||||
var whitelist []string
|
||||
if authType == ChannelAuthTypeIp {
|
||||
err := q.Whitelist.
|
||||
Where(q.Whitelist.UserID.Eq(userId)).
|
||||
Select(q.Whitelist.Host).
|
||||
Scan(&whitelist)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
}
|
||||
|
||||
// 配置启用代理
|
||||
var result []string
|
||||
var channels []*models.Channel
|
||||
for _, assign := range assigns {
|
||||
for _, config := range configs {
|
||||
var err error
|
||||
var proxy = assign.proxy
|
||||
var count = assign.count
|
||||
var proxy = config.proxy
|
||||
var count = config.count
|
||||
|
||||
// 筛选可用端口
|
||||
var configs = make([]remote.PortConfigsReq, 0, count)
|
||||
for port := 10000; port < 20000 && len(configs) < count; port++ {
|
||||
// 跳过存在的端口
|
||||
key := uint64(proxy.ID)<<32 | uint64(port)
|
||||
_, ok := proxyPorts[key]
|
||||
_, ok := portsMap[key]
|
||||
if ok {
|
||||
continue
|
||||
}
|
||||
@@ -500,14 +578,6 @@ func assignPort(
|
||||
|
||||
switch authType {
|
||||
case ChannelAuthTypeIp:
|
||||
var whitelist []string
|
||||
err := q.Whitelist.
|
||||
Where(q.Whitelist.UserID.Eq(userId)).
|
||||
Select(q.Whitelist.Host).
|
||||
Scan(&whitelist)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
configs[i].Whitelist = &whitelist
|
||||
configs[i].Userpass = v.P("")
|
||||
for _, item := range whitelist {
|
||||
@@ -547,6 +617,8 @@ func assignPort(
|
||||
}
|
||||
|
||||
// 保存到数据库
|
||||
step = time.Now()
|
||||
|
||||
err = q.Channel.
|
||||
Omit(
|
||||
q.Channel.NodeID,
|
||||
@@ -560,8 +632,12 @@ func assignPort(
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
slog.Debug("保存到数据库", "step", time.Since(step))
|
||||
|
||||
// 提交端口配置并更新节点列表
|
||||
if env.DebugExternalChange {
|
||||
step = time.Now()
|
||||
|
||||
var secret = strings.Split(proxy.Secret, ":")
|
||||
gateway := remote.InitGateway(
|
||||
proxy.Host,
|
||||
@@ -572,6 +648,8 @@ func assignPort(
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
slog.Debug("提交端口配置", "step", time.Since(step))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package web
|
||||
import (
|
||||
"net/http"
|
||||
"platform/pkg/env"
|
||||
"runtime"
|
||||
|
||||
"log/slog"
|
||||
|
||||
@@ -39,12 +40,16 @@ func (s *Server) Run() error {
|
||||
ErrorHandler: ErrorHandler,
|
||||
})
|
||||
|
||||
s.fiber.Use(logger.New(logger.Config{
|
||||
DisableColors: false,
|
||||
}))
|
||||
s.fiber.Use(requestid.New())
|
||||
s.fiber.Use(logger.New())
|
||||
|
||||
ApplyRouters(s.fiber)
|
||||
|
||||
// pprof
|
||||
go func() {
|
||||
runtime.SetBlockProfileRate(1)
|
||||
err := http.ListenAndServe(":6060", nil)
|
||||
if err != nil {
|
||||
slog.Error("pprof 服务错误", slog.Any("err", err))
|
||||
|
||||
Reference in New Issue
Block a user