Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
faca4518
Unverified
提交
faca4518
authored
2月 17, 2017
作者:
Jakub Sztandera
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
pnet: integrate PNet
License: MIT Signed-off-by:
Jakub Sztandera
<
kubuxu@protonmail.ch
>
上级
4eed546e
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
67 行增加
和
8 行删除
+67
-8
daemon.go
cmd/ipfs/daemon.go
+5
-0
core.go
core/core.go
+26
-7
mock.go
core/mock/mock.go
+2
-1
package.json
package.json
+6
-0
fsrepo.go
repo/fsrepo/fsrepo.go
+22
-0
mock.go
repo/mock.go
+4
-0
repo.go
repo/repo.go
+2
-0
没有找到文件。
cmd/ipfs/daemon.go
浏览文件 @
faca4518
...
...
@@ -347,6 +347,11 @@ func daemonFunc(req cmds.Request, res cmds.Response) {
}
node
.
SetLocal
(
false
)
if
node
.
PNetFingerpint
!=
nil
{
fmt
.
Println
(
"Swarm is limited to private network of peers with the swarm key"
)
fmt
.
Printf
(
"Swarm key fingerprint: %x
\n
"
,
node
.
PNetFingerpint
)
}
printSwarmAddrs
(
node
)
defer
func
()
{
...
...
core/core.go
浏览文件 @
faca4518
...
...
@@ -10,6 +10,7 @@ interfaces and how core/... fits into the bigger IPFS picture, see:
package
core
import
(
"bytes"
"context"
"errors"
"fmt"
...
...
@@ -44,6 +45,7 @@ import (
ic
"gx/ipfs/QmNiCwBNA8MWDADTFVq1BonUEJbS2SvjAoNkZZrhEwcuUi/go-libp2p-crypto"
addrutil
"gx/ipfs/QmPB5aAzt2wo5Xk8SoZi6y2oFN7shQMvYWgduMATojkdpj/go-addr-util"
metrics
"gx/ipfs/QmPj6rmE2sWJ65h6b8F4fcN5kySDhYqL2Ty8DWWF3WEUNS/go-libp2p-metrics"
pnet
"gx/ipfs/QmQ2sk2irQYkeMMVKpLjq1bSiNPn9B5wZB53Nx8dd4dhnQ/go-libp2p-pnet"
mplex
"gx/ipfs/QmQ3UABWTgK78utKeiVXaH9BrjC7Ydn1pRuwqnWHT3p4zh/go-smux-multiplex"
floodsub
"gx/ipfs/QmQDb7jmfC33qzGUGpWrfgRootQnmQvN7DMktfuekShsiF/floodsub"
pstore
"gx/ipfs/QmQMQ2RUjnaEEX8ybmrhuFFGhAwPjyL1Eo6ZoJGD7aAccM/go-libp2p-peerstore"
...
...
@@ -67,6 +69,7 @@ import (
u
"gx/ipfs/QmZuY8aV7zbNXVy6DyN9SmnuH3o9nG852F4aTiSBpts8d1/go-ipfs-util"
yamux
"gx/ipfs/Qmbn7RYyWzBVXiUp9jZ1dA4VADHy9DtS7iZLwfhEUQvm3U/go-smux-yamux"
p2phost
"gx/ipfs/QmbzbRyd22gcW92U1rA2yKagB3myMYhk45XBknJ49F9XWJ/go-libp2p-host"
ipnet
"gx/ipfs/QmcT6bMjz32yoMdyvZsMvqFnbbsDxhTYw6FG1yMqKV8Rbh/go-libp2p-interface-pnet"
smux
"gx/ipfs/QmeZBgYBHvxMukGK5ojg28BCNLB9SeXqT7XXg6o7r2GbJy/go-stream-muxer"
)
...
...
@@ -100,9 +103,10 @@ type IpfsNode struct {
Repo
repo
.
Repo
// Local node
Pinning
pin
.
Pinner
// the pinning manager
Mounts
Mounts
// current mount state, if any.
PrivateKey
ic
.
PrivKey
// the local node's private Key
Pinning
pin
.
Pinner
// the pinning manager
Mounts
Mounts
// current mount state, if any.
PrivateKey
ic
.
PrivKey
// the local node's private Key
PNetFingerpint
[]
byte
// fingerprint of private network
// Services
Peerstore
pstore
.
Peerstore
// storage for other Peer instances
...
...
@@ -174,7 +178,22 @@ func (n *IpfsNode) startOnlineServices(ctx context.Context, routingOption Routin
tpt
:=
makeSmuxTransport
(
mplex
)
peerhost
,
err
:=
hostOption
(
ctx
,
n
.
Identity
,
n
.
Peerstore
,
n
.
Reporter
,
addrfilter
,
tpt
)
swarmkey
,
err
:=
n
.
Repo
.
SwarmKey
()
if
err
!=
nil
{
return
err
}
var
protec
ipnet
.
Protector
if
swarmkey
!=
nil
{
protec
,
err
=
pnet
.
NewProtector
(
bytes
.
NewReader
(
swarmkey
))
if
err
!=
nil
{
return
err
}
n
.
PNetFingerpint
=
protec
.
Fingerprint
()
}
peerhost
,
err
:=
hostOption
(
ctx
,
n
.
Identity
,
n
.
Peerstore
,
n
.
Reporter
,
addrfilter
,
tpt
,
protec
)
if
err
!=
nil
{
return
err
}
...
...
@@ -671,15 +690,15 @@ func listenAddresses(cfg *config.Config) ([]ma.Multiaddr, error) {
return
listen
,
nil
}
type
HostOption
func
(
ctx
context
.
Context
,
id
peer
.
ID
,
ps
pstore
.
Peerstore
,
bwr
metrics
.
Reporter
,
fs
[]
*
net
.
IPNet
,
tpt
smux
.
Transport
)
(
p2phost
.
Host
,
error
)
type
HostOption
func
(
ctx
context
.
Context
,
id
peer
.
ID
,
ps
pstore
.
Peerstore
,
bwr
metrics
.
Reporter
,
fs
[]
*
net
.
IPNet
,
tpt
smux
.
Transport
,
protc
ipnet
.
Protector
)
(
p2phost
.
Host
,
error
)
var
DefaultHostOption
HostOption
=
constructPeerHost
// isolates the complex initialization steps
func
constructPeerHost
(
ctx
context
.
Context
,
id
peer
.
ID
,
ps
pstore
.
Peerstore
,
bwr
metrics
.
Reporter
,
fs
[]
*
net
.
IPNet
,
tpt
smux
.
Transport
)
(
p2phost
.
Host
,
error
)
{
func
constructPeerHost
(
ctx
context
.
Context
,
id
peer
.
ID
,
ps
pstore
.
Peerstore
,
bwr
metrics
.
Reporter
,
fs
[]
*
net
.
IPNet
,
tpt
smux
.
Transport
,
protec
ipnet
.
Protector
)
(
p2phost
.
Host
,
error
)
{
// no addresses to begin with. we'll start later.
swrm
,
err
:=
swarm
.
NewSwarmWithProtector
(
ctx
,
nil
,
id
,
ps
,
nil
,
tpt
,
bwr
)
swrm
,
err
:=
swarm
.
NewSwarmWithProtector
(
ctx
,
nil
,
id
,
ps
,
protec
,
tpt
,
bwr
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
core/mock/mock.go
浏览文件 @
faca4518
...
...
@@ -18,6 +18,7 @@ import (
mocknet
"gx/ipfs/QmU3g3psEDiC4tQh1Qu2NYg5aYVQqxC3m74ZavLwPfJEtu/go-libp2p/p2p/net/mock"
peer
"gx/ipfs/QmZcUPvPhD1Xvk6mwijYF8AfR3mG31S1YsEfHG4khrFPRr/go-libp2p-peer"
host
"gx/ipfs/QmbzbRyd22gcW92U1rA2yKagB3myMYhk45XBknJ49F9XWJ/go-libp2p-host"
ipnet
"gx/ipfs/QmcT6bMjz32yoMdyvZsMvqFnbbsDxhTYw6FG1yMqKV8Rbh/go-libp2p-interface-pnet"
smux
"gx/ipfs/QmeZBgYBHvxMukGK5ojg28BCNLB9SeXqT7XXg6o7r2GbJy/go-stream-muxer"
)
...
...
@@ -33,7 +34,7 @@ func NewMockNode() (*core.IpfsNode, error) {
}
func
MockHostOption
(
mn
mocknet
.
Mocknet
)
core
.
HostOption
{
return
func
(
ctx
context
.
Context
,
id
peer
.
ID
,
ps
pstore
.
Peerstore
,
bwr
metrics
.
Reporter
,
fs
[]
*
net
.
IPNet
,
_
smux
.
Transport
)
(
host
.
Host
,
error
)
{
return
func
(
ctx
context
.
Context
,
id
peer
.
ID
,
ps
pstore
.
Peerstore
,
bwr
metrics
.
Reporter
,
fs
[]
*
net
.
IPNet
,
_
smux
.
Transport
,
_
ipnet
.
Protector
)
(
host
.
Host
,
error
)
{
return
mn
.
AddPeerWithPeerstore
(
id
,
ps
)
}
}
...
...
package.json
浏览文件 @
faca4518
...
...
@@ -294,6 +294,12 @@
"hash"
:
"QmU1N5xVAUXgo3XRTt6GhJ2SuJEbxj2zRgMS7FpjSR2U83"
,
"name"
:
"semver"
,
"version"
:
"3.3.0"
},
{
"author"
:
"libp2p"
,
"hash"
:
"QmQ2sk2irQYkeMMVKpLjq1bSiNPn9B5wZB53Nx8dd4dhnQ"
,
"name"
:
"go-libp2p-pnet"
,
"version"
:
"2.2.1"
}
],
"gxVersion"
:
"0.10.0"
,
...
...
repo/fsrepo/fsrepo.go
浏览文件 @
faca4518
...
...
@@ -4,6 +4,7 @@ import (
"errors"
"fmt"
"io"
"io/ioutil"
"os"
"path/filepath"
"strconv"
...
...
@@ -62,6 +63,7 @@ func (err NoRepoError) Error() string {
}
const
apiFile
=
"api"
const
swarmKeyFile
=
"swarm.key"
var
(
...
...
@@ -592,6 +594,26 @@ func (r *FSRepo) GetStorageUsage() (uint64, error) {
return
du
,
err
}
func
(
r
*
FSRepo
)
SwarmKey
()
([]
byte
,
error
)
{
repoPath
:=
filepath
.
Clean
(
r
.
path
)
spath
:=
filepath
.
Join
(
repoPath
,
swarmKeyFile
)
f
,
err
:=
os
.
Open
(
spath
)
if
err
!=
nil
{
if
os
.
IsNotExist
(
err
)
{
return
nil
,
nil
}
else
{
return
nil
,
err
}
}
defer
f
.
Close
()
if
err
!=
nil
{
return
nil
,
err
}
return
ioutil
.
ReadAll
(
f
)
}
var
_
io
.
Closer
=
&
FSRepo
{}
var
_
repo
.
Repo
=
&
FSRepo
{}
...
...
repo/mock.go
浏览文件 @
faca4518
...
...
@@ -44,3 +44,7 @@ func (m *Mock) Close() error { return errTODO }
func
(
m
*
Mock
)
SetAPIAddr
(
addr
ma
.
Multiaddr
)
error
{
return
errTODO
}
func
(
m
*
Mock
)
Keystore
()
keystore
.
Keystore
{
return
nil
}
func
(
m
*
Mock
)
SwarmKey
()
([]
byte
,
error
)
{
return
nil
,
nil
}
repo/repo.go
浏览文件 @
faca4518
...
...
@@ -30,6 +30,8 @@ type Repo interface {
// SetAPIAddr sets the API address in the repo.
SetAPIAddr
(
addr
ma
.
Multiaddr
)
error
SwarmKey
()
([]
byte
,
error
)
io
.
Closer
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论