mirror of
https://github.com/ipfs/kubo.git
synced 2026-02-21 10:27:46 +08:00
* plumb through go-datastore context changes * update go-libp2p to v0.16.0 * use LIBP2P_TCP_REUSEPORT instead of IPFS_REUSEPORT * use relay config * making deprecation notice match the go-ipfs-config key * docs(config): circuit relay v2 * docs(config): fix links and headers * feat(config): Internal.Libp2pForceReachability This switches to config that supports setting and reading Internal.Libp2pForceReachability OptionalString flag * use configuration option for static relays * chore: go-ipfs-config v0.18.0 https://github.com/ipfs/go-ipfs-config/releases/tag/v0.18.0 * feat: circuit v1 migration prompt when Swarm.EnableRelayHop is set (#8559) * exit when Swarm.EnableRelayHop is set * docs: Experimental.ShardingEnabled migration This ensures existing users of global sharding experiment get notified that the flag no longer works + that autosharding happens automatically. For people who NEED to keep the old behavior (eg. have no time to migrate today) there is a note about restoring it with `UnixFSShardingSizeThreshold`. * chore: add dag-jose code to the cid command output * add support for setting automatic unixfs sharding threshold from the config * test: have tests use low cutoff for sharding to mimic old behavior * test: change error message to match the current error * test: Add automatic sharding/unsharding tests (#8547) * test: refactored naming in the sharding sharness tests to make more sense * ci: set interop test executor to convenience image for Go1.16 + Node * ci: use interop master Co-authored-by: Marcin Rataj <lidel@lidel.org> Co-authored-by: Marten Seemann <martenseemann@gmail.com> Co-authored-by: Marcin Rataj <lidel@lidel.org> Co-authored-by: Gus Eggert <gus@gus.dev> Co-authored-by: Lucas Molas <schomatis@gmail.com>
73 lines
2.5 KiB
Go
73 lines
2.5 KiB
Go
package libp2p
|
|
|
|
import (
|
|
config "github.com/ipfs/go-ipfs-config"
|
|
"github.com/libp2p/go-libp2p-core/peer"
|
|
|
|
"github.com/libp2p/go-libp2p"
|
|
"github.com/libp2p/go-libp2p/p2p/protocol/circuitv2/relay"
|
|
)
|
|
|
|
func RelayTransport(enableRelay bool) func() (opts Libp2pOpts, err error) {
|
|
return func() (opts Libp2pOpts, err error) {
|
|
if enableRelay {
|
|
opts.Opts = append(opts.Opts, libp2p.EnableRelay())
|
|
} else {
|
|
opts.Opts = append(opts.Opts, libp2p.DisableRelay())
|
|
}
|
|
return
|
|
}
|
|
}
|
|
|
|
func RelayService(enable bool, relayOpts config.RelayService) func() (opts Libp2pOpts, err error) {
|
|
return func() (opts Libp2pOpts, err error) {
|
|
if enable {
|
|
def := relay.DefaultResources()
|
|
// Real defaults live in go-libp2p.
|
|
// Here we apply any overrides from user config.
|
|
opts.Opts = append(opts.Opts, libp2p.EnableRelayService(relay.WithResources(relay.Resources{
|
|
Limit: &relay.RelayLimit{
|
|
Data: relayOpts.ConnectionDataLimit.WithDefault(def.Limit.Data),
|
|
Duration: relayOpts.ConnectionDurationLimit.WithDefault(def.Limit.Duration),
|
|
},
|
|
MaxCircuits: int(relayOpts.MaxCircuits.WithDefault(int64(def.MaxCircuits))),
|
|
BufferSize: int(relayOpts.BufferSize.WithDefault(int64(def.BufferSize))),
|
|
ReservationTTL: relayOpts.ReservationTTL.WithDefault(def.ReservationTTL),
|
|
MaxReservations: int(relayOpts.MaxReservations.WithDefault(int64(def.MaxReservations))),
|
|
MaxReservationsPerIP: int(relayOpts.MaxReservations.WithDefault(int64(def.MaxReservationsPerIP))),
|
|
MaxReservationsPerPeer: int(relayOpts.MaxReservations.WithDefault(int64(def.MaxReservationsPerPeer))),
|
|
MaxReservationsPerASN: int(relayOpts.MaxReservations.WithDefault(int64(def.MaxReservationsPerASN))),
|
|
})))
|
|
}
|
|
return
|
|
}
|
|
}
|
|
|
|
func StaticRelays(relays []string) func() (opts Libp2pOpts, err error) {
|
|
return func() (opts Libp2pOpts, err error) {
|
|
staticRelays := make([]peer.AddrInfo, 0, len(relays))
|
|
for _, s := range relays {
|
|
var addr *peer.AddrInfo
|
|
addr, err = peer.AddrInfoFromString(s)
|
|
if err != nil {
|
|
return
|
|
}
|
|
staticRelays = append(staticRelays, *addr)
|
|
}
|
|
if len(staticRelays) > 0 {
|
|
opts.Opts = append(opts.Opts, libp2p.StaticRelays(staticRelays))
|
|
}
|
|
return
|
|
}
|
|
}
|
|
|
|
func AutoRelay(addDefaultRelays bool) func() (opts Libp2pOpts, err error) {
|
|
return func() (opts Libp2pOpts, err error) {
|
|
opts.Opts = append(opts.Opts, libp2p.EnableAutoRelay())
|
|
if addDefaultRelays {
|
|
opts.Opts = append(opts.Opts, libp2p.DefaultStaticRelays())
|
|
}
|
|
return
|
|
}
|
|
}
|