Skip to content

Commit 09bfb51

Browse files
committed
fix: 一些适配导致的bug
1 parent da5db4e commit 09bfb51

3 files changed

Lines changed: 48 additions & 8 deletions

File tree

app/tunnels/details/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -942,7 +942,7 @@ export default function TunnelDetailPage({ params }: { params: Promise<PageParam
942942
</Card>
943943
)}
944944

945-
{tunnelInfo.traffic.ping !== null && tunnelInfo.type === '服务端' && (
945+
{tunnelInfo.traffic.ping !== null && (
946946
<Card className="p-1 md:p-2 bg-pink-50 dark:bg-pink-950/30 shadow-none">
947947
<CardBody className="p-1 md:p-2 lg:p-3 flex items-center justify-center">
948948
<div className="text-center">

internal/sse/service.go

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -355,17 +355,31 @@ func (s *Service) storeEvent(event models.EndpointSSE) error {
355355
}
356356

357357
// 非日志事件继续存储到数据库
358+
// 添加调试信息
359+
log.Debugf("[Master-%d]存储事件: eventType=%s, instanceID=%s, pool=%v, ping=%v",
360+
event.EndpointID, event.EventType, event.InstanceID, event.Pool, event.Ping)
361+
362+
// 处理可能为 nil 的字段
363+
poolValue := event.Pool
364+
if poolValue == nil {
365+
poolValue = nil // 明确设置为 nil,让数据库处理
366+
}
367+
pingValue := event.Ping
368+
if pingValue == nil {
369+
pingValue = nil // 明确设置为 nil,让数据库处理
370+
}
371+
358372
_, err := s.db.Exec(`
359373
INSERT INTO "EndpointSSE" (
360374
eventType, pushType, eventTime, endpointId,
361375
instanceId, instanceType, status, url,
362376
tcpRx, tcpTx, udpRx, udpTx, pool, ping,
363377
logs, alias, restart, createdAt
364-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
378+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
365379
`,
366380
event.EventType, event.PushType, event.EventTime, event.EndpointID,
367381
event.InstanceID, event.InstanceType, event.Status, event.URL,
368-
event.TCPRx, event.TCPTx, event.UDPRx, event.UDPTx, event.Pool, event.Ping,
382+
event.TCPRx, event.TCPTx, event.UDPRx, event.UDPTx, poolValue, pingValue,
369383
event.Logs, event.Alias, event.Restart, time.Now(),
370384
)
371385
if err != nil {
@@ -1041,6 +1055,10 @@ func (s *Service) tunnelCreate(tx *sql.Tx, e models.EndpointSSE, cfg parsedURL)
10411055
log.Infof("[Master-%d#SSE]Inst.%s创建隧道时设置重启策略: %t", e.EndpointID, e.InstanceID, restart)
10421056
}
10431057

1058+
// 处理可能为 nil 的字段
1059+
poolValue := e.Pool
1060+
pingValue := e.Ping
1061+
10441062
_, err = tx.Exec(`INSERT INTO "Tunnel" (
10451063
instanceId, endpointId, name, mode,
10461064
status, tunnelAddress, tunnelPort, targetAddress, targetPort,
@@ -1065,7 +1083,7 @@ func (s *Service) tunnelCreate(tx *sql.Tx, e models.EndpointSSE, cfg parsedURL)
10651083
}
10661084
return nil
10671085
}(),
1068-
e.TCPRx, e.TCPTx, e.UDPRx, e.UDPTx, e.Pool, e.Ping, restart, time.Now(), time.Now(), e.EventTime,
1086+
e.TCPRx, e.TCPTx, e.UDPRx, e.UDPTx, poolValue, pingValue, restart, time.Now(), time.Now(), e.EventTime,
10691087
)
10701088
if err != nil {
10711089
log.Errorf("[Master-%d#SSE]Inst.%s创建隧道失败,err=%v", e.EndpointID, e.InstanceID, err)
@@ -1154,6 +1172,10 @@ func (s *Service) tunnelUpdate(tx *sql.Tx, e models.EndpointSSE, cfg parsedURL)
11541172
return nil
11551173
}()
11561174

1175+
// 处理可能为 nil 的字段
1176+
poolValue := e.Pool
1177+
pingValue := e.Ping
1178+
11571179
_, err = tx.Exec(`UPDATE "Tunnel" SET
11581180
status = ?, tcpRx = ?, tcpTx = ?, udpRx = ?, udpTx = ?, pool = ?, ping = ?,
11591181
name = ?, mode = ?, restart = ?,
@@ -1162,7 +1184,7 @@ func (s *Service) tunnelUpdate(tx *sql.Tx, e models.EndpointSSE, cfg parsedURL)
11621184
password = ?, min = ?, max = ?,
11631185
lastEventTime = ?, updatedAt = ?
11641186
WHERE endpointId = ? AND instanceId = ?`,
1165-
newStatus, e.TCPRx, e.TCPTx, e.UDPRx, e.UDPTx, e.Pool, e.Ping,
1187+
newStatus, e.TCPRx, e.TCPTx, e.UDPRx, e.UDPTx, poolValue, pingValue,
11661188
newName, newMode, newRestart,
11671189
cfg.TunnelAddress, cfg.TunnelPort, cfg.TargetAddress, cfg.TargetPort,
11681190
cfg.TLSMode, cfg.CertPath, cfg.KeyPath, cfg.LogLevel, ptrString(e.URL),
@@ -1237,6 +1259,10 @@ func (s *Service) tunnelCreateOrUpdate(tx *sql.Tx, e models.EndpointSSE, cfg par
12371259
log.Infof("[Master-%d#SSE]Inst.%s创建隧道时设置重启策略: %t", e.EndpointID, e.InstanceID, restart)
12381260
}
12391261

1262+
// 处理可能为 nil 的字段
1263+
poolValue := e.Pool
1264+
pingValue := e.Ping
1265+
12401266
_, err = tx.Exec(`INSERT INTO "Tunnel" (
12411267
instanceId, endpointId, name, mode,
12421268
status, tunnelAddress, tunnelPort, targetAddress, targetPort,
@@ -1261,7 +1287,7 @@ func (s *Service) tunnelCreateOrUpdate(tx *sql.Tx, e models.EndpointSSE, cfg par
12611287
}
12621288
return nil
12631289
}(),
1264-
e.TCPRx, e.TCPTx, e.UDPRx, e.UDPTx, e.Pool, e.Ping, restart, time.Now(), time.Now(), e.EventTime,
1290+
e.TCPRx, e.TCPTx, e.UDPRx, e.UDPTx, poolValue, pingValue, restart, time.Now(), time.Now(), e.EventTime,
12651291
)
12661292
if err != nil {
12671293
log.Errorf("[Master-%d#SSE]Inst.%s创建隧道失败,err=%v", e.EndpointID, e.InstanceID, err)

internal/tunnel/service.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1707,6 +1707,20 @@ func (s *Service) QuickCreateTunnelAndWait(endpointID int64, rawURL string, name
17071707
if strings.TrimSpace(finalName) == "" {
17081708
finalName = fmt.Sprintf("auto-%d-%d", endpointID, time.Now().Unix())
17091709
}
1710+
1711+
// 正确处理min和max值,区分未设置和设置为0的情况
1712+
var minVal, maxVal int
1713+
if cfg.Min != "" {
1714+
minVal, _ = strconv.Atoi(cfg.Min)
1715+
} else {
1716+
minVal = -1 // 使用-1表示未设置
1717+
}
1718+
if cfg.Max != "" {
1719+
maxVal, _ = strconv.Atoi(cfg.Max)
1720+
} else {
1721+
maxVal = -1 // 使用-1表示未设置
1722+
}
1723+
17101724
req := CreateTunnelRequest{
17111725
Name: finalName,
17121726
EndpointID: endpointID,
@@ -1720,8 +1734,8 @@ func (s *Service) QuickCreateTunnelAndWait(endpointID int64, rawURL string, name
17201734
KeyPath: cfg.KeyPath,
17211735
LogLevel: LogLevel(cfg.LogLevel),
17221736
Password: cfg.Password,
1723-
Min: func() int { v, _ := strconv.Atoi(cfg.Min); return v }(),
1724-
Max: func() int { v, _ := strconv.Atoi(cfg.Max); return v }(),
1737+
Min: minVal,
1738+
Max: maxVal,
17251739
}
17261740
_, err := s.CreateTunnelAndWait(req, timeout)
17271741
return err

0 commit comments

Comments
 (0)