提交 0b0bee6f 作者: verokarhu

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

上级 0beff4bb
......@@ -30,16 +30,10 @@ var cmdIpfsServeHttp = &commander.Command{
}
func init() {
cmdIpfsServeHttp.Flag.Uint("port", 8080, "Port number")
cmdIpfsServeHttp.Flag.String("hostname", "localhost", "Hostname")
cmdIpfsServeHttp.Flag.String("address", "/ip4/127.0.0.1/tcp/8080", "Listen Address")
}
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)
if err != nil {
return err
......@@ -68,9 +62,12 @@ func serveHttpCmd(c *commander.Command, _ []string) error {
go dl.Listen()
defer dl.Close()
hostname := c.Flag.Lookup("hostname").Value.Get().(string)
address := fmt.Sprintf("%s:%d", hostname, port)
fmt.Printf("Serving on %s\n", address)
address := c.Flag.Lookup("address").Value.Get().(string)
maddr, err = ma.NewMultiaddr(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 (
"net/http"
"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"
core "github.com/jbenet/go-ipfs/core"
)
......@@ -15,18 +17,23 @@ type handler struct {
}
// 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()
handler := &handler{&ipfsHandler{node}}
r.HandleFunc("/", handler.postHandler).Methods("POST")
r.PathPrefix("/").Handler(handler).Methods("GET")
r.HandleFunc("/ipfs/", handler.postHandler).Methods("POST")
r.PathPrefix("/ipfs/").Handler(handler).Methods("GET")
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) {
path := r.URL.Path
path := r.URL.Path[5:]
nd, err := i.ResolvePath(path)
if err != nil {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论