Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
952f658a
Unverified
提交
952f658a
authored
5月 31, 2017
作者:
Lars Gierth
提交者:
Jakub Sztandera
7月 31, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
core: make announced swarm addresses configurable
License: MIT Signed-off-by:
Lars Gierth
<
larsg@systemli.org
>
上级
8ad3b11b
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
140 行增加
和
8 行删除
+140
-8
daemon.go
cmd/ipfs/daemon.go
+16
-2
core.go
core/core.go
+61
-1
package.json
package.json
+5
-0
addresses.go
repo/config/addresses.go
+5
-3
init.go
repo/config/init.go
+4
-2
t0060-daemon.sh
test/sharness/t0060-daemon.sh
+1
-0
t0140-swarm.sh
test/sharness/t0140-swarm.sh
+48
-0
没有找到文件。
cmd/ipfs/daemon.go
浏览文件 @
952f658a
...
...
@@ -497,15 +497,29 @@ func printSwarmAddrs(node *core.IpfsNode) {
fmt
.
Println
(
"Swarm not listening, running in offline mode."
)
return
}
var
lisAddrs
[]
string
ifaceAddrs
,
err
:=
node
.
PeerHost
.
Network
()
.
InterfaceListenAddresses
()
if
err
!=
nil
{
log
.
Errorf
(
"failed to read listening addresses: %s"
,
err
)
}
for
_
,
addr
:=
range
ifaceAddrs
{
lisAddrs
=
append
(
lisAddrs
,
addr
.
String
())
}
sort
.
Sort
(
sort
.
StringSlice
(
lisAddrs
))
for
_
,
addr
:=
range
lisAddrs
{
fmt
.
Printf
(
"Swarm listening on %s
\n
"
,
addr
)
}
var
addrs
[]
string
for
_
,
addr
:=
range
node
.
PeerHost
.
Addrs
()
{
addrs
=
append
(
addrs
,
addr
.
String
())
}
sort
.
Sort
(
sort
.
StringSlice
(
addrs
))
for
_
,
addr
:=
range
addrs
{
fmt
.
Printf
(
"Swarm
listening on
%s
\n
"
,
addr
)
fmt
.
Printf
(
"Swarm
announcing
%s
\n
"
,
addr
)
}
}
// serveHTTPGateway collects options, creates listener, prints status message and starts serving requests
...
...
core/core.go
浏览文件 @
952f658a
...
...
@@ -45,6 +45,7 @@ import (
pnet
"gx/ipfs/QmNMCAuxnQFHLGWcvay3DmVFrKuY6Y2nsc9vzsf4gVouJV/go-libp2p-pnet"
pstore
"gx/ipfs/QmPgDWmTmuzvP7QE5zwo1TmjbJme9pmZHNujB2453jkCTr/go-libp2p-peerstore"
routing
"gx/ipfs/QmPjTrrSfE6TzLv6ya6VWhGcCgPrUAdcgrDcQyRDX2VyW1/go-libp2p-routing"
mafilter
"gx/ipfs/QmQBB2dQLmQHJgs2gqZ3iqL2XiuCtUCvXzWt5kMXDf5Zcr/go-maddr-filter"
ipnet
"gx/ipfs/QmQq9YzmdFdWNTDdArueGyD7L5yyiRQigrRHJnTGkxcEjT/go-libp2p-interface-pnet"
dht
"gx/ipfs/QmRKEzkaiwud2LnwJ9CgBrKw122ddKPTMtLizV3DNimVRD/go-libp2p-kad-dht"
p2phost
"gx/ipfs/QmRNyPNJGNCaZyYonJj7owciWTsMd9gRfEKmZY3o6xwN3h/go-libp2p-host"
...
...
@@ -212,8 +213,17 @@ func (n *IpfsNode) startOnlineServices(ctx context.Context, routingOption Routin
}()
}
addrsFactory
,
err
:=
makeAddrsFactory
(
cfg
.
Addresses
)
if
err
!=
nil
{
return
err
}
hostopts
:=
&
ConstructPeerHostOpts
{
AddrsFactory
:
addrsFactory
,
DisableNatPortMap
:
cfg
.
Swarm
.
DisableNatPortMap
,
}
peerhost
,
err
:=
hostOption
(
ctx
,
n
.
Identity
,
n
.
Peerstore
,
n
.
Reporter
,
addrfilter
,
tpt
,
protec
,
&
ConstructPeerHostOpts
{
DisableNatPortMap
:
cfg
.
Swarm
.
DisableNatPortMap
}
)
addrfilter
,
tpt
,
protec
,
hostopts
)
if
err
!=
nil
{
return
err
}
...
...
@@ -263,6 +273,52 @@ func (n *IpfsNode) startOnlineServices(ctx context.Context, routingOption Routin
return
n
.
Bootstrap
(
DefaultBootstrapConfig
)
}
func
makeAddrsFactory
(
cfg
config
.
Addresses
)
(
p2pbhost
.
AddrsFactory
,
error
)
{
var
annAddrs
[]
ma
.
Multiaddr
for
_
,
addr
:=
range
cfg
.
Announce
{
maddr
,
err
:=
ma
.
NewMultiaddr
(
addr
)
if
err
!=
nil
{
return
nil
,
err
}
annAddrs
=
append
(
annAddrs
,
maddr
)
}
filters
:=
mafilter
.
NewFilters
()
noAnnAddrs
:=
map
[
string
]
bool
{}
for
_
,
addr
:=
range
cfg
.
NoAnnounce
{
f
,
err
:=
mamask
.
NewMask
(
addr
)
if
err
==
nil
{
filters
.
AddDialFilter
(
f
)
continue
}
maddr
,
err
:=
ma
.
NewMultiaddr
(
addr
)
if
err
!=
nil
{
return
nil
,
err
}
noAnnAddrs
[
maddr
.
String
()]
=
true
}
return
func
(
allAddrs
[]
ma
.
Multiaddr
)
[]
ma
.
Multiaddr
{
var
addrs
[]
ma
.
Multiaddr
if
len
(
annAddrs
)
>
0
{
addrs
=
annAddrs
}
else
{
addrs
=
allAddrs
}
var
out
[]
ma
.
Multiaddr
for
_
,
maddr
:=
range
addrs
{
// check for exact matches
ok
,
_
:=
noAnnAddrs
[
maddr
.
String
()]
// check for /ipcidr matches
if
!
ok
&&
!
filters
.
AddrBlocked
(
maddr
)
{
out
=
append
(
out
,
maddr
)
}
}
return
out
},
nil
}
func
makeSmuxTransport
(
mplexExp
bool
)
smux
.
Transport
{
mstpt
:=
mssmux
.
NewBlankTransport
()
...
...
@@ -705,6 +761,7 @@ func listenAddresses(cfg *config.Config) ([]ma.Multiaddr, error) {
type
ConstructPeerHostOpts
struct
{
DisableNatPortMap
bool
AddrsFactory
p2pbhost
.
AddrsFactory
}
type
HostOption
func
(
ctx
context
.
Context
,
id
peer
.
ID
,
ps
pstore
.
Peerstore
,
bwr
metrics
.
Reporter
,
fs
[]
*
net
.
IPNet
,
tpt
smux
.
Transport
,
protc
ipnet
.
Protector
,
opts
*
ConstructPeerHostOpts
)
(
p2phost
.
Host
,
error
)
...
...
@@ -730,6 +787,9 @@ func constructPeerHost(ctx context.Context, id peer.ID, ps pstore.Peerstore, bwr
if
!
opts
.
DisableNatPortMap
{
hostOpts
=
append
(
hostOpts
,
p2pbhost
.
NATPortMap
)
}
if
opts
.
AddrsFactory
!=
nil
{
hostOpts
=
append
(
hostOpts
,
opts
.
AddrsFactory
)
}
host
:=
p2pbhost
.
New
(
network
,
hostOpts
...
)
...
...
package.json
浏览文件 @
952f658a
...
...
@@ -446,6 +446,11 @@
"hash"
:
"Qma7Kuwun7w8SZphjEPDVxvGfetBkqdNGmigDA13sJdLex"
,
"name"
:
"go-ipld-git"
,
"version"
:
"0.1.3"
},
{
"hash"
:
"QmQBB2dQLmQHJgs2gqZ3iqL2XiuCtUCvXzWt5kMXDf5Zcr"
,
"name"
:
"go-maddr-filter"
,
"version"
:
"1.1.4"
}
],
"gxVersion"
:
"0.10.0"
,
...
...
repo/config/addresses.go
浏览文件 @
952f658a
...
...
@@ -2,7 +2,9 @@ package config
// Addresses stores the (string) multiaddr addresses for the node.
type
Addresses
struct
{
Swarm
[]
string
// addresses for the swarm network
API
string
// address for the local API (RPC)
Gateway
string
// address to listen on for IPFS HTTP object gateway
Swarm
[]
string
// addresses for the swarm to listen on
Announce
[]
string
// swarm addresses to announce to the network
NoAnnounce
[]
string
// swarm addresses not to announce to the network
API
string
// address for the local API (RPC)
Gateway
string
// address to listen on for IPFS HTTP object gateway
}
repo/config/init.go
浏览文件 @
952f658a
...
...
@@ -36,8 +36,10 @@ func Init(out io.Writer, nBitsForKeypair int) (*Config, error) {
// "/ip4/0.0.0.0/udp/4002/utp", // disabled for now.
"/ip6/::/tcp/4001"
,
},
API
:
"/ip4/127.0.0.1/tcp/5001"
,
Gateway
:
"/ip4/127.0.0.1/tcp/8080"
,
Announce
:
[]
string
{},
NoAnnounce
:
[]
string
{},
API
:
"/ip4/127.0.0.1/tcp/5001"
,
Gateway
:
"/ip4/127.0.0.1/tcp/8080"
,
},
Datastore
:
datastore
,
...
...
test/sharness/t0060-daemon.sh
浏览文件 @
952f658a
...
...
@@ -39,6 +39,7 @@ test_expect_success "ipfs daemon output looks good" '
STARTFILE="ipfs cat /ipfs/$HASH_WELCOME_DOCS/readme" &&
echo "Initializing daemon..." >expected_daemon &&
sed "s/^/Swarm listening on /" local_addrs >>expected_daemon &&
sed "s/^/Swarm announcing /" local_addrs >>expected_daemon &&
echo "API server listening on '
$API_MADDR
'" >>expected_daemon &&
echo "Gateway (readonly) server listening on '
$GWAY_MADDR
'" >>expected_daemon &&
echo "Daemon is ready" >>expected_daemon &&
...
...
test/sharness/t0140-swarm.sh
浏览文件 @
952f658a
...
...
@@ -49,4 +49,52 @@ test_expect_success "cant trigger a dial backoff with swarm connect" '
test_kill_ipfs_daemon
announceCfg
=
'["/ip4/127.0.0.1/tcp/4001", "/ip4/1.2.3.4/tcp/1234"]'
test_expect_success
"test_config_set succeeds"
"
ipfs config --json Addresses.Announce '
$announceCfg
'
"
test_launch_ipfs_daemon
test_expect_success
'Addresses.Announce affects addresses'
'
ipfs swarm addrs local >actual &&
grep "/ip4/1.2.3.4/tcp/1234" actual &&
ipfs id -f"<addrs>" | xargs -n1 echo >actual &&
grep "/ip4/1.2.3.4/tcp/1234" actual
'
test_kill_ipfs_daemon
noAnnounceCfg
=
'["/ip4/1.2.3.4/tcp/1234"]'
test_expect_success
"test_config_set succeeds"
"
ipfs config --json Addresses.NoAnnounce '
$noAnnounceCfg
'
"
test_launch_ipfs_daemon
test_expect_success
"Addresses.NoAnnounce affects addresses"
'
ipfs swarm addrs local >actual &&
grep -v "/ip4/1.2.3.4/tcp/1234" actual &&
ipfs id -f"<addrs>" | xargs -n1 echo >actual &&
grep -v "/ip4/1.2.3.4/tcp/1234" actual
'
test_kill_ipfs_daemon
noAnnounceCfg
=
'["/ip4/1.2.3.4/ipcidr/16"]'
test_expect_success
"test_config_set succeeds"
"
ipfs config --json Addresses.NoAnnounce '
$noAnnounceCfg
'
"
test_launch_ipfs_daemon
test_expect_success
"Addresses.NoAnnounce with /ipcidr affects addresses"
'
ipfs swarm addrs local >actual &&
grep -v "/ip4/1.2.3.4/tcp/1234" actual &&
ipfs id -f"<addrs>" | xargs -n1 echo >actual &&
grep -v "/ip4/1.2.3.4/tcp/1234" actual
'
test_kill_ipfs_daemon
test_done
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论