Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
7596bcce
提交
7596bcce
authored
11月 15, 2014
作者:
Juan Batiz-Benet
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
cleaned up ipfs init
上级
e857a5bc
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
82 行增加
和
60 行删除
+82
-60
init.go
cmd/ipfs2/init.go
+82
-60
没有找到文件。
cmd/ipfs2/init.go
浏览文件 @
7596bcce
...
...
@@ -50,98 +50,71 @@ var initCmd = &cmds.Command{
nBitsForKeypair
=
4096
}
return
nil
,
doInit
(
req
.
Context
()
.
ConfigRoot
,
dspathOverride
,
force
,
nBitsForKeypair
)
return
doInit
(
req
.
Context
()
.
ConfigRoot
,
dspathOverride
,
force
,
nBitsForKeypair
)
},
}
var
errCannotInitConfigExists
=
errors
.
New
(
`ipfs configuration file already exists!
Reinitializing would overwrite your keys.
(use -f to force overwrite)
`
)
var
welcomeMsg
=
`Hello and Welcome to IPFS!
██╗██████╗ ███████╗███████╗
██║██╔══██╗██╔════╝██╔════╝
██║██████╔╝█████╗ ███████╗
██║██╔═══╝ ██╔══╝ ╚════██║
██║██║ ██║ ███████║
╚═╝╚═╝ ╚═╝ ╚══════╝
If you're seeing this, you have successfully installed
IPFS and are now interfacing with the ipfs merkledag!
For a short demo of what you can do, enter 'ipfs tour'
`
// TODO add default welcome hash: eaa68bedae247ed1e5bd0eb4385a3c0959b976e4
// NB: if dspath is not provided, it will be retrieved from the config
func
doInit
(
configRoot
string
,
dspathOverride
string
,
force
bool
,
nBitsForKeypair
int
)
error
{
func
doInit
(
configRoot
string
,
dspathOverride
string
,
force
bool
,
nBitsForKeypair
int
)
(
interface
{},
error
)
{
u
.
POut
(
"initializing ipfs node at %s
\n
"
,
configRoot
)
configFilename
,
err
:=
config
.
Filename
(
configRoot
)
if
err
!=
nil
{
return
errors
.
New
(
"Couldn't get home directory path"
)
return
nil
,
errors
.
New
(
"Couldn't get home directory path"
)
}
fi
,
err
:=
os
.
Lstat
(
configFilename
)
if
fi
!=
nil
||
(
err
!=
nil
&&
!
os
.
IsNotExist
(
err
))
{
if
!
force
{
// TODO multi-line string
return
errors
.
New
(
"ipfs configuration file already exists!
\n
Reinitializing would overwrite your keys.
\n
(use -f to force overwrite)"
)
return
nil
,
errCannotInitConfigExists
}
}
ds
,
err
:=
datastoreConfig
(
dspathOverride
)
if
err
!=
nil
{
return
err
}
identity
,
err
:=
identityConfig
(
nBitsForKeypair
)
if
err
!=
nil
{
return
err
}
conf
:=
config
.
Config
{
// setup the node addresses.
Addresses
:
config
.
Addresses
{
Swarm
:
"/ip4/0.0.0.0/tcp/4001"
,
API
:
"/ip4/127.0.0.1/tcp/5001"
,
},
Bootstrap
:
[]
*
config
.
BootstrapPeer
{
&
config
.
BootstrapPeer
{
// Use these hardcoded bootstrap peers for now.
// mars.i.ipfs.io
PeerID
:
"QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ"
,
Address
:
"/ip4/104.131.131.82/tcp/4001"
,
},
},
Datastore
:
ds
,
Identity
:
identity
,
// setup the node mount points.
Mounts
:
config
.
Mounts
{
IPFS
:
"/ipfs"
,
IPNS
:
"/ipns"
,
},
// tracking ipfs version used to generate the init folder and adding
// update checker default setting.
Version
:
config
.
VersionDefaultValue
(),
}
err
=
config
.
WriteConfigFile
(
configFilename
,
conf
)
conf
,
err
:=
initConfig
(
configFilename
,
dspathOverride
,
nBitsForKeypair
)
if
err
!=
nil
{
return
err
return
nil
,
err
}
nd
,
err
:=
core
.
NewIpfsNode
(
&
conf
,
false
)
nd
,
err
:=
core
.
NewIpfsNode
(
conf
,
false
)
if
err
!=
nil
{
return
err
return
nil
,
err
}
defer
nd
.
Close
()
// Set up default file
msg
:=
`Hello and Welcome to IPFS!
If you're seeing this, that means that you have successfully
installed ipfs and are now interfacing with the wonderful
world of DAGs and hashes!
`
reader
:=
bytes
.
NewBufferString
(
msg
)
reader
:=
bytes
.
NewBufferString
(
welcomeMsg
)
defnd
,
err
:=
imp
.
BuildDagFromReader
(
reader
,
nd
.
DAG
,
nd
.
Pinning
.
GetManual
(),
chunk
.
DefaultSplitter
)
if
err
!=
nil
{
return
err
return
nil
,
err
}
k
,
_
:=
defnd
.
Key
()
fmt
.
Printf
(
"Default file key: %s
\n
"
,
k
)
return
nil
fmt
.
Printf
(
"done.
\n
to test, enter: ipfs cat %s
\n
"
,
k
)
return
nil
,
nil
}
func
datastoreConfig
(
dspath
string
)
(
config
.
Datastore
,
error
)
{
...
...
@@ -171,6 +144,55 @@ func datastoreConfig(dspath string) (config.Datastore, error) {
return
ds
,
nil
}
func
initConfig
(
configFilename
string
,
dspathOverride
string
,
nBitsForKeypair
int
)
(
*
config
.
Config
,
error
)
{
ds
,
err
:=
datastoreConfig
(
dspathOverride
)
if
err
!=
nil
{
return
nil
,
err
}
identity
,
err
:=
identityConfig
(
nBitsForKeypair
)
if
err
!=
nil
{
return
nil
,
err
}
conf
:=
&
config
.
Config
{
// setup the node addresses.
Addresses
:
config
.
Addresses
{
Swarm
:
"/ip4/0.0.0.0/tcp/4001"
,
API
:
"/ip4/127.0.0.1/tcp/5001"
,
},
Bootstrap
:
[]
*
config
.
BootstrapPeer
{
&
config
.
BootstrapPeer
{
// Use these hardcoded bootstrap peers for now.
// mars.i.ipfs.io
PeerID
:
"QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ"
,
Address
:
"/ip4/104.131.131.82/tcp/4001"
,
},
},
Datastore
:
ds
,
Identity
:
identity
,
// setup the node mount points.
Mounts
:
config
.
Mounts
{
IPFS
:
"/ipfs"
,
IPNS
:
"/ipns"
,
},
// tracking ipfs version used to generate the init folder and adding
// update checker default setting.
Version
:
config
.
VersionDefaultValue
(),
}
if
err
:=
config
.
WriteConfigFile
(
configFilename
,
conf
);
err
!=
nil
{
return
nil
,
err
}
return
conf
,
nil
}
func
identityConfig
(
nbits
int
)
(
config
.
Identity
,
error
)
{
// TODO guard higher up
ident
:=
config
.
Identity
{}
...
...
@@ -178,7 +200,7 @@ func identityConfig(nbits int) (config.Identity, error) {
return
ident
,
errors
.
New
(
"Bitsize less than 1024 is considered unsafe."
)
}
fmt
.
Print
ln
(
"generating key pair..."
)
fmt
.
Print
f
(
"generating key pair..."
)
sk
,
pk
,
err
:=
ci
.
GenerateKeyPair
(
ci
.
RSA
,
nbits
)
if
err
!=
nil
{
return
ident
,
err
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论