mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-19 13:27:35 +02:00
Merge 5c9b06db81 into merged_master (Bitcoin PR #21302)
This commit is contained in:
commit
e0ce471ef6
4 changed files with 104 additions and 0 deletions
|
|
@ -118,17 +118,80 @@ std::vector<unsigned char> ParseHexO(const UniValue& o, std::string strKey)
|
|||
return ParseHexV(find_value(o, strKey), strKey);
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
||||
/**
|
||||
* Quote an argument for shell.
|
||||
*
|
||||
* @note This is intended for help, not for security-sensitive purposes.
|
||||
*/
|
||||
std::string ShellQuote(const std::string& s)
|
||||
{
|
||||
std::string result;
|
||||
result.reserve(s.size() * 2);
|
||||
for (const char ch: s) {
|
||||
if (ch == '\'') {
|
||||
result += "'\''";
|
||||
} else {
|
||||
result += ch;
|
||||
}
|
||||
}
|
||||
return "'" + result + "'";
|
||||
}
|
||||
|
||||
/**
|
||||
* Shell-quotes the argument if it needs quoting, else returns it literally, to save typing.
|
||||
*
|
||||
* @note This is intended for help, not for security-sensitive purposes.
|
||||
*/
|
||||
std::string ShellQuoteIfNeeded(const std::string& s)
|
||||
{
|
||||
for (const char ch: s) {
|
||||
if (ch == ' ' || ch == '\'' || ch == '"') {
|
||||
return ShellQuote(s);
|
||||
}
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
std::string HelpExampleCli(const std::string& methodname, const std::string& args)
|
||||
{
|
||||
return "> elements-cli " + methodname + " " + args + "\n";
|
||||
}
|
||||
|
||||
std::string HelpExampleCliNamed(const std::string& methodname, const RPCArgList& args)
|
||||
{
|
||||
std::string result = "> bitcoin-cli -named " + methodname;
|
||||
for (const auto& argpair: args) {
|
||||
const auto& value = argpair.second.isStr()
|
||||
? argpair.second.get_str()
|
||||
: argpair.second.write();
|
||||
result += " " + argpair.first + "=" + ShellQuoteIfNeeded(value);
|
||||
}
|
||||
result += "\n";
|
||||
return result;
|
||||
}
|
||||
|
||||
std::string HelpExampleRpc(const std::string& methodname, const std::string& args)
|
||||
{
|
||||
return "> curl --user myusername --data-binary '{\"jsonrpc\": \"1.0\", \"id\": \"curltest\", "
|
||||
"\"method\": \"" + methodname + "\", \"params\": [" + args + "]}' -H 'content-type: text/plain;' http://127.0.0.1:7041/\n";
|
||||
}
|
||||
|
||||
std::string HelpExampleRpcNamed(const std::string& methodname, const RPCArgList& args)
|
||||
{
|
||||
UniValue params(UniValue::VOBJ);
|
||||
for (const auto& param: args) {
|
||||
params.pushKV(param.first, param.second);
|
||||
}
|
||||
|
||||
return "> curl --user myusername --data-binary '{\"jsonrpc\": \"1.0\", \"id\": \"curltest\", "
|
||||
"\"method\": \"" + methodname + "\", \"params\": " + params.write() + "}' -H 'content-type: text/plain;' http://127.0.0.1:8332/\n";
|
||||
}
|
||||
|
||||
// Converts a hex string to a public key if possible
|
||||
CPubKey HexToPubKey(const std::string& hex_in)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue