26 request.
pushKV(
"method", strMethod);
27 request.
pushKV(
"params", params);
38 reply.
pushKV(
"result", result);
39 reply.
pushKV(
"error", error);
47 return reply.
write() +
"\n";
53 error.
pushKV(
"code", code);
54 error.
pushKV(
"message", message);
77 const size_t COOKIE_SIZE = 32;
78 unsigned char rand_pwd[COOKIE_SIZE];
87 file.open(filepath_tmp);
88 if (!file.is_open()) {
89 LogPrintf(
"Unable to open cookie authentication file %s for writing\n", filepath_tmp.string());
97 LogPrintf(
"Unable to rename cookie authentication file %s to %s\n", filepath_tmp.string(), filepath.string());
100 LogPrintf(
"Generated RPC authentication cookie %s\n", filepath.string());
103 *cookie_out = cookie;
115 std::getline(file, cookie);
119 *cookie_out = cookie;
127 }
catch (
const fs::filesystem_error& e) {
135 throw std::runtime_error(
"Batch must be an array");
137 std::vector<UniValue> batch(num);
138 for (
size_t i=0; i<in.
size(); ++i) {
141 throw std::runtime_error(
"Batch member must be object");
143 size_t id = rec[
"id"].
get_int();
145 throw std::runtime_error(
"Batch member id larger than size");
UniValue JSONRPCRequestObj(const std::string &strMethod, const UniValue ¶ms, const UniValue &id)
JSON-RPC protocol.
static void LogPrintf(const char *fmt, const Args &... args)
void DeleteAuthCookie()
Delete RPC authentication cookie from disk.
void GetRandBytes(unsigned char *buf, int num) noexcept
Overall design of the RNG and entropy sources.
std::string JSONRPCReply(const UniValue &result, const UniValue &error, const UniValue &id)
std::vector< UniValue > JSONRPCProcessBatchReply(const UniValue &in, size_t num)
Parse JSON-RPC batch reply into a vector.
bool GetAuthCookie(std::string *cookie_out)
Read the RPC authentication cookie from disk.
std::string write(unsigned int prettyIndent=0, unsigned int indentLevel=0) const
bool pushKV(const std::string &key, const UniValue &val)
static fs::path GetAuthCookieFile(bool temp=false)
Get name of RPC authentication cookie file.
fs::path AbsPathForConfigVal(const fs::path &path, bool net_specific)
Most paths passed as configuration arguments are treated as relative to the datadir if they are not a...
bool RenameOver(fs::path src, fs::path dest)
std::string get_filesystem_error_message(const fs::filesystem_error &e)
bool GenerateAuthCookie(std::string *cookie_out)
Generate a new RPC authentication cookie and write it to disk.
static const std::string COOKIEAUTH_USER
Username used when cookie authentication is in use (arbitrary, only for recognizability in debugging/...
std::string GetArg(const std::string &strArg, const std::string &strDefault) const
Return string argument or default value.
std::string HexStr(const T itbegin, const T itend)
static const std::string COOKIEAUTH_FILE
Default name for auth cookie file.
const UniValue NullUniValue
UniValue JSONRPCError(int code, const std::string &message)
UniValue JSONRPCReplyObj(const UniValue &result, const UniValue &error, const UniValue &id)
bool error(const char *fmt, const Args &... args)