Initial commit of ETC plugin work
This commit is contained in:
parent
3993f2f870
commit
399cbbc8fd
@ -95,6 +95,12 @@ var (
|
|||||||
Value: flags.DirectoryString(filepath.Join("<datadir>", "plugins")),
|
Value: flags.DirectoryString(filepath.Join("<datadir>", "plugins")),
|
||||||
Category: flags.EthCategory,
|
Category: flags.EthCategory,
|
||||||
}
|
}
|
||||||
|
// ClassicFlag = &cli.BoolFlag{
|
||||||
|
// Name: "Classic",
|
||||||
|
// Usage: "Sepolia network: pre-configured proof-of-work test network",
|
||||||
|
// Category: flags.EthCategory,
|
||||||
|
// }
|
||||||
|
|
||||||
//end PluGeth code injection
|
//end PluGeth code injection
|
||||||
DataDirFlag = &flags.DirectoryFlag{
|
DataDirFlag = &flags.DirectoryFlag{
|
||||||
Name: "datadir",
|
Name: "datadir",
|
||||||
@ -965,7 +971,12 @@ func init() {
|
|||||||
// if none (or the empty string) is specified. If the node is starting a testnet,
|
// if none (or the empty string) is specified. If the node is starting a testnet,
|
||||||
// then a subdirectory of the specified datadir will be used.
|
// then a subdirectory of the specified datadir will be used.
|
||||||
func MakeDataDir(ctx *cli.Context) string {
|
func MakeDataDir(ctx *cli.Context) string {
|
||||||
|
// begin PluGeth injection
|
||||||
if path := ctx.String(DataDirFlag.Name); path != "" {
|
if path := ctx.String(DataDirFlag.Name); path != "" {
|
||||||
|
if pluginPath := pluginDefaultDataDir(path); pluginPath != "" {
|
||||||
|
return pluginPath
|
||||||
|
}
|
||||||
|
// end PluGeth injection
|
||||||
if ctx.Bool(RinkebyFlag.Name) {
|
if ctx.Bool(RinkebyFlag.Name) {
|
||||||
return filepath.Join(path, "rinkeby")
|
return filepath.Join(path, "rinkeby")
|
||||||
}
|
}
|
||||||
@ -1018,6 +1029,11 @@ func setNodeUserIdent(ctx *cli.Context, cfg *node.Config) {
|
|||||||
// flags, reverting to pre-configured ones if none have been specified.
|
// flags, reverting to pre-configured ones if none have been specified.
|
||||||
func setBootstrapNodes(ctx *cli.Context, cfg *p2p.Config) {
|
func setBootstrapNodes(ctx *cli.Context, cfg *p2p.Config) {
|
||||||
urls := params.MainnetBootnodes
|
urls := params.MainnetBootnodes
|
||||||
|
// begin PluGeth injection
|
||||||
|
if pluginUrls := pluginSetBootstrapNodes(); pluginUrls != nil {
|
||||||
|
urls = pluginUrls
|
||||||
|
}
|
||||||
|
// end PluGeth injection
|
||||||
switch {
|
switch {
|
||||||
case ctx.IsSet(BootnodesFlag.Name):
|
case ctx.IsSet(BootnodesFlag.Name):
|
||||||
urls = SplitAndTrim(ctx.String(BootnodesFlag.Name))
|
urls = SplitAndTrim(ctx.String(BootnodesFlag.Name))
|
||||||
@ -1651,6 +1667,18 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) {
|
|||||||
setRequiredBlocks(ctx, cfg)
|
setRequiredBlocks(ctx, cfg)
|
||||||
setLes(ctx, cfg)
|
setLes(ctx, cfg)
|
||||||
|
|
||||||
|
// beginPluGethInjection
|
||||||
|
if pluginNetworkId := pluginNetworkId(); pluginNetworkId != nil {
|
||||||
|
cfg.NetworkId = *pluginNetworkId
|
||||||
|
}
|
||||||
|
if pluginETHDiscoveryURLs := pluginETHDiscoveryURLs(); pluginETHDiscoveryURLs != nil {
|
||||||
|
cfg.EthDiscoveryURLs = pluginETHDiscoveryURLs
|
||||||
|
}
|
||||||
|
if pluginSnapDiscoveryURLs := pluginSnapDiscoveryURLs(); pluginSnapDiscoveryURLs != nil {
|
||||||
|
cfg.SnapDiscoveryURLs = pluginSnapDiscoveryURLs
|
||||||
|
}
|
||||||
|
//end PluGeth injection
|
||||||
|
|
||||||
// Cap the cache allowance and tune the garbage collector
|
// Cap the cache allowance and tune the garbage collector
|
||||||
mem, err := gopsutil.VirtualMemory()
|
mem, err := gopsutil.VirtualMemory()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
118
cmd/utils/plugin_hooks.go
Normal file
118
cmd/utils/plugin_hooks.go
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
package utils
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/ethereum/go-ethereum/log"
|
||||||
|
"github.com/ethereum/go-ethereum/plugins"
|
||||||
|
)
|
||||||
|
|
||||||
|
func DefaultDataDir(pl *plugins.PluginLoader, path string) string {
|
||||||
|
log.Error("inside default data dir hook")
|
||||||
|
dataDirPath := ""
|
||||||
|
fnList := pl.Lookup("DefaultDataDir", func(item interface{}) bool {
|
||||||
|
_, ok := item.(func(string) string)
|
||||||
|
return ok
|
||||||
|
})
|
||||||
|
for _, fni := range fnList {
|
||||||
|
if fn, ok := fni.(func(string) string); ok {
|
||||||
|
dataDirPath = fn(path)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return dataDirPath
|
||||||
|
}
|
||||||
|
|
||||||
|
func pluginDefaultDataDir(path string) string {
|
||||||
|
log.Error("inside default data dir injection")
|
||||||
|
if plugins.DefaultPluginLoader == nil {
|
||||||
|
log.Warn("Attempting DefaultDataDir, but default PluginLoader has not been initialized")
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return DefaultDataDir(plugins.DefaultPluginLoader, path)
|
||||||
|
}
|
||||||
|
|
||||||
|
func PluginSetBootStrapNodes(pl *plugins.PluginLoader) []string {
|
||||||
|
var urls []string
|
||||||
|
fnList := pl.Lookup("SetBootstrapNodes", func(item interface{}) bool {
|
||||||
|
_, ok := item.(func() []string)
|
||||||
|
return ok
|
||||||
|
})
|
||||||
|
for _, fni := range fnList {
|
||||||
|
if fn, ok := fni.(func() []string); ok {
|
||||||
|
urls = fn()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return urls
|
||||||
|
}
|
||||||
|
|
||||||
|
func pluginSetBootstrapNodes() []string {
|
||||||
|
if plugins.DefaultPluginLoader == nil {
|
||||||
|
log.Warn("Attempting pluginSetBootStrapNodes, but default PluginLoader has not been initialized")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return PluginSetBootStrapNodes(plugins.DefaultPluginLoader)
|
||||||
|
}
|
||||||
|
|
||||||
|
func PluginNetworkId(pl *plugins.PluginLoader) *uint64 {
|
||||||
|
var networkId *uint64
|
||||||
|
fnList := pl.Lookup("SetNetworkId", func(item interface{}) bool {
|
||||||
|
_, ok := item.(func() *uint64)
|
||||||
|
return ok
|
||||||
|
})
|
||||||
|
for _, fni := range fnList {
|
||||||
|
if fn, ok := fni.(func() *uint64); ok {
|
||||||
|
networkId = fn()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return networkId
|
||||||
|
}
|
||||||
|
|
||||||
|
func pluginNetworkId() *uint64 {
|
||||||
|
if plugins.DefaultPluginLoader == nil {
|
||||||
|
log.Warn("Attempting pluginNetworkID, but default PluginLoader has not been initialized")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return PluginNetworkId(plugins.DefaultPluginLoader)
|
||||||
|
}
|
||||||
|
|
||||||
|
func PluginETHDiscoveryURLs(pl *plugins.PluginLoader) []string {
|
||||||
|
var ethDiscoveryURLs []string
|
||||||
|
fnList := pl.Lookup("SetETHDiscoveryURLs", func(item interface{}) bool {
|
||||||
|
_, ok := item.(func() []string)
|
||||||
|
return ok
|
||||||
|
})
|
||||||
|
for _, fni := range fnList {
|
||||||
|
if fn, ok := fni.(func() []string); ok {
|
||||||
|
ethDiscoveryURLs = fn()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ethDiscoveryURLs
|
||||||
|
}
|
||||||
|
|
||||||
|
func pluginETHDiscoveryURLs() []string {
|
||||||
|
if plugins.DefaultPluginLoader == nil {
|
||||||
|
log.Warn("Attempting pluginETHDiscoveryURLs, but default PluginLoader has not been initialized")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return PluginETHDiscoveryURLs(plugins.DefaultPluginLoader)
|
||||||
|
}
|
||||||
|
|
||||||
|
func PluginSnapDiscoveryURLs(pl *plugins.PluginLoader) []string {
|
||||||
|
var snapDiscoveryURLs []string
|
||||||
|
fnList := pl.Lookup("SetSnapDiscoveryURLs", func(item interface{}) bool {
|
||||||
|
_, ok := item.(func() []string)
|
||||||
|
return ok
|
||||||
|
})
|
||||||
|
for _, fni := range fnList {
|
||||||
|
if fn, ok := fni.(func() []string); ok {
|
||||||
|
snapDiscoveryURLs = fn()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return snapDiscoveryURLs
|
||||||
|
}
|
||||||
|
|
||||||
|
func pluginSnapDiscoveryURLs() []string {
|
||||||
|
if plugins.DefaultPluginLoader == nil {
|
||||||
|
log.Warn("Attempting PluginSnapDiscoveryURLs, but default PluginLoader has not been initialized")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return PluginSnapDiscoveryURLs(plugins.DefaultPluginLoader)
|
||||||
|
}
|
2
go.mod
2
go.mod
@ -38,7 +38,7 @@ require (
|
|||||||
github.com/graph-gophers/graphql-go v1.3.0
|
github.com/graph-gophers/graphql-go v1.3.0
|
||||||
github.com/hashicorp/go-bexpr v0.1.10
|
github.com/hashicorp/go-bexpr v0.1.10
|
||||||
github.com/holiman/bloomfilter/v2 v2.0.3
|
github.com/holiman/bloomfilter/v2 v2.0.3
|
||||||
github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c
|
github.com/holiman/uint256 v1.2.3
|
||||||
github.com/huin/goupnp v1.0.3
|
github.com/huin/goupnp v1.0.3
|
||||||
github.com/influxdata/influxdb-client-go/v2 v2.4.0
|
github.com/influxdata/influxdb-client-go/v2 v2.4.0
|
||||||
github.com/influxdata/influxdb1-client v0.0.0-20220302092344-a9ab5670611c
|
github.com/influxdata/influxdb1-client v0.0.0-20220302092344-a9ab5670611c
|
||||||
|
4
go.sum
4
go.sum
@ -230,8 +230,8 @@ github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09
|
|||||||
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
|
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
|
||||||
github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao=
|
github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao=
|
||||||
github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA=
|
github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA=
|
||||||
github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c h1:DZfsyhDK1hnSS5lH8l+JggqzEleHteTYfutAiVlSUM8=
|
github.com/holiman/uint256 v1.2.3 h1:K8UWO1HUJpRMXBxbmaY1Y8IAMZC/RsKB+ArEnnK4l5o=
|
||||||
github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c/go.mod h1:SC8Ryt4n+UBbPbIBKaG9zbbDlp4jOru9xFZmPzLUTxw=
|
github.com/holiman/uint256 v1.2.3/go.mod h1:SC8Ryt4n+UBbPbIBKaG9zbbDlp4jOru9xFZmPzLUTxw=
|
||||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
||||||
github.com/huin/goupnp v1.0.3 h1:N8No57ls+MnjlB+JPiCVSOyy/ot7MJTqlo7rn+NYSqQ=
|
github.com/huin/goupnp v1.0.3 h1:N8No57ls+MnjlB+JPiCVSOyy/ot7MJTqlo7rn+NYSqQ=
|
||||||
github.com/huin/goupnp v1.0.3/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y=
|
github.com/huin/goupnp v1.0.3/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y=
|
||||||
|
Loading…
Reference in New Issue
Block a user