Skip to content
This repository has been archived by the owner on Aug 19, 2022. It is now read-only.

Add docs around WithAllowlistedMultiaddrs. Expose allowlist #63

Merged
merged 2 commits into from
Jul 3, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions allowlist_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,29 @@ import (
"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 1.2.3.0/24 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) {
allowlist := newAllowlist()
ma := multiaddr.StringCast("/ip4/1.2.3.4/tcp/1234")
Expand Down
12 changes: 12 additions & 0 deletions rcmgr.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,18 @@ func (r *resourceManager) GetAllowlist() *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 {
return f(r.system)
}
Expand Down
5 changes: 5 additions & 0 deletions rcmgr_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1005,6 +1005,11 @@ func TestResourceManagerWithAllowlist(t *testing.T) {
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
_, err = rcmgr.OpenConnection(network.DirInbound, true, multiaddr.StringCast("/ip4/1.2.3.5"))
if err == nil {
Expand Down