@ -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.