add new command line options: ws, wsbind, and wsapi

new command line options:
  --ws                    Enable the Websocket JSON-RPC server
  --wsbind:<value>        Set address:port pair(s) (comma-separated) Websocket JSON-RPC server will bind to (default: localhost:8546)
  --wsapi:<value>         Enable specific set of Websocket RPC API from list (comma-separated) (available: eth, debug)

fixes #770
This commit is contained in:
jangko 2021-07-31 19:27:13 +07:00
parent 6015a4e029
commit c142119487
No known key found for this signature in database
GPG Key ID: 31702AE10541E6B9
1 changed files with 30 additions and 0 deletions

View File

@ -126,6 +126,7 @@ type
prune*: PruneMode
graphql*: GraphqlConfiguration
rpc*: RpcConfiguration ## JSON-RPC configuration
ws*: RpcConfiguration ## Websocket JSON-RPC configuration
net*: NetConfiguration ## Network configuration
debug*: DebugConfiguration ## Debug configuration
customGenesis*: CustomGenesis ## Custom Genesis Configuration
@ -462,6 +463,27 @@ proc processGraphqlArguments(key, value: string): ConfigStatus =
else:
result = EmptyOption
proc processWsArguments(key, value: string): ConfigStatus =
## Processes only `Websocket RPC` related command line options
result = Success
let config = getConfiguration()
let skey = key.toLowerAscii()
if skey == "ws":
if RpcFlags.Enabled notin config.ws.flags:
config.ws.flags.incl(RpcFlags.Enabled)
config.ws.flags.incl(defaultRpcApi)
elif skey == "wsbind":
config.ws.binds.setLen(0)
result = processAddressPortsList(value, config.ws.binds)
elif skey == "wsapi":
if RpcFlags.Enabled in config.ws.flags:
config.ws.flags.excl(defaultRpcApi)
else:
config.ws.flags.incl(RpcFlags.Enabled)
result = processRpcApiList(value, config.ws.flags)
else:
result = EmptyOption
proc setBootnodes(onodes: var seq[ENode], nodeUris: openarray[string]) =
var node: ENode
onodes = newSeqOfCap[ENode](nodeUris.len)
@ -677,6 +699,10 @@ proc initConfiguration(): NimbusConfiguration =
result.rpc.flags = {}
result.rpc.binds = @[initTAddress("127.0.0.1:8545")]
## Websocket RPC defaults
result.ws.flags = {}
result.ws.binds = @[initTAddress("127.0.0.1:8546")]
## Network defaults
result.net.setNetwork(defaultNetwork)
result.net.maxPeers = 25
@ -765,6 +791,9 @@ LOCAL SERVICE OPTIONS:
--rpcapi:<value> Enable specific set of RPC API from list (comma-separated) (available: eth, debug)
--graphql Enable the HTTP-GraphQL server
--graphqlbind:<value> Set address:port pair GraphQL server will bind (default: localhost:8547)
--ws Enable the Websocket JSON-RPC server
--wsbind:<value> Set address:port pair(s) (comma-separated) Websocket JSON-RPC server will bind to (default: localhost:8546)
--wsapi:<value> Enable specific set of Websocket RPC API from list (comma-separated) (available: eth, debug)
LOGGING AND DEBUGGING OPTIONS:
--log-level:<value> One of: $2 (default: $3)
@ -812,6 +841,7 @@ when declared(os.paramCount): # not available with `--app:lib`
processArgument processNetArguments, key, value, msg
processArgument processDebugArguments, key, value, msg
processArgument processGraphqlArguments, key, value, msg
processArgument processWsArguments, key, value, msg
if result != Success:
msg = "Unknown option: '" & key & "'."
break