Skip to content

Commit 4a2c17b

Browse files
lmarsobscuren
authored andcommitted
cmd/swarm: Add --httpaddr flag (#14475)
Fixes #14474. Signed-off-by: Lewis Marshall <[email protected]>
1 parent bc75351 commit 4a2c17b

File tree

5 files changed

+30
-19
lines changed

5 files changed

+30
-19
lines changed

cmd/swarm/main.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,10 @@ var (
6767
Name: "bzzaccount",
6868
Usage: "Swarm account key file",
6969
}
70+
SwarmListenAddrFlag = cli.StringFlag{
71+
Name: "httpaddr",
72+
Usage: "Swarm HTTP API listening interface",
73+
}
7074
SwarmPortFlag = cli.StringFlag{
7175
Name: "bzzport",
7276
Usage: "Swarm local http api port",
@@ -249,6 +253,7 @@ Cleans database of corrupted entries.
249253
SwarmConfigPathFlag,
250254
SwarmSwapEnabledFlag,
251255
SwarmSyncEnabledFlag,
256+
SwarmListenAddrFlag,
252257
SwarmPortFlag,
253258
SwarmAccountFlag,
254259
SwarmNetworkIdFlag,
@@ -345,6 +350,9 @@ func registerBzzService(ctx *cli.Context, stack *node.Node) {
345350
if len(bzzport) > 0 {
346351
bzzconfig.Port = bzzport
347352
}
353+
if bzzaddr := ctx.GlobalString(SwarmListenAddrFlag.Name); bzzaddr != "" {
354+
bzzconfig.ListenAddr = bzzaddr
355+
}
348356
swapEnabled := ctx.GlobalBool(SwarmSwapEnabledFlag.Name)
349357
syncEnabled := ctx.GlobalBoolT(SwarmSyncEnabledFlag.Name)
350358

swarm/api/config.go

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ import (
3232
)
3333

3434
const (
35-
port = "8500"
35+
DefaultHTTPListenAddr = "127.0.0.1"
36+
DefaultHTTPPort = "8500"
3637
)
3738

3839
var (
@@ -48,12 +49,13 @@ type Config struct {
4849
*network.HiveParams
4950
Swap *swap.SwapParams
5051
*network.SyncParams
51-
Path string
52-
Port string
53-
PublicKey string
54-
BzzKey string
55-
EnsRoot common.Address
56-
NetworkId uint64
52+
Path string
53+
ListenAddr string
54+
Port string
55+
PublicKey string
56+
BzzKey string
57+
EnsRoot common.Address
58+
NetworkId uint64
5759
}
5860

5961
// 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
7678
HiveParams: network.NewHiveParams(dirpath),
7779
ChunkerParams: storage.NewChunkerParams(),
7880
StoreParams: storage.NewStoreParams(dirpath),
79-
Port: port,
81+
ListenAddr: DefaultHTTPListenAddr,
82+
Port: DefaultHTTPPort,
8083
Path: dirpath,
8184
Swap: swap.DefaultSwapParams(contract, prvKey),
8285
PublicKey: pubkeyhex,

swarm/api/config_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ var (
8080
false
8181
],
8282
"Path": "TMPDIR",
83+
"ListenAddr": "127.0.0.1",
8384
"Port": "8500",
8485
"PublicKey": "0x045f5cfd26692e48d0017d380349bcf50982488bc11b5145f3ddf88b24924299048450542d43527fbe29a5cb32f38d62755393ac002e6bfdd71b8d7ba725ecd7a3",
8586
"BzzKey": "0xe861964402c0b78e2d44098329b8545726f215afa737d803714a4338552fcb81",

swarm/api/http/server.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ func StartHttpServer(api *api.Api, config *ServerConfig) {
6969
hdlr := c.Handler(NewServer(api))
7070

7171
go http.ListenAndServe(config.Addr, hdlr)
72-
log.Info(fmt.Sprintf("Swarm HTTP proxy started on localhost:%s", config.Addr))
7372
}
7473

7574
func NewServer(api *api.Api) *Server {

swarm/swarm.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"context"
2222
"crypto/ecdsa"
2323
"fmt"
24+
"net"
2425

2526
"github.com/ethereum/go-ethereum/accounts/abi/bind"
2627
"github.com/ethereum/go-ethereum/common"
@@ -166,13 +167,13 @@ Start is called when the stack is started
166167
* TODO: start subservices like sword, swear, swarmdns
167168
*/
168169
// implements the node.Service interface
169-
func (self *Swarm) Start(net *p2p.Server) error {
170+
func (self *Swarm) Start(srv *p2p.Server) error {
170171
connectPeer := func(url string) error {
171172
node, err := discover.ParseNode(url)
172173
if err != nil {
173174
return fmt.Errorf("invalid node URL: %v", err)
174175
}
175-
net.AddPeer(node)
176+
srv.AddPeer(node)
176177
return nil
177178
}
178179
// set chequebook
@@ -189,8 +190,8 @@ func (self *Swarm) Start(net *p2p.Server) error {
189190

190191
log.Warn(fmt.Sprintf("Starting Swarm service"))
191192
self.hive.Start(
192-
discover.PubkeyID(&net.PrivateKey.PublicKey),
193-
func() string { return net.ListenAddr },
193+
discover.PubkeyID(&srv.PrivateKey.PublicKey),
194+
func() string { return srv.ListenAddr },
194195
connectPeer,
195196
)
196197
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 {
200201

201202
// start swarm http proxy server
202203
if self.config.Port != "" {
203-
addr := ":" + self.config.Port
204+
addr := net.JoinHostPort(self.config.ListenAddr, self.config.Port)
204205
go httpapi.StartHttpServer(self.api, &httpapi.ServerConfig{
205206
Addr: addr,
206207
CorsString: self.corsString,
207208
})
208-
}
209-
210-
log.Debug(fmt.Sprintf("Swarm http proxy started on port: %v", self.config.Port))
209+
log.Info(fmt.Sprintf("Swarm http proxy started on %v", addr))
211210

212-
if self.corsString != "" {
213-
log.Debug(fmt.Sprintf("Swarm http proxy started with corsdomain: %v", self.corsString))
211+
if self.corsString != "" {
212+
log.Debug(fmt.Sprintf("Swarm http proxy started with corsdomain: %v", self.corsString))
213+
}
214214
}
215215

216216
return nil

0 commit comments

Comments
 (0)