cmd/geth, cmd/utils, eth: internalize trusted node config file

This commit is contained in:
Péter Szilágyi 2015-04-29 18:50:52 +03:00
parent de0549fabb
commit 679c90b873
3 changed files with 20 additions and 30 deletions

View File

@ -233,7 +233,6 @@ JavaScript API. See https://github.com/ethereum/go-ethereum/wiki/Javascipt-Conso
utils.UnlockedAccountFlag,
utils.PasswordFileFlag,
utils.BootNodesFlag,
utils.TrustedNodesFlag,
utils.DataDirFlag,
utils.BlockchainVersionFlag,
utils.JSpathFlag,

View File

@ -207,11 +207,6 @@ var (
Usage: "Space-separated enode URLs for p2p discovery bootstrap",
Value: "",
}
TrustedNodesFlag = cli.StringFlag{
Name: "trustednodes",
Usage: "List of trusted nodes (either an enode list or path to a json file of enodes)",
Value: "",
}
NodeKeyFileFlag = cli.StringFlag{
Name: "nodekey",
Usage: "P2P node key file",
@ -298,7 +293,6 @@ func MakeEthConfig(clientID, version string, ctx *cli.Context) *eth.Config {
Shh: ctx.GlobalBool(WhisperEnabledFlag.Name),
Dial: true,
BootNodes: ctx.GlobalString(BootNodesFlag.Name),
TrustedNodes: ctx.GlobalString(TrustedNodesFlag.Name),
}
}

View File

@ -7,6 +7,7 @@ import (
"io/ioutil"
"os"
"path"
"path/filepath"
"strings"
"time"
@ -39,6 +40,9 @@ var (
// ETH/DEV cpp-ethereum (poc-9.ethdev.com)
discover.MustParseNode("enode://487611428e6c99a11a9795a6abe7b529e81315ca6aad66e2a2fc76e3adf263faba0d35466c2f8f68d561dbefa8878d4df5f1f2ddb1fbeab7f42ffb8cd328bd4a@5.1.83.226:30303"),
}
// Path within <datadir> to search for the trusted node list
trustedNodes = "trusted-nodes.json"
)
type Config struct {
@ -62,10 +66,6 @@ type Config struct {
// Space-separated list of discovery node URLs
BootNodes string
// Either a space-separated list of discovery node URLs, or a path to a json
// file containing such a list.
TrustedNodes string
// This key is used to identify the node on the network.
// If nil, an ephemeral key is used.
NodeKey *ecdsa.PrivateKey
@ -105,30 +105,27 @@ func (cfg *Config) parseBootNodes() []*discover.Node {
// parseTrustedNodes parses a list of discovery node URLs either given literally,
// or loaded from a .json file.
func (cfg *Config) parseTrustedNodes() []*discover.Node {
// Short circuit if no trusted nodes were given
if cfg.TrustedNodes == "" {
// Short circuit if no trusted node config is present
path := filepath.Join(cfg.DataDir, trustedNodes)
if _, err := os.Stat(path); err != nil {
fmt.Println("nodes", nil)
return nil
}
// Try to interpret the trusted node config as a .json file
if _, err := os.Stat(cfg.TrustedNodes); err == nil {
// Load the file from disk
blob, err := ioutil.ReadFile(cfg.TrustedNodes)
if err != nil {
glog.V(logger.Error).Infof("Failed to access trusted nodes: %v", err)
return nil
}
// Interpret the json contents
list := []string{}
if err := json.Unmarshal(blob, &list); err != nil {
glog.V(logger.Error).Infof("Failed to load trusted nodes: %v", err)
return nil
}
// Swap out the configuration for the actual nodes
cfg.TrustedNodes = strings.Join(list, " ")
// Load the trusted nodes from the config file
blob, err := ioutil.ReadFile(path)
if err != nil {
glog.V(logger.Error).Infof("Failed to access trusted nodes: %v", err)
return nil
}
nodelist := []string{}
if err := json.Unmarshal(blob, &nodelist); err != nil {
glog.V(logger.Error).Infof("Failed to load trusted nodes: %v", err)
return nil
}
fmt.Println("nodes", nodelist)
// Interpret the list as a discovery node array
var nodes []*discover.Node
for _, url := range strings.Split(cfg.TrustedNodes, " ") {
for _, url := range nodelist {
if url == "" {
continue
}