Use API ListenAddress from config

License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
This commit is contained in:
Jakub Sztandera 2019-10-22 19:18:06 +02:00
parent 77667d78ff
commit 70419c0f55
No known key found for this signature in database
GPG Key ID: 9A9AF56F8B3879BA
4 changed files with 36 additions and 15 deletions

View File

@ -29,10 +29,6 @@ var DaemonCmd = &cli.Command{
Name: "daemon",
Usage: "Start a lotus daemon process",
Flags: []cli.Flag{
&cli.StringFlag{
Name: "api",
Value: "1234",
},
&cli.StringFlag{
Name: makeGenFlag,
Value: "",
@ -81,6 +77,8 @@ var DaemonCmd = &cli.Command{
}
var api api.FullNode
var endpoint multiaddr.Multiaddr
stop, err := node.New(ctx,
node.FullAPI(&api),
@ -90,10 +88,16 @@ var DaemonCmd = &cli.Command{
genesis,
node.Override(node.SetApiEndpointKey, func(lr repo.LockedRepo) error {
apima, err := multiaddr.NewMultiaddr("/ip4/127.0.0.1/tcp/" + cctx.String("api"))
cfg, err := lr.Config()
if err != nil {
return xerrors.Errorf("could not get config: %w", err)
}
apima, err := multiaddr.NewMultiaddr(cfg.API.ListenAddress)
if err != nil {
return err
}
endpoint = apima
return lr.SetAPIEndpoint(apima)
}),
@ -107,6 +111,6 @@ var DaemonCmd = &cli.Command{
}
// TODO: properly parse api endpoint (or make it a URL)
return serveRPC(api, stop, "127.0.0.1:"+cctx.String("api"))
return serveRPC(api, stop, endpoint)
},
}

View File

@ -9,19 +9,22 @@ import (
"os/signal"
"syscall"
"github.com/ipfs/go-cid"
logging "github.com/ipfs/go-log"
"github.com/filecoin-project/lotus/api"
"github.com/filecoin-project/lotus/lib/auth"
"github.com/filecoin-project/lotus/lib/jsonrpc"
"github.com/filecoin-project/lotus/node"
"github.com/filecoin-project/lotus/node/impl"
"github.com/ipfs/go-cid"
logging "github.com/ipfs/go-log"
"github.com/multiformats/go-multiaddr"
manet "github.com/multiformats/go-multiaddr-net"
"golang.org/x/xerrors"
)
var log = logging.Logger("main")
func serveRPC(a api.FullNode, stop node.StopFunc, addr string) error {
func serveRPC(a api.FullNode, stop node.StopFunc, addr multiaddr.Multiaddr) error {
rpcServer := jsonrpc.NewServer()
rpcServer.Register("Filecoin", api.PermissionedFullAPI(a))
@ -39,7 +42,12 @@ func serveRPC(a api.FullNode, stop node.StopFunc, addr string) error {
http.Handle("/rest/v0/import", importAH)
srv := &http.Server{Addr: addr, Handler: http.DefaultServeMux}
lst, err := manet.Listen(addr)
if err != nil {
return xerrors.Errorf("could not listen: %w", err)
}
srv := &http.Server{Handler: http.DefaultServeMux}
sigChan := make(chan os.Signal, 2)
go func() {
@ -53,7 +61,7 @@ func serveRPC(a api.FullNode, stop node.StopFunc, addr string) error {
}()
signal.Notify(sigChan, syscall.SIGTERM, syscall.SIGINT)
return srv.ListenAndServe()
return srv.Serve(manet.NetListener(lst))
}
func handleImport(a *impl.FullNodeAPI) func(w http.ResponseWriter, r *http.Request) {

View File

@ -2,13 +2,15 @@ package main
import (
"fmt"
"golang.org/x/xerrors"
"io"
"io/ioutil"
"os"
"os/exec"
"path/filepath"
"sync/atomic"
"time"
"golang.org/x/xerrors"
)
func (api *api) Spawn() (nodeInfo, error) {
@ -45,8 +47,15 @@ func (api *api) Spawn() (nodeInfo, error) {
}
mux := newWsMux()
confStr := fmt.Sprintf("[API]\nListenAddress = \"/ip6/::1/tcp/%d/http\"\n", 2500+id)
err = ioutil.WriteFile(filepath.Join(dir, "config.toml"), []byte(confStr), 0700)
if err != nil {
return nodeInfo{}, err
}
cmd := exec.Command("./lotus", "daemon", "--bootstrap=false", genParam)
cmd := exec.Command("./lotus", "daemon", "--bootstrap=false", genParam, "--api", fmt.Sprintf("%d", 2500+id))
cmd.Stderr = io.MultiWriter(os.Stderr, errlogfile, mux.errpw)
cmd.Stdout = io.MultiWriter(os.Stdout, logfile, mux.outpw)
cmd.Env = append(os.Environ(), "LOTUS_PATH="+dir)

View File

@ -78,7 +78,7 @@ func NewFS(path string) (*FsRepo, error) {
}
func (fsr *FsRepo) Exists() (bool, error) {
_, err := os.Stat(filepath.Join(fsr.path, fsConfig))
_, err := os.Stat(filepath.Join(fsr.path, fsDatastore))
notexist := os.IsNotExist(err)
if notexist {
err = nil