mirror of
https://github.com/ipfs/kubo.git
synced 2025-07-02 03:28:25 +08:00
switch to multiaddr and use /ipfs/ path in http api
This commit is contained in:
@ -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 {
|
||||
|
Reference in New Issue
Block a user