Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
ba9435d8
提交
ba9435d8
authored
7月 04, 2017
作者:
Jeromy Johnson
提交者:
GitHub
7月 04, 2017
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #4001 from ipfs/feat/profile
Implement --profile option in ipfs init
上级
a1f80823
a2fac218
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
87 行增加
和
3 行删除
+87
-3
init.go
cmd/ipfs/init.go
+34
-3
profile.go
repo/config/profile.go
+31
-0
t0020-init.sh
test/sharness/t0020-init.sh
+22
-0
没有找到文件。
cmd/ipfs/init.go
浏览文件 @
ba9435d8
...
...
@@ -7,6 +7,7 @@ import (
"io"
"os"
"path"
"strings"
context
"context"
assets
"github.com/ipfs/go-ipfs/assets"
...
...
@@ -27,6 +28,13 @@ var initCmd = &cmds.Command{
ShortDescription
:
`
Initializes ipfs configuration files and generates a new keypair.
If you are going to run IPFS in server environment, you may want to
initialize it using 'server' profile.
Available profiles:
'server' - Disables local host discovery, recommended when
running IPFS on machines with public IPv4 addresses.
ipfs uses a repository in the local file system. By default, the repo is
located at ~/.ipfs. To change the repo location, set the $IPFS_PATH
environment variable:
...
...
@@ -40,6 +48,7 @@ environment variable:
Options
:
[]
cmds
.
Option
{
cmds
.
IntOption
(
"bits"
,
"b"
,
"Number of bits to use in the generated RSA private key."
)
.
Default
(
nBitsForKeypairDefault
),
cmds
.
BoolOption
(
"empty-repo"
,
"e"
,
"Don't add and pin help files to the local storage."
)
.
Default
(
false
),
cmds
.
StringOption
(
"profile"
,
"p"
,
"Apply profile settings to config. Multiple profiles can be separated by ','"
),
// TODO need to decide whether to expose the override as a file or a
// directory. That is: should we allow the user to also specify the
...
...
@@ -96,7 +105,18 @@ environment variable:
}
}
if
err
:=
doInit
(
os
.
Stdout
,
req
.
InvocContext
()
.
ConfigRoot
,
empty
,
nBitsForKeypair
,
conf
);
err
!=
nil
{
profile
,
_
,
err
:=
req
.
Option
(
"profile"
)
.
String
()
if
err
!=
nil
{
res
.
SetError
(
err
,
cmds
.
ErrNormal
)
return
}
var
profiles
[]
string
if
profile
!=
""
{
profiles
=
strings
.
Split
(
profile
,
","
)
}
if
err
:=
doInit
(
os
.
Stdout
,
req
.
InvocContext
()
.
ConfigRoot
,
empty
,
nBitsForKeypair
,
profiles
,
conf
);
err
!=
nil
{
res
.
SetError
(
err
,
cmds
.
ErrNormal
)
return
}
...
...
@@ -108,10 +128,10 @@ Reinitializing would overwrite your keys.
`
)
func
initWithDefaults
(
out
io
.
Writer
,
repoRoot
string
)
error
{
return
doInit
(
out
,
repoRoot
,
false
,
nBitsForKeypairDefault
,
nil
)
return
doInit
(
out
,
repoRoot
,
false
,
nBitsForKeypairDefault
,
nil
,
nil
)
}
func
doInit
(
out
io
.
Writer
,
repoRoot
string
,
empty
bool
,
nBitsForKeypair
int
,
conf
*
config
.
Config
)
error
{
func
doInit
(
out
io
.
Writer
,
repoRoot
string
,
empty
bool
,
nBitsForKeypair
int
,
conf
Profiles
[]
string
,
conf
*
config
.
Config
)
error
{
if
_
,
err
:=
fmt
.
Fprintf
(
out
,
"initializing IPFS node at %s
\n
"
,
repoRoot
);
err
!=
nil
{
return
err
}
...
...
@@ -132,6 +152,17 @@ func doInit(out io.Writer, repoRoot string, empty bool, nBitsForKeypair int, con
}
}
for
_
,
profile
:=
range
confProfiles
{
transformer
,
ok
:=
config
.
ConfigProfiles
[
profile
]
if
!
ok
{
return
fmt
.
Errorf
(
"invalid configuration profile: %s"
,
profile
)
}
if
err
:=
transformer
(
conf
);
err
!=
nil
{
return
err
}
}
if
err
:=
fsrepo
.
Init
(
repoRoot
,
conf
);
err
!=
nil
{
return
err
}
...
...
repo/config/profile.go
0 → 100644
浏览文件 @
ba9435d8
package
config
// ConfigProfiles is a map holding configuration transformers
var
ConfigProfiles
=
map
[
string
]
func
(
*
Config
)
error
{
"server"
:
func
(
c
*
Config
)
error
{
// defaultServerFilters has a list of non-routable IPv4 prefixes
// according to http://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml
defaultServerFilters
:=
[]
string
{
"/ip4/10.0.0.0/ipcidr/8"
,
"/ip4/100.64.0.0/ipcidr/10"
,
"/ip4/169.254.0.0/ipcidr/16"
,
"/ip4/172.16.0.0/ipcidr/12"
,
"/ip4/192.0.0.0/ipcidr/24"
,
"/ip4/192.0.0.0/ipcidr/29"
,
"/ip4/192.0.0.8/ipcidr/32"
,
"/ip4/192.0.0.170/ipcidr/32"
,
"/ip4/192.0.0.171/ipcidr/32"
,
"/ip4/192.0.2.0/ipcidr/24"
,
"/ip4/192.168.0.0/ipcidr/16"
,
"/ip4/198.18.0.0/ipcidr/15"
,
"/ip4/198.51.100.0/ipcidr/24"
,
"/ip4/203.0.113.0/ipcidr/24"
,
"/ip4/240.0.0.0/ipcidr/4"
,
}
c
.
Swarm
.
AddrFilters
=
append
(
c
.
Swarm
.
AddrFilters
,
defaultServerFilters
...
)
c
.
Discovery
.
MDNS
.
Enabled
=
false
return
nil
},
}
test/sharness/t0020-init.sh
浏览文件 @
ba9435d8
...
...
@@ -126,6 +126,28 @@ test_expect_success "clean up ipfs dir" '
rm -rf "$IPFS_PATH"
'
# test init profiles
test_expect_success
"'ipfs init --profile' with invalid profile fails"
'
BITS="1024" &&
test_must_fail ipfs init --bits="$BITS" --profile=nonexistent_profile 2> invalid_profile_out
EXPECT="Error: invalid configuration profile: nonexistent_profile" &&
grep "$EXPECT" invalid_profile_out
'
test_expect_success
"'ipfs init --profile' succeeds"
'
BITS="1024" &&
ipfs init --bits="$BITS" --profile=server
'
test_expect_success
"'ipfs config Swarm.AddrFilters' looks good"
'
ipfs config Swarm.AddrFilters > actual_config &&
test $(cat actual_config | wc -l) = 17
'
test_expect_success
"clean up ipfs dir"
'
rm -rf "$IPFS_PATH"
'
test_init_ipfs
test_launch_ipfs_daemon
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论