Skip to content

Commit

Permalink
feat(p2p): Enable relay
Browse files Browse the repository at this point in the history
  • Loading branch information
gfanton committed Aug 24, 2018
1 parent de67fe4 commit c7e3053
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 5 deletions.
23 changes: 18 additions & 5 deletions core/cmd/berty/daemon.go
Expand Up @@ -38,21 +38,25 @@ type daemonOptions struct {

bind string
hideBanner bool
bootstrap []string
dropDatabase bool
initOnly bool
noP2P bool
bindP2P []string

// p2p
bootstrap []string
noP2P bool
bindP2P []string
hop bool // relay hop
}

func daemonSetupFlags(flags *pflag.FlagSet, opts *daemonOptions) {
flags.BoolVar(&opts.dropDatabase, "drop-database", false, "drop database to force a reinitialization")
flags.BoolVar(&opts.hideBanner, "hide-banner", false, "hide banner")
flags.BoolVar(&opts.initOnly, "init-only", false, "stop after node initialization (useful for integration tests")
flags.BoolVar(&opts.noP2P, "no-p2p", false, "Disable p2p Drier")
flags.BoolVar(&opts.hop, "hop", false, "enable relay hop (should not be enable for client)")
flags.StringVarP(&opts.bind, "bind", "b", ":1337", "gRPC listening address")
flags.StringSliceVarP(&opts.bootstrap, "bootstrap", "", []string{}, "boostrap peers")
flags.StringSliceVarP(&opts.bindP2P, "bind-p2p", "", []string{"/ip4/0.0.0.0/tcp/0"}, "p2p listening address")
flags.StringSliceVar(&opts.bootstrap, "bootstrap", []string{}, "boostrap peers")
flags.StringSliceVar(&opts.bindP2P, "bind-p2p", []string{"/ip4/0.0.0.0/tcp/0"}, "p2p listening address")
}

func newDaemonCommand() *cobra.Command {
Expand Down Expand Up @@ -113,16 +117,25 @@ func daemon(opts *daemonOptions) error {

var driver network.Driver
if !opts.noP2P {
var relayOpt p2p.Option
if opts.hop {
relayOpt = p2p.WithRelayHOP()
} else {
relayOpt = p2p.WithRelayClient()
}

driver, err = p2p.NewDriver(
context.Background(),
p2p.WithRandomIdentity(),
p2p.WithDefaultMuxers(),
p2p.WithDefaultPeerstore(),
p2p.WithDefaultSecurity(),
p2p.WithDefaultTransports(),
p2p.WithNATPortMap(), // @TODO: Is this a pb on mobile?
p2p.WithMDNS(),
p2p.WithListenAddrStrings(opts.bindP2P...),
p2p.WithBootstrap(opts.bootstrap...),
relayOpt,
)
if err != nil {
return err
Expand Down
8 changes: 8 additions & 0 deletions core/cmd/berty/root.go
Expand Up @@ -74,7 +74,15 @@ func newRootCommand() *cobra.Command {

func setupLogger(cmd *cobra.Command, args []string) error {
cfgLogLevel, err := cmd.Flags().GetString("log-level")
if err != nil {
return err
}

cfgP2PLogLevel, err := cmd.Flags().GetString("log-level-p2p")
if err != nil {
return err
}

cfgP2PLogSubsystem, err := cmd.Flags().GetStringSlice("log-p2p-subsystem")
if err != nil {
return err
Expand Down
11 changes: 11 additions & 0 deletions core/network/p2p/options.go
Expand Up @@ -5,6 +5,7 @@ package p2p
import (
"fmt"

circuit "github.com/libp2p/go-libp2p-circuit"
dht "github.com/libp2p/go-libp2p-kad-dht"
dhtopt "github.com/libp2p/go-libp2p-kad-dht/opts"
)
Expand Down Expand Up @@ -68,3 +69,13 @@ func WithBootstrapSync(addrs ...string) Option {
return nil
}
}

// WithRelayClient will allow client to use relay
func WithRelayClient() Option {
return WithRelay(circuit.OptActive)
}

// WithRelayHOP will create a relay hop that can be use by client
func WithRelayHOP() Option {
return WithRelay(circuit.OptActive, circuit.OptHop)
}

0 comments on commit c7e3053

Please sign in to comment.