Skip to content

Commit fdec886

Browse files
committed
update: 优化所有实例的添加逻辑
1 parent 3cb75a0 commit fdec886

3 files changed

Lines changed: 338 additions & 31 deletions

File tree

components/layout/navbar.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,13 @@ export const Navbar = () => {
4040
<NavbarItem className="hidden sm:flex items-center gap-1">
4141
{/* 操作按钮 */}
4242
<NavbarActions />
43-
<Divider orientation="vertical" className="h-6" />
43+
{/* <Divider orientation="vertical" className="h-6" /> */}
4444

4545
{/* 社交链接 */}
4646
<NavbarSocial />
4747

4848
{/* 语言切换 */}
49-
<LocaleSwitch />
49+
{/* <LocaleSwitch /> */}
5050

5151
{/* 主题切换 */}
5252
<ThemeSwitch />

internal/api/tunnel.go

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,8 @@ func (h *TunnelHandler) HandleCreateTunnel(w http.ResponseWriter, r *http.Reques
153153

154154
log.Infof("[Master-%v] 创建隧道请求: %v", req.EndpointID, req.Name)
155155

156-
newTunnel, err := h.tunnelService.CreateTunnel(req)
156+
// 使用等待模式创建隧道,超时时间为 3 秒
157+
newTunnel, err := h.tunnelService.CreateTunnelAndWait(req, 3*time.Second)
157158
if err != nil {
158159
w.WriteHeader(http.StatusBadRequest)
159160
json.NewEncoder(w).Encode(tunnel.TunnelResponse{
@@ -163,12 +164,7 @@ func (h *TunnelHandler) HandleCreateTunnel(w http.ResponseWriter, r *http.Reques
163164
return
164165
}
165166

166-
// 主动创建的隧道需要调用 NodePass API 设置别名
167-
if err := h.tunnelService.SetTunnelAlias(newTunnel.ID, newTunnel.Name); err != nil {
168-
// 别名设置失败不影响隧道创建成功的返回,只记录警告
169-
log.Warnf("[API] 设置隧道别名失败,隧道已创建成功: tunnelID=%d, name=%s, err=%v",
170-
newTunnel.ID, newTunnel.Name, err)
171-
}
167+
// CreateTunnelAndWait 已经包含了设置别名的逻辑,这里不需要再调用
172168

173169
json.NewEncoder(w).Encode(tunnel.TunnelResponse{
174170
Success: true,
@@ -512,7 +508,8 @@ func (h *TunnelHandler) HandleUpdateTunnel(w http.ResponseWriter, r *http.Reques
512508
Max: maxVal,
513509
}
514510

515-
newTunnel, err := h.tunnelService.CreateTunnel(createReq)
511+
// 使用等待模式创建新隧道,超时时间为 3 秒
512+
newTunnel, err := h.tunnelService.CreateTunnelAndWait(createReq, 3*time.Second)
516513
if err != nil {
517514
w.WriteHeader(http.StatusBadRequest)
518515
json.NewEncoder(w).Encode(tunnel.TunnelResponse{Success: false, Error: "编辑实例失败,无法创建新实例: " + err.Error()})
@@ -1225,7 +1222,8 @@ func (h *TunnelHandler) HandleQuickCreateTunnel(w http.ResponseWriter, r *http.R
12251222
return
12261223
}
12271224

1228-
if err := h.tunnelService.QuickCreateTunnel(req.EndpointID, req.URL, req.Name); err != nil {
1225+
// 使用等待模式快速创建隧道,超时时间为 3 秒
1226+
if err := h.tunnelService.QuickCreateTunnelAndWait(req.EndpointID, req.URL, req.Name, 3*time.Second); err != nil {
12291227
w.WriteHeader(http.StatusBadRequest)
12301228
json.NewEncoder(w).Encode(tunnel.TunnelResponse{
12311229
Success: false,
@@ -1289,7 +1287,8 @@ func (h *TunnelHandler) HandleQuickBatchCreateTunnel(w http.ResponseWriter, r *h
12891287
var errorMessages []string
12901288

12911289
for i, rule := range req.Rules {
1292-
if err := h.tunnelService.QuickCreateTunnel(rule.EndpointID, rule.URL, rule.Name); err != nil {
1290+
// 使用等待模式批量创建隧道,超时时间为 3 秒
1291+
if err := h.tunnelService.QuickCreateTunnelAndWait(rule.EndpointID, rule.URL, rule.Name, 3*time.Second); err != nil {
12931292
failCount++
12941293
errorMessages = append(errorMessages, fmt.Sprintf("第 %d 条规则失败:%s", i+1, err.Error()))
12951294
log.Errorf("[API] 批量创建隧道失败 - 规则 %d: %v", i+1, err)
@@ -1414,8 +1413,8 @@ func (h *TunnelHandler) HandleTemplateCreate(w http.ResponseWriter, r *http.Requ
14141413
// 生成隧道名称 - 单端模式使用主控名-single-时间戳
14151414
tunnelName := fmt.Sprintf("%s-single-%d", endpointName, time.Now().Unix())
14161415

1417-
// 使用QuickCreateTunnel创建隧道
1418-
if err := h.tunnelService.QuickCreateTunnel(req.Inbounds.MasterID, tunnelURL, tunnelName); err != nil {
1416+
// 使用等待模式创建隧道,超时时间为 3 秒
1417+
if err := h.tunnelService.QuickCreateTunnelAndWait(req.Inbounds.MasterID, tunnelURL, tunnelName, 3*time.Second); err != nil {
14191418
w.WriteHeader(http.StatusBadRequest)
14201419
json.NewEncoder(w).Encode(tunnel.TunnelResponse{
14211420
Success: false,
@@ -1551,9 +1550,9 @@ func (h *TunnelHandler) HandleTemplateCreate(w http.ResponseWriter, r *http.Requ
15511550

15521551
log.Infof("[API] 开始创建双端隧道 - 先创建server端,再创建client端")
15531552

1554-
// 第一步:创建server端隧道
1553+
// 第一步:创建server端隧道(使用等待模式)
15551554
log.Infof("[API] 步骤1: 在endpoint %d 创建server隧道 %s", serverConfig.MasterID, serverTunnelName)
1556-
if err := h.tunnelService.QuickCreateTunnel(serverConfig.MasterID, serverURL, serverTunnelName); err != nil {
1555+
if err := h.tunnelService.QuickCreateTunnelAndWait(serverConfig.MasterID, serverURL, serverTunnelName, 3*time.Second); err != nil {
15571556
log.Errorf("[API] 创建server端隧道失败: %v", err)
15581557
w.WriteHeader(http.StatusBadRequest)
15591558
json.NewEncoder(w).Encode(tunnel.TunnelResponse{
@@ -1564,9 +1563,9 @@ func (h *TunnelHandler) HandleTemplateCreate(w http.ResponseWriter, r *http.Requ
15641563
}
15651564
log.Infof("[API] 步骤1完成: server端隧道创建成功")
15661565

1567-
// 第二步:创建client端隧道
1566+
// 第二步:创建client端隧道(使用等待模式)
15681567
log.Infof("[API] 步骤2: 在endpoint %d 创建client隧道 %s", clientConfig.MasterID, clientTunnelName)
1569-
if err := h.tunnelService.QuickCreateTunnel(clientConfig.MasterID, clientURL, clientTunnelName); err != nil {
1568+
if err := h.tunnelService.QuickCreateTunnelAndWait(clientConfig.MasterID, clientURL, clientTunnelName, 3*time.Second); err != nil {
15701569
log.Errorf("[API] 创建client端隧道失败: %v", err)
15711570
// 如果client端创建失败,可以考虑回滚server端,但这里先简单处理
15721571
w.WriteHeader(http.StatusBadRequest)
@@ -1706,9 +1705,9 @@ func (h *TunnelHandler) HandleTemplateCreate(w http.ResponseWriter, r *http.Requ
17061705

17071706
log.Infof("[API] 开始创建内网穿透隧道 - 先创建server端,再创建client端")
17081707

1709-
// 第一步:创建server端隧道
1708+
// 第一步:创建server端隧道(使用等待模式)
17101709
log.Infof("[API] 步骤1: 在endpoint %d 创建server隧道 %s", serverConfig.MasterID, serverTunnelName)
1711-
if err := h.tunnelService.QuickCreateTunnel(serverConfig.MasterID, serverURL, serverTunnelName); err != nil {
1710+
if err := h.tunnelService.QuickCreateTunnelAndWait(serverConfig.MasterID, serverURL, serverTunnelName, 3*time.Second); err != nil {
17121711
log.Errorf("[API] 创建server端隧道失败: %v", err)
17131712
w.WriteHeader(http.StatusBadRequest)
17141713
json.NewEncoder(w).Encode(tunnel.TunnelResponse{
@@ -1719,9 +1718,9 @@ func (h *TunnelHandler) HandleTemplateCreate(w http.ResponseWriter, r *http.Requ
17191718
}
17201719
log.Infof("[API] 步骤1完成: server端隧道创建成功")
17211720

1722-
// 第二步:创建client端隧道
1721+
// 第二步:创建client端隧道(使用等待模式)
17231722
log.Infof("[API] 步骤2: 在endpoint %d 创建client隧道 %s", clientConfig.MasterID, clientTunnelName)
1724-
if err := h.tunnelService.QuickCreateTunnel(clientConfig.MasterID, clientURL, clientTunnelName); err != nil {
1723+
if err := h.tunnelService.QuickCreateTunnelAndWait(clientConfig.MasterID, clientURL, clientTunnelName, 3*time.Second); err != nil {
17251724
log.Errorf("[API] 创建client端隧道失败: %v", err)
17261725
// 如果client端创建失败,可以考虑回滚server端,但这里先简单处理
17271726
w.WriteHeader(http.StatusBadRequest)

0 commit comments

Comments
 (0)