@@ -36,6 +36,7 @@ type TunnelConfig struct {
3636 Dns string // DNS服务器地址
3737 Sni string // SNI服务器名称指示
3838 Block string // 协议屏蔽 (0-禁用, 1-SOCKS, 2-HTTP, 3-TLS)
39+ Lbs string // 负载均衡策略 (0-轮询转移, 1-最优延迟, 2-主备回落)
3940}
4041
4142// ParseTunnelURL 解析隧道实例 URL 并返回 Tunnel 模型
@@ -253,6 +254,11 @@ func ParseTunnelURL(rawURL string) *models.Tunnel {
253254 if blockType , err := strconv .Atoi (val ); err == nil && blockType >= 0 && blockType <= 3 {
254255 tunnel .Block = & blockType
255256 }
257+ case "lbs" :
258+ // 负载均衡策略 (0=轮询转移, 1=最优延迟, 2=主备回落)
259+ if lbsType , err := strconv .Atoi (val ); err == nil && lbsType >= 0 && lbsType <= 2 {
260+ tunnel .Lbs = & lbsType
261+ }
256262 }
257263 }
258264 }
@@ -393,6 +399,9 @@ func TunnelToMap(tunnel *models.Tunnel) map[string]interface{} {
393399 if tunnel .Block != nil {
394400 updates ["block" ] = tunnel .Block
395401 }
402+ if tunnel .Lbs != nil {
403+ updates ["lbs" ] = tunnel .Lbs
404+ }
396405 return updates
397406}
398407
@@ -473,6 +482,7 @@ func ParseTunnelConfig(rawURL string) *TunnelConfig {
473482 cfg .Dns = query .Get ("dns" )
474483 cfg .Sni = query .Get ("sni" )
475484 cfg .Block = query .Get ("block" )
485+ cfg .Lbs = query .Get ("lbs" )
476486
477487 // 根据notcp和noudp参数的组合来设置listenType
478488 if noTCP != "" || noUDP != "" {
@@ -607,6 +617,9 @@ func (c *TunnelConfig) BuildTunnelConfigURL() string {
607617 if c .Block != "" {
608618 queryParams = append (queryParams , fmt .Sprintf ("block=%s" , c .Block ))
609619 }
620+ if c .Lbs != "" {
621+ queryParams = append (queryParams , fmt .Sprintf ("lbs=%s" , c .Lbs ))
622+ }
610623
611624 // 根据listenType生成notcp和noudp参数
612625 if c .ListenType != "" {
@@ -795,6 +808,9 @@ func BuildTunnelURLs(tunnel models.Tunnel) string {
795808 if tunnel .Block != nil {
796809 queryParams = append (queryParams , fmt .Sprintf ("block=%d" , * tunnel .Block ))
797810 }
811+ if tunnel .Lbs != nil {
812+ queryParams = append (queryParams , fmt .Sprintf ("lbs=%d" , * tunnel .Lbs ))
813+ }
798814
799815 if tunnel .ProxyProtocol != nil {
800816 proxyVal := "0"
0 commit comments