Bitcoin Core  27.99.0
P2P Digital Currency
Functions | Variables
request.cpp File Reference
#include <rpc/request.h>
#include <common/args.h>
#include <logging.h>
#include <random.h>
#include <rpc/protocol.h>
#include <util/fs.h>
#include <util/fs_helpers.h>
#include <util/strencodings.h>
#include <fstream>
#include <stdexcept>
#include <string>
#include <vector>
Include dependency graph for request.cpp:

Go to the source code of this file.

Functions

UniValue JSONRPCRequestObj (const std::string &strMethod, const UniValue &params, const UniValue &id)
 JSON-RPC protocol. More...
 
UniValue JSONRPCReplyObj (UniValue result, UniValue error, std::optional< UniValue > id, JSONRPCVersion jsonrpc_version)
 
UniValue JSONRPCError (int code, const std::string &message)
 
static fs::path GetAuthCookieFile (bool temp=false)
 Get name of RPC authentication cookie file. More...
 
bool GenerateAuthCookie (std::string *cookie_out, std::optional< fs::perms > cookie_perms)
 Generate a new RPC authentication cookie and write it to disk. More...
 
bool GetAuthCookie (std::string *cookie_out)
 Read the RPC authentication cookie from disk. More...
 
void DeleteAuthCookie ()
 Delete RPC authentication cookie from disk. More...
 
std::vector< UniValueJSONRPCProcessBatchReply (const UniValue &in)
 Parse JSON-RPC batch reply into a vector. More...
 

Variables

static const std::string COOKIEAUTH_USER = "__cookie__"
 Username used when cookie authentication is in use (arbitrary, only for recognizability in debugging/logging purposes) More...
 
static const char *const COOKIEAUTH_FILE = ".cookie"
 Default name for auth cookie file. More...
 
static bool g_generated_cookie = false
 

Function Documentation

◆ DeleteAuthCookie()

void DeleteAuthCookie ( )

Delete RPC authentication cookie from disk.

Definition at line 156 of file request.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GenerateAuthCookie()

bool GenerateAuthCookie ( std::string *  cookie_out,
std::optional< fs::perms >  cookie_perms 
)

Generate a new RPC authentication cookie and write it to disk.

the umask determines what permissions are used to create this file - these are set to 0077 in common/system.cpp.

Definition at line 97 of file request.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetAuthCookie()

bool GetAuthCookie ( std::string *  cookie_out)

Read the RPC authentication cookie from disk.

Definition at line 140 of file request.cpp.

Here is the call graph for this function:

◆ GetAuthCookieFile()

static fs::path GetAuthCookieFile ( bool  temp = false)
static

Get name of RPC authentication cookie file.

Definition at line 86 of file request.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ JSONRPCError()

UniValue JSONRPCError ( int  code,
const std::string &  message 
)

Definition at line 70 of file request.cpp.

Here is the call graph for this function:

◆ JSONRPCProcessBatchReply()

std::vector<UniValue> JSONRPCProcessBatchReply ( const UniValue in)

Parse JSON-RPC batch reply into a vector.

Definition at line 168 of file request.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ JSONRPCReplyObj()

UniValue JSONRPCReplyObj ( UniValue  result,
UniValue  error,
std::optional< UniValue id,
JSONRPCVersion  jsonrpc_version 
)

Definition at line 51 of file request.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ JSONRPCRequestObj()

UniValue JSONRPCRequestObj ( const std::string &  strMethod,
const UniValue params,
const UniValue id 
)

JSON-RPC protocol.

JSON-RPC 2.0 request, only used in bitcoin-cli.

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

If the server receives a request with the JSON-RPC 2.0 marker {"jsonrpc": "2.0"} then Bitcoin will respond with a strictly specified response. It will only return an HTTP error code if an actual HTTP error is encountered such as the endpoint is not found (404) or the request is not formatted correctly (500). Otherwise the HTTP code is always OK (200) and RPC errors will be included in the response body.

2.0 spec: https://www.jsonrpc.org/specification

Also see http://www.simple-is-better.org/rpc/#differences-between-1-0-and-2-0

Definition at line 41 of file request.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ COOKIEAUTH_FILE

const char* const COOKIEAUTH_FILE = ".cookie"
static

Default name for auth cookie file.

Definition at line 83 of file request.cpp.

◆ COOKIEAUTH_USER

const std::string COOKIEAUTH_USER = "__cookie__"
static

Username used when cookie authentication is in use (arbitrary, only for recognizability in debugging/logging purposes)

Definition at line 81 of file request.cpp.

◆ g_generated_cookie

bool g_generated_cookie = false
static

Definition at line 95 of file request.cpp.