Add allowlist config option
Marco Munizaga committed
Jul 5, 2022 at 08:29 UTC
2b2efc662ba6c4a8c59dac2efa6ad736551a6a84
2 files changed
+19
config/swarm.go
+4
@@ -141,6 +141,10 @@ type ResourceMgr struct {
141
// Enables the Network Resource Manager feature, default to on.
142
Enabled Flag `json:",omitempty"`
143
Limits *rcmgr.LimitConfig `json:",omitempty"`
144
+ // A list of multiaddrs that can bypass normal system limits (but are still
145
+ // limited by the allowlist scope). Convenience config around
146
+ // https://pkg.go.dev/github.com/libp2p/go-libp2p-resource-manager#Allowlist.Add
147
+ Allowlist []string `json:",omitempty"`
148
}
149
150
const (
core/node/libp2p/rcmgr.go
+15
@@ -20,6 +20,7 @@ import (
20
"github.com/libp2p/go-libp2p-core/protocol"
21
rcmgr "github.com/libp2p/go-libp2p-resource-manager"
22
rcmgrObs "github.com/libp2p/go-libp2p-resource-manager/obs"
23
+ "github.com/multiformats/go-multiaddr"
24
"github.com/prometheus/client_golang/prometheus"
25
"go.opencensus.io/stats/view"
26
@@ -73,6 +74,20 @@ func ResourceManager(cfg config.SwarmConfig) interface{} {
74
75
ropts := []rcmgr.Option{rcmgr.WithMetrics(createRcmgrMetrics()), rcmgr.WithTraceReporter(str)}
76
77
+ if len(cfg.ResourceMgr.Allowlist) > 0 {
78
+ var mas []multiaddr.Multiaddr
79
+ for _, maStr := range cfg.ResourceMgr.Allowlist {
80
+ ma, err := multiaddr.NewMultiaddr(maStr)
81
+ if err != nil {
82
+ log.Errorf("failed to parse multiaddr=%v for allowlist, skipping. err=%v", maStr, err)
83
+ continue
84
+ }
85
+ mas = append(mas, ma)
86
+ }
87
+ ropts = append(ropts, rcmgr.WithAllowlistedMultiaddrs(mas))
88
+ log.Infof("Setting allowlist to: %v", mas)
89
+ }
90
+
91
// Hook up the trace reporter metrics
92
view.Register(rcmgrObs.DefaultViews...)
93
ocprom.NewExporter(ocprom.Options{