mirror of
https://github.com/libp2p/go-libp2p-resource-manager.git
synced 2025-02-10 20:00:57 +08:00
Add docs around WithAllowlistedMultiaddrs. Expose allowlist
This commit is contained in:
parent
b2c739f8ec
commit
65deaac7da
@ -11,6 +11,29 @@ import (
|
|||||||
"github.com/multiformats/go-multiaddr"
|
"github.com/multiformats/go-multiaddr"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func ExampleWithAllowlistedMultiaddrs() {
|
||||||
|
somePeer, err := test.RandPeerID()
|
||||||
|
if err != nil {
|
||||||
|
panic("Failed to generate somePeer")
|
||||||
|
}
|
||||||
|
|
||||||
|
limits := DefaultLimits.AutoScale()
|
||||||
|
rcmgr, err := NewResourceManager(NewFixedLimiter(limits), WithAllowlistedMultiaddrs([]multiaddr.Multiaddr{
|
||||||
|
// Any peer connecting from this IP address
|
||||||
|
multiaddr.StringCast("/ip4/1.2.3.4"),
|
||||||
|
// Only the specified peer from this address
|
||||||
|
multiaddr.StringCast("/ip4/2.2.3.4/p2p/" + peer.Encode(somePeer)),
|
||||||
|
// Only peers from this IP Address range
|
||||||
|
multiaddr.StringCast("/ip4/1.2.3.0/ipcidr/24"),
|
||||||
|
}))
|
||||||
|
if err != nil {
|
||||||
|
panic("Failed to start resource manager")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Use rcmgr as before
|
||||||
|
_ = rcmgr
|
||||||
|
}
|
||||||
|
|
||||||
func TestAllowedSimple(t *testing.T) {
|
func TestAllowedSimple(t *testing.T) {
|
||||||
allowlist := newAllowlist()
|
allowlist := newAllowlist()
|
||||||
ma := multiaddr.StringCast("/ip4/1.2.3.4/tcp/1234")
|
ma := multiaddr.StringCast("/ip4/1.2.3.4/tcp/1234")
|
||||||
|
12
rcmgr.go
12
rcmgr.go
@ -167,6 +167,18 @@ func (r *resourceManager) GetAllowlist() *Allowlist {
|
|||||||
return r.allowlist
|
return r.allowlist
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetAllowlist tries to get the allowlist from the given resourcemanager
|
||||||
|
// interface by checking to see if its concrete type is a resourceManager.
|
||||||
|
// Returns nil if it fails to get the allowlist.
|
||||||
|
func GetAllowlist(rcmgr network.ResourceManager) *Allowlist {
|
||||||
|
r, ok := rcmgr.(*resourceManager)
|
||||||
|
if !ok {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return r.allowlist
|
||||||
|
}
|
||||||
|
|
||||||
func (r *resourceManager) ViewSystem(f func(network.ResourceScope) error) error {
|
func (r *resourceManager) ViewSystem(f func(network.ResourceScope) error) error {
|
||||||
return f(r.system)
|
return f(r.system)
|
||||||
}
|
}
|
||||||
|
@ -1005,6 +1005,11 @@ func TestResourceManagerWithAllowlist(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ableToGetAllowlist := GetAllowlist(rcmgr)
|
||||||
|
if ableToGetAllowlist == nil {
|
||||||
|
t.Fatal("Expected to be able to get the allowlist")
|
||||||
|
}
|
||||||
|
|
||||||
// A connection comes in from a non-allowlisted ip address
|
// A connection comes in from a non-allowlisted ip address
|
||||||
_, err = rcmgr.OpenConnection(network.DirInbound, true, multiaddr.StringCast("/ip4/1.2.3.5"))
|
_, err = rcmgr.OpenConnection(network.DirInbound, true, multiaddr.StringCast("/ip4/1.2.3.5"))
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user