diff options
author | Daniel Cousens <github@dcousens.com> | 2016-01-15 11:55:17 +1100 |
---|---|---|
committer | Daniel Cousens <github@dcousens.com> | 2016-01-21 08:36:55 +1100 |
commit | a0eaff8a1d18ebba33cdea4cd1efaddeb55519e7 (patch) | |
tree | 5f13a0b8968d60274d86c44b685c9c980f7a33ca /src/rpcprotocol.cpp | |
parent | b92ea98503e64ea6ddc5c04b879e59b1755d5efc (diff) |
move rpc* to rpc/
Diffstat (limited to 'src/rpcprotocol.cpp')
-rw-r--r-- | src/rpcprotocol.cpp | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/src/rpcprotocol.cpp b/src/rpcprotocol.cpp deleted file mode 100644 index b7605545d8..0000000000 --- a/src/rpcprotocol.cpp +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright (c) 2010 Satoshi Nakamoto -// Copyright (c) 2009-2015 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "rpcprotocol.h" - -#include "random.h" -#include "tinyformat.h" -#include "util.h" -#include "utilstrencodings.h" -#include "utiltime.h" -#include "version.h" - -#include <stdint.h> -#include <fstream> - -using namespace std; - -/** - * JSON-RPC protocol. Bitcoin speaks version 1.0 for maximum compatibility, - * but uses JSON-RPC 1.1/2.0 standards for parts of the 1.0 standard that were - * unspecified (HTTP errors and contents of 'error'). - * - * 1.0 spec: http://json-rpc.org/wiki/specification - * 1.2 spec: http://jsonrpc.org/historical/json-rpc-over-http.html - */ - -string JSONRPCRequest(const string& strMethod, const UniValue& params, const UniValue& id) -{ - UniValue request(UniValue::VOBJ); - request.push_back(Pair("method", strMethod)); - request.push_back(Pair("params", params)); - request.push_back(Pair("id", id)); - return request.write() + "\n"; -} - -UniValue JSONRPCReplyObj(const UniValue& result, const UniValue& error, const UniValue& id) -{ - UniValue reply(UniValue::VOBJ); - if (!error.isNull()) - reply.push_back(Pair("result", NullUniValue)); - else - reply.push_back(Pair("result", result)); - reply.push_back(Pair("error", error)); - reply.push_back(Pair("id", id)); - return reply; -} - -string JSONRPCReply(const UniValue& result, const UniValue& error, const UniValue& id) -{ - UniValue reply = JSONRPCReplyObj(result, error, id); - return reply.write() + "\n"; -} - -UniValue JSONRPCError(int code, const string& message) -{ - UniValue error(UniValue::VOBJ); - error.push_back(Pair("code", code)); - error.push_back(Pair("message", message)); - return error; -} - -/** Username used when cookie authentication is in use (arbitrary, only for - * recognizability in debugging/logging purposes) - */ -static const std::string COOKIEAUTH_USER = "__cookie__"; -/** Default name for auth cookie file */ -static const std::string COOKIEAUTH_FILE = ".cookie"; - -boost::filesystem::path GetAuthCookieFile() -{ - boost::filesystem::path path(GetArg("-rpccookiefile", COOKIEAUTH_FILE)); - if (!path.is_complete()) path = GetDataDir() / path; - return path; -} - -bool GenerateAuthCookie(std::string *cookie_out) -{ - unsigned char rand_pwd[32]; - GetRandBytes(rand_pwd, 32); - std::string cookie = COOKIEAUTH_USER + ":" + EncodeBase64(&rand_pwd[0],32); - - /** the umask determines what permissions are used to create this file - - * these are set to 077 in init.cpp unless overridden with -sysperms. - */ - std::ofstream file; - boost::filesystem::path filepath = GetAuthCookieFile(); - file.open(filepath.string().c_str()); - if (!file.is_open()) { - LogPrintf("Unable to open cookie authentication file %s for writing\n", filepath.string()); - return false; - } - file << cookie; - file.close(); - LogPrintf("Generated RPC authentication cookie %s\n", filepath.string()); - - if (cookie_out) - *cookie_out = cookie; - return true; -} - -bool GetAuthCookie(std::string *cookie_out) -{ - std::ifstream file; - std::string cookie; - boost::filesystem::path filepath = GetAuthCookieFile(); - file.open(filepath.string().c_str()); - if (!file.is_open()) - return false; - std::getline(file, cookie); - file.close(); - - if (cookie_out) - *cookie_out = cookie; - return true; -} - -void DeleteAuthCookie() -{ - try { - boost::filesystem::remove(GetAuthCookieFile()); - } catch (const boost::filesystem::filesystem_error& e) { - LogPrintf("%s: Unable to remove random auth cookie file: %s\n", __func__, e.what()); - } -} - |