github.com/zignig/go-ipfs@v0.0.0-20141111235910-c9e5fdf55a52/cmd/ipfs/serve.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/gonuts/flag"
     7  	"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/commander"
     8  	ma "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
     9  
    10  	h "github.com/jbenet/go-ipfs/server/http"
    11  )
    12  
    13  var cmdIpfsServe = &commander.Command{
    14  	UsageLine: "serve",
    15  	Short:     "Serve an interface to ipfs",
    16  	Subcommands: []*commander.Command{
    17  		cmdIpfsServeHTTP,
    18  	},
    19  	Flag: *flag.NewFlagSet("ipfs-serve", flag.ExitOnError),
    20  }
    21  
    22  var cmdIpfsServeHTTP = &commander.Command{
    23  	UsageLine: "http",
    24  	Short:     "Serve an HTTP API",
    25  	Long:      `ipfs serve http - Serve an http gateway into ipfs.`,
    26  	Run:       serveHTTPCmd,
    27  	Flag:      *flag.NewFlagSet("ipfs-serve-http", flag.ExitOnError),
    28  }
    29  
    30  func init() {
    31  	cmdIpfsServeHTTP.Flag.String("address", "/ip4/127.0.0.1/tcp/8080", "Listen Address")
    32  }
    33  
    34  func serveHTTPCmd(c *commander.Command, _ []string) error {
    35  	cc, err := setupCmdContext(c, true)
    36  	if err != nil {
    37  		return err
    38  	}
    39  	defer cc.daemon.Close()
    40  
    41  	address := c.Flag.Lookup("address").Value.Get().(string)
    42  	maddr, err := ma.NewMultiaddr(address)
    43  	if err != nil {
    44  		return err
    45  	}
    46  
    47  	fmt.Printf("Serving on %s\n", address)
    48  	return h.Serve(maddr, cc.node)
    49  }