cmd, eth, node: deprecate personal namespace (#26390)

* eth: cmd: deprecate personal namespace

* eth: cmd: move deprecation to node

* node: disable toml of enablepersonal

* node: disable personal on ipc as well

* Update node/node.go

Co-authored-by: Martin Holst Swende <martin@swende.se>

* console: error -> warn

* node: less roulette

---------

Co-authored-by: Martin Holst Swende <martin@swende.se>
This commit is contained in:
Marius van der Wijden 2023-02-02 12:52:19 +01:00 committed by GitHub
parent a8cf4399a9
commit d0a4989a8d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 35 additions and 8 deletions

View File

@ -77,7 +77,7 @@ func localConsole(ctx *cli.Context) error {
// Attach to the newly started node and create the JavaScript console. // Attach to the newly started node and create the JavaScript console.
client, err := stack.Attach() client, err := stack.Attach()
if err != nil { if err != nil {
return fmt.Errorf("Failed to attach to the inproc geth: %v", err) return fmt.Errorf("failed to attach to the inproc geth: %v", err)
} }
config := console.Config{ config := console.Config{
DataDir: utils.MakeDataDir(ctx), DataDir: utils.MakeDataDir(ctx),
@ -87,7 +87,7 @@ func localConsole(ctx *cli.Context) error {
} }
console, err := console.New(config) console, err := console.New(config)
if err != nil { if err != nil {
return fmt.Errorf("Failed to start the JavaScript console: %v", err) return fmt.Errorf("failed to start the JavaScript console: %v", err)
} }
defer console.Stop(false) defer console.Stop(false)

View File

@ -30,7 +30,7 @@ import (
) )
const ( const (
ipcAPIs = "admin:1.0 debug:1.0 engine:1.0 eth:1.0 ethash:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0" ipcAPIs = "admin:1.0 debug:1.0 engine:1.0 eth:1.0 ethash:1.0 miner:1.0 net:1.0 rpc:1.0 txpool:1.0 web3:1.0"
httpAPIs = "eth:1.0 net:1.0 rpc:1.0 web3:1.0" httpAPIs = "eth:1.0 net:1.0 rpc:1.0 web3:1.0"
) )

View File

@ -65,6 +65,7 @@ var (
utils.USBFlag, utils.USBFlag,
utils.SmartCardDaemonPathFlag, utils.SmartCardDaemonPathFlag,
utils.OverrideShanghai, utils.OverrideShanghai,
utils.EnablePersonal,
utils.EthashCacheDirFlag, utils.EthashCacheDirFlag,
utils.EthashCachesInMemoryFlag, utils.EthashCachesInMemoryFlag,
utils.EthashCachesOnDiskFlag, utils.EthashCachesOnDiskFlag,

View File

@ -785,6 +785,11 @@ var (
Usage: "Allow for unprotected (non EIP155 signed) transactions to be submitted via RPC", Usage: "Allow for unprotected (non EIP155 signed) transactions to be submitted via RPC",
Category: flags.APICategory, Category: flags.APICategory,
} }
EnablePersonal = &cli.BoolFlag{
Name: "rpc.enabledeprecatedpersonal",
Usage: "Enables the (deprecated) personal namespace",
Category: flags.APICategory,
}
// Network Settings // Network Settings
MaxPeersFlag = &cli.IntFlag{ MaxPeersFlag = &cli.IntFlag{
@ -1466,6 +1471,10 @@ func SetNodeConfig(ctx *cli.Context, cfg *node.Config) {
cfg.JWTSecret = ctx.String(JWTSecretFlag.Name) cfg.JWTSecret = ctx.String(JWTSecretFlag.Name)
} }
if ctx.IsSet(EnablePersonal.Name) {
cfg.EnablePersonal = true
}
if ctx.IsSet(ExternalSignerFlag.Name) { if ctx.IsSet(ExternalSignerFlag.Name) {
cfg.ExternalSigner = ctx.String(ExternalSignerFlag.Name) cfg.ExternalSigner = ctx.String(ExternalSignerFlag.Name)
} }
@ -1853,6 +1862,7 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) {
cfg.EthDiscoveryURLs = SplitAndTrim(urls) cfg.EthDiscoveryURLs = SplitAndTrim(urls)
} }
} }
// Override any default configs for hard coded networks. // Override any default configs for hard coded networks.
switch { switch {
case ctx.Bool(MainnetFlag.Name): case ctx.Bool(MainnetFlag.Name):

View File

@ -215,7 +215,7 @@ func (c *Console) initExtensions() error {
} }
// Compute aliases from server-provided modules. // Compute aliases from server-provided modules.
aliases := map[string]struct{}{"eth": {}, "personal": {}} aliases := map[string]struct{}{"eth": {}}
for api := range apis { for api := range apis {
if api == "web3" { if api == "web3" {
continue continue
@ -260,6 +260,7 @@ func (c *Console) initPersonal(vm *goja.Runtime, bridge *bridge) {
if personal == nil || c.prompter == nil { if personal == nil || c.prompter == nil {
return return
} }
log.Warn("Enabling deprecated personal namespace")
jeth := vm.NewObject() jeth := vm.NewObject()
vm.Set("jeth", jeth) vm.Set("jeth", jeth)
jeth.Set("openWallet", personal.Get("openWallet")) jeth.Set("openWallet", personal.Get("openWallet"))

View File

@ -199,6 +199,9 @@ type Config struct {
// JWTSecret is the path to the hex-encoded jwt secret. // JWTSecret is the path to the hex-encoded jwt secret.
JWTSecret string `toml:",omitempty"` JWTSecret string `toml:",omitempty"`
// EnablePersonal enables the deprecated personal namespace.
EnablePersonal bool `toml:"-"`
} }
// IPCEndpoint resolves an IPC endpoint based on a configured value, taking into // IPCEndpoint resolves an IPC endpoint based on a configured value, taking into

View File

@ -376,13 +376,25 @@ func (n *Node) obtainJWTSecret(cliParam string) ([]byte, error) {
// startup. It's not meant to be called at any time afterwards as it makes certain // startup. It's not meant to be called at any time afterwards as it makes certain
// assumptions about the state of the node. // assumptions about the state of the node.
func (n *Node) startRPC() error { func (n *Node) startRPC() error {
if err := n.startInProc(); err != nil { // Filter out personal api
var apis []rpc.API
for _, api := range n.rpcAPIs {
if api.Namespace == "personal" {
if n.config.EnablePersonal {
log.Warn("Deprecated personal namespace activated")
} else {
continue
}
}
apis = append(apis, api)
}
if err := n.startInProc(apis); err != nil {
return err return err
} }
// Configure IPC. // Configure IPC.
if n.ipc.endpoint != "" { if n.ipc.endpoint != "" {
if err := n.ipc.start(n.rpcAPIs); err != nil { if err := n.ipc.start(apis); err != nil {
return err return err
} }
} }
@ -510,8 +522,8 @@ func (n *Node) stopRPC() {
} }
// startInProc registers all RPC APIs on the inproc server. // startInProc registers all RPC APIs on the inproc server.
func (n *Node) startInProc() error { func (n *Node) startInProc(apis []rpc.API) error {
for _, api := range n.rpcAPIs { for _, api := range apis {
if err := n.inprocHandler.RegisterName(api.Namespace, api.Service); err != nil { if err := n.inprocHandler.RegisterName(api.Namespace, api.Service); err != nil {
return err return err
} }