|
|
@@ -658,6 +658,10 @@ var (
|
|
|
Name: "netrestrict",
|
|
|
Usage: "Restricts network communication to the given IP networks (CIDR masks)",
|
|
|
}
|
|
|
+ DNSDiscoveryFlag = cli.StringFlag{
|
|
|
+ Name: "discovery.dns",
|
|
|
+ Usage: "Sets DNS discovery entry points (use \"\" to disable DNS)",
|
|
|
+ }
|
|
|
|
|
|
// ATM the url is left to the user and deployment to
|
|
|
JSpathFlag = cli.StringFlag{
|
|
|
@@ -811,9 +815,9 @@ func setBootstrapNodes(ctx *cli.Context, cfg *p2p.Config) {
|
|
|
switch {
|
|
|
case ctx.GlobalIsSet(BootnodesFlag.Name) || ctx.GlobalIsSet(BootnodesV4Flag.Name):
|
|
|
if ctx.GlobalIsSet(BootnodesV4Flag.Name) {
|
|
|
- urls = strings.Split(ctx.GlobalString(BootnodesV4Flag.Name), ",")
|
|
|
+ urls = splitAndTrim(ctx.GlobalString(BootnodesV4Flag.Name))
|
|
|
} else {
|
|
|
- urls = strings.Split(ctx.GlobalString(BootnodesFlag.Name), ",")
|
|
|
+ urls = splitAndTrim(ctx.GlobalString(BootnodesFlag.Name))
|
|
|
}
|
|
|
case ctx.GlobalBool(TestnetFlag.Name):
|
|
|
urls = params.TestnetBootnodes
|
|
|
@@ -845,9 +849,9 @@ func setBootstrapNodesV5(ctx *cli.Context, cfg *p2p.Config) {
|
|
|
switch {
|
|
|
case ctx.GlobalIsSet(BootnodesFlag.Name) || ctx.GlobalIsSet(BootnodesV5Flag.Name):
|
|
|
if ctx.GlobalIsSet(BootnodesV5Flag.Name) {
|
|
|
- urls = strings.Split(ctx.GlobalString(BootnodesV5Flag.Name), ",")
|
|
|
+ urls = splitAndTrim(ctx.GlobalString(BootnodesV5Flag.Name))
|
|
|
} else {
|
|
|
- urls = strings.Split(ctx.GlobalString(BootnodesFlag.Name), ",")
|
|
|
+ urls = splitAndTrim(ctx.GlobalString(BootnodesFlag.Name))
|
|
|
}
|
|
|
case ctx.GlobalBool(RinkebyFlag.Name):
|
|
|
urls = params.RinkebyBootnodes
|
|
|
@@ -1477,6 +1481,14 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *eth.Config) {
|
|
|
if ctx.GlobalIsSet(RPCGlobalGasCap.Name) {
|
|
|
cfg.RPCGasCap = new(big.Int).SetUint64(ctx.GlobalUint64(RPCGlobalGasCap.Name))
|
|
|
}
|
|
|
+ if ctx.GlobalIsSet(DNSDiscoveryFlag.Name) {
|
|
|
+ urls := ctx.GlobalString(DNSDiscoveryFlag.Name)
|
|
|
+ if urls == "" {
|
|
|
+ cfg.DiscoveryURLs = []string{}
|
|
|
+ } else {
|
|
|
+ cfg.DiscoveryURLs = splitAndTrim(urls)
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
// Override any default configs for hard coded networks.
|
|
|
switch {
|
|
|
@@ -1485,16 +1497,19 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *eth.Config) {
|
|
|
cfg.NetworkId = 3
|
|
|
}
|
|
|
cfg.Genesis = core.DefaultTestnetGenesisBlock()
|
|
|
+ setDNSDiscoveryDefaults(cfg, params.KnownDNSNetworks[params.TestnetGenesisHash])
|
|
|
case ctx.GlobalBool(RinkebyFlag.Name):
|
|
|
if !ctx.GlobalIsSet(NetworkIdFlag.Name) {
|
|
|
cfg.NetworkId = 4
|
|
|
}
|
|
|
cfg.Genesis = core.DefaultRinkebyGenesisBlock()
|
|
|
+ setDNSDiscoveryDefaults(cfg, params.KnownDNSNetworks[params.RinkebyGenesisHash])
|
|
|
case ctx.GlobalBool(GoerliFlag.Name):
|
|
|
if !ctx.GlobalIsSet(NetworkIdFlag.Name) {
|
|
|
cfg.NetworkId = 5
|
|
|
}
|
|
|
cfg.Genesis = core.DefaultGoerliGenesisBlock()
|
|
|
+ setDNSDiscoveryDefaults(cfg, params.KnownDNSNetworks[params.GoerliGenesisHash])
|
|
|
case ctx.GlobalBool(DeveloperFlag.Name):
|
|
|
if !ctx.GlobalIsSet(NetworkIdFlag.Name) {
|
|
|
cfg.NetworkId = 1337
|
|
|
@@ -1521,7 +1536,20 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *eth.Config) {
|
|
|
if !ctx.GlobalIsSet(MinerGasPriceFlag.Name) && !ctx.GlobalIsSet(MinerLegacyGasPriceFlag.Name) {
|
|
|
cfg.Miner.GasPrice = big.NewInt(1)
|
|
|
}
|
|
|
+ default:
|
|
|
+ if cfg.NetworkId == 1 {
|
|
|
+ setDNSDiscoveryDefaults(cfg, params.KnownDNSNetworks[params.MainnetGenesisHash])
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// setDNSDiscoveryDefaults configures DNS discovery with the given URL if
|
|
|
+// no URLs are set.
|
|
|
+func setDNSDiscoveryDefaults(cfg *eth.Config, url string) {
|
|
|
+ if cfg.DiscoveryURLs != nil {
|
|
|
+ return
|
|
|
}
|
|
|
+ cfg.DiscoveryURLs = []string{url}
|
|
|
}
|
|
|
|
|
|
// RegisterEthService adds an Ethereum client to the stack.
|