#include "cli.h" #include #include #include #include #include #include #include #include #include #include #include #include "poller.h" #include "helpers.h" #include "log.h" #include "log_funcs.h" #include "call.h" #include "socket.h" #include "redis.h" #include "control_ng.h" #include "media_socket.h" #include "cdr.h" #include "streambuf.h" #include "tcp_listener.h" #include "str.h" #include "statistics.h" #include "main.h" #include "media_socket.h" #include "rtplib.h" #include "ssrc.h" #include "codec.h" #include "media_player.h" typedef struct cli_handler_t cli_handler_t; typedef struct cli_command_t cli_command_t; typedef void (*cli_handler_func)(str *, struct cli_writer *, const cli_handler_t *); struct cli_command_t { const char *cmd; cli_handler_func handler; const cli_handler_t *next; const char *params; const char *help; }; struct cli_handler_t { unsigned int section; const cli_command_t *commands; unsigned int num_commands; }; static void cli_generic_handler(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_terminate(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_ksadd(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_ksrm(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_kslist(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_active(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_standby(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_debug(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_call(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_usage(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_set_maxopenfiles(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_set_maxsessions(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_set_maxcpu(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_set_maxload(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_set_maxbw(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_set_timeout(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_set_silenttimeout(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_set_offertimeout(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_set_finaltimeout(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_set_loglevel(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_set_redisallowederrors(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_set_redisdisabletime(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_set_redisdisable(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_set_redisconnecttimeout(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_set_rediscmdtimeout(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_set_controltos(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_set_deletedelay(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_params_start(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_params_current(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_params_diff(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_params_revert(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_list_numsessions(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_list_maxsessions(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_list_maxcpu(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_list_maxload(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_list_maxbw(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_list_maxopenfiles(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_list_totals(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_list_counters(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_list_sessions(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_list_timeout(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_list_silenttimeout(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_list_offertimeout(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_list_finaltimeout(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_list_loglevel(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_list_loglevels(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_list_redisallowederrors(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_list_redisdisabletime(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_list_redisconnecttimeout(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_list_rediscmdtimeout(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_list_controltos(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_list_deletedelay(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_list_interfaces(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_list_jsonstats(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_list_transcoders(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_call_info(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_call_terminate(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_call_debug(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_call_tag(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_tag_info(str *instr, struct cli_writer *cw, const cli_handler_t *); #ifdef WITH_TRANSCODING static void cli_incoming_tag_delay(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_tag_detdtmf(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_media_list_files(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_media_list_dbs(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_media_list_caches(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_media_list_players(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_media_reload_file(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_media_reload_files(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_media_reload_db(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_media_reload_dbs(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_media_reload_cache(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_media_reload_caches(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_media_add_file(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_media_add_db(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_media_add_cache(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_media_evict_file(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_media_evict_files(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_media_evict_db(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_media_evict_dbs(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_media_evict_cache(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_media_evict_caches(str *instr, struct cli_writer *cw, const cli_handler_t *); static void cli_incoming_media_evict_players(str *instr, struct cli_writer *cw, const cli_handler_t *); #endif #define HANDLER_START(n) static const cli_handler_t n = { .section = CSH_SECTION, .commands = (const struct cli_command_t []) { #define HANDLER_CMD(c, f, p, s) [CSH_LOOKUP(c)] = { .cmd = c, .handler = f, .params = p, .help = s }, #define HANDLER_GENERIC(c, h) [CSH_LOOKUP(c)] = { .cmd = c, .handler = cli_generic_handler, .next = &h, .params = "