Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
2bd84312
提交
2bd84312
authored
10月 02, 2014
作者:
Juan Batiz-Benet
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
added command context initialization
上级
38182447
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
69 行增加
和
55 行删除
+69
-55
ipfs.go
cmd/ipfs/ipfs.go
+50
-0
run.go
cmd/ipfs/run.go
+10
-22
serve.go
cmd/ipfs/serve.go
+9
-33
没有找到文件。
cmd/ipfs/ipfs.go
浏览文件 @
2bd84312
...
...
@@ -8,9 +8,11 @@ import (
flag
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/gonuts/flag"
commander
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/commander"
ma
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
config
"github.com/jbenet/go-ipfs/config"
core
"github.com/jbenet/go-ipfs/core"
daemon
"github.com/jbenet/go-ipfs/daemon"
u
"github.com/jbenet/go-ipfs/util"
)
...
...
@@ -100,6 +102,7 @@ func main() {
return
}
// localNode constructs a node
func
localNode
(
confdir
string
,
online
bool
)
(
*
core
.
IpfsNode
,
error
)
{
filename
,
err
:=
config
.
Filename
(
confdir
)
if
err
!=
nil
{
...
...
@@ -131,3 +134,50 @@ func getConfigDir(c *commander.Command) (string, error) {
return
u
.
TildeExpansion
(
confStr
)
}
// cmdContext is a wrapper structure that keeps a node, a daemonlistener, and
// a config directory together. These three are needed for most commands.
type
cmdContext
struct
{
node
*
core
.
IpfsNode
daemon
*
daemon
.
DaemonListener
configDir
string
}
// setupCmdContext initializes a cmdContext structure from a given command.
func
setupCmdContext
(
c
*
commander
.
Command
,
online
bool
)
(
cc
cmdContext
,
err
error
)
{
cc
.
configDir
,
err
=
getConfigDir
(
c
.
Parent
.
Parent
)
if
err
!=
nil
{
return
}
cc
.
node
,
err
=
localNode
(
cc
.
configDir
,
online
)
if
err
!=
nil
{
return
}
cc
.
daemon
,
err
=
setupDaemon
(
cc
.
configDir
,
cc
.
node
)
if
err
!=
nil
{
return
}
return
}
// setupDaemon sets up the daemon corresponding to given node.
func
setupDaemon
(
confdir
string
,
node
*
core
.
IpfsNode
)
(
*
daemon
.
DaemonListener
,
error
)
{
if
node
.
Config
.
Addresses
.
API
==
""
{
return
nil
,
errors
.
New
(
"no config.Addresses.API endpoint supplied"
)
}
maddr
,
err
:=
ma
.
NewMultiaddr
(
node
.
Config
.
Addresses
.
API
)
if
err
!=
nil
{
return
nil
,
err
}
dl
,
err
:=
daemon
.
NewDaemonListener
(
node
,
maddr
,
confdir
)
if
err
!=
nil
{
return
nil
,
err
}
go
dl
.
Listen
()
return
dl
,
nil
}
cmd/ipfs/run.go
浏览文件 @
2bd84312
package
main
import
(
"errors"
"os"
"os/signal"
"syscall"
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/gonuts/flag"
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/commander"
ma
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
"github.com/jbenet/go-ipfs/daemon"
)
var
cmdIpfsRun
=
&
commander
.
Command
{
...
...
@@ -19,30 +19,18 @@ var cmdIpfsRun = &commander.Command{
}
func
runCmd
(
c
*
commander
.
Command
,
inp
[]
string
)
error
{
conf
,
err
:=
getConfigDir
(
c
.
Parent
)
if
err
!=
nil
{
return
err
}
n
,
err
:=
localNode
(
conf
,
true
)
cc
,
err
:=
setupCmdContext
(
c
,
true
)
if
err
!=
nil
{
return
err
}
// launch the RPC endpoint.
if
n
.
Config
.
Addresses
.
API
==
""
{
return
errors
.
New
(
"no config.Addresses.API endpoint supplied"
)
}
sigc
:=
make
(
chan
os
.
Signal
,
1
)
signal
.
Notify
(
sigc
,
syscall
.
SIGHUP
,
syscall
.
SIGINT
,
syscall
.
SIGTERM
,
syscall
.
SIGQUIT
)
maddr
,
err
:=
ma
.
NewMultiaddr
(
n
.
Config
.
Addresses
.
API
)
if
err
!=
nil
{
return
err
}
// wait until we get a signal to exit.
<-
sigc
dl
,
err
:=
daemon
.
NewDaemonListener
(
n
,
maddr
,
conf
)
if
err
!=
nil
{
return
err
}
dl
.
Listen
()
dl
.
Close
()
cc
.
daemon
.
Close
()
return
nil
}
cmd/ipfs/serve.go
浏览文件 @
2bd84312
package
main
import
(
"errors"
"fmt"
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/gonuts/flag"
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/commander"
ma
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
"github.com/jbenet/go-ipfs/daemon"
h
"github.com/jbenet/go-ipfs/server/http"
)
...
...
@@ -16,58 +14,36 @@ var cmdIpfsServe = &commander.Command{
UsageLine
:
"serve"
,
Short
:
"Serve an interface to ipfs"
,
Subcommands
:
[]
*
commander
.
Command
{
cmdIpfsServeH
ttp
,
cmdIpfsServeH
TTP
,
},
Flag
:
*
flag
.
NewFlagSet
(
"ipfs-serve"
,
flag
.
ExitOnError
),
}
var
cmdIpfsServeH
ttp
=
&
commander
.
Command
{
var
cmdIpfsServeH
TTP
=
&
commander
.
Command
{
UsageLine
:
"http"
,
Short
:
"Serve an HTTP API"
,
Long
:
`ipfs serve http - Serve an http gateway into ipfs.`
,
Run
:
serveH
ttp
Cmd
,
Run
:
serveH
TTP
Cmd
,
Flag
:
*
flag
.
NewFlagSet
(
"ipfs-serve-http"
,
flag
.
ExitOnError
),
}
func
init
()
{
cmdIpfsServeH
ttp
.
Flag
.
String
(
"address"
,
"/ip4/127.0.0.1/tcp/8080"
,
"Listen Address"
)
cmdIpfsServeH
TTP
.
Flag
.
String
(
"address"
,
"/ip4/127.0.0.1/tcp/8080"
,
"Listen Address"
)
}
func
serveH
ttp
Cmd
(
c
*
commander
.
Command
,
_
[]
string
)
error
{
c
onf
,
err
:=
getConfigDir
(
c
.
Parent
.
Parent
)
func
serveH
TTP
Cmd
(
c
*
commander
.
Command
,
_
[]
string
)
error
{
c
c
,
err
:=
setupCmdContext
(
c
,
true
)
if
err
!=
nil
{
return
err
}
n
,
err
:=
localNode
(
conf
,
true
)
if
err
!=
nil
{
return
err
}
// launch the API RPC endpoint.
if
n
.
Config
.
Addresses
.
API
==
""
{
return
errors
.
New
(
"no config.RPCAddress endpoint supplied"
)
}
maddr
,
err
:=
ma
.
NewMultiaddr
(
n
.
Config
.
Addresses
.
API
)
if
err
!=
nil
{
return
err
}
dl
,
err
:=
daemon
.
NewDaemonListener
(
n
,
maddr
,
conf
)
if
err
!=
nil
{
fmt
.
Println
(
"Failed to create daemon listener."
)
return
err
}
go
dl
.
Listen
()
defer
dl
.
Close
()
defer
cc
.
daemon
.
Close
()
address
:=
c
.
Flag
.
Lookup
(
"address"
)
.
Value
.
Get
()
.
(
string
)
maddr
,
err
=
ma
.
NewMultiaddr
(
address
)
maddr
,
err
:
=
ma
.
NewMultiaddr
(
address
)
if
err
!=
nil
{
return
err
}
fmt
.
Printf
(
"Serving on %s
\n
"
,
address
)
return
h
.
Serve
(
maddr
,
n
)
return
h
.
Serve
(
maddr
,
cc
.
node
)
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论