mirror of
https://github.com/libp2p/go-libp2p.git
synced 2025-10-06 08:37:29 +08:00
extract protocol and maddr-filter
This commit is contained in:
@@ -10,10 +10,10 @@ import (
|
||||
logging "github.com/ipfs/go-log"
|
||||
ma "github.com/jbenet/go-multiaddr"
|
||||
goprocess "github.com/jbenet/goprocess"
|
||||
protocol "github.com/libp2p/go-libp2p-protocol"
|
||||
metrics "github.com/libp2p/go-libp2p/p2p/metrics"
|
||||
mstream "github.com/libp2p/go-libp2p/p2p/metrics/stream"
|
||||
inet "github.com/libp2p/go-libp2p/p2p/net"
|
||||
protocol "github.com/libp2p/go-libp2p/p2p/protocol"
|
||||
identify "github.com/libp2p/go-libp2p/p2p/protocol/identify"
|
||||
relay "github.com/libp2p/go-libp2p/p2p/protocol/relay"
|
||||
|
||||
|
@@ -7,9 +7,9 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
protocol "github.com/libp2p/go-libp2p-protocol"
|
||||
host "github.com/libp2p/go-libp2p/p2p/host"
|
||||
inet "github.com/libp2p/go-libp2p/p2p/net"
|
||||
protocol "github.com/libp2p/go-libp2p/p2p/protocol"
|
||||
testutil "github.com/libp2p/go-libp2p/p2p/test/util"
|
||||
)
|
||||
|
||||
|
@@ -7,9 +7,9 @@ import (
|
||||
pstore "github.com/ipfs/go-libp2p-peerstore"
|
||||
logging "github.com/ipfs/go-log"
|
||||
ma "github.com/jbenet/go-multiaddr"
|
||||
protocol "github.com/libp2p/go-libp2p-protocol"
|
||||
metrics "github.com/libp2p/go-libp2p/p2p/metrics"
|
||||
inet "github.com/libp2p/go-libp2p/p2p/net"
|
||||
protocol "github.com/libp2p/go-libp2p/p2p/protocol"
|
||||
msmux "github.com/whyrusleeping/go-multistream"
|
||||
)
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
package host
|
||||
|
||||
import (
|
||||
"github.com/libp2p/go-libp2p/p2p/protocol"
|
||||
"github.com/libp2p/go-libp2p-protocol"
|
||||
"strings"
|
||||
|
||||
semver "github.com/coreos/go-semver/semver"
|
||||
|
@@ -10,10 +10,10 @@ import (
|
||||
pstore "github.com/ipfs/go-libp2p-peerstore"
|
||||
logging "github.com/ipfs/go-log"
|
||||
ma "github.com/jbenet/go-multiaddr"
|
||||
protocol "github.com/libp2p/go-libp2p-protocol"
|
||||
host "github.com/libp2p/go-libp2p/p2p/host"
|
||||
metrics "github.com/libp2p/go-libp2p/p2p/metrics"
|
||||
inet "github.com/libp2p/go-libp2p/p2p/net"
|
||||
protocol "github.com/libp2p/go-libp2p/p2p/protocol"
|
||||
|
||||
msmux "github.com/whyrusleeping/go-multistream"
|
||||
)
|
||||
|
@@ -5,7 +5,7 @@ import (
|
||||
"sync"
|
||||
|
||||
peer "github.com/ipfs/go-libp2p-peer"
|
||||
protocol "github.com/libp2p/go-libp2p/p2p/protocol"
|
||||
protocol "github.com/libp2p/go-libp2p-protocol"
|
||||
)
|
||||
|
||||
type Stats struct {
|
||||
|
@@ -2,7 +2,7 @@ package metrics
|
||||
|
||||
import (
|
||||
peer "github.com/ipfs/go-libp2p-peer"
|
||||
protocol "github.com/libp2p/go-libp2p/p2p/protocol"
|
||||
protocol "github.com/libp2p/go-libp2p-protocol"
|
||||
)
|
||||
|
||||
type StreamMeterCallback func(int64, protocol.ID, peer.ID)
|
||||
|
@@ -2,9 +2,9 @@ package meterstream
|
||||
|
||||
import (
|
||||
peer "github.com/ipfs/go-libp2p-peer"
|
||||
protocol "github.com/libp2p/go-libp2p-protocol"
|
||||
metrics "github.com/libp2p/go-libp2p/p2p/metrics"
|
||||
inet "github.com/libp2p/go-libp2p/p2p/net"
|
||||
protocol "github.com/libp2p/go-libp2p/p2p/protocol"
|
||||
)
|
||||
|
||||
type meteredStream struct {
|
||||
|
@@ -7,8 +7,8 @@ import (
|
||||
|
||||
randbo "github.com/dustin/randbo"
|
||||
peer "github.com/ipfs/go-libp2p-peer"
|
||||
protocol "github.com/libp2p/go-libp2p-protocol"
|
||||
inet "github.com/libp2p/go-libp2p/p2p/net"
|
||||
protocol "github.com/libp2p/go-libp2p/p2p/protocol"
|
||||
)
|
||||
|
||||
type FakeStream struct {
|
||||
|
@@ -9,7 +9,7 @@ import (
|
||||
peer "github.com/ipfs/go-libp2p-peer"
|
||||
ma "github.com/jbenet/go-multiaddr"
|
||||
transport "github.com/libp2p/go-libp2p-transport"
|
||||
filter "github.com/libp2p/go-libp2p/p2p/net/filter"
|
||||
filter "github.com/libp2p/go-maddr-filter"
|
||||
)
|
||||
|
||||
type PeerConn interface {
|
||||
|
@@ -15,7 +15,7 @@ import (
|
||||
"github.com/jbenet/goprocess"
|
||||
goprocessctx "github.com/jbenet/goprocess/context"
|
||||
transport "github.com/libp2p/go-libp2p-transport"
|
||||
filter "github.com/libp2p/go-libp2p/p2p/net/filter"
|
||||
filter "github.com/libp2p/go-maddr-filter"
|
||||
msmux "github.com/whyrusleeping/go-multistream"
|
||||
)
|
||||
|
||||
|
@@ -1,67 +0,0 @@
|
||||
package filter
|
||||
|
||||
import (
|
||||
"net"
|
||||
"sync"
|
||||
|
||||
ma "github.com/jbenet/go-multiaddr"
|
||||
manet "github.com/jbenet/go-multiaddr-net"
|
||||
)
|
||||
|
||||
type Filters struct {
|
||||
mu sync.RWMutex
|
||||
filters map[string]*net.IPNet
|
||||
}
|
||||
|
||||
func NewFilters() *Filters {
|
||||
return &Filters{
|
||||
filters: make(map[string]*net.IPNet),
|
||||
}
|
||||
}
|
||||
|
||||
func (fs *Filters) AddDialFilter(f *net.IPNet) {
|
||||
fs.mu.Lock()
|
||||
defer fs.mu.Unlock()
|
||||
fs.filters[f.String()] = f
|
||||
}
|
||||
|
||||
func (f *Filters) AddrBlocked(a ma.Multiaddr) bool {
|
||||
maddr := ma.Split(a)
|
||||
if len(maddr) == 0 {
|
||||
return false
|
||||
}
|
||||
netaddr, err := manet.ToNetAddr(maddr[0])
|
||||
if err != nil {
|
||||
// if we cant parse it, its probably not blocked
|
||||
return false
|
||||
}
|
||||
netip := net.ParseIP(netaddr.String())
|
||||
if netip == nil {
|
||||
return false
|
||||
}
|
||||
|
||||
f.mu.RLock()
|
||||
defer f.mu.RUnlock()
|
||||
for _, ft := range f.filters {
|
||||
if ft.Contains(netip) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (f *Filters) Filters() []*net.IPNet {
|
||||
var out []*net.IPNet
|
||||
f.mu.RLock()
|
||||
defer f.mu.RUnlock()
|
||||
for _, ff := range f.filters {
|
||||
out = append(out, ff)
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
func (f *Filters) Remove(ff *net.IPNet) {
|
||||
f.mu.Lock()
|
||||
defer f.mu.Unlock()
|
||||
delete(f.filters, ff.String())
|
||||
}
|
@@ -1,51 +0,0 @@
|
||||
package filter
|
||||
|
||||
import (
|
||||
"net"
|
||||
"testing"
|
||||
|
||||
ma "github.com/jbenet/go-multiaddr"
|
||||
)
|
||||
|
||||
func TestFilter(t *testing.T) {
|
||||
f := NewFilters()
|
||||
for _, cidr := range []string{
|
||||
"1.2.3.0/24",
|
||||
"4.3.2.1/32",
|
||||
"fd00::/8",
|
||||
"fc00::1/128",
|
||||
} {
|
||||
_, ipnet, _ := net.ParseCIDR(cidr)
|
||||
f.AddDialFilter(ipnet)
|
||||
}
|
||||
|
||||
for _, blocked := range []string{
|
||||
"/ip4/1.2.3.4/tcp/123",
|
||||
"/ip4/4.3.2.1/udp/123",
|
||||
"/ip6/fd00::2/tcp/321",
|
||||
"/ip6/fc00::1/udp/321",
|
||||
} {
|
||||
maddr, err := ma.NewMultiaddr(blocked)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if !f.AddrBlocked(maddr) {
|
||||
t.Fatalf("expected %s to be blocked", blocked)
|
||||
}
|
||||
}
|
||||
|
||||
for _, notBlocked := range []string{
|
||||
"/ip4/1.2.4.1/tcp/123",
|
||||
"/ip4/4.3.2.2/udp/123",
|
||||
"/ip6/fe00::1/tcp/321",
|
||||
"/ip6/fc00::2/udp/321",
|
||||
} {
|
||||
maddr, err := ma.NewMultiaddr(notBlocked)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if f.AddrBlocked(maddr) {
|
||||
t.Fatalf("expected %s to not be blocked", notBlocked)
|
||||
}
|
||||
}
|
||||
}
|
@@ -8,8 +8,8 @@ import (
|
||||
pstore "github.com/ipfs/go-libp2p-peerstore"
|
||||
ma "github.com/jbenet/go-multiaddr"
|
||||
"github.com/jbenet/goprocess"
|
||||
protocol "github.com/libp2p/go-libp2p-protocol"
|
||||
conn "github.com/libp2p/go-libp2p/p2p/net/conn"
|
||||
protocol "github.com/libp2p/go-libp2p/p2p/protocol"
|
||||
)
|
||||
|
||||
// MessageSizeMax is a soft (recommended) maximum for network messages.
|
||||
|
@@ -6,8 +6,8 @@ import (
|
||||
"time"
|
||||
|
||||
process "github.com/jbenet/goprocess"
|
||||
protocol "github.com/libp2p/go-libp2p-protocol"
|
||||
inet "github.com/libp2p/go-libp2p/p2p/net"
|
||||
protocol "github.com/libp2p/go-libp2p/p2p/protocol"
|
||||
)
|
||||
|
||||
// stream implements inet.Stream
|
||||
|
@@ -10,8 +10,8 @@ import (
|
||||
"time"
|
||||
|
||||
peer "github.com/ipfs/go-libp2p-peer"
|
||||
protocol "github.com/libp2p/go-libp2p-protocol"
|
||||
inet "github.com/libp2p/go-libp2p/p2p/net"
|
||||
protocol "github.com/libp2p/go-libp2p/p2p/protocol"
|
||||
testutil "github.com/libp2p/go-libp2p/testutil"
|
||||
|
||||
"context"
|
||||
|
@@ -15,7 +15,6 @@ import (
|
||||
mconn "github.com/libp2p/go-libp2p/p2p/metrics/conn"
|
||||
inet "github.com/libp2p/go-libp2p/p2p/net"
|
||||
conn "github.com/libp2p/go-libp2p/p2p/net/conn"
|
||||
filter "github.com/libp2p/go-libp2p/p2p/net/filter"
|
||||
addrutil "github.com/libp2p/go-libp2p/p2p/net/swarm/addr"
|
||||
|
||||
ci "github.com/ipfs/go-libp2p-crypto"
|
||||
@@ -28,6 +27,7 @@ import (
|
||||
"github.com/jbenet/goprocess"
|
||||
goprocessctx "github.com/jbenet/goprocess/context"
|
||||
transport "github.com/libp2p/go-libp2p-transport"
|
||||
filter "github.com/libp2p/go-maddr-filter"
|
||||
tcpt "github.com/libp2p/go-tcp-transport"
|
||||
psmss "github.com/whyrusleeping/go-smux-multistream"
|
||||
spdy "github.com/whyrusleeping/go-smux-spdystream"
|
||||
|
@@ -1,8 +1,8 @@
|
||||
package swarm
|
||||
|
||||
import (
|
||||
protocol "github.com/libp2p/go-libp2p-protocol"
|
||||
inet "github.com/libp2p/go-libp2p/p2p/net"
|
||||
protocol "github.com/libp2p/go-libp2p/p2p/protocol"
|
||||
|
||||
ps "github.com/jbenet/go-peerstream"
|
||||
)
|
||||
|
@@ -1,9 +0,0 @@
|
||||
package protocol
|
||||
|
||||
// ID is an identifier used to write protocol headers in streams.
|
||||
type ID string
|
||||
|
||||
// These are reserved protocol.IDs.
|
||||
const (
|
||||
TestingID ID = "/p2p/_testing"
|
||||
)
|
@@ -9,9 +9,9 @@ import (
|
||||
peer "github.com/ipfs/go-libp2p-peer"
|
||||
logging "github.com/ipfs/go-log"
|
||||
mh "github.com/jbenet/go-multihash"
|
||||
protocol "github.com/libp2p/go-libp2p-protocol"
|
||||
host "github.com/libp2p/go-libp2p/p2p/host"
|
||||
inet "github.com/libp2p/go-libp2p/p2p/net"
|
||||
protocol "github.com/libp2p/go-libp2p/p2p/protocol"
|
||||
)
|
||||
|
||||
var log = logging.Logger("github.com/libp2p/go-libp2p/p2p/protocol/relay")
|
||||
|
@@ -6,8 +6,8 @@ import (
|
||||
|
||||
"context"
|
||||
logging "github.com/ipfs/go-log"
|
||||
protocol "github.com/libp2p/go-libp2p-protocol"
|
||||
inet "github.com/libp2p/go-libp2p/p2p/net"
|
||||
protocol "github.com/libp2p/go-libp2p/p2p/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"
|
||||
|
@@ -10,9 +10,9 @@ import (
|
||||
u "github.com/ipfs/go-ipfs-util"
|
||||
peer "github.com/ipfs/go-libp2p-peer"
|
||||
logging "github.com/ipfs/go-log"
|
||||
protocol "github.com/libp2p/go-libp2p-protocol"
|
||||
host "github.com/libp2p/go-libp2p/p2p/host"
|
||||
inet "github.com/libp2p/go-libp2p/p2p/net"
|
||||
protocol "github.com/libp2p/go-libp2p/p2p/protocol"
|
||||
testutil "github.com/libp2p/go-libp2p/p2p/test/util"
|
||||
)
|
||||
|
||||
|
@@ -11,10 +11,10 @@ import (
|
||||
u "github.com/ipfs/go-ipfs-util"
|
||||
logging "github.com/ipfs/go-log"
|
||||
ps "github.com/jbenet/go-peerstream"
|
||||
protocol "github.com/libp2p/go-libp2p-protocol"
|
||||
host "github.com/libp2p/go-libp2p/p2p/host"
|
||||
inet "github.com/libp2p/go-libp2p/p2p/net"
|
||||
swarm "github.com/libp2p/go-libp2p/p2p/net/swarm"
|
||||
protocol "github.com/libp2p/go-libp2p/p2p/protocol"
|
||||
testutil "github.com/libp2p/go-libp2p/p2p/test/util"
|
||||
)
|
||||
|
||||
|
12
package.json
12
package.json
@@ -188,6 +188,18 @@
|
||||
"hash": "QmXFU6HbpMaxJ3wtw96aSSqBcdJJqtuE2ipMopmh1T3be8",
|
||||
"name": "go-tcp-transport",
|
||||
"version": "1.0.2"
|
||||
},
|
||||
{
|
||||
"author": "whyrusleeping",
|
||||
"hash": "QmaRNdghe7SY53L9WfyVesio7yvVnyXtgSpbBd9CJYfvJg",
|
||||
"name": "go-maddr-filter",
|
||||
"version": "1.0.0"
|
||||
},
|
||||
{
|
||||
"author": "whyrusleeping",
|
||||
"hash": "QmZNkThpqfVXs9GNbexPrfBbXSLNYeKrE7jwFM2oqHbyqN",
|
||||
"name": "go-libp2p-protocol",
|
||||
"version": "1.0.0"
|
||||
}
|
||||
],
|
||||
"gxVersion": "0.4.0",
|
||||
|
Reference in New Issue
Block a user