From 323adb467afb3cadd8fac3d88ef18b9a77b17d37 Mon Sep 17 00:00:00 2001 From: darosior Date: Wed, 22 May 2019 16:08:16 +0200 Subject: [PATCH] jsonrpc: Add a category field to commands. A new string field is added to the command structure and is specified at the creation of each native command, and in the JSON created by 'json_add_help_command()'. --- lightningd/chaintopology.c | 1 + lightningd/connect_control.c | 1 + lightningd/gossip_control.c | 9 +++++++++ lightningd/invoice.c | 19 ++++++++++++++----- lightningd/jsonrpc.c | 8 +++++++- lightningd/jsonrpc.h | 1 + lightningd/log.c | 1 + lightningd/memdump.c | 2 ++ lightningd/opening_control.c | 8 +++++--- lightningd/options.c | 2 +- lightningd/pay.c | 4 ++++ lightningd/peer_control.c | 12 +++++++++++- lightningd/peer_htlcs.c | 8 ++++++-- lightningd/ping.c | 1 + wallet/walletrpc.c | 22 ++++++++++++++-------- 15 files changed, 78 insertions(+), 21 deletions(-) diff --git a/lightningd/chaintopology.c b/lightningd/chaintopology.c index 4bf302546..7db454bc9 100644 --- a/lightningd/chaintopology.c +++ b/lightningd/chaintopology.c @@ -527,6 +527,7 @@ static struct command_result *json_feerates(struct command *cmd, static const struct json_command feerates_command = { "feerates", + "bitcoin", json_feerates, "Return feerate estimates, either satoshi-per-kw ({style} perkw) or satoshi-per-kb ({style} perkb)." }; diff --git a/lightningd/connect_control.c b/lightningd/connect_control.c index beb8a3457..c02c037a1 100644 --- a/lightningd/connect_control.c +++ b/lightningd/connect_control.c @@ -175,6 +175,7 @@ static struct command_result *json_connect(struct command *cmd, static const struct json_command connect_command = { "connect", + "network", json_connect, "Connect to {id} at {host} (which can end in ':port' if not default). " "{id} can also be of the form id@host" diff --git a/lightningd/gossip_control.c b/lightningd/gossip_control.c index 48eee1f85..060aee855 100644 --- a/lightningd/gossip_control.c +++ b/lightningd/gossip_control.c @@ -253,6 +253,7 @@ static struct command_result *json_listnodes(struct command *cmd, static const struct json_command listnodes_command = { "listnodes", + "network", json_listnodes, "Show node {id} (or all, if no {id}), in our local network view" }; @@ -352,6 +353,7 @@ static struct command_result *json_getroute(struct command *cmd, static const struct json_command getroute_command = { "getroute", + "channels", json_getroute, "Show route to {id} for {msatoshi}, using {riskfactor} and optional {cltv} (default 9). " "If specified search from {fromid} otherwise use this node as source. " @@ -471,6 +473,7 @@ static struct command_result *json_listchannels(struct command *cmd, static const struct json_command listchannels_command = { "listchannels", + "channels", json_listchannels, "Show channel {short_channel_id} or {source} (or all known channels, if not specified)" }; @@ -540,6 +543,7 @@ static struct command_result *json_dev_query_scids(struct command *cmd, static const struct json_command dev_query_scids_command = { "dev-query-scids", + "developer", json_dev_query_scids, "Query peer {id} for [scids]" }; @@ -572,6 +576,7 @@ json_dev_send_timestamp_filter(struct command *cmd, static const struct json_command dev_send_timestamp_filter = { "dev-send-timestamp-filter", + "developer", json_dev_send_timestamp_filter, "Send peer {id} the timestamp filter {first} {range}" }; @@ -641,6 +646,7 @@ static struct command_result *json_dev_query_channel_range(struct command *cmd, static const struct json_command dev_query_channel_range_command = { "dev-query-channel-range", + "developer", json_dev_query_channel_range, "Query peer {id} for short_channel_ids for {first} block + {num} blocks" }; @@ -668,6 +674,7 @@ json_dev_set_max_scids_encode_size(struct command *cmd, static const struct json_command dev_set_max_scids_encode_size = { "dev-set-max-scids-encode-size", + "developer", json_dev_set_max_scids_encode_size, "Set {max} bytes of short_channel_ids per reply_channel_range" }; @@ -688,6 +695,7 @@ static struct command_result *json_dev_suppress_gossip(struct command *cmd, static const struct json_command dev_suppress_gossip = { "dev-suppress-gossip", + "developer", json_dev_suppress_gossip, "Stop this node from sending any more gossip." }; @@ -730,6 +738,7 @@ static struct command_result *json_dev_compact_gossip_store(struct command *cmd, static const struct json_command dev_compact_gossip_store = { "dev-compact-gossip-store", + "developer", json_dev_compact_gossip_store, "Ask gossipd to rewrite the gossip store." }; diff --git a/lightningd/invoice.c b/lightningd/invoice.c index d68203d51..a2544161b 100644 --- a/lightningd/invoice.c +++ b/lightningd/invoice.c @@ -786,11 +786,14 @@ static struct command_result *json_invoice(struct command *cmd, } static const struct json_command invoice_command = { - "invoice", json_invoice, "Create an invoice for {msatoshi} with {label} " - "and {description} with optional {expiry} seconds " - "(default 1 hour), optional {fallbacks} address list" - "(default empty list) and optional {preimage} " - "(default autogenerated)"}; + "invoice", + "payment", + json_invoice, + "Create an invoice for {msatoshi} with {label} " + "and {description} with optional {expiry} seconds " + "(default 1 hour), optional {fallbacks} address list" + "(default empty list) and optional {preimage} " + "(default autogenerated)"}; AUTODATA(json_command, &invoice_command); static void json_add_invoices(struct json_stream *response, @@ -840,6 +843,7 @@ static struct command_result *json_listinvoices(struct command *cmd, static const struct json_command listinvoices_command = { "listinvoices", + "payment", json_listinvoices, "Show invoice {label} (or all, if no {label})" }; @@ -892,6 +896,7 @@ static struct command_result *json_delinvoice(struct command *cmd, static const struct json_command delinvoice_command = { "delinvoice", + "payment", json_delinvoice, "Delete unpaid invoice {label} with {status}", }; @@ -916,6 +921,7 @@ static struct command_result *json_delexpiredinvoice(struct command *cmd, } static const struct json_command delexpiredinvoice_command = { "delexpiredinvoice", + "payment", json_delexpiredinvoice, "Delete all expired invoices that expired as of given {maxexpirytime} (a UNIX epoch time), or all expired invoices if not specified" }; @@ -951,6 +957,7 @@ static struct command_result *json_waitanyinvoice(struct command *cmd, static const struct json_command waitanyinvoice_command = { "waitanyinvoice", + "payment", json_waitanyinvoice, "Wait for the next invoice to be paid, after {lastpay_index} (if supplied)" }; @@ -997,6 +1004,7 @@ static struct command_result *json_waitinvoice(struct command *cmd, static const struct json_command waitinvoice_command = { "waitinvoice", + "payment", json_waitinvoice, "Wait for an incoming payment matching the invoice with {label}, or if the invoice expires" }; @@ -1148,6 +1156,7 @@ static struct command_result *json_decodepay(struct command *cmd, static const struct json_command decodepay_command = { "decodepay", + "payment", json_decodepay, "Decode {bolt11}, using {description} if necessary" }; diff --git a/lightningd/jsonrpc.c b/lightningd/jsonrpc.c index 1b229f8fe..3a3eef7f2 100644 --- a/lightningd/jsonrpc.c +++ b/lightningd/jsonrpc.c @@ -165,9 +165,9 @@ static struct command_result *json_help(struct command *cmd, static const struct json_command help_command = { "help", + "utility", json_help, "List available commands, or give verbose help on one {command}.", - .verbose = "help [command]\n" "Without [command]:\n" " Outputs an array of objects with 'command' and 'description'\n" @@ -196,6 +196,7 @@ static struct command_result *json_stop(struct command *cmd, static const struct json_command stop_command = { "stop", + "utility", json_stop, "Shut down the lightningd process" }; @@ -226,6 +227,7 @@ static struct command_result *json_rhash(struct command *cmd, static const struct json_command dev_rhash_command = { "dev-rhash", + "developer", json_rhash, "Show SHA256 of {secret}" }; @@ -271,6 +273,7 @@ static struct command_result *json_slowcmd(struct command *cmd, static const struct json_command dev_slowcmd_command = { "dev-slowcmd", + "developer", json_slowcmd, "Torture test for slow commands, optional {msec}" }; @@ -289,6 +292,7 @@ static struct command_result *json_crash(struct command *cmd UNUSED, static const struct json_command dev_crash_command = { "dev-crash", + "developer", json_crash, "Crash lightningd by calling fatal()" }; @@ -319,6 +323,7 @@ static void json_add_help_command(struct command *cmd, json_object_start(response, NULL); json_add_string(response, "command", usage); + json_add_string(response, "category", json_command->category); json_add_string(response, "description", json_command->description); if (!json_command->verbose) { @@ -1172,6 +1177,7 @@ static struct command_result *json_check(struct command *cmd, static const struct json_command check_command = { "check", + "utility", json_check, "Don't run {command_to_check}, just verify parameters.", .verbose = "check command_to_check [parameters...]\n" diff --git a/lightningd/jsonrpc.h b/lightningd/jsonrpc.h index 73ff9c4d7..0d51594f4 100644 --- a/lightningd/jsonrpc.h +++ b/lightningd/jsonrpc.h @@ -49,6 +49,7 @@ struct command_result; struct json_command { const char *name; + const char *category; struct command_result *(*dispatch)(struct command *, const char *buffer, const jsmntok_t *obj, diff --git a/lightningd/log.c b/lightningd/log.c index 5bb98eb31..37d76c1c7 100644 --- a/lightningd/log.c +++ b/lightningd/log.c @@ -779,6 +779,7 @@ static struct command_result *json_getlog(struct command *cmd, static const struct json_command getlog_command = { "getlog", + "utility", json_getlog, "Show logs, with optional log {level} (info|unusual|debug|io)" }; diff --git a/lightningd/memdump.c b/lightningd/memdump.c index 9c6642ae4..d941b3c54 100644 --- a/lightningd/memdump.c +++ b/lightningd/memdump.c @@ -81,6 +81,7 @@ static struct command_result *json_memdump(struct command *cmd, static const struct json_command dev_memdump_command = { "dev-memdump", + "developer", json_memdump, "Show memory objects currently in use" }; @@ -327,6 +328,7 @@ static struct command_result *json_memleak(struct command *cmd, static const struct json_command dev_memleak_command = { "dev-memleak", + "developer", json_memleak, "Show unreferenced memory objects" }; diff --git a/lightningd/opening_control.c b/lightningd/opening_control.c index 76f198ccd..f85c2ed8e 100644 --- a/lightningd/opening_control.c +++ b/lightningd/opening_control.c @@ -1086,9 +1086,11 @@ static struct command_result *json_fund_channel(struct command *cmd, } static const struct json_command fund_channel_command = { - "fundchannel", json_fund_channel, - "Fund channel with {id} using {satoshi} (or 'all') satoshis, at optional " - "{feerate}. Only use outputs that have {minconf} confirmations." + "fundchannel", + "channels", + json_fund_channel, + "Fund channel with {id} using {satoshi} (or 'all') satoshis, at optional " + "{feerate}. Only use outputs that have {minconf} confirmations." }; AUTODATA(json_command, &fund_channel_command); diff --git a/lightningd/options.c b/lightningd/options.c index ba5d84e6e..cca3711a7 100644 --- a/lightningd/options.c +++ b/lightningd/options.c @@ -1112,9 +1112,9 @@ static struct command_result *json_listconfigs(struct command *cmd, static const struct json_command listconfigs_command = { "listconfigs", + "utility", json_listconfigs, "List all configuration options, or with [config], just that one.", - .verbose = "listconfigs [config]\n" "Outputs an object, with each field a config options\n" "(Option names which start with # are comments)\n" diff --git a/lightningd/pay.c b/lightningd/pay.c index 13ac3fbfd..b26cf2681 100644 --- a/lightningd/pay.c +++ b/lightningd/pay.c @@ -894,6 +894,7 @@ static struct command_result *json_sendpay(struct command *cmd, static const struct json_command sendpay_command = { "sendpay", + "payment", json_sendpay, "Send along {route} in return for preimage of {payment_hash}" }; @@ -932,6 +933,7 @@ static struct command_result *json_waitsendpay(struct command *cmd, static const struct json_command waitsendpay_command = { "waitsendpay", + "payment", json_waitsendpay, "Wait for payment attempt on {payment_hash} to succeed or fail, " "but only up to {timeout} seconds." @@ -991,6 +993,7 @@ static struct command_result *json_listsendpays(struct command *cmd, static const struct json_command listpayments_command = { "listpayments", + "payment", json_listsendpays, "Show outgoing payments", true /* deprecated, use new name */ @@ -999,6 +1002,7 @@ AUTODATA(json_command, &listpayments_command); static const struct json_command listsendpays_command = { "listsendpays", + "payment", json_listsendpays, "Show sendpay, old and current, optionally limiting to {bolt11} or {payment_hash}." }; diff --git a/lightningd/peer_control.c b/lightningd/peer_control.c index a7a505926..5e3669b2c 100644 --- a/lightningd/peer_control.c +++ b/lightningd/peer_control.c @@ -1007,6 +1007,7 @@ static struct command_result *json_listpeers(struct command *cmd, static const struct json_command listpeers_command = { "listpeers", + "network", json_listpeers, "Show current peers, if {level} is set, include logs for {id}" }; @@ -1137,6 +1138,7 @@ static struct command_result *json_close(struct command *cmd, static const struct json_command close_command = { "close", + "channels", json_close, "Close the channel with {id} " "(either peer ID, channel ID, or short channel ID). " @@ -1244,6 +1246,7 @@ static struct command_result *json_disconnect(struct command *cmd, static const struct json_command disconnect_command = { "disconnect", + "network", json_disconnect, "Disconnect from {id} that has previously been connected to using connect; with {force} set, even if it has a current channel" }; @@ -1316,6 +1319,7 @@ static struct command_result *json_getinfo(struct command *cmd, static const struct json_command getinfo_command = { "getinfo", + "utility", json_getinfo, "Show information about this node" }; @@ -1472,6 +1476,7 @@ static struct command_result *json_setchannelfee(struct command *cmd, static const struct json_command setchannelfee_command = { "setchannelfee", + "channels", json_setchannelfee, "Sets specific routing fees for channel with {id} " "(either peer ID, channel ID, short channel ID or 'all'). " @@ -1526,6 +1531,7 @@ static struct command_result *json_sign_last_tx(struct command *cmd, static const struct json_command dev_sign_last_tx = { "dev-sign-last-tx", + "developer", json_sign_last_tx, "Sign and show the last commitment transaction with peer {id}" }; @@ -1563,6 +1569,7 @@ static struct command_result *json_dev_fail(struct command *cmd, static const struct json_command dev_fail_command = { "dev-fail", + "developer", json_dev_fail, "Fail with peer {id}" }; @@ -1620,6 +1627,7 @@ static struct command_result *json_dev_reenable_commit(struct command *cmd, static const struct json_command dev_reenable_commit = { "dev-reenable-commit", + "developer", json_dev_reenable_commit, "Re-enable the commit timer on peer {id}" }; @@ -1728,7 +1736,9 @@ static struct command_result *json_dev_forget_channel(struct command *cmd, } static const struct json_command dev_forget_channel_command = { - "dev-forget-channel", json_dev_forget_channel, + "dev-forget-channel", + "developer", + json_dev_forget_channel, "Forget the channel with peer {id}, ignore UTXO check with {force}='true'.", false, "Forget the channel with peer {id}. Checks if the channel is still active by checking its funding transaction. Check can be ignored by setting {force} to 'true'" }; diff --git a/lightningd/peer_htlcs.c b/lightningd/peer_htlcs.c index caec71e17..bfdb68c97 100644 --- a/lightningd/peer_htlcs.c +++ b/lightningd/peer_htlcs.c @@ -1885,7 +1885,9 @@ static struct command_result *json_dev_ignore_htlcs(struct command *cmd, } static const struct json_command dev_ignore_htlcs = { - "dev-ignore-htlcs", json_dev_ignore_htlcs, + "dev-ignore-htlcs", + "developer", + json_dev_ignore_htlcs, "Set ignoring incoming HTLCs for peer {id} to {ignore}", false, "Set/unset ignoring of all incoming HTLCs. For testing only." }; @@ -1960,7 +1962,9 @@ static struct command_result *json_listforwards(struct command *cmd, } static const struct json_command listforwards_command = { - "listforwards", json_listforwards, + "listforwards", + "channels", + json_listforwards, "List all forwarded payments and their information", false, "List all forwarded payments and their information" }; diff --git a/lightningd/ping.c b/lightningd/ping.c index 19eab3a46..abff25119 100644 --- a/lightningd/ping.c +++ b/lightningd/ping.c @@ -132,6 +132,7 @@ static struct command_result *json_ping(struct command *cmd, static const struct json_command ping_command = { "ping", + "network", json_ping, "Send peer {id} a ping of length {len} (default 128) asking for {pongbytes} (default 128)" }; diff --git a/wallet/walletrpc.c b/wallet/walletrpc.c index db716494b..62cc41b5f 100644 --- a/wallet/walletrpc.c +++ b/wallet/walletrpc.c @@ -184,14 +184,16 @@ static struct command_result *json_withdraw(struct command *cmd, } static const struct json_command withdraw_command = { - "withdraw", json_withdraw, - "Send to {destination} address {satoshi} (or 'all') amount via Bitcoin " - "transaction, at optional {feerate}", - false, - "Send funds from the internal wallet to the specified address. Either " - "specify a number of satoshis to send or 'all' to sweep all funds in the " - "internal wallet to the address. Only use outputs that have at least " - "{minconf} confirmations." + "withdraw", + "bitcoin", + json_withdraw, + "Send to {destination} address {satoshi} (or 'all') amount via Bitcoin " + "transaction, at optional {feerate}", + false, + "Send funds from the internal wallet to the specified address. Either " + "specify a number of satoshis to send or 'all' to sweep all funds in the " + "internal wallet to the address. Only use outputs that have at least " + "{minconf} confirmations." }; AUTODATA(json_command, &withdraw_command); @@ -349,6 +351,7 @@ static struct command_result *json_newaddr(struct command *cmd, static const struct json_command newaddr_command = { "newaddr", + "bitcoin", json_newaddr, "Get a new {bech32, p2sh-segwit} (or all) address to fund a channel (default is bech32)", false, "Generates a new address (or both) that belongs to the internal wallet. Funds sent to these addresses will be managed by lightningd. Use `withdraw` to withdraw funds to an external wallet." @@ -431,6 +434,7 @@ static struct command_result *json_listaddrs(struct command *cmd, static const struct json_command listaddrs_command = { "dev-listaddrs", + "developer", json_listaddrs, "Show addresses list up to derivation {index} (default is the last bip32 index)", false, @@ -526,6 +530,7 @@ static struct command_result *json_listfunds(struct command *cmd, static const struct json_command listfunds_command = { "listfunds", + "utility", json_listfunds, "Show available funds from the internal wallet", false, @@ -604,6 +609,7 @@ static struct command_result *json_dev_rescan_outputs(struct command *cmd, static const struct json_command dev_rescan_output_command = { "dev-rescan-outputs", + "developer", json_dev_rescan_outputs, "Synchronize the state of our funds with bitcoind", false,