Add legacy config file

This commit is contained in:
Ferran Borreguero 2021-10-10 15:06:46 +02:00
parent 449e6a517a
commit e98379679f
6 changed files with 75 additions and 4 deletions

View file

@ -53,7 +53,7 @@ var mainnetBor = &Chain{
Difficulty: big.NewInt(1),
Mixhash: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"),
Coinbase: common.HexToAddress("0x0000000000000000000000000000000000000000"),
Alloc: readPrealloc("allocs/bor_mainnet.json"),
Alloc: readPrealloc("allocs/mainnet.json"),
},
Bootnodes: []string{
"enode://0cb82b395094ee4a2915e9714894627de9ed8498fb881cec6db7c65e8b9a5bd7f2f25cc84e71e89d0947e51c76e85d0847de848c7782b13c0255247a6758178c@44.232.55.71:30303",

View file

@ -88,7 +88,6 @@ func (c *Command) Run(args []string) int {
// TODO: Metrics
// TODO: apis
// TODO: Graphql
// TODO: embed
// register the ethereum backend
ethCfg, err := config.buildEth()
@ -143,6 +142,7 @@ func (c *Command) setupMetrics() error {
// Start system runtime metrics collection
go metrics.CollectProcessMetrics(3 * time.Second)
return nil
}

View file

@ -3,6 +3,7 @@ package server
import (
"crypto/ecdsa"
"fmt"
"io/ioutil"
"math/big"
"os"
"path/filepath"
@ -50,6 +51,7 @@ type Config struct {
EthStats *string
TxPool *TxPoolConfig
Sealer *SealerConfig
JsonRPC *JsonRPCConfig
}
type P2PConfig struct {
@ -92,6 +94,9 @@ type SealerConfig struct {
GasPrice *big.Int
}
type JsonRPCConfig struct {
}
func DefaultConfig() *Config {
return &Config{
Chain: stringPtr("mainnet"),
@ -137,7 +142,18 @@ func DefaultConfig() *Config {
}
func readConfigFile(path string) (*Config, error) {
return nil, nil
data, err := ioutil.ReadFile(path)
if err != nil {
return nil, err
}
// TODO: Use hcl as config format
ext := filepath.Ext(path)
switch ext {
case ".toml":
return readLegacyConfig(data)
default:
return nil, fmt.Errorf("file path extension '%s' not found", ext)
}
}
func (c *Config) loadChain() error {
@ -219,6 +235,7 @@ func (c *Config) buildNode() (*node.Config, error) {
Name: clientIdentifier,
DataDir: *c.DataDir,
Version: params.VersionWithCommit(gitCommit, gitDate),
IPCPath: clientIdentifier + ".ipc",
P2P: p2p.Config{
MaxPeers: int(*c.P2P.MaxPeers),
ListenAddr: *c.P2P.Bind + ":" + strconv.Itoa(int(*c.P2P.Port)),

View file

@ -0,0 +1,33 @@
package server
import (
"bytes"
"github.com/naoina/toml"
)
type legacyConfig struct {
Node struct {
P2P struct {
StaticNodes []string
TrustedNodes []string
}
}
}
func (l *legacyConfig) Config() *Config {
c := DefaultConfig()
c.P2P.Discovery.StaticNodes = l.Node.P2P.StaticNodes
c.P2P.Discovery.TrustedNodes = l.Node.P2P.TrustedNodes
return c
}
func readLegacyConfig(data []byte) (*Config, error) {
var legacy legacyConfig
r := toml.NewDecoder(bytes.NewReader(data))
if err := r.Decode(&legacy); err != nil {
return nil, err
}
return legacy.Config(), nil
}

View file

@ -0,0 +1,21 @@
package server
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestConfigLegacy(t *testing.T) {
toml := `[Node.P2P]
StaticNodes = ["node1"]
TrustedNodes = ["node2"]`
config, err := readLegacyConfig([]byte(toml))
if err != nil {
t.Fatal(err)
}
assert.Equal(t, config.P2P.Discovery.StaticNodes, []string{"node1"})
assert.Equal(t, config.P2P.Discovery.TrustedNodes, []string{"node2"})
}

2
go.mod
View file

@ -1,6 +1,6 @@
module github.com/ethereum/go-ethereum
go 1.15
go 1.16
require (
github.com/Azure/azure-pipeline-go v0.2.2 // indirect