From 7b49cb0bbc0710d92c5afd46e9bc4b54ccab264d Mon Sep 17 00:00:00 2001 From: Manav Darji Date: Thu, 3 Feb 2022 18:34:44 +0530 Subject: [PATCH] Split modules for cli (#315) * add separate module config for http and ws * update cli docs --- docs/README.md | 14 -------------- docs/cli/server.md | 6 ++++-- internal/cli/server/config.go | 13 +++++++------ internal/cli/server/flags.go | 17 ++++++++++++----- internal/cli/server/server.go | 2 +- 5 files changed, 24 insertions(+), 28 deletions(-) diff --git a/docs/README.md b/docs/README.md index b5d7993d2c..95ba38b0da 100644 --- a/docs/README.md +++ b/docs/README.md @@ -19,18 +19,4 @@ $ bor server $ bor server --config ./legacy.toml ``` -- Modules, vhost and Cors configuration are common for all jsonrpc endpoints. - -Before: - -``` -$ bor --http --http.modules "eth,web" --ws --ws.modules "eth,web" -``` - -Now: - -``` -$ bor server --http --ws --jsonrpc.modules "eth,web" -``` - - ```Admin```, ```Personal``` and account related endpoints in ```Eth``` are being removed from the JsonRPC interface. Some of this functionality will be moved to the new GRPC server for operational tasks. diff --git a/docs/cli/server.md b/docs/cli/server.md index e2d961579a..14e645907b 100644 --- a/docs/cli/server.md +++ b/docs/cli/server.md @@ -109,8 +109,6 @@ The ```bor server``` command runs the Bor client. - ```jsonrpc.vhosts```: Comma separated list of virtual hostnames from which to accept requests (server enforced). Accepts '*' wildcard. -- ```jsonrpc.modules```: API's offered over the HTTP-RPC interface. - - ```http```: Enable the HTTP-RPC server. - ```http.addr```: HTTP-RPC server listening interface. @@ -119,6 +117,8 @@ The ```bor server``` command runs the Bor client. - ```http.rpcprefix```: HTTP path path prefix on which JSON-RPC is served. Use '/' to serve on all paths. +- ```http.modules```: API's offered over the HTTP-RPC interface. + - ```ws```: Enable the WS-RPC server. - ```ws.addr```: WS-RPC server listening interface. @@ -127,6 +127,8 @@ The ```bor server``` command runs the Bor client. - ```ws.rpcprefix```: HTTP path prefix on which JSON-RPC is served. Use '/' to serve on all paths. +- ```ws.modules```: API's offered over the WS-RPC interface. + - ```graphql```: Enable GraphQL on the HTTP-RPC server. Note that GraphQL can only be started if an HTTP server is started as well. ### P2P Options diff --git a/internal/cli/server/config.go b/internal/cli/server/config.go index a42470af45..0c3b8a5549 100644 --- a/internal/cli/server/config.go +++ b/internal/cli/server/config.go @@ -214,9 +214,6 @@ type JsonRPCConfig struct { // IPCPath is the path of the ipc endpoint IPCPath string `hcl:"ipc-path,optional"` - // Modules is the list of enabled api modules - Modules []string `hcl:"modules,optional"` - // VHost is the list of valid virtual hosts VHost []string `hcl:"vhost,optional"` @@ -256,6 +253,9 @@ type APIConfig struct { // Host is the address to bind the api Host string `hcl:"host,optional"` + + // Modules is the list of enabled api modules + Modules []string `hcl:"modules,optional"` } type GpoConfig struct { @@ -438,7 +438,6 @@ func DefaultConfig() *Config { JsonRPC: &JsonRPCConfig{ IPCDisable: false, IPCPath: "", - Modules: []string{"web3", "net"}, Cors: []string{"*"}, VHost: []string{"*"}, GasCap: ethconfig.Defaults.RPCGasCap, @@ -448,12 +447,14 @@ func DefaultConfig() *Config { Port: 8545, Prefix: "", Host: "localhost", + Modules: []string{"web3", "net"}, }, Ws: &APIConfig{ Enabled: false, Port: 8546, Prefix: "", Host: "localhost", + Modules: []string{"web3", "net"}, }, Graphql: &APIConfig{ Enabled: false, @@ -851,11 +852,11 @@ func (c *Config) buildNode() (*node.Config, error) { ListenAddr: c.P2P.Bind + ":" + strconv.Itoa(int(c.P2P.Port)), DiscoveryV5: c.P2P.Discovery.V5Enabled, }, - HTTPModules: c.JsonRPC.Modules, + HTTPModules: c.JsonRPC.Http.Modules, HTTPCors: c.JsonRPC.Cors, HTTPVirtualHosts: c.JsonRPC.VHost, HTTPPathPrefix: c.JsonRPC.Http.Prefix, - WSModules: c.JsonRPC.Modules, + WSModules: c.JsonRPC.Ws.Modules, WSOrigins: c.JsonRPC.Cors, WSPathPrefix: c.JsonRPC.Ws.Prefix, GraphQLCors: c.JsonRPC.Cors, diff --git a/internal/cli/server/flags.go b/internal/cli/server/flags.go index 7403fc6c88..925c4b397e 100644 --- a/internal/cli/server/flags.go +++ b/internal/cli/server/flags.go @@ -263,11 +263,6 @@ func (c *Command) Flags() *flagset.Flagset { Usage: "Comma separated list of virtual hostnames from which to accept requests (server enforced). Accepts '*' wildcard.", Value: &c.cliConfig.JsonRPC.VHost, }) - f.SliceStringFlag(&flagset.SliceStringFlag{ - Name: "jsonrpc.modules", - Usage: "API's offered over the HTTP-RPC interface", - Value: &c.cliConfig.JsonRPC.Modules, - }) // http options f.BoolFlag(&flagset.BoolFlag{ @@ -290,6 +285,12 @@ func (c *Command) Flags() *flagset.Flagset { Usage: "HTTP path path prefix on which JSON-RPC is served. Use '/' to serve on all paths.", Value: &c.cliConfig.JsonRPC.Http.Prefix, }) + f.SliceStringFlag(&flagset.SliceStringFlag{ + Name: "http.modules", + Usage: "API's offered over the HTTP-RPC interface", + Value: &c.cliConfig.JsonRPC.Http.Modules, + }) + // ws options f.BoolFlag(&flagset.BoolFlag{ Name: "ws", @@ -311,6 +312,12 @@ func (c *Command) Flags() *flagset.Flagset { Usage: "HTTP path prefix on which JSON-RPC is served. Use '/' to serve on all paths.", Value: &c.cliConfig.JsonRPC.Ws.Prefix, }) + f.SliceStringFlag(&flagset.SliceStringFlag{ + Name: "ws.modules", + Usage: "API's offered over the WS-RPC interface", + Value: &c.cliConfig.JsonRPC.Ws.Modules, + }) + // graphql options f.BoolFlag(&flagset.BoolFlag{ Name: "graphql", diff --git a/internal/cli/server/server.go b/internal/cli/server/server.go index f20ac43d1c..e882429e86 100644 --- a/internal/cli/server/server.go +++ b/internal/cli/server/server.go @@ -96,7 +96,7 @@ func NewServer(config *Config) (*Server, error) { // graphql is started from another place if config.JsonRPC.Graphql.Enabled { - if err := graphql.New(stack, backend.APIBackend, config.JsonRPC.Cors, config.JsonRPC.Modules); err != nil { + if err := graphql.New(stack, backend.APIBackend, config.JsonRPC.Cors, config.JsonRPC.VHost); err != nil { return nil, fmt.Errorf("failed to register the GraphQL service: %v", err) } }