diff options
author | Bas van Kervel <bas@ethdev.com> | 2016-03-14 16:38:54 +0800 |
---|---|---|
committer | Bas van Kervel <bas@ethdev.com> | 2016-04-12 17:02:39 +0800 |
commit | aa9fff3e68b1def0a9a22009c233150bf9ba481f (patch) | |
tree | 926c241574d6d80dfe4ffd6d2e447a9f7f84dc8b /node/api.go | |
parent | 7e02105672cda92889a78db864a5701d78f45eb2 (diff) | |
download | dexon-aa9fff3e68b1def0a9a22009c233150bf9ba481f.tar dexon-aa9fff3e68b1def0a9a22009c233150bf9ba481f.tar.gz dexon-aa9fff3e68b1def0a9a22009c233150bf9ba481f.tar.bz2 dexon-aa9fff3e68b1def0a9a22009c233150bf9ba481f.tar.lz dexon-aa9fff3e68b1def0a9a22009c233150bf9ba481f.tar.xz dexon-aa9fff3e68b1def0a9a22009c233150bf9ba481f.tar.zst dexon-aa9fff3e68b1def0a9a22009c233150bf9ba481f.zip |
rpc: various fixes/enhancements
rpc: be less restrictive on the request id
rpc: improved documentation
console: upgrade web3.js to version 0.16.0
rpc: cache http connections
rpc: rename wsDomains parameter to wsOrigins
Diffstat (limited to 'node/api.go')
-rw-r--r-- | node/api.go | 47 |
1 files changed, 43 insertions, 4 deletions
diff --git a/node/api.go b/node/api.go index 8a2578410..f199a8d3d 100644 --- a/node/api.go +++ b/node/api.go @@ -25,6 +25,7 @@ import ( "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/p2p/discover" + "github.com/ethereum/go-ethereum/rpc" "github.com/rcrowley/go-metrics" ) @@ -58,14 +59,33 @@ func (api *PrivateAdminAPI) AddPeer(url string) (bool, error) { } // StartRPC starts the HTTP RPC API server. -func (api *PrivateAdminAPI) StartRPC(host string, port int, cors string, apis string) (bool, error) { +func (api *PrivateAdminAPI) StartRPC(host *string, port *rpc.HexNumber, cors *string, apis *string) (bool, error) { api.node.lock.Lock() defer api.node.lock.Unlock() if api.node.httpHandler != nil { return false, fmt.Errorf("HTTP RPC already running on %s", api.node.httpEndpoint) } - if err := api.node.startHTTP(fmt.Sprintf("%s:%d", host, port), api.node.rpcAPIs, strings.Split(apis, ","), cors); err != nil { + + if host == nil { + host = &api.node.httpHost + } + if port == nil { + port = rpc.NewHexNumber(api.node.httpPort) + } + if cors == nil { + cors = &api.node.httpCors + } + + modules := api.node.httpWhitelist + if apis != nil { + modules = nil + for _, m := range strings.Split(*apis, ",") { + modules = append(modules, strings.TrimSpace(m)) + } + } + + if err := api.node.startHTTP(fmt.Sprintf("%s:%d", *host, port.Int()), api.node.rpcAPIs, modules, *cors); err != nil { return false, err } return true, nil @@ -84,14 +104,33 @@ func (api *PrivateAdminAPI) StopRPC() (bool, error) { } // StartWS starts the websocket RPC API server. -func (api *PrivateAdminAPI) StartWS(host string, port int, cors string, apis string) (bool, error) { +func (api *PrivateAdminAPI) StartWS(host *string, port *rpc.HexNumber, allowedOrigins *string, apis *string) (bool, error) { api.node.lock.Lock() defer api.node.lock.Unlock() if api.node.wsHandler != nil { return false, fmt.Errorf("WebSocket RPC already running on %s", api.node.wsEndpoint) } - if err := api.node.startWS(fmt.Sprintf("%s:%d", host, port), api.node.rpcAPIs, strings.Split(apis, ","), cors); err != nil { + + if host == nil { + host = &api.node.wsHost + } + if port == nil { + port = rpc.NewHexNumber(api.node.wsPort) + } + if allowedOrigins == nil { + allowedOrigins = &api.node.wsOrigins + } + + modules := api.node.wsWhitelist + if apis != nil { + modules = nil + for _, m := range strings.Split(*apis, ",") { + modules = append(modules, strings.TrimSpace(m)) + } + } + + if err := api.node.startWS(fmt.Sprintf("%s:%d", *host, port.Int()), api.node.rpcAPIs, modules, *allowedOrigins); err != nil { return false, err } return true, nil |