import ( "context" "fmt" "io" "time" host "github.com/libp2p/go-libp2p-host" logging "github.com/ipfs/go-log" inet "github.com/libp2p/go-libp2p-net" peer "github.com/libp2p/go-libp2p-peer" protocol "github.com/libp2p/go-libp2p-protocol" mh "github.com/multiformats/go-multihash" ) var log = logging.Logger("protocol/relay") // ID is the protocol.ID of the Relay Service. const ID protocol.ID = "/ipfs/relay/line/0.1.0" // Relay is a structure that implements ProtocolRelay. // It is a simple relay service which forwards traffic // between two directly connected peers. // // the protocol is very simple: // // /ipfs/relay\n // <multihash src id> // <multihash dst id> // <data stream> //
semver "github.com/coreos/go-semver/semver" ggio "github.com/gogo/protobuf/io" logging "github.com/ipfs/go-log" ic "github.com/libp2p/go-libp2p-crypto" host "github.com/libp2p/go-libp2p-host" lgbl "github.com/libp2p/go-libp2p-loggables" metrics "github.com/libp2p/go-libp2p-metrics" mstream "github.com/libp2p/go-libp2p-metrics/stream" inet "github.com/libp2p/go-libp2p-net" peer "github.com/libp2p/go-libp2p-peer" pstore "github.com/libp2p/go-libp2p-peerstore" ma "github.com/multiformats/go-multiaddr" msmux "github.com/whyrusleeping/go-multistream" ) var log = logging.Logger("net/identify") // ID is the protocol.ID of the Identify Service. const ID = "/ipfs/id/1.0.0" // LibP2PVersion holds the current protocol version for a client running this code // TODO(jbenet): fix the versioning mess. const LibP2PVersion = "ipfs/0.1.0" const ClientVersion = "go-libp2p/3.3.4" // IDService is a structure that implements ProtocolIdentify. // It is a trivial service that gives the other peer some // useful information about the local peer. A sort of hello. // // The IDService sends: // * Our IPFS Protocol Version
relay "github.com/libp2p/go-libp2p/p2p/protocol/relay" logging "github.com/ipfs/go-log" goprocess "github.com/jbenet/goprocess" metrics "github.com/libp2p/go-libp2p-metrics" mstream "github.com/libp2p/go-libp2p-metrics/stream" inet "github.com/libp2p/go-libp2p-net" peer "github.com/libp2p/go-libp2p-peer" pstore "github.com/libp2p/go-libp2p-peerstore" protocol "github.com/libp2p/go-libp2p-protocol" ma "github.com/multiformats/go-multiaddr" msmux "github.com/whyrusleeping/go-multistream" ) var log = logging.Logger("github.com/libp2p/go-libp2p/p2p/host/basic") // Option is a type used to pass in options to the host. type Option int const ( // NATPortMap makes the host attempt to open port-mapping in NAT devices // for all its listeners. Pass in this option in the constructor to // asynchronously a) find a gateway, b) open port mappings, c) republish // port mappings periodically. The NATed addresses are included in the // Host's Addrs() list. NATPortMap Option = iota ) // BasicHost is the basic implementation of the host.Host interface. This // particular host implementation:
package relay_test import ( "io" "testing" "context" logging "github.com/ipfs/go-log" inet "github.com/libp2p/go-libp2p-net" protocol "github.com/libp2p/go-libp2p-protocol" relay "github.com/libp2p/go-libp2p/p2p/protocol/relay" testutil "github.com/libp2p/go-libp2p/p2p/test/util" msmux "github.com/whyrusleeping/go-multistream" ) var log = logging.Logger("relay_test") func TestRelaySimple(t *testing.T) { ctx := context.Background() // these networks have the relay service wired in already. n1 := testutil.GenHostSwarm(t, ctx) n2 := testutil.GenHostSwarm(t, ctx) n3 := testutil.GenHostSwarm(t, ctx) n1p := n1.ID() n2p := n2.ID() n3p := n3.ID() n2pi := n2.Peerstore().PeerInfo(n2p)
"errors" "io/ioutil" "os" "path" "path/filepath" "strings" "time" "github.com/ipfs/go-datastore" "github.com/ipfs/go-datastore/query" "github.com/jbenet/go-os-rename" logging "github.com/ipfs/go-log" ) var log = logging.Logger("flatfs") const ( extension = ".data" maxPrefixLen = 16 ) var ( ErrBadPrefixLen = errors.New("bad prefix length") ) type Datastore struct { path string // length of the dir splay prefix prefixLen int
relay "github.com/libp2p/go-libp2p/p2p/protocol/relay" logging "github.com/ipfs/go-log" goprocess "github.com/jbenet/goprocess" metrics "github.com/libp2p/go-libp2p-metrics" mstream "github.com/libp2p/go-libp2p-metrics/stream" inet "github.com/libp2p/go-libp2p-net" peer "github.com/libp2p/go-libp2p-peer" pstore "github.com/libp2p/go-libp2p-peerstore" protocol "github.com/libp2p/go-libp2p-protocol" ma "github.com/multiformats/go-multiaddr" msmux "github.com/whyrusleeping/go-multistream" ) var log = logging.Logger("basichost") var NegotiateTimeout = time.Second * 60 // Option is a type used to pass in options to the host. type Option int const ( // NATPortMap makes the host attempt to open port-mapping in NAT devices // for all its listeners. Pass in this option in the constructor to // asynchronously a) find a gateway, b) open port mappings, c) republish // port mappings periodically. The NATed addresses are included in the // Host's Addrs() list. NATPortMap Option = iota )
"fmt" "time" host "github.com/libp2p/go-libp2p-host" logging "github.com/ipfs/go-log" lgbl "github.com/libp2p/go-libp2p-loggables" inet "github.com/libp2p/go-libp2p-net" peer "github.com/libp2p/go-libp2p-peer" pstore "github.com/libp2p/go-libp2p-peerstore" protocol "github.com/libp2p/go-libp2p-protocol" ma "github.com/multiformats/go-multiaddr" msmux "github.com/whyrusleeping/go-multistream" ) var log = logging.Logger("routedhost") // AddressTTL is the expiry time for our addresses. // We expire them quickly. const AddressTTL = time.Second * 10 // RoutedHost is a p2p Host that includes a routing system. // This allows the Host to find the addresses for peers when // it does not have them. type RoutedHost struct { host host.Host // embedded other host. route Routing } type Routing interface { FindPeer(context.Context, peer.ID) (pstore.PeerInfo, error)
"io/ioutil" golog "log" "net" "sync" "time" logging "github.com/ipfs/go-log" "github.com/libp2p/go-libp2p-host" "github.com/libp2p/go-libp2p-peer" pstore "github.com/libp2p/go-libp2p-peerstore" ma "github.com/multiformats/go-multiaddr" manet "github.com/multiformats/go-multiaddr-net" "github.com/whyrusleeping/mdns" ) var log = logging.Logger("mdns") const ServiceTag = "_ipfs-discovery._udp" type Service interface { io.Closer RegisterNotifee(Notifee) UnregisterNotifee(Notifee) } type Notifee interface { HandlePeerFound(pstore.PeerInfo) } type mdnsService struct { server *mdns.Server
import ( "bytes" "context" "errors" "io" "time" u "github.com/ipfs/go-ipfs-util" logging "github.com/ipfs/go-log" host "github.com/libp2p/go-libp2p-host" inet "github.com/libp2p/go-libp2p-net" peer "github.com/libp2p/go-libp2p-peer" ) var log = logging.Logger("ping") const PingSize = 32 const ID = "/ipfs/ping/1.0.0" const pingTimeout = time.Second * 60 type PingService struct { Host host.Host } func NewPingService(h host.Host) *PingService { ps := &PingService{h} h.SetStreamHandler(ID, ps.PingHandler) return ps
"io" "math/rand" "testing" "time" "context" u "github.com/ipfs/go-ipfs-util" logging "github.com/ipfs/go-log" host "github.com/libp2p/go-libp2p-host" inet "github.com/libp2p/go-libp2p-net" peer "github.com/libp2p/go-libp2p-peer" protocol "github.com/libp2p/go-libp2p-protocol" testutil "github.com/libp2p/go-libp2p/p2p/test/util" ) var log = logging.Logger("backpressure") // TestBackpressureStreamHandler tests whether mux handler // ratelimiting works. Meaning, since the handler is sequential // it should block senders. // // Important note: spdystream (which peerstream uses) has a set // of n workers (n=spdsystream.FRAME_WORKERS) which handle new // frames, including those starting new streams. So all of them // can be in the handler at one time. Also, the sending side // does not rate limit unless we call stream.Wait() // // // Note: right now, this happens muxer-wide. the muxer should // learn to flow control, so handlers cant block each other. func TestBackpressureStreamHandler(t *testing.T) {
package mocknet import ( "context" logging "github.com/ipfs/go-log" ) var log = logging.Logger("mocknet") // WithNPeers constructs a Mocknet with N peers. func WithNPeers(ctx context.Context, n int) (Mocknet, error) { m := New(ctx) for i := 0; i < n; i++ { if _, err := m.GenPeer(); err != nil { return nil, err } } return m, nil } // FullMeshLinked constructs a Mocknet with full mesh of Links. // This means that all the peers **can** connect to each other // (not that they already are connected. you can use m.ConnectAll()) func FullMeshLinked(ctx context.Context, n int) (Mocknet, error) { m, err := WithNPeers(ctx, n) if err != nil { return nil, err } if err := m.LinkAll(); err != nil {
u "github.com/ipfs/go-ipfs-util" logging "github.com/ipfs/go-log" host "github.com/libp2p/go-libp2p-host" inet "github.com/libp2p/go-libp2p-net" testutil "github.com/libp2p/go-libp2p-netutil" protocol "github.com/libp2p/go-libp2p-protocol" swarm "github.com/libp2p/go-libp2p-swarm" ps "github.com/libp2p/go-peerstream" ) func init() { // change the garbage collect timeout for testing. ps.GarbageCollectTimeout = 10 * time.Millisecond } var log = logging.Logger("reconnect") func EchoStreamHandler(stream inet.Stream) { c := stream.Conn() log.Debugf("%s echoing %s", c.LocalPeer(), c.RemotePeer()) go func() { defer stream.Close() io.Copy(stream, stream) }() } type sendChans struct { send chan struct{} sent chan struct{} read chan struct{} close_ chan struct{}
"time" nat "github.com/fd/go-nat" logging "github.com/ipfs/go-log" goprocess "github.com/jbenet/goprocess" periodic "github.com/jbenet/goprocess/periodic" ma "github.com/multiformats/go-multiaddr" manet "github.com/multiformats/go-multiaddr-net" ) var ( // ErrNoMapping signals no mapping exists for an address ErrNoMapping = errors.New("mapping not established") ) var log = logging.Logger("nat") // MappingDuration is a default port mapping duration. // Port mappings are renewed every (MappingDuration / 3) const MappingDuration = time.Second * 60 // CacheTime is the time a mapping will cache an external address for const CacheTime = time.Second * 15 // DiscoverNAT looks for a NAT device in the network and // returns an object that can manage port mappings. func DiscoverNAT() *NAT { nat, err := nat.DiscoverGateway() if err != nil { log.Debug("DiscoverGateway error:", err) return nil
"time" host "github.com/libp2p/go-libp2p-host" logging "github.com/ipfs/go-log" lgbl "github.com/libp2p/go-libp2p-loggables" metrics "github.com/libp2p/go-libp2p-metrics" inet "github.com/libp2p/go-libp2p-net" peer "github.com/libp2p/go-libp2p-peer" pstore "github.com/libp2p/go-libp2p-peerstore" protocol "github.com/libp2p/go-libp2p-protocol" ma "github.com/multiformats/go-multiaddr" msmux "github.com/whyrusleeping/go-multistream" ) var log = logging.Logger("github.com/libp2p/go-libp2p/p2p/host/routed") // AddressTTL is the expiry time for our addresses. // We expire them quickly. const AddressTTL = time.Second * 10 // RoutedHost is a p2p Host that includes a routing system. // This allows the Host to find the addresses for peers when // it does not have them. type RoutedHost struct { host host.Host // embedded other host. route Routing } type Routing interface { FindPeer(context.Context, peer.ID) (pstore.PeerInfo, error)
import ( "bytes" "io" "testing" u "github.com/ipfs/go-ipfs-util" logging "github.com/ipfs/go-log" ic "github.com/libp2p/go-libp2p-crypto" peer "github.com/libp2p/go-libp2p-peer" testutil "github.com/libp2p/go-testutil" ma "github.com/multiformats/go-multiaddr" ) var log = logging.Logger("boguskey") // TestBogusPrivateKey is a key used for testing (to avoid expensive keygen) type TestBogusPrivateKey []byte // TestBogusPublicKey is a key used for testing (to avoid expensive keygen) type TestBogusPublicKey []byte func (pk TestBogusPublicKey) Verify(data, sig []byte) (bool, error) { log.Errorf("TestBogusPublicKey.Verify -- this better be a test!") return bytes.Equal(data, reverse(sig)), nil } func (pk TestBogusPublicKey) Bytes() ([]byte, error) { return []byte(pk), nil }