diff --git a/rpcserver.go b/rpcserver.go index 20d631e2..0a6ea249 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -45,6 +45,84 @@ var ( ErrBadParamsField = errors.New("bad params field") ) +type commandHandler func(*rpcServer, btcjson.Cmd) (interface{}, error) + +// handlers maps RPC command strings to appropriate handler functions. +var handlers = map[string]commandHandler{ + "addmultisigaddress": handleAskWallet, + "addnode": handleAddNode, + "backupwallet": handleAskWallet, + "createmultisig": handleAskWallet, + "createrawtransaction": handleUnimplemented, + "debuglevel": handleDebugLevel, + "decoderawtransaction": handleDecodeRawTransaction, + "decodescript": handleUnimplemented, + "dumpprivkey": handleAskWallet, + "dumpwallet": handleAskWallet, + "encryptwallet": handleAskWallet, + "getaccount": handleAskWallet, + "getaccountaddress": handleAskWallet, + "getaddednodeinfo": handleUnimplemented, + "getaddressesbyaccount": handleAskWallet, + "getbalance": handleAskWallet, + "getbestblockhash": handleGetBestBlockHash, + "getblock": handleGetBlock, + "getblockcount": handleGetBlockCount, + "getblockhash": handleGetBlockHash, + "getblocktemplate": handleUnimplemented, + "getconnectioncount": handleGetConnectionCount, + "getdifficulty": handleGetDifficulty, + "getgenerate": handleGetGenerate, + "gethashespersec": handleGetHashesPerSec, + "getinfo": handleUnimplemented, + "getmininginfo": handleUnimplemented, + "getnettotals": handleUnimplemented, + "getnetworkhashps": handleUnimplemented, + "getnewaddress": handleUnimplemented, + "getpeerinfo": handleGetPeerInfo, + "getrawchangeaddress": handleAskWallet, + "getrawmempool": handleGetRawMempool, + "getrawtransaction": handleGetRawTransaction, + "getreceivedbyaccount": handleAskWallet, + "getreceivedbyaddress": handleAskWallet, + "gettransaction": handleAskWallet, + "gettxout": handleAskWallet, + "gettxoutsetinfo": handleAskWallet, + "getwork": handleUnimplemented, + "help": handleUnimplemented, + "importprivkey": handleAskWallet, + "importwallet": handleAskWallet, + "keypoolrefill": handleAskWallet, + "listaccounts": handleAskWallet, + "listaddressgroupings": handleAskWallet, + "listlockunspent": handleAskWallet, + "listreceivedbyaccount": handleAskWallet, + "listreceivedbyaddress": handleAskWallet, + "listsinceblock": handleAskWallet, + "listtransactions": handleAskWallet, + "listunspent": handleAskWallet, + "lockunspent": handleAskWallet, + "move": handleAskWallet, + "ping": handleUnimplemented, + "sendfrom": handleAskWallet, + "sendmany": handleAskWallet, + "sendrawtransaction": handleSendRawTransaction, + "sendtoaddress": handleAskWallet, + "setaccount": handleAskWallet, + "setgenerate": handleSetGenerate, + "settxfee": handleAskWallet, + "signmessage": handleAskWallet, + "signrawtransaction": handleAskWallet, + "stop": handleStop, + "submitblock": handleUnimplemented, + "validateaddress": handleAskWallet, + "verifychain": handleVerifyChain, + "verifymessage": handleAskWallet, + "walletlock": handleAskWallet, + "walletpassphrase": handleAskWallet, + "walletpassphrasechange": handleAskWallet, +} + // rpcServer holds the items the rpc server may need to access (config, // shutdown, main server, etc.) type rpcServer struct { @@ -341,84 +419,6 @@ func jsonRPCRead(w http.ResponseWriter, r *http.Request, s *rpcServer) { rpcsLog.Debugf(msg) } -type commandHandler func(*rpcServer, btcjson.Cmd) (interface{}, error) - -// handlers maps RPC command strings to appropriate handler functions. -var handlers = map[string]commandHandler{ - "addmultisigaddress": handleAskWallet, - "addnode": handleAddNode, - "backupwallet": handleAskWallet, - "createmultisig": handleAskWallet, - "createrawtransaction": handleUnimplemented, - "debuglevel": handleDebugLevel, - "decoderawtransaction": handleDecodeRawTransaction, - "decodescript": handleUnimplemented, - "dumpprivkey": handleAskWallet, - "dumpwallet": handleAskWallet, - "encryptwallet": handleAskWallet, - "getaccount": handleAskWallet, - "getaccountaddress": handleAskWallet, - "getaddednodeinfo": handleUnimplemented, - "getaddressesbyaccount": handleAskWallet, - "getbalance": handleAskWallet, - "getbestblockhash": handleGetBestBlockHash, - "getblock": handleGetBlock, - "getblockcount": handleGetBlockCount, - "getblockhash": handleGetBlockHash, - "getblocktemplate": handleUnimplemented, - "getconnectioncount": handleGetConnectionCount, - "getdifficulty": handleGetDifficulty, - "getgenerate": handleGetGenerate, - "gethashespersec": handleGetHashesPerSec, - "getinfo": handleUnimplemented, - "getmininginfo": handleUnimplemented, - "getnettotals": handleUnimplemented, - "getnetworkhashps": handleUnimplemented, - "getnewaddress": handleUnimplemented, - "getpeerinfo": handleGetPeerInfo, - "getrawchangeaddress": handleAskWallet, - "getrawmempool": handleGetRawMempool, - "getrawtransaction": handleGetRawTransaction, - "getreceivedbyaccount": handleAskWallet, - "getreceivedbyaddress": handleAskWallet, - "gettransaction": handleAskWallet, - "gettxout": handleAskWallet, - "gettxoutsetinfo": handleAskWallet, - "getwork": handleUnimplemented, - "help": handleUnimplemented, - "importprivkey": handleAskWallet, - "importwallet": handleAskWallet, - "keypoolrefill": handleAskWallet, - "listaccounts": handleAskWallet, - "listaddressgroupings": handleAskWallet, - "listlockunspent": handleAskWallet, - "listreceivedbyaccount": handleAskWallet, - "listreceivedbyaddress": handleAskWallet, - "listsinceblock": handleAskWallet, - "listtransactions": handleAskWallet, - "listunspent": handleAskWallet, - "lockunspent": handleAskWallet, - "move": handleAskWallet, - "ping": handleUnimplemented, - "sendfrom": handleAskWallet, - "sendmany": handleAskWallet, - "sendrawtransaction": handleSendRawTransaction, - "sendtoaddress": handleAskWallet, - "setaccount": handleAskWallet, - "setgenerate": handleSetGenerate, - "settxfee": handleAskWallet, - "signmessage": handleAskWallet, - "signrawtransaction": handleAskWallet, - "stop": handleStop, - "submitblock": handleUnimplemented, - "validateaddress": handleAskWallet, - "verifychain": handleVerifyChain, - "verifymessage": handleAskWallet, - "walletlock": handleAskWallet, - "walletpassphrase": handleAskWallet, - "walletpassphrasechange": handleAskWallet, -} - // handleUnimplemented is a temporary handler for commands that we should // support but do not. func handleUnimplemented(s *rpcServer, cmd btcjson.Cmd) (interface{}, error) { diff --git a/rpcwebsocket.go b/rpcwebsocket.go index bc9c6a8e..075940c8 100644 --- a/rpcwebsocket.go +++ b/rpcwebsocket.go @@ -19,6 +19,19 @@ import ( "sync" ) +type wsCommandHandler func(*rpcServer, btcjson.Cmd, chan []byte, *requestContexts) error + +// wsHandlers maps RPC command strings to appropriate websocket handler +// functions. +var wsHandlers = map[string]wsCommandHandler{ + "getcurrentnet": handleGetCurrentNet, + "getbestblock": handleGetBestBlock, + "notifynewtxs": handleNotifyNewTXs, + "notifyspent": handleNotifySpent, + "rescan": handleRescan, + "sendrawtransaction:": handleWalletSendRawTransaction, +} + // wsContext holds the items the RPC server needs to handle websocket // connections for wallets. type wsContext struct { @@ -225,17 +238,6 @@ type requestContexts struct { minedTxRequests map[btcwire.ShaHash]bool } -type wsCommandHandler func(*rpcServer, btcjson.Cmd, chan []byte, *requestContexts) error - -var wsHandlers = map[string]wsCommandHandler{ - "getcurrentnet": handleGetCurrentNet, - "getbestblock": handleGetBestBlock, - "notifynewtxs": handleNotifyNewTXs, - "notifyspent": handleNotifySpent, - "rescan": handleRescan, - "sendrawtransaction:": handleWalletSendRawTransaction, -} - // respondToAnyCmd checks that a parsed command is a standard or // extension JSON-RPC command and runs the proper handler to reply to // the command. Any and all responses are sent to the wallet from