Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
995e674c
提交
995e674c
authored
7月 08, 2019
作者:
Dominic Della Valle
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: add ability to use existing config during init
上级
e7239fe1
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
43 行增加
和
40 行删除
+43
-40
daemon.go
cmd/ipfs/daemon.go
+16
-9
init.go
cmd/ipfs/init.go
+27
-31
没有找到文件。
cmd/ipfs/daemon.go
浏览文件 @
995e674c
...
...
@@ -13,6 +13,8 @@ import (
"sync"
version
"github.com/ipfs/go-ipfs"
config
"github.com/ipfs/go-ipfs-config"
cserial
"github.com/ipfs/go-ipfs-config/serialize"
utilmain
"github.com/ipfs/go-ipfs/cmd/ipfs/util"
oldcmds
"github.com/ipfs/go-ipfs/commands"
"github.com/ipfs/go-ipfs/core"
...
...
@@ -26,11 +28,11 @@ import (
migrate
"github.com/ipfs/go-ipfs/repo/fsrepo/migrations"
"github.com/hashicorp/go-multierror"
"github.com/ipfs/go-ipfs-cmds"
cmds
"github.com/ipfs/go-ipfs-cmds"
mprome
"github.com/ipfs/go-metrics-prometheus"
goprocess
"github.com/jbenet/goprocess"
ma
"github.com/multiformats/go-multiaddr"
"github.com/multiformats/go-multiaddr-net"
manet
"github.com/multiformats/go-multiaddr-net"
"github.com/prometheus/client_golang/prometheus"
)
...
...
@@ -38,6 +40,7 @@ const (
adjustFDLimitKwd
=
"manage-fdlimit"
enableGCKwd
=
"enable-gc"
initOptionKwd
=
"init"
initConfigOptionKwd
=
"init-config"
initProfileOptionKwd
=
"init-profile"
ipfsMountKwd
=
"mount-ipfs"
ipnsMountKwd
=
"mount-ipns"
...
...
@@ -154,6 +157,7 @@ Headers.
Options
:
[]
cmds
.
Option
{
cmds
.
BoolOption
(
initOptionKwd
,
"Initialize ipfs with default settings if not already initialized"
),
cmds
.
StringOption
(
initConfigOptionKwd
,
"Path to existing configuration file to be loaded during --init"
),
cmds
.
StringOption
(
initProfileOptionKwd
,
"Configuration profiles to apply for --init. See ipfs init --help for more"
),
cmds
.
StringOption
(
routingOptionKwd
,
"Overrides the routing option"
)
.
WithDefault
(
routingOptionDefaultKwd
),
cmds
.
BoolOption
(
mountKwd
,
"Mounts IPFS to the filesystem"
),
...
...
@@ -229,17 +233,20 @@ func daemonFunc(req *cmds.Request, re cmds.ResponseEmitter, env cmds.Environment
// first, whether user has provided the initialization flag. we may be
// running in an uninitialized state.
initialize
,
_
:=
req
.
Options
[
initOptionKwd
]
.
(
bool
)
if
initialize
{
if
initialize
&&
!
fsrepo
.
IsInitialized
(
cctx
.
ConfigRoot
)
{
cfgLocation
,
_
:=
req
.
Options
[
initConfigOptionKwd
]
.
(
string
)
profiles
,
_
:=
req
.
Options
[
initProfileOptionKwd
]
.
(
string
)
var
conf
*
config
.
Config
cfg
:=
cctx
.
ConfigRoot
if
!
fsrepo
.
IsInitialized
(
cfg
)
{
profiles
,
_
:=
req
.
Options
[
initProfileOptionKwd
]
.
(
string
)
err
:=
initWithDefaults
(
os
.
Stdout
,
cfg
,
profiles
)
if
err
!=
nil
{
if
cfgLocation
!=
""
{
if
conf
,
err
=
cserial
.
Load
(
cfgLocation
);
err
!=
nil
{
return
err
}
}
if
err
=
doInit
(
os
.
Stdout
,
cctx
.
ConfigRoot
,
false
,
nBitsForKeypairDefault
,
profiles
,
conf
);
err
!=
nil
{
return
err
}
}
// acquire the repo lock _before_ constructing a node. we need to make
...
...
cmd/ipfs/init.go
浏览文件 @
995e674c
...
...
@@ -7,7 +7,7 @@ import (
"fmt"
"io"
"os"
"path"
"path
/filepath
"
"strings"
assets
"github.com/ipfs/go-ipfs/assets"
...
...
@@ -16,9 +16,9 @@ import (
namesys
"github.com/ipfs/go-ipfs/namesys"
fsrepo
"github.com/ipfs/go-ipfs/repo/fsrepo"
"github.com/ipfs/go-ipfs-cmds"
"github.com/ipfs/go-ipfs-config"
"github.com/ipfs/go-ipfs-files"
cmds
"github.com/ipfs/go-ipfs-cmds"
config
"github.com/ipfs/go-ipfs-config"
files
"github.com/ipfs/go-ipfs-files"
)
const
(
...
...
@@ -28,6 +28,10 @@ const (
profileOptionName
=
"profile"
)
var
errRepoExists
=
errors
.
New
(
`ipfs configuration file already exists!
Reinitializing would overwrite your keys.
`
)
var
initCmd
=
&
cmds
.
Command
{
Helptext
:
cmds
.
HelpText
{
Tagline
:
"Initializes ipfs config file."
,
...
...
@@ -102,31 +106,30 @@ environment variable:
}
}
profile
,
_
:=
req
.
Options
[
profileOptionName
]
.
(
string
)
var
profiles
[]
string
if
profile
!=
""
{
profiles
=
strings
.
Split
(
profile
,
","
)
}
profiles
,
_
:=
req
.
Options
[
profileOptionName
]
.
(
string
)
return
doInit
(
os
.
Stdout
,
cctx
.
ConfigRoot
,
empty
,
nBitsForKeypair
,
profiles
,
conf
)
},
}
var
errRepoExists
=
errors
.
New
(
`ipfs configuration file already exists!
Reinitializing would overwrite your keys.
`
)
func
initWithDefaults
(
out
io
.
Writer
,
repoRoot
string
,
profile
string
)
error
{
var
profiles
[]
string
if
profile
!=
""
{
profiles
=
strings
.
Split
(
profile
,
","
)
func
applyProfiles
(
conf
*
config
.
Config
,
profiles
string
)
error
{
if
profiles
==
""
{
return
nil
}
return
doInit
(
out
,
repoRoot
,
false
,
nBitsForKeypairDefault
,
profiles
,
nil
)
for
_
,
profile
:=
range
strings
.
Split
(
profiles
,
","
)
{
transformer
,
ok
:=
config
.
Profiles
[
profile
]
if
!
ok
{
return
fmt
.
Errorf
(
"invalid configuration profile: %s"
,
profile
)
}
if
err
:=
transformer
.
Transform
(
conf
);
err
!=
nil
{
return
err
}
}
return
nil
}
func
doInit
(
out
io
.
Writer
,
repoRoot
string
,
empty
bool
,
nBitsForKeypair
int
,
confProfiles
[]
string
,
conf
*
config
.
Config
)
error
{
func
doInit
(
out
io
.
Writer
,
repoRoot
string
,
empty
bool
,
nBitsForKeypair
int
,
confProfiles
string
,
conf
*
config
.
Config
)
error
{
if
_
,
err
:=
fmt
.
Fprintf
(
out
,
"initializing IPFS node at %s
\n
"
,
repoRoot
);
err
!=
nil
{
return
err
}
...
...
@@ -147,15 +150,8 @@ func doInit(out io.Writer, repoRoot string, empty bool, nBitsForKeypair int, con
}
}
for
_
,
profile
:=
range
confProfiles
{
transformer
,
ok
:=
config
.
Profiles
[
profile
]
if
!
ok
{
return
fmt
.
Errorf
(
"invalid configuration profile: %s"
,
profile
)
}
if
err
:=
transformer
.
Transform
(
conf
);
err
!=
nil
{
return
err
}
if
err
:=
applyProfiles
(
conf
,
confProfiles
);
err
!=
nil
{
return
err
}
if
err
:=
fsrepo
.
Init
(
repoRoot
,
conf
);
err
!=
nil
{
...
...
@@ -175,7 +171,7 @@ func checkWritable(dir string) error {
_
,
err
:=
os
.
Stat
(
dir
)
if
err
==
nil
{
// dir exists, make sure we can write to it
testfile
:=
path
.
Join
(
dir
,
"test"
)
testfile
:=
file
path
.
Join
(
dir
,
"test"
)
fi
,
err
:=
os
.
Create
(
testfile
)
if
err
!=
nil
{
if
os
.
IsPermission
(
err
)
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论