提交 0b0bee6f 作者: verokarhu

switch to multiaddr and use /ipfs/ path in http api

上级 0beff4bb
...@@ -30,16 +30,10 @@ var cmdIpfsServeHttp = &commander.Command{ ...@@ -30,16 +30,10 @@ var cmdIpfsServeHttp = &commander.Command{
} }
func init() { func init() {
cmdIpfsServeHttp.Flag.Uint("port", 8080, "Port number") cmdIpfsServeHttp.Flag.String("address", "/ip4/127.0.0.1/tcp/8080", "Listen Address")
cmdIpfsServeHttp.Flag.String("hostname", "localhost", "Hostname")
} }
func serveHttpCmd(c *commander.Command, _ []string) error { func serveHttpCmd(c *commander.Command, _ []string) error {
port := c.Flag.Lookup("port").Value.Get().(uint)
if port < 1 || port > 65535 {
return errors.New("invalid port number")
}
conf, err := getConfigDir(c.Parent.Parent) conf, err := getConfigDir(c.Parent.Parent)
if err != nil { if err != nil {
return err return err
...@@ -68,9 +62,12 @@ func serveHttpCmd(c *commander.Command, _ []string) error { ...@@ -68,9 +62,12 @@ func serveHttpCmd(c *commander.Command, _ []string) error {
go dl.Listen() go dl.Listen()
defer dl.Close() defer dl.Close()
hostname := c.Flag.Lookup("hostname").Value.Get().(string) address := c.Flag.Lookup("address").Value.Get().(string)
address := fmt.Sprintf("%s:%d", hostname, port) maddr, err = ma.NewMultiaddr(address)
fmt.Printf("Serving on %s\n", address) if err != nil {
return err
}
return h.Serve(address, n) fmt.Printf("Serving on %s\n", address)
return h.Serve(maddr, n)
} }
...@@ -6,7 +6,9 @@ import ( ...@@ -6,7 +6,9 @@ import (
"net/http" "net/http"
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/gorilla/mux" "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/gorilla/mux"
ma "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
mh "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multihash" mh "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multihash"
core "github.com/jbenet/go-ipfs/core" core "github.com/jbenet/go-ipfs/core"
) )
...@@ -15,18 +17,23 @@ type handler struct { ...@@ -15,18 +17,23 @@ type handler struct {
} }
// Serve starts the http server // Serve starts the http server
func Serve(address string, node *core.IpfsNode) error { func Serve(address *ma.Multiaddr, node *core.IpfsNode) error {
r := mux.NewRouter() r := mux.NewRouter()
handler := &handler{&ipfsHandler{node}} handler := &handler{&ipfsHandler{node}}
r.HandleFunc("/", handler.postHandler).Methods("POST") r.HandleFunc("/ipfs/", handler.postHandler).Methods("POST")
r.PathPrefix("/").Handler(handler).Methods("GET") r.PathPrefix("/ipfs/").Handler(handler).Methods("GET")
http.Handle("/", r) http.Handle("/", r)
return http.ListenAndServe(address, nil) _, host, err := address.DialArgs()
if err != nil {
return err
}
return http.ListenAndServe(host, nil)
} }
func (i *handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { func (i *handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
path := r.URL.Path path := r.URL.Path[5:]
nd, err := i.ResolvePath(path) nd, err := i.ResolvePath(path)
if err != nil { if err != nil {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论