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 {