MT#61822 add new "CLI" NG command

Change-Id: Idd4114783b1bb6cc683970110a2f322ec07b894a
pull/1897/head
Richard Fuchs 3 months ago
parent d436c1d361
commit 9673703476

@ -2043,3 +2043,30 @@ static void cli_incoming_media_evict_players(str *instr, struct cli_writer *cw,
cw->cw_printf(cw, "%u DB cache entries evicted\n", num);
}
#endif
static void ng_printf(struct cli_writer *cw, const char *fmt, ...) {
GString *s = cw->ptr;
va_list va;
va_start(va, fmt);
g_string_append_vprintf(s, fmt, va);
va_end(va);
}
const char *cli_ng(ng_command_ctx_t *ctx) {
__auto_type parser = ctx->parser_ctx.parser;
str body;
if (!parser->dict_get_str(ctx->req, "body", &body))
return "No 'body' in message";
g_autoptr(GString) response = g_string_new("");
struct cli_writer cw = {
.cw_printf = ng_printf,
.ptr = response,
};
cli_handle(&body, &cw);
parser->dict_add_str_dup(ctx->resp, "response", &STR_LEN(response->str, response->len));
return NULL;
}

@ -23,6 +23,7 @@
#include "homer.h"
#include "tcp_listener.h"
#include "main.h"
#include "cli.h"
mutex_t rtpe_cngs_lock;
mutex_t tcp_connections_lock;
@ -46,7 +47,7 @@ const char *ng_command_strings[OP_COUNT] = {
"block silence media", "unblock silence media",
"publish", "subscribe request",
"subscribe answer", "unsubscribe",
"connect"
"connect", "cli"
};
const char *ng_command_strings_esc[OP_COUNT] = {
"ping", "offer", "answer", "delete", "query", "list",
@ -57,7 +58,7 @@ const char *ng_command_strings_esc[OP_COUNT] = {
"block_silence_media", "unblock_silence_media",
"publish", "subscribe_request",
"subscribe_answer", "unsubscribe",
"connect"
"connect", "cli"
};
const char *ng_command_strings_short[OP_COUNT] = {
"Ping", "Offer", "Answer", "Delete", "Query", "List",
@ -67,7 +68,7 @@ const char *ng_command_strings_short[OP_COUNT] = {
"PlayDTMF", "Stats", "SlnMedia", "UnslnMedia",
"BlkSlnMedia", "UnblkSlnMedia",
"Pub", "SubReq", "SubAns", "Unsub",
"Conn"
"Conn", "CLI"
};
typedef struct ng_ctx {
@ -847,6 +848,11 @@ static void control_ng_process_payload(ng_ctx *hctx, str *reply, str *data, cons
command_ctx.opmode = OP_CONNECT;
errstr = call_connect_ng(&command_ctx);
break;
case CSH_LOOKUP("cli"):
case CSH_LOOKUP("CLI"):
command_ctx.opmode = OP_CLI;
errstr = cli_ng(&command_ctx);
break;
default:
errstr = "Unrecognized command";
}

@ -25,5 +25,6 @@ struct cli_writer {
struct cli *cli_new(const endpoint_t *);
void cli_handle(str *instr, struct cli_writer *);
const char *cli_ng(ng_command_ctx_t *);
#endif /* CLI_UDP_H_ */

@ -30,6 +30,7 @@ enum ng_opmode {
OP_SUBSCRIBE_ANS,
OP_UNSUBSCRIBE,
OP_CONNECT,
OP_CLI,
OP_COUNT, // last, number of elements
OP_OTHER = OP_COUNT // alias to above

@ -283,6 +283,13 @@ int main(void) {
"connects_ps_max 0 150\n"
"connects_ps_avg 0 150\n"
"connect_count 0 150\n"
"cli_time_min 0.000000 150\n"
"cli_time_max 0.000000 150\n"
"cli_time_avg 0.000000 150\n"
"clis_ps_min 0 150\n"
"clis_ps_max 0 150\n"
"clis_ps_avg 0 150\n"
"cli_count 0 150\n"
"call_dur 0.000000 150\n"
"average_call_dur 0.000000 150\n"
"forced_term_sess 0 150\n"
@ -757,6 +764,14 @@ int main(void) {
"0.000000\n"
"avgconnectdelay\n"
"0.000000\n"
"Min/Max/Avg cli processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minclidelay\n"
"0.000000\n"
"maxclidelay\n"
"0.000000\n"
"avgclidelay\n"
"0.000000\n"
"Min/Max/Avg ping requests per second\n"
"0/0/0 per sec\n"
"minpingrequestrate\n"
@ -981,6 +996,14 @@ int main(void) {
"0\n"
"avgconnectrequestrate\n"
"0\n"
"Min/Max/Avg cli requests per second\n"
"0/0/0 per sec\n"
"minclirequestrate\n"
"0\n"
"maxclirequestrate\n"
"0\n"
"avgclirequestrate\n"
"0\n"
"\n"
"\n"
"}\n"
@ -1144,7 +1167,7 @@ int main(void) {
"{\n"
"proxies\n"
"[\n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | BlkSlnMedia | UnblkSlnMedia | Pub | SubReq | SubAns | Unsub | Conn \n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | BlkSlnMedia | UnblkSlnMedia | Pub | SubReq | SubAns | Unsub | Conn | CLI \n"
"\n"
"]\n"
"totalpingcount\n"
@ -1203,6 +1226,8 @@ int main(void) {
"0\n"
"totalconncount\n"
"0\n"
"totalclicount\n"
"0\n"
"\n"
"}\n"
"interfaces\n"
@ -1419,6 +1444,13 @@ int main(void) {
"connects_ps_max 0 150\n"
"connects_ps_avg 0 150\n"
"connect_count 0 150\n"
"cli_time_min 0.000000 150\n"
"cli_time_max 0.000000 150\n"
"cli_time_avg 0.000000 150\n"
"clis_ps_min 0 150\n"
"clis_ps_max 0 150\n"
"clis_ps_avg 0 150\n"
"cli_count 0 150\n"
"call_dur 0.000000 150\n"
"average_call_dur 0.000000 150\n"
"forced_term_sess 0 150\n"
@ -1893,6 +1925,14 @@ int main(void) {
"0.000000\n"
"avgconnectdelay\n"
"0.000000\n"
"Min/Max/Avg cli processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minclidelay\n"
"0.000000\n"
"maxclidelay\n"
"0.000000\n"
"avgclidelay\n"
"0.000000\n"
"Min/Max/Avg ping requests per second\n"
"0/0/0 per sec\n"
"minpingrequestrate\n"
@ -2117,6 +2157,14 @@ int main(void) {
"0\n"
"avgconnectrequestrate\n"
"0\n"
"Min/Max/Avg cli requests per second\n"
"0/0/0 per sec\n"
"minclirequestrate\n"
"0\n"
"maxclirequestrate\n"
"0\n"
"avgclirequestrate\n"
"0\n"
"\n"
"\n"
"}\n"
@ -2280,7 +2328,7 @@ int main(void) {
"{\n"
"proxies\n"
"[\n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | BlkSlnMedia | UnblkSlnMedia | Pub | SubReq | SubAns | Unsub | Conn \n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | BlkSlnMedia | UnblkSlnMedia | Pub | SubReq | SubAns | Unsub | Conn | CLI \n"
"\n"
"]\n"
"totalpingcount\n"
@ -2339,6 +2387,8 @@ int main(void) {
"0\n"
"totalconncount\n"
"0\n"
"totalclicount\n"
"0\n"
"\n"
"}\n"
"interfaces\n"
@ -2552,6 +2602,13 @@ int main(void) {
"connects_ps_max 0 150\n"
"connects_ps_avg 0 150\n"
"connect_count 0 150\n"
"cli_time_min 0.000000 150\n"
"cli_time_max 0.000000 150\n"
"cli_time_avg 0.000000 150\n"
"clis_ps_min 0 150\n"
"clis_ps_max 0 150\n"
"clis_ps_avg 0 150\n"
"cli_count 0 150\n"
"call_dur 0.000000 150\n"
"average_call_dur 0.000000 150\n"
"forced_term_sess 0 150\n"
@ -3026,6 +3083,14 @@ int main(void) {
"0.000000\n"
"avgconnectdelay\n"
"0.000000\n"
"Min/Max/Avg cli processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minclidelay\n"
"0.000000\n"
"maxclidelay\n"
"0.000000\n"
"avgclidelay\n"
"0.000000\n"
"Min/Max/Avg ping requests per second\n"
"0/0/0 per sec\n"
"minpingrequestrate\n"
@ -3250,6 +3315,14 @@ int main(void) {
"0\n"
"avgconnectrequestrate\n"
"0\n"
"Min/Max/Avg cli requests per second\n"
"0/0/0 per sec\n"
"minclirequestrate\n"
"0\n"
"maxclirequestrate\n"
"0\n"
"avgclirequestrate\n"
"0\n"
"\n"
"\n"
"}\n"
@ -3413,7 +3486,7 @@ int main(void) {
"{\n"
"proxies\n"
"[\n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | BlkSlnMedia | UnblkSlnMedia | Pub | SubReq | SubAns | Unsub | Conn \n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | BlkSlnMedia | UnblkSlnMedia | Pub | SubReq | SubAns | Unsub | Conn | CLI \n"
"\n"
"]\n"
"totalpingcount\n"
@ -3472,6 +3545,8 @@ int main(void) {
"0\n"
"totalconncount\n"
"0\n"
"totalclicount\n"
"0\n"
"\n"
"}\n"
"interfaces\n"
@ -3704,6 +3779,13 @@ int main(void) {
"connects_ps_max 0 157\n"
"connects_ps_avg 0 157\n"
"connect_count 0 157\n"
"cli_time_min 0.000000 157\n"
"cli_time_max 0.000000 157\n"
"cli_time_avg 0.000000 157\n"
"clis_ps_min 0 157\n"
"clis_ps_max 0 157\n"
"clis_ps_avg 0 157\n"
"cli_count 0 157\n"
"call_dur 0.000000 157\n"
"average_call_dur 0.000000 157\n"
"forced_term_sess 0 157\n"
@ -4178,6 +4260,14 @@ int main(void) {
"0.000000\n"
"avgconnectdelay\n"
"0.000000\n"
"Min/Max/Avg cli processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minclidelay\n"
"0.000000\n"
"maxclidelay\n"
"0.000000\n"
"avgclidelay\n"
"0.000000\n"
"Min/Max/Avg ping requests per second\n"
"0/0/0 per sec\n"
"minpingrequestrate\n"
@ -4402,6 +4492,14 @@ int main(void) {
"0\n"
"avgconnectrequestrate\n"
"0\n"
"Min/Max/Avg cli requests per second\n"
"0/0/0 per sec\n"
"minclirequestrate\n"
"0\n"
"maxclirequestrate\n"
"0\n"
"avgclirequestrate\n"
"0\n"
"\n"
"\n"
"}\n"
@ -4565,7 +4663,7 @@ int main(void) {
"{\n"
"proxies\n"
"[\n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | BlkSlnMedia | UnblkSlnMedia | Pub | SubReq | SubAns | Unsub | Conn \n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | BlkSlnMedia | UnblkSlnMedia | Pub | SubReq | SubAns | Unsub | Conn | CLI \n"
"\n"
"]\n"
"totalpingcount\n"
@ -4624,6 +4722,8 @@ int main(void) {
"0\n"
"totalconncount\n"
"0\n"
"totalclicount\n"
"0\n"
"\n"
"}\n"
"interfaces\n"
@ -4845,6 +4945,13 @@ int main(void) {
"connects_ps_max 0 157\n"
"connects_ps_avg 0 157\n"
"connect_count 0 157\n"
"cli_time_min 0.000000 157\n"
"cli_time_max 0.000000 157\n"
"cli_time_avg 0.000000 157\n"
"clis_ps_min 0 157\n"
"clis_ps_max 0 157\n"
"clis_ps_avg 0 157\n"
"cli_count 0 157\n"
"call_dur 0.000000 157\n"
"average_call_dur 0.000000 157\n"
"forced_term_sess 0 157\n"
@ -5319,6 +5426,14 @@ int main(void) {
"0.000000\n"
"avgconnectdelay\n"
"0.000000\n"
"Min/Max/Avg cli processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minclidelay\n"
"0.000000\n"
"maxclidelay\n"
"0.000000\n"
"avgclidelay\n"
"0.000000\n"
"Min/Max/Avg ping requests per second\n"
"0/0/0 per sec\n"
"minpingrequestrate\n"
@ -5543,6 +5658,14 @@ int main(void) {
"0\n"
"avgconnectrequestrate\n"
"0\n"
"Min/Max/Avg cli requests per second\n"
"0/0/0 per sec\n"
"minclirequestrate\n"
"0\n"
"maxclirequestrate\n"
"0\n"
"avgclirequestrate\n"
"0\n"
"\n"
"\n"
"}\n"
@ -5706,7 +5829,7 @@ int main(void) {
"{\n"
"proxies\n"
"[\n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | BlkSlnMedia | UnblkSlnMedia | Pub | SubReq | SubAns | Unsub | Conn \n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | BlkSlnMedia | UnblkSlnMedia | Pub | SubReq | SubAns | Unsub | Conn | CLI \n"
"\n"
"]\n"
"totalpingcount\n"
@ -5765,6 +5888,8 @@ int main(void) {
"0\n"
"totalconncount\n"
"0\n"
"totalclicount\n"
"0\n"
"\n"
"}\n"
"interfaces\n"
@ -5981,6 +6106,13 @@ int main(void) {
"connects_ps_max 0 200\n"
"connects_ps_avg 0 200\n"
"connect_count 0 200\n"
"cli_time_min 0.000000 200\n"
"cli_time_max 0.000000 200\n"
"cli_time_avg 0.000000 200\n"
"clis_ps_min 0 200\n"
"clis_ps_max 0 200\n"
"clis_ps_avg 0 200\n"
"cli_count 0 200\n"
"call_dur 143.000000 200\n"
"average_call_dur 0.000000 200\n"
"forced_term_sess 0 200\n"
@ -6455,6 +6587,14 @@ int main(void) {
"0.000000\n"
"avgconnectdelay\n"
"0.000000\n"
"Min/Max/Avg cli processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minclidelay\n"
"0.000000\n"
"maxclidelay\n"
"0.000000\n"
"avgclidelay\n"
"0.000000\n"
"Min/Max/Avg ping requests per second\n"
"0/0/0 per sec\n"
"minpingrequestrate\n"
@ -6679,6 +6819,14 @@ int main(void) {
"0\n"
"avgconnectrequestrate\n"
"0\n"
"Min/Max/Avg cli requests per second\n"
"0/0/0 per sec\n"
"minclirequestrate\n"
"0\n"
"maxclirequestrate\n"
"0\n"
"avgclirequestrate\n"
"0\n"
"\n"
"\n"
"}\n"
@ -6842,7 +6990,7 @@ int main(void) {
"{\n"
"proxies\n"
"[\n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | BlkSlnMedia | UnblkSlnMedia | Pub | SubReq | SubAns | Unsub | Conn \n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | BlkSlnMedia | UnblkSlnMedia | Pub | SubReq | SubAns | Unsub | Conn | CLI \n"
"\n"
"]\n"
"totalpingcount\n"
@ -6901,6 +7049,8 @@ int main(void) {
"0\n"
"totalconncount\n"
"0\n"
"totalclicount\n"
"0\n"
"\n"
"}\n"
"interfaces\n"
@ -7119,6 +7269,13 @@ int main(void) {
"connects_ps_max 0 200\n"
"connects_ps_avg 0 200\n"
"connect_count 0 200\n"
"cli_time_min 0.000000 200\n"
"cli_time_max 0.000000 200\n"
"cli_time_avg 0.000000 200\n"
"clis_ps_min 0 200\n"
"clis_ps_max 0 200\n"
"clis_ps_avg 0 200\n"
"cli_count 0 200\n"
"call_dur 0.000000 200\n"
"average_call_dur 93.000000 200\n"
"forced_term_sess 0 200\n"
@ -7593,6 +7750,14 @@ int main(void) {
"0.000000\n"
"avgconnectdelay\n"
"0.000000\n"
"Min/Max/Avg cli processing delay\n"
"0.000000/0.000000/0.000000 sec\n"
"minclidelay\n"
"0.000000\n"
"maxclidelay\n"
"0.000000\n"
"avgclidelay\n"
"0.000000\n"
"Min/Max/Avg ping requests per second\n"
"0/0/0 per sec\n"
"minpingrequestrate\n"
@ -7817,6 +7982,14 @@ int main(void) {
"0\n"
"avgconnectrequestrate\n"
"0\n"
"Min/Max/Avg cli requests per second\n"
"0/0/0 per sec\n"
"minclirequestrate\n"
"0\n"
"maxclirequestrate\n"
"0\n"
"avgclirequestrate\n"
"0\n"
"\n"
"\n"
"}\n"
@ -7980,7 +8153,7 @@ int main(void) {
"{\n"
"proxies\n"
"[\n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | BlkSlnMedia | UnblkSlnMedia | Pub | SubReq | SubAns | Unsub | Conn \n"
" Proxy | Ping | Offer | Answer | Delete | Query | List | StartRec | StopRec | PauseRec | StartFwd | StopFwd | BlkDTMF | UnblkDTMF | BlkMedia | UnblkMedia | PlayMedia | StopMedia | PlayDTMF | Stats | SlnMedia | UnslnMedia | BlkSlnMedia | UnblkSlnMedia | Pub | SubReq | SubAns | Unsub | Conn | CLI \n"
"\n"
"]\n"
"totalpingcount\n"
@ -8039,6 +8212,8 @@ int main(void) {
"0\n"
"totalconncount\n"
"0\n"
"totalclicount\n"
"0\n"
"\n"
"}\n"
"interfaces\n"

@ -100,6 +100,7 @@ my @string_opts = qw(
vsc-pause-resume-rec
vsc-start-pause-resume-rec
rtpp-flags
body
);
my @int_opts = qw(

Loading…
Cancel
Save