Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
mybee
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
vicotor
mybee
Commits
3a709b0c
Commit
3a709b0c
authored
Jan 21, 2020
by
Janos Guljas
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add p2p listen options
parent
b67e4c9a
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
62 additions
and
19 deletions
+62
-19
README.md
README.md
+2
-2
start.go
cmd/bee/cmd/start.go
+12
-3
libp2p.go
pkg/p2p/libp2p/libp2p.go
+48
-14
No files found.
README.md
View file @
3a709b0c
...
@@ -18,11 +18,11 @@ Docker image `janos/bee`.
...
@@ -18,11 +18,11 @@ Docker image `janos/bee`.
Execute the commands in two terminals to start
`node 1`
and
`node 2`
:
Execute the commands in two terminals to start
`node 1`
and
`node 2`
:
```
sh
```
sh
bee start
--
listen
:85
01
bee start
--
api-addr
:8501
--p2p-addr
:304
01
```
```
```
sh
```
sh
bee start
--
listen
:85
02
bee start
--
api-addr
:8502
--p2p-addr
:304
02
```
```
Copy one of the multiaddresses from one running instance.
Copy one of the multiaddresses from one running instance.
...
...
cmd/bee/cmd/start.go
View file @
3a709b0c
...
@@ -16,7 +16,10 @@ import (
...
@@ -16,7 +16,10 @@ import (
func
(
c
*
command
)
initStartCmd
()
(
err
error
)
{
func
(
c
*
command
)
initStartCmd
()
(
err
error
)
{
const
(
const
(
optionNameListen
=
"listen"
optionNameAPIAddr
=
"api-addr"
optionNameP2PAddr
=
"p2p-addr"
optionNameP2PDisableWS
=
"p2p-disable-ws"
optionNameP2PDisableQUIC
=
"p2p-disable-quic"
)
)
cmd
:=
&
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
...
@@ -30,6 +33,9 @@ func (c *command) initStartCmd() (err error) {
...
@@ -30,6 +33,9 @@ func (c *command) initStartCmd() (err error) {
// Construct P2P service.
// Construct P2P service.
p2ps
,
err
:=
libp2p
.
New
(
ctx
,
libp2p
.
Options
{
p2ps
,
err
:=
libp2p
.
New
(
ctx
,
libp2p
.
Options
{
Addr
:
c
.
config
.
GetString
(
optionNameP2PAddr
),
DisableWS
:
c
.
config
.
GetBool
(
optionNameP2PDisableWS
),
DisableQUIC
:
c
.
config
.
GetBool
(
optionNameP2PDisableQUIC
),
// Routing: func(h host.Host) (r routing.PeerRouting, err error) {
// Routing: func(h host.Host) (r routing.PeerRouting, err error) {
// idht, err = dht.New(ctx, h)
// idht, err = dht.New(ctx, h)
// return idht, err
// return idht, err
...
@@ -61,7 +67,7 @@ func (c *command) initStartCmd() (err error) {
...
@@ -61,7 +67,7 @@ func (c *command) initStartCmd() (err error) {
Pingpong
:
pingPong
,
Pingpong
:
pingPong
,
})
})
l
,
err
:=
net
.
Listen
(
"tcp"
,
c
.
config
.
GetString
(
optionName
Listen
))
l
,
err
:=
net
.
Listen
(
"tcp"
,
c
.
config
.
GetString
(
optionName
APIAddr
))
if
err
!=
nil
{
if
err
!=
nil
{
return
fmt
.
Errorf
(
"listen TCP: %w"
,
err
)
return
fmt
.
Errorf
(
"listen TCP: %w"
,
err
)
}
}
...
@@ -72,7 +78,10 @@ func (c *command) initStartCmd() (err error) {
...
@@ -72,7 +78,10 @@ func (c *command) initStartCmd() (err error) {
},
},
}
}
cmd
.
Flags
()
.
String
(
optionNameListen
,
":8500"
,
"HTTP API listen address"
)
cmd
.
Flags
()
.
String
(
optionNameAPIAddr
,
":8500"
,
"HTTP API listen address"
)
cmd
.
Flags
()
.
String
(
optionNameP2PAddr
,
":30399"
,
"P2P listen address"
)
cmd
.
Flags
()
.
Bool
(
optionNameP2PDisableWS
,
false
,
"Disable P2P WebSocket protocol"
)
cmd
.
Flags
()
.
Bool
(
optionNameP2PDisableQUIC
,
false
,
"Disable P2P QUIC protocol"
)
if
err
:=
c
.
config
.
BindPFlags
(
cmd
.
Flags
());
err
!=
nil
{
if
err
:=
c
.
config
.
BindPFlags
(
cmd
.
Flags
());
err
!=
nil
{
return
err
return
err
...
...
pkg/p2p/libp2p/libp2p.go
View file @
3a709b0c
...
@@ -3,10 +3,9 @@ package libp2p
...
@@ -3,10 +3,9 @@ package libp2p
import
(
import
(
"context"
"context"
"fmt"
"fmt"
"net"
"time"
"time"
"github.com/multiformats/go-multistream"
"github.com/janos/bee/pkg/p2p"
"github.com/janos/bee/pkg/p2p"
"github.com/libp2p/go-libp2p"
"github.com/libp2p/go-libp2p"
...
@@ -18,11 +17,11 @@ import (
...
@@ -18,11 +17,11 @@ import (
"github.com/libp2p/go-libp2p-core/peer"
"github.com/libp2p/go-libp2p-core/peer"
"github.com/libp2p/go-libp2p-core/peerstore"
"github.com/libp2p/go-libp2p-core/peerstore"
protocol
"github.com/libp2p/go-libp2p-core/protocol"
protocol
"github.com/libp2p/go-libp2p-core/protocol"
"github.com/libp2p/go-libp2p-core/routing"
libp2pquic
"github.com/libp2p/go-libp2p-quic-transport"
libp2pquic
"github.com/libp2p/go-libp2p-quic-transport"
secio
"github.com/libp2p/go-libp2p-secio"
secio
"github.com/libp2p/go-libp2p-secio"
libp2ptls
"github.com/libp2p/go-libp2p-tls"
libp2ptls
"github.com/libp2p/go-libp2p-tls"
ma
"github.com/multiformats/go-multiaddr"
ma
"github.com/multiformats/go-multiaddr"
"github.com/multiformats/go-multistream"
)
)
var
_
p2p
.
Service
=
new
(
Service
)
var
_
p2p
.
Service
=
new
(
Service
)
...
@@ -32,25 +31,60 @@ type Service struct {
...
@@ -32,25 +31,60 @@ type Service struct {
}
}
type
Options
struct
{
type
Options
struct
{
Port
int
Addr
string
ListenIPv4
string
DisableWS
bool
PrivKey
[]
byte
DisableQUIC
bool
Routing
func
(
host
.
Host
)
(
routing
.
PeerRouting
,
error
)
// PrivKey []byte
// Routing func(host.Host) (routing.PeerRouting, error)
}
}
func
New
(
ctx
context
.
Context
,
o
Options
)
(
*
Service
,
error
)
{
func
New
(
ctx
context
.
Context
,
o
Options
)
(
*
Service
,
error
)
{
ipV4Addr
:=
o
.
ListenIPv4
host
,
port
,
err
:=
net
.
SplitHostPort
(
o
.
Addr
)
if
ipV4Addr
==
""
{
if
err
!=
nil
{
ipV4Addr
=
"0.0.0.0"
return
nil
,
fmt
.
Errorf
(
"address: %w"
,
err
)
}
}
ip4Addr
:=
"0.0.0.0"
ip6Addr
:=
"::1"
if
host
!=
""
{
ip
:=
net
.
ParseIP
(
host
)
if
ip4
:=
ip
.
To4
();
ip4
!=
nil
{
ip4Addr
=
ip4
.
String
()
ip6Addr
=
""
}
else
if
ip6
:=
ip
.
To16
();
ip6
!=
nil
{
ip6Addr
=
ip6
.
String
()
ip4Addr
=
""
}
}
var
listenAddrs
[]
string
if
ip4Addr
!=
""
{
listenAddrs
=
append
(
listenAddrs
,
fmt
.
Sprintf
(
"/ip4/%s/tcp/%s"
,
ip4Addr
,
port
))
if
!
o
.
DisableWS
{
listenAddrs
=
append
(
listenAddrs
,
fmt
.
Sprintf
(
"/ip4/%s/tcp/%s/ws"
,
ip4Addr
,
port
))
}
if
!
o
.
DisableQUIC
{
listenAddrs
=
append
(
listenAddrs
,
fmt
.
Sprintf
(
"/ip4/%s/udp/%s/quic"
,
ip4Addr
,
port
))
}
}
if
ip6Addr
!=
""
{
listenAddrs
=
append
(
listenAddrs
,
fmt
.
Sprintf
(
"/ip6/%s/tcp/%s"
,
ip6Addr
,
port
))
if
!
o
.
DisableWS
{
listenAddrs
=
append
(
listenAddrs
,
fmt
.
Sprintf
(
"/ip6/%s/tcp/%s/ws"
,
ip6Addr
,
port
))
}
if
!
o
.
DisableQUIC
{
listenAddrs
=
append
(
listenAddrs
,
fmt
.
Sprintf
(
"/ip6/%s/udp/%s/quic"
,
ip6Addr
,
port
))
}
}
opts
:=
[]
libp2p
.
Option
{
opts
:=
[]
libp2p
.
Option
{
// Use the keypair we generated
// Use the keypair we generated
//libp2p.Identity(priv),
//libp2p.Identity(priv),
// Multiple listen addresses
// Multiple listen addresses
libp2p
.
ListenAddrStrings
(
libp2p
.
ListenAddrStrings
(
listenAddrs
...
),
fmt
.
Sprintf
(
"/ip4/%s/tcp/%v"
,
ipV4Addr
,
o
.
Port
),
// regular tcp connections
fmt
.
Sprintf
(
"/ip4/%s/udp/%v/quic"
,
ipV4Addr
,
o
.
Port
),
// a UDP endpoint for the QUIC transport
),
// support TLS connections
// support TLS connections
libp2p
.
Security
(
libp2ptls
.
ID
,
libp2ptls
.
New
),
libp2p
.
Security
(
libp2ptls
.
ID
,
libp2ptls
.
New
),
// support secio connections
// support secio connections
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment