@@ -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