From 338668d5c3a04e436a181551129c92eff2512635 Mon Sep 17 00:00:00 2001 From: 0xbcdev <0xbcdev@bcdev.tools> Date: Thu, 29 May 2025 13:54:43 +0700 Subject: [PATCH] exclude IP v6 from persistent peers --- cmd/node/extract_addrbook.go | 2 +- cmd/node/prune_addrbook.go | 2 +- cmd/node/state_sync.go | 2 +- services/web_server/download_addrbook.go | 2 +- services/web_server/handle_api_node_peers.go | 2 +- types/addrbook.go | 10 +++++++++- 6 files changed, 14 insertions(+), 6 deletions(-) diff --git a/cmd/node/extract_addrbook.go b/cmd/node/extract_addrbook.go index 64062c0..76892be 100644 --- a/cmd/node/extract_addrbook.go +++ b/cmd/node/extract_addrbook.go @@ -68,7 +68,7 @@ func GetExtractAddrBookCmd() *cobra.Command { } lastSuccessThreshold, _ := cmd.Flags().GetDuration(flagLastSuccessThreshold) - livePeers := addrBook.GetLivePeers(lastSuccessThreshold) + livePeers := addrBook.GetLivePeers(lastSuccessThreshold, true) newAddrBook := types.AddrBook{ Key: addrBook.Key, diff --git a/cmd/node/prune_addrbook.go b/cmd/node/prune_addrbook.go index ea1dd77..055050a 100644 --- a/cmd/node/prune_addrbook.go +++ b/cmd/node/prune_addrbook.go @@ -32,7 +32,7 @@ func GetPruneAddrBookCmd() *cobra.Command { return } - livePeers := addrBook.GetLivePeers(48 * time.Hour) + livePeers := addrBook.GetLivePeers(48*time.Hour, false) newAddrBook := types.AddrBook{ Key: addrBook.Key, diff --git a/cmd/node/state_sync.go b/cmd/node/state_sync.go index 7c8fb86..170f572 100644 --- a/cmd/node/state_sync.go +++ b/cmd/node/state_sync.go @@ -168,7 +168,7 @@ func GetStateSyncCmd() *cobra.Command { return } - livePeers := addrBook.GetLivePeers(5 * time.Hour) + livePeers := addrBook.GetLivePeers(5*time.Hour, true) if len(livePeers) == 0 { utils.PrintlnStdErr("WARN: no live peers found in provided address book") diff --git a/services/web_server/download_addrbook.go b/services/web_server/download_addrbook.go index 0206220..43d6146 100644 --- a/services/web_server/download_addrbook.go +++ b/services/web_server/download_addrbook.go @@ -46,7 +46,7 @@ func getAddrbook(cfg webtypes.Config) (*types.AddrBook, error) { return nil, errors.Wrap(err, "failed to read addrbook") } - livePeers := addrBook.GetLivePeers(48 * time.Hour) + livePeers := addrBook.GetLivePeers(48*time.Hour, false) if len(livePeers) == 0 && cfg.Debug { // load random, include dead peers, on debug mode diff --git a/services/web_server/handle_api_node_peers.go b/services/web_server/handle_api_node_peers.go index dca1670..07d1fbf 100644 --- a/services/web_server/handle_api_node_peers.go +++ b/services/web_server/handle_api_node_peers.go @@ -37,7 +37,7 @@ func getLivePeers(cfg webtypes.Config) ([]string, error) { return nil, errors.Wrap(err, "failed to read addrbook") } - livePeers := addrBook.GetLivePeers(1 * time.Hour) + livePeers := addrBook.GetLivePeers(1*time.Hour, true) if len(livePeers) == 0 && cfg.Debug { // load random, include dead peers, on debug mode diff --git a/types/addrbook.go b/types/addrbook.go index e02fcac..f1688bb 100644 --- a/types/addrbook.go +++ b/types/addrbook.go @@ -5,6 +5,7 @@ import ( "github.com/pkg/errors" "net" "os" + "strings" "time" ) @@ -46,7 +47,7 @@ func (ab *AddrBook) ReadAddrBook(inputFilePath string) error { return nil } -func (ab *AddrBook) GetLivePeers(validDuration time.Duration) []*KnownAddress { +func (ab *AddrBook) GetLivePeers(validDuration time.Duration, excludeIPv6 bool) []*KnownAddress { var livePeers []*KnownAddress for _, addr := range ab.Addrs { if addr.Addr == nil { @@ -66,6 +67,13 @@ func (ab *AddrBook) GetLivePeers(validDuration time.Duration) []*KnownAddress { } } + if excludeIPv6 { + spl := strings.Split(addr.Addr.IP.String(), ":") + if len(spl) > 2 { + continue + } + } + livePeers = append(livePeers, addr) }