Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
go-libp2p
Commits
f9cd03e6
Commit
f9cd03e6
authored
Sep 04, 2016
by
Jeromy
Browse files
allow hosts example to use secio
parent
cab16ee4
Changes
1
Hide whitespace changes
Inline
Side-by-side
examples/hosts/main.go
View file @
f9cd03e6
...
@@ -6,12 +6,11 @@ import (
...
@@ -6,12 +6,11 @@ import (
"io/ioutil"
"io/ioutil"
"log"
"log"
peer
"github.com/ipfs/go-libp2p-peer"
pstore
"github.com/ipfs/go-libp2p-peerstore"
pstore
"github.com/ipfs/go-libp2p-peerstore"
host
"github.com/libp2p/go-libp2p/p2p/host"
host
"github.com/libp2p/go-libp2p/p2p/host"
bhost
"github.com/libp2p/go-libp2p/p2p/host/basic"
bhost
"github.com/libp2p/go-libp2p/p2p/host/basic"
metrics
"github.com/libp2p/go-libp2p/p2p/metrics"
net
"github.com/libp2p/go-libp2p/p2p/net"
net
"github.com/libp2p/go-libp2p/p2p/net"
conn
"github.com/libp2p/go-libp2p/p2p/net/conn"
swarm
"github.com/libp2p/go-libp2p/p2p/net/swarm"
swarm
"github.com/libp2p/go-libp2p/p2p/net/swarm"
testutil
"github.com/libp2p/go-libp2p/testutil"
testutil
"github.com/libp2p/go-libp2p/testutil"
...
@@ -20,29 +19,38 @@ import (
...
@@ -20,29 +19,38 @@ import (
context
"golang.org/x/net/context"
context
"golang.org/x/net/context"
)
)
func
init
()
{
// Disable secio for this demo
// This makes testing with javascript easier
conn
.
EncryptConnections
=
false
}
// create a 'Host' with a random peer to listen on the given address
// create a 'Host' with a random peer to listen on the given address
func
makeDummyHost
(
listen
string
)
(
host
.
Host
,
error
)
{
func
makeDummyHost
(
listen
string
,
secio
bool
)
(
host
.
Host
,
error
)
{
addr
,
err
:=
ma
.
NewMultiaddr
(
listen
)
addr
,
err
:=
ma
.
NewMultiaddr
(
listen
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
pid
,
err
:=
testutil
.
RandPeerID
()
ps
:=
pstore
.
NewPeerstore
()
if
err
!=
nil
{
var
pid
peer
.
ID
return
nil
,
err
if
secio
{
ident
,
err
:=
testutil
.
RandIdentity
()
if
err
!=
nil
{
return
nil
,
err
}
ident
.
PrivateKey
()
ps
.
AddPrivKey
(
ident
.
ID
(),
ident
.
PrivateKey
())
ps
.
AddPubKey
(
ident
.
ID
(),
ident
.
PublicKey
())
pid
=
ident
.
ID
()
}
else
{
fakepid
,
err
:=
testutil
.
RandPeerID
()
if
err
!=
nil
{
return
nil
,
err
}
pid
=
fakepid
}
}
// bandwidth counter, should be optional in the future
ctx
:=
context
.
Background
()
bwc
:=
metrics
.
NewBandwidthCounter
()
// create a new swarm to be used by the service host
// create a new swarm to be used by the service host
netw
,
err
:=
swarm
.
NewNetwork
(
c
ontext
.
Background
()
,
[]
ma
.
Multiaddr
{
addr
},
pid
,
ps
tore
.
NewPeerstore
(),
bwc
)
netw
,
err
:=
swarm
.
NewNetwork
(
c
tx
,
[]
ma
.
Multiaddr
{
addr
},
pid
,
ps
,
nil
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
...
@@ -52,25 +60,23 @@ func makeDummyHost(listen string) (host.Host, error) {
...
@@ -52,25 +60,23 @@ func makeDummyHost(listen string) (host.Host, error) {
}
}
func
main
()
{
func
main
()
{
listenF
:=
flag
.
Int
(
"l"
,
0
,
"wait for incoming connections"
)
listenF
:=
flag
.
Int
(
"l"
,
0
,
"wait for incoming connections"
)
target
:=
flag
.
String
(
"d"
,
""
,
"target peer to dial"
)
target
:=
flag
.
String
(
"d"
,
""
,
"target peer to dial"
)
secio
:=
flag
.
Bool
(
"secio"
,
false
,
"enable secio"
)
flag
.
Parse
()
flag
.
Parse
()
listenaddr
:=
fmt
.
Sprintf
(
"/ip4/0.0.0.0/tcp/%d"
,
*
listenF
)
listenaddr
:=
fmt
.
Sprintf
(
"/ip4/0.0.0.0/tcp/%d"
,
*
listenF
)
ha
,
err
:=
makeDummyHost
(
listenaddr
)
ha
,
err
:=
makeDummyHost
(
listenaddr
,
*
secio
)
if
err
!=
nil
{
if
err
!=
nil
{
log
.
Fatal
(
err
)
log
.
Fatal
(
err
)
}
}
message
:=
[]
byte
(
"hello libp2p!"
)
// Set a stream handler on host A
// Set a stream handler on host A
ha
.
SetStreamHandler
(
"/hello/1.0.0"
,
func
(
s
net
.
Stream
)
{
ha
.
SetStreamHandler
(
"/echo/1.0.0"
,
func
(
s
net
.
Stream
)
{
log
.
Println
(
"Got a new stream!"
)
defer
s
.
Close
()
defer
s
.
Close
()
log
.
Println
(
"writing message"
)
s
.
Write
(
message
)
})
})
if
*
target
==
""
{
if
*
target
==
""
{
...
@@ -102,7 +108,11 @@ func main() {
...
@@ -102,7 +108,11 @@ func main() {
log
.
Fatalln
(
err
)
log
.
Fatalln
(
err
)
}
}
log
.
Println
(
"reading message"
)
_
,
err
=
s
.
Write
([]
byte
(
"Hello world of peer two peer"
))
if
err
!=
nil
{
log
.
Fatalln
(
err
)
}
out
,
err
:=
ioutil
.
ReadAll
(
s
)
out
,
err
:=
ioutil
.
ReadAll
(
s
)
if
err
!=
nil
{
if
err
!=
nil
{
log
.
Fatalln
(
err
)
log
.
Fatalln
(
err
)
...
@@ -110,3 +120,21 @@ func main() {
...
@@ -110,3 +120,21 @@ func main() {
log
.
Println
(
"GOT: "
,
string
(
out
))
log
.
Println
(
"GOT: "
,
string
(
out
))
}
}
func
doEcho
(
s
inet
.
Stream
)
{
buf
:=
make
([]
byte
,
1024
)
for
{
n
,
err
:=
s
.
Read
(
buf
)
if
err
!=
nil
{
log
.
Println
(
err
)
return
}
log
.
Printf
(
"read data: %q
\n
"
,
buf
[
:
n
])
_
,
err
=
s
.
Write
(
buf
[
:
n
])
if
err
!=
nil
{
log
.
Println
(
err
)
return
}
}
}
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