141 lines
3.7 KiB
Go
141 lines
3.7 KiB
Go
package utils
|
|
|
|
import (
|
|
"encoding/json"
|
|
"github.com/ethereum/go-ethereum/core"
|
|
"github.com/ethereum/go-ethereum/log"
|
|
"github.com/ethereum/go-ethereum/plugins"
|
|
)
|
|
|
|
func DefaultDataDir(pl *plugins.PluginLoader, path string) string {
|
|
dataDirPath := ""
|
|
fnList := pl.Lookup("SetDefaultDataDir", 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("public default data dir")
|
|
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, mode bool) []string {
|
|
var ethDiscoveryURLs []string
|
|
fnList := pl.Lookup("SetETHDiscoveryURLs", func(item interface{}) bool {
|
|
_, ok := item.(func(bool) []string)
|
|
return ok
|
|
})
|
|
for _, fni := range fnList {
|
|
if fn, ok := fni.(func(bool) []string); ok {
|
|
ethDiscoveryURLs = fn(mode)
|
|
}
|
|
}
|
|
return ethDiscoveryURLs
|
|
}
|
|
|
|
func pluginETHDiscoveryURLs(mode bool) []string {
|
|
if plugins.DefaultPluginLoader == nil {
|
|
log.Warn("Attempting pluginETHDiscoveryURLs, but default PluginLoader has not been initialized")
|
|
return nil
|
|
}
|
|
return PluginETHDiscoveryURLs(plugins.DefaultPluginLoader, mode)
|
|
}
|
|
|
|
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)
|
|
}
|
|
|
|
func PluginGenesisBlock(pl *plugins.PluginLoader) *core.Genesis {
|
|
genesisJSON, ok := plugins.LookupOne[func() []byte](pl, "GenesisBlock")
|
|
if !ok {
|
|
return nil
|
|
}
|
|
var genesis core.Genesis
|
|
if err := json.Unmarshal(genesisJSON(), &genesis); err != nil {
|
|
log.Warn("Error unmarshalling genesis", "err", err)
|
|
return nil
|
|
}
|
|
return &genesis
|
|
}
|
|
|
|
func pluginGenesisBlock() *core.Genesis {
|
|
if plugins.DefaultPluginLoader == nil {
|
|
log.Warn("Attempting PluginGenesisBlock, but default PluginLoader has not been initialized")
|
|
return nil
|
|
}
|
|
return PluginGenesisBlock(plugins.DefaultPluginLoader)
|
|
}
|