Indexer Quality Score TrustLess
This commit is contained in:
40
daemons/node/common/utils.go
Normal file
40
daemons/node/common/utils.go
Normal file
@@ -0,0 +1,40 @@
|
||||
package common
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net"
|
||||
"time"
|
||||
|
||||
"github.com/libp2p/go-libp2p/core/host"
|
||||
pp "github.com/libp2p/go-libp2p/core/peer"
|
||||
"github.com/multiformats/go-multiaddr"
|
||||
)
|
||||
|
||||
func PeerIsAlive(h host.Host, ad pp.AddrInfo) bool {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
|
||||
defer cancel()
|
||||
|
||||
err := h.Connect(ctx, ad)
|
||||
return err == nil
|
||||
}
|
||||
|
||||
func ExtractIP(addr string) (net.IP, error) {
|
||||
ma, err := multiaddr.NewMultiaddr(addr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
ips, err := ma.ValueForProtocol(multiaddr.P_IP4) // or P_IP6
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
host, _, err := net.SplitHostPort(ips)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
ip := net.ParseIP(host)
|
||||
if ip == nil {
|
||||
return nil, fmt.Errorf("invalid IP: %s", host)
|
||||
}
|
||||
return ip, nil
|
||||
}
|
||||
Reference in New Issue
Block a user