@@ -10,7 +10,6 @@ import (
1010 "NodePassDash/internal/tunnel"
1111 "encoding/json"
1212 "fmt"
13- "net"
1413 "net/http"
1514 "net/url"
1615 "strings"
@@ -37,7 +36,7 @@ func NewDataHandler(db *gorm.DB, mgr *sse.Manager, endpointService *endpoint.Ser
3736 }
3837}
3938
40- // extractIPFromURL 从URL中提取IP地址(IPv4或IPv6 )
39+ // extractIPFromURL 从URL中提取hostname(可以是IP地址或域名 )
4140func extractIPFromURL (urlStr string ) string {
4241 // 尝试解析URL
4342 parsedURL , err := url .Parse (urlStr )
@@ -52,16 +51,11 @@ func extractIPFromURL(urlStr string) string {
5251 return ""
5352 }
5453
55- // 检查是否为有效的IP地址
56- if ip := net .ParseIP (host ); ip != nil {
57- return ip .String ()
58- }
59-
60- // 如果不是IP地址,返回空字符串
61- return ""
54+ // 返回hostname(可以是IP或域名)
55+ return host
6256}
6357
64- // extractIPFromString 从字符串中手动提取IP地址 (备用方法)
58+ // extractIPFromString 从字符串中手动提取host部分 (备用方法)
6559func extractIPFromString (input string ) string {
6660 // 去除协议部分
6761 if idx := strings .Index (input , "://" ); idx != - 1 {
@@ -78,30 +72,17 @@ func extractIPFromString(input string) string {
7872 input = input [:slashIdx ]
7973 }
8074
81- // 处理IPv6地址(方括号包围的地址)
82- if strings .HasPrefix (input , "[" ) {
83- if end := strings .Index (input , "]" ); end != - 1 {
84- // 提取方括号内的IPv6地址
85- ipv6Addr := input [1 :end ]
86- // 检查是否为有效的IPv6地址
87- if ip := net .ParseIP (ipv6Addr ); ip != nil {
88- return ip .String ()
89- }
90- }
91- return ""
75+ // 去除查询参数
76+ if queryIdx := strings .Index (input , "?" ); queryIdx != - 1 {
77+ input = input [:queryIdx ]
9278 }
9379
94- // 去除端口部分(IPv4)
80+ // 去除端口部分
9581 if colonIdx := strings .Index (input , ":" ); colonIdx != - 1 {
9682 input = input [:colonIdx ]
9783 }
9884
99- // 检查是否为有效的IP地址
100- if ip := net .ParseIP (input ); ip != nil {
101- return ip .String ()
102- }
103-
104- return ""
85+ return input
10586}
10687
10788func SetupDataRoutes (rg * gin.RouterGroup , db * gorm.DB , sseManager * sse.Manager , endpointService * endpoint.Service , tunnelService * tunnel.Service ) {
@@ -171,11 +152,6 @@ func (h *DataHandler) HandleExport(c *gin.Context) {
171152 APIKey : ep .APIKey ,
172153 }
173154
174- // 设置颜色(如果有)
175- if ep .Color != nil {
176- exportEp .Color = * ep .Color
177- }
178-
179155 exportEndpoints = append (exportEndpoints , exportEp )
180156 }
181157
@@ -281,7 +257,7 @@ func (h *DataHandler) handleImportV1(c *gin.Context, baseData struct {
281257 newEndpoint := models.Endpoint {
282258 Name : ep .Name ,
283259 URL : ep .URL ,
284- IP : extractedIP , // 填充提取的IP地址
260+ Hostname : extractedIP , // 填充提取的IP地址
285261 APIPath : ep .APIPath ,
286262 APIKey : ep .APIKey ,
287263 Status : status ,
@@ -487,7 +463,7 @@ func (h *DataHandler) handleImportV2(c *gin.Context, baseData struct {
487463 newEndpoint := models.Endpoint {
488464 Name : ep .Name ,
489465 URL : ep .URL ,
490- IP : extractedIP , // 填充提取的IP地址
466+ Hostname : extractedIP , // 填充提取的IP地址
491467 APIPath : ep .APIPath ,
492468 APIKey : ep .APIKey ,
493469 Status : models .EndpointStatusOffline ,
@@ -496,10 +472,6 @@ func (h *DataHandler) handleImportV2(c *gin.Context, baseData struct {
496472 UpdatedAt : time .Now (),
497473 }
498474
499- if ep .Color != "" {
500- newEndpoint .Color = & ep .Color
501- }
502-
503475 if err := tx .Create (& newEndpoint ).Error ; err != nil {
504476 log .Errorf ("插入端点失败: %v" , err )
505477 continue
0 commit comments