mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +08:00 
			
		
		
		
	更好地支持IPv6
This commit is contained in:
		@@ -7,8 +7,8 @@ import (
 | 
				
			|||||||
	"github.com/TeaOSLab/EdgeAPI/internal/errors"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/errors"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/goman"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/goman"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/remotelogs"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/remotelogs"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/utils"
 | 
					 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/zero"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/zero"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/iputils"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
 | 
				
			||||||
@@ -520,14 +520,14 @@ func (this *HTTPAccessLogDAO) listAccessLogs(tx *dbs.Tx,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
			// keyword
 | 
								// keyword
 | 
				
			||||||
			if len(ip) > 0 {
 | 
								if len(ip) > 0 {
 | 
				
			||||||
				// TODO 支持IP范围
 | 
									// TODO 支持IPv6范围
 | 
				
			||||||
				if tableQuery.hasRemoteAddrField {
 | 
									if tableQuery.hasRemoteAddrField {
 | 
				
			||||||
					// IP格式
 | 
										// IP格式
 | 
				
			||||||
					if strings.Contains(ip, ",") || strings.Contains(ip, "-") {
 | 
										if strings.Contains(ip, ",") || strings.Contains(ip, "-") {
 | 
				
			||||||
						rangeConfig, err := shared.ParseIPRange(ip)
 | 
											rangeConfig, err := shared.ParseIPRange(ip)
 | 
				
			||||||
						if err == nil {
 | 
											if err == nil {
 | 
				
			||||||
							if len(rangeConfig.IPFrom) > 0 && len(rangeConfig.IPTo) > 0 {
 | 
												if len(rangeConfig.IPFrom) > 0 && len(rangeConfig.IPTo) > 0 {
 | 
				
			||||||
								query.Between("INET_ATON(remoteAddr)", utils.IP2Long(rangeConfig.IPFrom), utils.IP2Long(rangeConfig.IPTo))
 | 
													query.Between("INET_ATON(remoteAddr)", iputils.ToLong(rangeConfig.IPFrom), iputils.ToLong(rangeConfig.IPTo))
 | 
				
			||||||
							}
 | 
												}
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
					} else {
 | 
										} else {
 | 
				
			||||||
@@ -580,7 +580,7 @@ func (this *HTTPAccessLogDAO) listAccessLogs(tx *dbs.Tx,
 | 
				
			|||||||
					if len(pieces) == 1 || len(pieces[1]) == 0 || pieces[0] == pieces[1] {
 | 
										if len(pieces) == 1 || len(pieces[1]) == 0 || pieces[0] == pieces[1] {
 | 
				
			||||||
						query.Attr("remoteAddr", pieces[0])
 | 
											query.Attr("remoteAddr", pieces[0])
 | 
				
			||||||
					} else {
 | 
										} else {
 | 
				
			||||||
						query.Between("INET_ATON(remoteAddr)", utils.IP2Long(pieces[0]), utils.IP2Long(pieces[1]))
 | 
											query.Between("INET_ATON(remoteAddr)", iputils.ToLong(pieces[0]), iputils.ToLong(pieces[1]))
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				} else if statusRangeReg.MatchString(keyword) { // status:200-400
 | 
									} else if statusRangeReg.MatchString(keyword) { // status:200-400
 | 
				
			||||||
					isSpecialKeyword = true
 | 
										isSpecialKeyword = true
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@ import (
 | 
				
			|||||||
	"github.com/TeaOSLab/EdgeAPI/internal/errors"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/errors"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/goman"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/goman"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/remotelogs"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/remotelogs"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/utils"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/iputils"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/firewallconfigs"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/firewallconfigs"
 | 
				
			||||||
	_ "github.com/go-sql-driver/mysql"
 | 
						_ "github.com/go-sql-driver/mysql"
 | 
				
			||||||
@@ -263,8 +263,15 @@ func (this *IPItemDAO) CreateIPItem(tx *dbs.Tx,
 | 
				
			|||||||
	op.ListId = listId
 | 
						op.ListId = listId
 | 
				
			||||||
	op.IpFrom = ipFrom
 | 
						op.IpFrom = ipFrom
 | 
				
			||||||
	op.IpTo = ipTo
 | 
						op.IpTo = ipTo
 | 
				
			||||||
	op.IpFromLong = utils.IP2Long(ipFrom)
 | 
					
 | 
				
			||||||
	op.IpToLong = utils.IP2Long(ipTo)
 | 
						// TODO 支持IPv6
 | 
				
			||||||
 | 
						if iputils.IsIPv4(ipFrom) {
 | 
				
			||||||
 | 
							op.IpFromLong = iputils.ToLong(ipFrom)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if iputils.IsIPv4(ipTo) {
 | 
				
			||||||
 | 
							op.IpToLong = iputils.ToLong(ipTo)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	op.Reason = reason
 | 
						op.Reason = reason
 | 
				
			||||||
	op.Type = itemType
 | 
						op.Type = itemType
 | 
				
			||||||
	op.EventLevel = eventLevel
 | 
						op.EventLevel = eventLevel
 | 
				
			||||||
@@ -345,8 +352,15 @@ func (this *IPItemDAO) UpdateIPItem(tx *dbs.Tx, itemId int64, ipFrom string, ipT
 | 
				
			|||||||
	op.Id = itemId
 | 
						op.Id = itemId
 | 
				
			||||||
	op.IpFrom = ipFrom
 | 
						op.IpFrom = ipFrom
 | 
				
			||||||
	op.IpTo = ipTo
 | 
						op.IpTo = ipTo
 | 
				
			||||||
	op.IpFromLong = utils.IP2Long(ipFrom)
 | 
					
 | 
				
			||||||
	op.IpToLong = utils.IP2Long(ipTo)
 | 
						// TODO 支持IPv6
 | 
				
			||||||
 | 
						if iputils.IsIPv4(ipFrom) {
 | 
				
			||||||
 | 
							op.IpFromLong = iputils.ToLong(ipFrom)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if iputils.IsIPv4(ipTo) {
 | 
				
			||||||
 | 
							op.IpToLong = iputils.ToLong(ipTo)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	op.Reason = reason
 | 
						op.Reason = reason
 | 
				
			||||||
	op.Type = itemType
 | 
						op.Type = itemType
 | 
				
			||||||
	op.EventLevel = eventLevel
 | 
						op.EventLevel = eventLevel
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,9 +10,9 @@ import (
 | 
				
			|||||||
	"github.com/TeaOSLab/EdgeAPI/internal/dnsclients/dnstypes"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/dnsclients/dnstypes"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/errors"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/errors"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/goman"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/goman"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/utils"
 | 
					 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/utils/numberutils"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/utils/numberutils"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/dnsconfigs"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/dnsconfigs"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/iputils"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
				
			||||||
	"github.com/iwind/TeaGo/dbs"
 | 
						"github.com/iwind/TeaGo/dbs"
 | 
				
			||||||
@@ -547,7 +547,7 @@ func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster,
 | 
				
			|||||||
				record, ok := nodeRecordMapping[key]
 | 
									record, ok := nodeRecordMapping[key]
 | 
				
			||||||
				if !ok {
 | 
									if !ok {
 | 
				
			||||||
					var recordType = dnstypes.RecordTypeA
 | 
										var recordType = dnstypes.RecordTypeA
 | 
				
			||||||
					if utils.IsIPv6(ip) {
 | 
										if iputils.IsIPv6(ip) {
 | 
				
			||||||
						recordType = dnstypes.RecordTypeAAAA
 | 
											recordType = dnstypes.RecordTypeAAAA
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,10 +2,10 @@ package services
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
 | 
						"encoding/binary"
 | 
				
			||||||
	"encoding/json"
 | 
						"encoding/json"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/db/models"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/db/models"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/errors"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/errors"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/utils"
 | 
					 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/iplibrary"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/iplibrary"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/firewallconfigs"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/firewallconfigs"
 | 
				
			||||||
@@ -670,14 +670,17 @@ func (this *HTTPFirewallPolicyService) CheckHTTPFirewallPolicyIPStatus(ctx conte
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 校验IP
 | 
						// 校验IP
 | 
				
			||||||
	ip := net.ParseIP(req.Ip)
 | 
						var ip = net.ParseIP(req.Ip)
 | 
				
			||||||
	if len(ip) == 0 {
 | 
						if len(ip) == 0 {
 | 
				
			||||||
		return &pb.CheckHTTPFirewallPolicyIPStatusResponse{
 | 
							return &pb.CheckHTTPFirewallPolicyIPStatusResponse{
 | 
				
			||||||
			IsOk:  false,
 | 
								IsOk:  false,
 | 
				
			||||||
			Error: "请输入正确的IP",
 | 
								Error: "请输入正确的IP",
 | 
				
			||||||
		}, nil
 | 
							}, nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	ipLong := utils.IP2Long(req.Ip)
 | 
						var ipLong uint64
 | 
				
			||||||
 | 
						if ip.To4() != nil {
 | 
				
			||||||
 | 
							ipLong = uint64(binary.BigEndian.Uint32(ip.To4()))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var tx = this.NullTx()
 | 
						var tx = this.NullTx()
 | 
				
			||||||
	firewallPolicy, err := models.SharedHTTPFirewallPolicyDAO.ComposeFirewallPolicy(tx, req.HttpFirewallPolicyId, false, nil)
 | 
						firewallPolicy, err := models.SharedHTTPFirewallPolicyDAO.ComposeFirewallPolicy(tx, req.HttpFirewallPolicyId, false, nil)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,6 +2,7 @@ package services
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
 | 
						"encoding/binary"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/db/models"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/db/models"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/errors"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/errors"
 | 
				
			||||||
	rpcutils "github.com/TeaOSLab/EdgeAPI/internal/rpc/utils"
 | 
						rpcutils "github.com/TeaOSLab/EdgeAPI/internal/rpc/utils"
 | 
				
			||||||
@@ -484,14 +485,17 @@ func (this *IPItemService) CheckIPItemStatus(ctx context.Context, req *pb.CheckI
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 校验IP
 | 
						// 校验IP
 | 
				
			||||||
	ip := net.ParseIP(req.Ip)
 | 
						var ip = net.ParseIP(req.Ip)
 | 
				
			||||||
	if len(ip) == 0 {
 | 
						if len(ip) == 0 {
 | 
				
			||||||
		return &pb.CheckIPItemStatusResponse{
 | 
							return &pb.CheckIPItemStatusResponse{
 | 
				
			||||||
			IsOk:  false,
 | 
								IsOk:  false,
 | 
				
			||||||
			Error: "请输入正确的IP",
 | 
								Error: "请输入正确的IP",
 | 
				
			||||||
		}, nil
 | 
							}, nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	ipLong := utils.IP2Long(req.Ip)
 | 
						var ipLong uint64
 | 
				
			||||||
 | 
						if ip.To4() != nil {
 | 
				
			||||||
 | 
							ipLong = uint64(binary.BigEndian.Uint32(ip.To4()))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var tx = this.NullTx()
 | 
						var tx = this.NullTx()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@ import (
 | 
				
			|||||||
	"github.com/TeaOSLab/EdgeAPI/internal/db/models"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/db/models"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/db/models/stats"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/db/models/stats"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/errors"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/errors"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/utils"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/iputils"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/firewallconfigs"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/firewallconfigs"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
 | 
				
			||||||
@@ -269,8 +269,18 @@ func upgradeV0_0_10(db *dbs.DB) error {
 | 
				
			|||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	for _, one := range ones {
 | 
						for _, one := range ones {
 | 
				
			||||||
		ipFromLong := utils.IP2Long(one.GetString("ipFrom"))
 | 
							var ipFrom = one.GetString("ipFrom")
 | 
				
			||||||
		ipToLong := utils.IP2Long(one.GetString("ipTo"))
 | 
							var ipTo = one.GetString("ipTo")
 | 
				
			||||||
 | 
							var ipFromLong string
 | 
				
			||||||
 | 
							var ipToLong string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// TODO 支持IPv6
 | 
				
			||||||
 | 
							if iputils.IsIPv4(ipFrom) {
 | 
				
			||||||
 | 
								ipFromLong = iputils.ToLong(ipFrom)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if iputils.IsIPv4(ipTo) {
 | 
				
			||||||
 | 
								ipToLong = iputils.ToLong(ipTo)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		_, err = db.Exec("UPDATE edgeIPItems SET ipFromLong=?, ipToLong=? WHERE id=?", ipFromLong, ipToLong, one.GetInt64("id"))
 | 
							_, err = db.Exec("UPDATE edgeIPItems SET ipFromLong=?, ipToLong=? WHERE id=?", ipFromLong, ipToLong, one.GetInt64("id"))
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return err
 | 
								return err
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,8 +7,8 @@ import (
 | 
				
			|||||||
	"github.com/TeaOSLab/EdgeAPI/internal/dnsclients"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/dnsclients"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/dnsclients/dnstypes"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/dnsclients/dnstypes"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/goman"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/goman"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/utils"
 | 
					 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/dnsconfigs"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/dnsconfigs"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/iputils"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
 | 
				
			||||||
	"github.com/iwind/TeaGo/dbs"
 | 
						"github.com/iwind/TeaGo/dbs"
 | 
				
			||||||
	"github.com/iwind/TeaGo/lists"
 | 
						"github.com/iwind/TeaGo/lists"
 | 
				
			||||||
@@ -434,7 +434,7 @@ func (this *DNSTaskExecutor) doCluster(taskId int64, taskVersion int64, clusterI
 | 
				
			|||||||
				}
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				var recordType = dnstypes.RecordTypeA
 | 
									var recordType = dnstypes.RecordTypeA
 | 
				
			||||||
				if utils.IsIPv6(ip) {
 | 
									if iputils.IsIPv6(ip) {
 | 
				
			||||||
					recordType = dnstypes.RecordTypeAAAA
 | 
										recordType = dnstypes.RecordTypeAAAA
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,8 +7,8 @@ import (
 | 
				
			|||||||
	teaconst "github.com/TeaOSLab/EdgeAPI/internal/const"
 | 
						teaconst "github.com/TeaOSLab/EdgeAPI/internal/const"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/db/models"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/db/models"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/errors"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/errors"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/utils"
 | 
					 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/configutils"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/configutils"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/iputils"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/nodeutils"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/nodeutils"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
 | 
				
			||||||
@@ -259,7 +259,7 @@ func (this *HealthCheckExecutor) runNode(healthCheckConfig *serverconfigs.Health
 | 
				
			|||||||
// 检查单个节点
 | 
					// 检查单个节点
 | 
				
			||||||
func (this *HealthCheckExecutor) runNodeOnce(healthCheckConfig *serverconfigs.HealthCheckConfig, result *HealthCheckResult) error {
 | 
					func (this *HealthCheckExecutor) runNodeOnce(healthCheckConfig *serverconfigs.HealthCheckConfig, result *HealthCheckResult) error {
 | 
				
			||||||
	// 支持IPv6
 | 
						// 支持IPv6
 | 
				
			||||||
	if utils.IsIPv6(result.NodeAddr) {
 | 
						if iputils.IsIPv6(result.NodeAddr) {
 | 
				
			||||||
		result.NodeAddr = configutils.QuoteIP(result.NodeAddr)
 | 
							result.NodeAddr = configutils.QuoteIP(result.NodeAddr)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,31 +0,0 @@
 | 
				
			|||||||
package utils
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"encoding/binary"
 | 
					 | 
				
			||||||
	"github.com/cespare/xxhash/v2"
 | 
					 | 
				
			||||||
	"math"
 | 
					 | 
				
			||||||
	"net"
 | 
					 | 
				
			||||||
	"strings"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// IP2Long 将IP转换为整型
 | 
					 | 
				
			||||||
// 注意IPv6没有顺序
 | 
					 | 
				
			||||||
func IP2Long(ip string) uint64 {
 | 
					 | 
				
			||||||
	if len(ip) == 0 {
 | 
					 | 
				
			||||||
		return 0
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	s := net.ParseIP(ip)
 | 
					 | 
				
			||||||
	if len(s) == 0 {
 | 
					 | 
				
			||||||
		return 0
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if strings.Contains(ip, ":") {
 | 
					 | 
				
			||||||
		return math.MaxUint32 + xxhash.Sum64(s)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return uint64(binary.BigEndian.Uint32(s.To4()))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// IsIPv6 判断是否为IPv6
 | 
					 | 
				
			||||||
func IsIPv6(ip string) bool {
 | 
					 | 
				
			||||||
	return strings.Contains(ip, ":")
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,12 +1,14 @@
 | 
				
			|||||||
package utils
 | 
					package utils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"encoding/binary"
 | 
				
			||||||
 | 
						"net"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 计算版本代号
 | 
					// VersionToLong 计算版本代号
 | 
				
			||||||
func VersionToLong(version string) uint32 {
 | 
					func VersionToLong(version string) uint32 {
 | 
				
			||||||
	countDots := strings.Count(version, ".")
 | 
						var countDots = strings.Count(version, ".")
 | 
				
			||||||
	if countDots == 2 {
 | 
						if countDots == 2 {
 | 
				
			||||||
		version += ".0"
 | 
							version += ".0"
 | 
				
			||||||
	} else if countDots == 1 {
 | 
						} else if countDots == 1 {
 | 
				
			||||||
@@ -14,5 +16,9 @@ func VersionToLong(version string) uint32 {
 | 
				
			|||||||
	} else if countDots == 0 {
 | 
						} else if countDots == 0 {
 | 
				
			||||||
		version += ".0.0.0"
 | 
							version += ".0.0.0"
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return uint32(IP2Long(version))
 | 
						var ip = net.ParseIP(version)
 | 
				
			||||||
 | 
						if ip == nil || ip.To4() == nil {
 | 
				
			||||||
 | 
							return 0
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return binary.BigEndian.Uint32(ip.To4())
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user