@cryptotaxi247 / kubo / commits / 0b0bee6fd

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

verokarhu committed Sep 30, 2014 at 20:54 UTC 0b0bee6fd5b40e6e04967f270437fc943cc1dbfb
2 files changed +20 -16
cmd/ipfs/serve.go
+8 -11
@@ -30,16 +30,10 @@ var cmdIpfsServeHttp = &commander.Command{
30 }
31
32 func init() {
33 - cmdIpfsServeHttp.Flag.Uint("port", 8080, "Port number")
34 - cmdIpfsServeHttp.Flag.String("hostname", "localhost", "Hostname")
33 + cmdIpfsServeHttp.Flag.String("address", "/ip4/127.0.0.1/tcp/8080", "Listen Address")
34 }
35
36 func serveHttpCmd(c *commander.Command, _ []string) error {
38 - port := c.Flag.Lookup("port").Value.Get().(uint)
39 - if port < 1 || port > 65535 {
40 - return errors.New("invalid port number")
41 - }
42 -
37 conf, err := getConfigDir(c.Parent.Parent)
38 if err != nil {
39 return err
@@ -68,9 +62,12 @@ func serveHttpCmd(c *commander.Command, _ []string) error {
62 go dl.Listen()
63 defer dl.Close()
64
71 - hostname := c.Flag.Lookup("hostname").Value.Get().(string)
72 - address := fmt.Sprintf("%s:%d", hostname, port)
73 - fmt.Printf("Serving on %s\n", address)
65 + address := c.Flag.Lookup("address").Value.Get().(string)
66 + maddr, err = ma.NewMultiaddr(address)
67 + if err != nil {
68 + return err
69 + }
70
75 - return h.Serve(address, n)
71 + fmt.Printf("Serving on %s\n", address)
72 + return h.Serve(maddr, n)
73 }
server/http/http.go
+12 -5
@@ -6,7 +6,9 @@ import (
6 "net/http"
7
8 "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/gorilla/mux"
9 + ma "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
10 mh "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multihash"
11 +
12 core "github.com/jbenet/go-ipfs/core"
13 )
14
@@ -15,18 +17,23 @@ type handler struct {
17 }
18
19 // Serve starts the http server
18 -func Serve(address string, node *core.IpfsNode) error {
20 +func Serve(address *ma.Multiaddr, node *core.IpfsNode) error {
21 r := mux.NewRouter()
22 handler := &handler{&ipfsHandler{node}}
21 - r.HandleFunc("/", handler.postHandler).Methods("POST")
22 - r.PathPrefix("/").Handler(handler).Methods("GET")
23 + r.HandleFunc("/ipfs/", handler.postHandler).Methods("POST")
24 + r.PathPrefix("/ipfs/").Handler(handler).Methods("GET")
25 http.Handle("/", r)
26
25 - return http.ListenAndServe(address, nil)
27 + _, host, err := address.DialArgs()
28 + if err != nil {
29 + return err
30 + }
31 +
32 + return http.ListenAndServe(host, nil)
33 }
34
35 func (i *handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
29 - path := r.URL.Path
36 + path := r.URL.Path[5:]
37
38 nd, err := i.ResolvePath(path)
39 if err != nil {