mirror of
https://github.com/ipfs/kubo.git
synced 2026-02-26 12:57:44 +08:00
update reprovider dep
This commit is contained in:
parent
caa37ccf15
commit
302cfa81ae
@ -17,6 +17,7 @@ import (
|
||||
"github.com/ipfs/kubo/config"
|
||||
"github.com/ipfs/kubo/core/node/libp2p"
|
||||
"github.com/ipfs/kubo/p2p"
|
||||
"github.com/libp2p/go-libp2p-kad-dht/reprovider"
|
||||
pubsub "github.com/libp2p/go-libp2p-pubsub"
|
||||
"github.com/libp2p/go-libp2p-pubsub/timecache"
|
||||
"github.com/libp2p/go-libp2p/core/peer"
|
||||
@ -365,16 +366,17 @@ func Online(bcfg *BuildCfg, cfg *config.Config, userResourceOverrides rcmgr.Part
|
||||
fx.Provide(p2p.New),
|
||||
|
||||
LibP2P(bcfg, cfg, userResourceOverrides),
|
||||
OnlineProviders(
|
||||
isProviderEnabled,
|
||||
cfg.Reprovider.Strategy.WithDefault(config.DefaultReproviderStrategy),
|
||||
cfg.Reprovider.Interval.WithDefault(config.DefaultReproviderInterval),
|
||||
cfg.Routing.AcceleratedDHTClient.WithDefault(config.DefaultAcceleratedDHTClient),
|
||||
int(cfg.Provider.WorkerCount.WithDefault(config.DefaultProviderWorkerCount)),
|
||||
),
|
||||
KadProvider(
|
||||
// OnlineProviders(
|
||||
// isProviderEnabled,
|
||||
// cfg.Reprovider.Strategy.WithDefault(config.DefaultReproviderStrategy),
|
||||
// cfg.Reprovider.Interval.WithDefault(config.DefaultReproviderInterval),
|
||||
// cfg.Routing.AcceleratedDHTClient.WithDefault(config.DefaultAcceleratedDHTClient),
|
||||
// int(cfg.Provider.WorkerCount.WithDefault(config.DefaultProviderWorkerCount)),
|
||||
// ),
|
||||
SweepingReprovider(
|
||||
isProviderEnabled,
|
||||
cfg.Reprovider.Strategy.WithDefault(config.DefaultReproviderStrategy),
|
||||
reprovider.WithReprovideInterval(cfg.Reprovider.Interval.WithDefault(config.DefaultReproviderInterval)),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
@ -18,8 +18,12 @@ import (
|
||||
"github.com/ipfs/kubo/config"
|
||||
"github.com/ipfs/kubo/repo"
|
||||
irouting "github.com/ipfs/kubo/routing"
|
||||
dht "github.com/libp2p/go-libp2p-kad-dht"
|
||||
dht_pb "github.com/libp2p/go-libp2p-kad-dht/pb"
|
||||
"github.com/libp2p/go-libp2p-kad-dht/reprovider"
|
||||
"github.com/libp2p/go-libp2p/core/host"
|
||||
peer "github.com/libp2p/go-libp2p/core/peer"
|
||||
"github.com/libp2p/go-libp2p/core/routing"
|
||||
ma "github.com/multiformats/go-multiaddr"
|
||||
mh "github.com/multiformats/go-multihash"
|
||||
"go.uber.org/fx"
|
||||
)
|
||||
@ -166,7 +170,20 @@ func OnlineProviders(provide bool, providerStrategy string, reprovideInterval ti
|
||||
)
|
||||
}
|
||||
|
||||
func KadProvider(provide bool, reprovideStrategy string, d *dht.IpfsDHT, opts ...reprovider.Option) fx.Option {
|
||||
type kadClient interface {
|
||||
GetClosestPeers(context.Context, string) ([]peer.ID, error)
|
||||
Provide(context.Context, cid.Cid, bool) error
|
||||
Context() context.Context
|
||||
Host() host.Host
|
||||
MessageSender() dht_pb.MessageSender
|
||||
}
|
||||
|
||||
type kadClientWithAddrsFilter interface {
|
||||
kadClient
|
||||
FilteredAddrs() []ma.Multiaddr
|
||||
}
|
||||
|
||||
func SweepingReprovider(provide bool, reprovideStrategy string, opts ...reprovider.Option) fx.Option {
|
||||
if !provide {
|
||||
return OfflineProviders()
|
||||
}
|
||||
@ -180,10 +197,32 @@ func KadProvider(provide bool, reprovideStrategy string, d *dht.IpfsDHT, opts ..
|
||||
|
||||
return fx.Options(
|
||||
keyProvider,
|
||||
fx.Provide(func(d *dht.IpfsDHT, keyProvider provider.KeyChanFunc, opts ...reprovider.Option) (provider.Provider, error) {
|
||||
fx.Provide(func(router routing.Routing, keyProvider provider.KeyChanFunc, opts ...reprovider.Option) (provider.Provider, error) {
|
||||
ctx := context.Background()
|
||||
|
||||
dhtClient, ok := router.(kadClient)
|
||||
if !ok {
|
||||
return nil, errors.New("reprovide sweep only available for normal and accelerated DHT clients")
|
||||
}
|
||||
|
||||
var selfAddrs func() []ma.Multiaddr
|
||||
if client, addrsFilter := dhtClient.(kadClientWithAddrsFilter); addrsFilter {
|
||||
selfAddrs = client.FilteredAddrs
|
||||
} else {
|
||||
// Accelerated DHT doesn't have an address filter
|
||||
selfAddrs = dhtClient.Host().Addrs
|
||||
}
|
||||
|
||||
opts = append(opts,
|
||||
reprovider.WithPeerID(dhtClient.Host().ID()),
|
||||
reprovider.WithRouter(dhtClient),
|
||||
reprovider.WithSelfAddrs(selfAddrs),
|
||||
reprovider.WithMessageSender(dhtClient.MessageSender()),
|
||||
reprovider.WithAddLocalRecord(func(h mh.Multihash) error { return dhtClient.Provide(ctx, cid.NewCidV1(cid.Raw, h), false) }),
|
||||
)
|
||||
|
||||
// Create DHT Sweeping Reprovider
|
||||
r, err := reprovider.NewDHTReprovider(d, opts...)
|
||||
r, err := reprovider.NewReprovider(dhtClient.Context(), opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
2
go.mod
2
go.mod
@ -53,7 +53,7 @@ require (
|
||||
github.com/libp2p/go-doh-resolver v0.5.0
|
||||
github.com/libp2p/go-libp2p v0.43.0
|
||||
github.com/libp2p/go-libp2p-http v0.5.0
|
||||
github.com/libp2p/go-libp2p-kad-dht v0.33.1
|
||||
github.com/libp2p/go-libp2p-kad-dht v0.33.2-0.20250611084458-65bebac64139
|
||||
github.com/libp2p/go-libp2p-pubsub v0.14.2
|
||||
github.com/libp2p/go-libp2p-kbucket v0.7.1-0.20250514131430-6bb8b16e312b
|
||||
github.com/libp2p/go-libp2p-pubsub-router v0.6.0
|
||||
|
||||
6
go.sum
6
go.sum
@ -514,10 +514,8 @@ github.com/libp2p/go-libp2p-gostream v0.6.0 h1:QfAiWeQRce6pqnYfmIVWJFXNdDyfiR/qk
|
||||
github.com/libp2p/go-libp2p-gostream v0.6.0/go.mod h1:Nywu0gYZwfj7Jc91PQvbGU8dIpqbQQkjWgDuOrFaRdA=
|
||||
github.com/libp2p/go-libp2p-http v0.5.0 h1:+x0AbLaUuLBArHubbbNRTsgWz0RjNTy6DJLOxQ3/QBc=
|
||||
github.com/libp2p/go-libp2p-http v0.5.0/go.mod h1:glh87nZ35XCQyFsdzZps6+F4HYI6DctVFY5u1fehwSg=
|
||||
github.com/libp2p/go-libp2p-kad-dht v0.33.1-0.20250610105912-ff841c59c823 h1:EJmqq+Gk8HBMbujYWpGIhcHsBp/8HMjX/lDoH3ewLQU=
|
||||
github.com/libp2p/go-libp2p-kad-dht v0.33.1-0.20250610105912-ff841c59c823/go.mod h1:Eg8zjv+vgX738Qc3oTGaQQPztO5hV4eguvkNGwkILUw=
|
||||
github.com/libp2p/go-libp2p-kad-dht v0.33.1-0.20250610130939-fedd1008dd90 h1:xP58qI1rxEj1RDaC6CnfSH0sPWfsVz73KmJhqbMRxc4=
|
||||
github.com/libp2p/go-libp2p-kad-dht v0.33.1-0.20250610130939-fedd1008dd90/go.mod h1:Eg8zjv+vgX738Qc3oTGaQQPztO5hV4eguvkNGwkILUw=
|
||||
github.com/libp2p/go-libp2p-kad-dht v0.33.2-0.20250611084458-65bebac64139 h1:u1/4EtZc/8faeg7o+L4BSnAHJQD73Ogia5oTMBLrf2Q=
|
||||
github.com/libp2p/go-libp2p-kad-dht v0.33.2-0.20250611084458-65bebac64139/go.mod h1:aclSBU9n3XgL5VucPNW2eanQtLYvRHaFVTx1L/Rz0Nw=
|
||||
github.com/libp2p/go-libp2p-kbucket v0.3.1/go.mod h1:oyjT5O7tS9CQurok++ERgc46YLwEpuGoFq9ubvoUOio=
|
||||
github.com/libp2p/go-libp2p-kbucket v0.7.1-0.20250514131430-6bb8b16e312b h1:qh7OgCwt5AjJohJH+oXKZw6iDeIWKJOZaLXwkxrW0WQ=
|
||||
github.com/libp2p/go-libp2p-kbucket v0.7.1-0.20250514131430-6bb8b16e312b/go.mod h1:3CofRbwJbTybT8WVM2z/h5dj2FPNar6YLyxUc4Tmv1E=
|
||||
|
||||
Loading…
Reference in New Issue
Block a user