|
|
|
@ -559,7 +559,7 @@ static char *handle_showmanager(struct ast_cli_entry *e, int cmd, struct ast_cli
|
|
|
|
|
return CLI_SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ast_cli(a->fd,"\n");
|
|
|
|
|
ast_cli(a->fd, "\n");
|
|
|
|
|
ast_cli(a->fd,
|
|
|
|
|
" username: %s\n"
|
|
|
|
|
" secret: %s\n"
|
|
|
|
@ -616,8 +616,8 @@ static char *handle_showmanagers(struct ast_cli_entry *e, int cmd, struct ast_cl
|
|
|
|
|
|
|
|
|
|
AST_RWLIST_UNLOCK(&users);
|
|
|
|
|
|
|
|
|
|
ast_cli(a->fd,"-------------------\n");
|
|
|
|
|
ast_cli(a->fd,"%d manager users configured.\n", count_amu);
|
|
|
|
|
ast_cli(a->fd, "-------------------\n");
|
|
|
|
|
ast_cli(a->fd, "%d manager users configured.\n", count_amu);
|
|
|
|
|
|
|
|
|
|
return CLI_SUCCESS;
|
|
|
|
|
}
|
|
|
|
@ -703,7 +703,7 @@ static char *handle_showmaneventq(struct ast_cli_entry *e, int cmd, struct ast_c
|
|
|
|
|
}
|
|
|
|
|
AST_LIST_LOCK(&all_events);
|
|
|
|
|
AST_LIST_TRAVERSE(&all_events, s, eq_next) {
|
|
|
|
|
ast_cli(a->fd, "Usecount: %d\n",s->usecount);
|
|
|
|
|
ast_cli(a->fd, "Usecount: %d\n", s->usecount);
|
|
|
|
|
ast_cli(a->fd, "Category: %d\n", s->category);
|
|
|
|
|
ast_cli(a->fd, "Event:\n%s", s->eventdata);
|
|
|
|
|
}
|
|
|
|
@ -915,7 +915,7 @@ void astman_append(struct mansession *s, const char *fmt, ...)
|
|
|
|
|
#define MSG_MOREDATA ((char *)astman_send_response)
|
|
|
|
|
static void astman_send_response_full(struct mansession *s, const struct message *m, char *resp, char *msg, char *listflag)
|
|
|
|
|
{
|
|
|
|
|
const char *id = astman_get_header(m,"ActionID");
|
|
|
|
|
const char *id = astman_get_header(m, "ActionID");
|
|
|
|
|
|
|
|
|
|
astman_append(s, "Response: %s\r\n", resp);
|
|
|
|
|
if (!ast_strlen_zero(id))
|
|
|
|
@ -1223,7 +1223,7 @@ static void handle_updates(struct mansession *s, const struct message *m, struct
|
|
|
|
|
} else if (!strcasecmp(action, "append")) {
|
|
|
|
|
if (!ast_strlen_zero(cat) && !ast_strlen_zero(var) &&
|
|
|
|
|
(category = ast_category_get(cfg, cat)) &&
|
|
|
|
|
(v = ast_variable_new(var, value, dfn))){
|
|
|
|
|
(v = ast_variable_new(var, value, dfn))) {
|
|
|
|
|
if (object || (match && !strcasecmp(match, "object")))
|
|
|
|
|
v->object = 1;
|
|
|
|
|
ast_variable_append(category, v);
|
|
|
|
@ -1293,11 +1293,13 @@ static int action_waitevent(struct mansession *s, const struct message *m)
|
|
|
|
|
int timeout = -1;
|
|
|
|
|
int x;
|
|
|
|
|
int needexit = 0;
|
|
|
|
|
const char *id = astman_get_header(m,"ActionID");
|
|
|
|
|
char idText[256] = "";
|
|
|
|
|
const char *id = astman_get_header(m, "ActionID");
|
|
|
|
|
char idText[256];
|
|
|
|
|
|
|
|
|
|
if (!ast_strlen_zero(id))
|
|
|
|
|
snprintf(idText, sizeof(idText), "ActionID: %s\r\n", id);
|
|
|
|
|
else
|
|
|
|
|
idText[0] = '\0';
|
|
|
|
|
|
|
|
|
|
if (!ast_strlen_zero(timeouts)) {
|
|
|
|
|
sscanf(timeouts, "%i", &timeout);
|
|
|
|
@ -1574,18 +1576,20 @@ static int action_getvar(struct mansession *s, const struct message *m)
|
|
|
|
|
/* Needs documentation... */
|
|
|
|
|
static int action_status(struct mansession *s, const struct message *m)
|
|
|
|
|
{
|
|
|
|
|
const char *name = astman_get_header(m,"Channel");
|
|
|
|
|
const char *name = astman_get_header(m, "Channel");
|
|
|
|
|
struct ast_channel *c;
|
|
|
|
|
char bridge[256];
|
|
|
|
|
struct timeval now = ast_tvnow();
|
|
|
|
|
long elapsed_seconds = 0;
|
|
|
|
|
int channels = 0;
|
|
|
|
|
int all = ast_strlen_zero(name); /* set if we want all channels */
|
|
|
|
|
const char *id = astman_get_header(m,"ActionID");
|
|
|
|
|
char idText[256] = "";
|
|
|
|
|
const char *id = astman_get_header(m, "ActionID");
|
|
|
|
|
char idText[256];
|
|
|
|
|
|
|
|
|
|
if (!ast_strlen_zero(id))
|
|
|
|
|
snprintf(idText, sizeof(idText), "ActionID: %s\r\n", id);
|
|
|
|
|
else
|
|
|
|
|
idText[0] = '\0';
|
|
|
|
|
|
|
|
|
|
if (all)
|
|
|
|
|
c = ast_channel_walk_locked(NULL);
|
|
|
|
@ -1661,7 +1665,7 @@ static int action_status(struct mansession *s, const struct message *m)
|
|
|
|
|
"Event: StatusComplete\r\n"
|
|
|
|
|
"%s"
|
|
|
|
|
"Items: %d\r\n"
|
|
|
|
|
"\r\n",idText, channels);
|
|
|
|
|
"\r\n", idText, channels);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -2203,10 +2207,12 @@ static char mandescr_coresettings[] =
|
|
|
|
|
static int action_coresettings(struct mansession *s, const struct message *m)
|
|
|
|
|
{
|
|
|
|
|
const char *actionid = astman_get_header(m, "ActionID");
|
|
|
|
|
char idText[150] = "";
|
|
|
|
|
char idText[150];
|
|
|
|
|
|
|
|
|
|
if (!ast_strlen_zero(actionid))
|
|
|
|
|
snprintf(idText, sizeof(idText), "ActionID: %s\r\n", actionid);
|
|
|
|
|
else
|
|
|
|
|
idText[0] = '\0';
|
|
|
|
|
|
|
|
|
|
astman_append(s, "Response: Success\r\n"
|
|
|
|
|
"%s"
|
|
|
|
@ -2221,7 +2227,7 @@ static int action_coresettings(struct mansession *s, const struct message *m)
|
|
|
|
|
"CoreRealTimeEnabled: %s\r\n"
|
|
|
|
|
"CoreCDRenabled: %s\r\n"
|
|
|
|
|
"CoreHTTPenabled: %s\r\n"
|
|
|
|
|
,
|
|
|
|
|
"\r\n",
|
|
|
|
|
idText,
|
|
|
|
|
AMI_VERSION,
|
|
|
|
|
ast_get_version(),
|
|
|
|
@ -2254,6 +2260,8 @@ static int action_corestatus(struct mansession *s, const struct message *m)
|
|
|
|
|
|
|
|
|
|
if (!ast_strlen_zero(actionid))
|
|
|
|
|
snprintf(idText, sizeof(idText), "ActionID: %s\r\n", actionid);
|
|
|
|
|
else
|
|
|
|
|
idText[0] = '\0';
|
|
|
|
|
|
|
|
|
|
ast_localtime(&ast_startuptime, &tm, NULL);
|
|
|
|
|
ast_strftime(startuptime, sizeof(startuptime), "%H:%M:%S", &tm);
|
|
|
|
@ -2265,7 +2273,7 @@ static int action_corestatus(struct mansession *s, const struct message *m)
|
|
|
|
|
"CoreStartupTime: %s\r\n"
|
|
|
|
|
"CoreReloadTime: %s\r\n"
|
|
|
|
|
"CoreCurrentCalls: %d\r\n"
|
|
|
|
|
"",
|
|
|
|
|
"\r\n",
|
|
|
|
|
idText,
|
|
|
|
|
startuptime,
|
|
|
|
|
reloadtime,
|
|
|
|
@ -2283,15 +2291,11 @@ static char mandescr_reload[] =
|
|
|
|
|
/*! \brief Send a reload event */
|
|
|
|
|
static int action_reload(struct mansession *s, const struct message *m)
|
|
|
|
|
{
|
|
|
|
|
const char *actionid = astman_get_header(m, "ActionID");
|
|
|
|
|
const char *module = astman_get_header(m, "Module");
|
|
|
|
|
int res = ast_module_reload(S_OR(module, NULL));
|
|
|
|
|
char idText[80] = "";
|
|
|
|
|
|
|
|
|
|
if (!ast_strlen_zero(actionid))
|
|
|
|
|
snprintf(idText, sizeof(idText), "ActionID: %s\r\n", actionid);
|
|
|
|
|
if (res == 2)
|
|
|
|
|
astman_append(s, "Response: Success\r\n%s", idText);
|
|
|
|
|
astman_send_ack(s, m, "Module Reloaded");
|
|
|
|
|
else
|
|
|
|
|
astman_send_error(s, m, s == 0 ? "No such module" : "Module does not support reload");
|
|
|
|
|
return 0;
|
|
|
|
@ -2308,13 +2312,15 @@ static char mandescr_coreshowchannels[] =
|
|
|
|
|
static int action_coreshowchannels(struct mansession *s, const struct message *m)
|
|
|
|
|
{
|
|
|
|
|
const char *actionid = astman_get_header(m, "ActionID");
|
|
|
|
|
char actionidtext[256] = "";
|
|
|
|
|
char actionidtext[256];
|
|
|
|
|
struct ast_channel *c = NULL;
|
|
|
|
|
int numchans = 0;
|
|
|
|
|
int duration, durh, durm, durs;
|
|
|
|
|
|
|
|
|
|
if (!ast_strlen_zero(actionid))
|
|
|
|
|
snprintf(actionidtext, sizeof(actionidtext), "ActionID: %s\r\n", actionid);
|
|
|
|
|
else
|
|
|
|
|
actionidtext[0] = '\0';
|
|
|
|
|
|
|
|
|
|
astman_send_listack(s, m, "Channels will follow", "start");
|
|
|
|
|
|
|
|
|
@ -2376,7 +2382,7 @@ static int manager_modulecheck(struct mansession *s, const struct message *m)
|
|
|
|
|
{
|
|
|
|
|
int res;
|
|
|
|
|
const char *module = astman_get_header(m, "Module");
|
|
|
|
|
const char *id = astman_get_header(m,"ActionID");
|
|
|
|
|
const char *id = astman_get_header(m, "ActionID");
|
|
|
|
|
char idText[BUFSIZ];
|
|
|
|
|
const char *version;
|
|
|
|
|
char filename[BUFSIZ/2];
|
|
|
|
@ -2401,6 +2407,8 @@ static int manager_modulecheck(struct mansession *s, const struct message *m)
|
|
|
|
|
|
|
|
|
|
if (!ast_strlen_zero(id))
|
|
|
|
|
snprintf(idText, sizeof(idText), "ActionID: %s\r\n", id);
|
|
|
|
|
else
|
|
|
|
|
idText[0] = '\0';
|
|
|
|
|
astman_append(s, "Response: Success\r\n%s", idText);
|
|
|
|
|
astman_append(s, "Version: %s\r\n\r\n", version ? version : "");
|
|
|
|
|
return 0;
|
|
|
|
|