-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1683 from libp2p/merge-core
move go-libp2p-core here
- Loading branch information
Showing
358 changed files
with
22,682 additions
and
865 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
// Package core provides convenient access to foundational, central go-libp2p primitives via type aliases. | ||
package core | ||
|
||
import ( | ||
"github.com/libp2p/go-libp2p/core/host" | ||
"github.com/libp2p/go-libp2p/core/network" | ||
"github.com/libp2p/go-libp2p/core/peer" | ||
"github.com/libp2p/go-libp2p/core/protocol" | ||
|
||
"github.com/multiformats/go-multiaddr" | ||
) | ||
|
||
// Multiaddr aliases the Multiaddr type from github.com/multiformats/go-multiaddr. | ||
// | ||
// Refer to the docs on that type for more info. | ||
type Multiaddr = multiaddr.Multiaddr | ||
|
||
// PeerID aliases peer.ID. | ||
// | ||
// Refer to the docs on that type for more info. | ||
type PeerID = peer.ID | ||
|
||
// ProtocolID aliases protocol.ID. | ||
// | ||
// Refer to the docs on that type for more info. | ||
type ProtocolID = protocol.ID | ||
|
||
// PeerAddrInfo aliases peer.AddrInfo. | ||
// | ||
// Refer to the docs on that type for more info. | ||
type PeerAddrInfo = peer.AddrInfo | ||
|
||
// Host aliases host.Host. | ||
// | ||
// Refer to the docs on that type for more info. | ||
type Host = host.Host | ||
|
||
// Network aliases network.Network. | ||
// | ||
// Refer to the docs on that type for more info. | ||
type Network = network.Network | ||
|
||
// Conn aliases network.Conn. | ||
// | ||
// Refer to the docs on that type for more info. | ||
type Conn = network.Conn | ||
|
||
// Stream aliases network.Stream. | ||
// | ||
// Refer to the docs on that type for more info. | ||
type Stream = network.Stream |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
package canonicallog | ||
|
||
import ( | ||
"fmt" | ||
"math/rand" | ||
"net" | ||
"strings" | ||
|
||
"github.com/libp2p/go-libp2p/core/peer" | ||
|
||
logging "github.com/ipfs/go-log/v2" | ||
"github.com/multiformats/go-multiaddr" | ||
manet "github.com/multiformats/go-multiaddr/net" | ||
) | ||
|
||
var log = logging.WithSkip(logging.Logger("canonical-log"), 1) | ||
|
||
// LogMisbehavingPeer is the canonical way to log a misbehaving peer. | ||
// Protocols should use this to identify a misbehaving peer to allow the end | ||
// user to easily identify these nodes across protocols and libp2p. | ||
func LogMisbehavingPeer(p peer.ID, peerAddr multiaddr.Multiaddr, component string, err error, msg string) { | ||
log.Warnf("CANONICAL_MISBEHAVING_PEER: peer=%s addr=%s component=%s err=%q msg=%q", p, peerAddr.String(), component, err, msg) | ||
} | ||
|
||
// LogMisbehavingPeerNetAddr is the canonical way to log a misbehaving peer. | ||
// Protocols should use this to identify a misbehaving peer to allow the end | ||
// user to easily identify these nodes across protocols and libp2p. | ||
func LogMisbehavingPeerNetAddr(p peer.ID, peerAddr net.Addr, component string, originalErr error, msg string) { | ||
ma, err := manet.FromNetAddr(peerAddr) | ||
if err != nil { | ||
log.Warnf("CANONICAL_MISBEHAVING_PEER: peer=%s net_addr=%s component=%s err=%q msg=%q", p, peerAddr.String(), component, originalErr, msg) | ||
return | ||
} | ||
|
||
LogMisbehavingPeer(p, ma, component, originalErr, msg) | ||
} | ||
|
||
// LogPeerStatus logs any useful information about a peer. It takes in a sample | ||
// rate and will only log one in every sampleRate messages (randomly). This is | ||
// useful in surfacing events that are normal in isolation, but may be abnormal | ||
// in large quantities. For example, a successful connection from an IP address | ||
// is normal. 10,000 connections from that same IP address is not normal. libp2p | ||
// itself does nothing besides emitting this log. Hook this up to another tool | ||
// like fail2ban to action on the log. | ||
func LogPeerStatus(sampleRate int, p peer.ID, peerAddr multiaddr.Multiaddr, keyVals ...string) { | ||
if rand.Intn(sampleRate) == 0 { | ||
keyValsStr := strings.Builder{} | ||
for i, kOrV := range keyVals { | ||
if i%2 == 0 { | ||
fmt.Fprintf(&keyValsStr, " %v=", kOrV) | ||
} else { | ||
fmt.Fprintf(&keyValsStr, "%q", kOrV) | ||
} | ||
} | ||
log.Infof("CANONICAL_PEER_STATUS: peer=%s addr=%s sample_rate=%v%s", p, peerAddr.String(), sampleRate, keyValsStr.String()) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
package canonicallog | ||
|
||
import ( | ||
"fmt" | ||
"net" | ||
"testing" | ||
|
||
"github.com/libp2p/go-libp2p/core/test" | ||
|
||
logging "github.com/ipfs/go-log/v2" | ||
"github.com/multiformats/go-multiaddr" | ||
) | ||
|
||
func TestLogs(t *testing.T) { | ||
err := logging.SetLogLevel("canonical-log", "info") | ||
if err != nil { | ||
t.Fatal(err) | ||
} | ||
|
||
LogMisbehavingPeer(test.RandPeerIDFatal(t), multiaddr.StringCast("/ip4/1.2.3.4"), "somecomponent", fmt.Errorf("something"), "hi") | ||
|
||
netAddr := &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: 80} | ||
LogMisbehavingPeerNetAddr(test.RandPeerIDFatal(t), netAddr, "somecomponent", fmt.Errorf("something"), "hello \"world\"") | ||
|
||
LogPeerStatus(1, test.RandPeerIDFatal(t), multiaddr.StringCast("/ip4/1.2.3.4"), "extra", "info") | ||
} |
Oops, something went wrong.