aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLewis Marshall <lewis@lmars.net>2017-05-22 14:56:40 +0800
committerJeffrey Wilcke <jeffrey@ethereum.org>2017-05-22 14:56:40 +0800
commit4a2c17b1ab8316ab3b4fa2b769d1dccad3cb97d5 (patch)
tree4a9a0867f1634acbd342c4cc9720ed4798355f06
parentbc75351edfd820235c7609eefc8b0035e01215b8 (diff)
downloaddexon-4a2c17b1ab8316ab3b4fa2b769d1dccad3cb97d5.tar.gz
dexon-4a2c17b1ab8316ab3b4fa2b769d1dccad3cb97d5.tar.zst
dexon-4a2c17b1ab8316ab3b4fa2b769d1dccad3cb97d5.zip
cmd/swarm: Add --httpaddr flag (#14475)
Fixes #14474. Signed-off-by: Lewis Marshall <lewis@lmars.net>
-rw-r--r--cmd/swarm/main.go8
-rw-r--r--swarm/api/config.go19
-rw-r--r--swarm/api/config_test.go1
-rw-r--r--swarm/api/http/server.go1
-rw-r--r--swarm/swarm.go20
5 files changed, 30 insertions, 19 deletions
diff --git a/cmd/swarm/main.go b/cmd/swarm/main.go
index 26aa3e50f..71149c310 100644
--- a/cmd/swarm/main.go
+++ b/cmd/swarm/main.go
@@ -67,6 +67,10 @@ var (
Name: "bzzaccount",
Usage: "Swarm account key file",
}
+ SwarmListenAddrFlag = cli.StringFlag{
+ Name: "httpaddr",
+ Usage: "Swarm HTTP API listening interface",
+ }
SwarmPortFlag = cli.StringFlag{
Name: "bzzport",
Usage: "Swarm local http api port",
@@ -249,6 +253,7 @@ Cleans database of corrupted entries.
SwarmConfigPathFlag,
SwarmSwapEnabledFlag,
SwarmSyncEnabledFlag,
+ SwarmListenAddrFlag,
SwarmPortFlag,
SwarmAccountFlag,
SwarmNetworkIdFlag,
@@ -345,6 +350,9 @@ func registerBzzService(ctx *cli.Context, stack *node.Node) {
if len(bzzport) > 0 {
bzzconfig.Port = bzzport
}
+ if bzzaddr := ctx.GlobalString(SwarmListenAddrFlag.Name); bzzaddr != "" {
+ bzzconfig.ListenAddr = bzzaddr
+ }
swapEnabled := ctx.GlobalBool(SwarmSwapEnabledFlag.Name)
syncEnabled := ctx.GlobalBoolT(SwarmSyncEnabledFlag.Name)
diff --git a/swarm/api/config.go b/swarm/api/config.go
index 23a855500..647c153ed 100644
--- a/swarm/api/config.go
+++ b/swarm/api/config.go
@@ -32,7 +32,8 @@ import (
)
const (
- port = "8500"
+ DefaultHTTPListenAddr = "127.0.0.1"
+ DefaultHTTPPort = "8500"
)
var (
@@ -48,12 +49,13 @@ type Config struct {
*network.HiveParams
Swap *swap.SwapParams
*network.SyncParams
- Path string
- Port string
- PublicKey string
- BzzKey string
- EnsRoot common.Address
- NetworkId uint64
+ Path string
+ ListenAddr string
+ Port string
+ PublicKey string
+ BzzKey string
+ EnsRoot common.Address
+ NetworkId uint64
}
// config is agnostic to where private key is coming from
@@ -76,7 +78,8 @@ func NewConfig(path string, contract common.Address, prvKey *ecdsa.PrivateKey, n
HiveParams: network.NewHiveParams(dirpath),
ChunkerParams: storage.NewChunkerParams(),
StoreParams: storage.NewStoreParams(dirpath),
- Port: port,
+ ListenAddr: DefaultHTTPListenAddr,
+ Port: DefaultHTTPPort,
Path: dirpath,
Swap: swap.DefaultSwapParams(contract, prvKey),
PublicKey: pubkeyhex,
diff --git a/swarm/api/config_test.go b/swarm/api/config_test.go
index 2f40098a3..6b5cea915 100644
--- a/swarm/api/config_test.go
+++ b/swarm/api/config_test.go
@@ -80,6 +80,7 @@ var (
false
],
"Path": "TMPDIR",
+ "ListenAddr": "127.0.0.1",
"Port": "8500",
"PublicKey": "0x045f5cfd26692e48d0017d380349bcf50982488bc11b5145f3ddf88b24924299048450542d43527fbe29a5cb32f38d62755393ac002e6bfdd71b8d7ba725ecd7a3",
"BzzKey": "0xe861964402c0b78e2d44098329b8545726f215afa737d803714a4338552fcb81",
diff --git a/swarm/api/http/server.go b/swarm/api/http/server.go
index 849b9e10f..5f64f971b 100644
--- a/swarm/api/http/server.go
+++ b/swarm/api/http/server.go
@@ -69,7 +69,6 @@ func StartHttpServer(api *api.Api, config *ServerConfig) {
hdlr := c.Handler(NewServer(api))
go http.ListenAndServe(config.Addr, hdlr)
- log.Info(fmt.Sprintf("Swarm HTTP proxy started on localhost:%s", config.Addr))
}
func NewServer(api *api.Api) *Server {
diff --git a/swarm/swarm.go b/swarm/swarm.go
index 442e68d51..4f93a30b7 100644
--- a/swarm/swarm.go
+++ b/swarm/swarm.go
@@ -21,6 +21,7 @@ import (
"context"
"crypto/ecdsa"
"fmt"
+ "net"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
@@ -166,13 +167,13 @@ Start is called when the stack is started
* TODO: start subservices like sword, swear, swarmdns
*/
// implements the node.Service interface
-func (self *Swarm) Start(net *p2p.Server) error {
+func (self *Swarm) Start(srv *p2p.Server) error {
connectPeer := func(url string) error {
node, err := discover.ParseNode(url)
if err != nil {
return fmt.Errorf("invalid node URL: %v", err)
}
- net.AddPeer(node)
+ srv.AddPeer(node)
return nil
}
// set chequebook
@@ -189,8 +190,8 @@ func (self *Swarm) Start(net *p2p.Server) error {
log.Warn(fmt.Sprintf("Starting Swarm service"))
self.hive.Start(
- discover.PubkeyID(&net.PrivateKey.PublicKey),
- func() string { return net.ListenAddr },
+ discover.PubkeyID(&srv.PrivateKey.PublicKey),
+ func() string { return srv.ListenAddr },
connectPeer,
)
log.Info(fmt.Sprintf("Swarm network started on bzz address: %v", self.hive.Addr()))
@@ -200,17 +201,16 @@ func (self *Swarm) Start(net *p2p.Server) error {
// start swarm http proxy server
if self.config.Port != "" {
- addr := ":" + self.config.Port
+ addr := net.JoinHostPort(self.config.ListenAddr, self.config.Port)
go httpapi.StartHttpServer(self.api, &httpapi.ServerConfig{
Addr: addr,
CorsString: self.corsString,
})
- }
-
- log.Debug(fmt.Sprintf("Swarm http proxy started on port: %v", self.config.Port))
+ log.Info(fmt.Sprintf("Swarm http proxy started on %v", addr))
- if self.corsString != "" {
- log.Debug(fmt.Sprintf("Swarm http proxy started with corsdomain: %v", self.corsString))
+ if self.corsString != "" {
+ log.Debug(fmt.Sprintf("Swarm http proxy started with corsdomain: %v", self.corsString))
+ }
}
return nil