return 0;
}
-static int meetmemute(struct mansession *s, struct message *m, int mute)
+static int meetmemute(struct mansession *s, const struct message *m, int mute)
{
struct ast_conference *conf;
struct ast_conf_user *user;
- char *confid = astman_get_header(m, "Meetme");
- char *userid = astman_get_header(m, "Usernum");
+ const char *confid = astman_get_header(m, "Meetme");
+ char *userid = ast_strdupa(astman_get_header(m, "Usernum"));
int userno;
if (ast_strlen_zero(confid)) {
return 0;
}
-static int action_meetmemute(struct mansession *s, struct message *m)
+static int action_meetmemute(struct mansession *s, const struct message *m)
{
return meetmemute(s, m, 1);
}
-static int action_meetmeunmute(struct mansession *s, struct message *m)
+static int action_meetmeunmute(struct mansession *s, const struct message *m)
{
return meetmemute(s, m, 0);
}
static AST_LIST_HEAD_STATIC(queues, call_queue);
-static int set_member_paused(char *queuename, char *interface, int paused);
+static int set_member_paused(const char *queuename, const char *interface, int paused);
static void rr_dep_warning(void)
{
return 0;
}
-static struct member *create_queue_member(char *interface, const char *membername, int penalty, int paused)
+static struct member *create_queue_member(const char *interface, const char *membername, int penalty, int paused)
{
struct member *cur;
q->wrapuptime = 0;
}
-static int add_to_interfaces(char *interface)
+static int add_to_interfaces(const char *interface)
{
struct member_interface *curint;
return 0;
}
-static int interface_exists_global(char *interface)
+static int interface_exists_global(const char *interface)
{
struct call_queue *q;
struct member *mem;
return ret;
}
-static int remove_from_interfaces(char *interface)
+static int remove_from_interfaces(const char *interface)
{
struct member_interface *curint;
return q;
}
-static struct call_queue *load_realtime_queue(char *queuename)
+static struct call_queue *load_realtime_queue(const char *queuename)
{
struct ast_variable *queue_vars;
struct ast_config *member_config = NULL;
return ast_waitfordigit(qe->chan, retrywait);
}
-static struct member *interface_exists(struct call_queue *q, char *interface)
+static struct member *interface_exists(struct call_queue *q, const char *interface)
{
struct member *mem;
ast_db_del(pm_family, pm_queue->name);
}
-static int remove_from_queue(char *queuename, char *interface)
+static int remove_from_queue(const char *queuename, const char *interface)
{
struct call_queue *q;
struct member *last_member, *look;
}
-static int add_to_queue(char *queuename, char *interface, char *membername, int penalty, int paused, int dump)
+static int add_to_queue(const char *queuename, const char *interface, const char *membername, int penalty, int paused, int dump)
{
struct call_queue *q;
struct member *new_member;
return res;
}
-static int set_member_paused(char *queuename, char *interface, int paused)
+static int set_member_paused(const char *queuename, const char *interface, int paused)
{
int found = 0;
struct call_queue *q;
/*!\brief callback to display queues status in manager
\addtogroup Group_AMI
*/
-static int manager_queues_show( struct mansession *s, struct message *m )
+static int manager_queues_show(struct mansession *s, const struct message *m)
{
char *a[] = { "queue", "show" };
}
/* Dump queue status */
-static int manager_queues_status( struct mansession *s, struct message *m )
+static int manager_queues_status(struct mansession *s, const struct message *m)
{
time_t now;
int pos;
- char *id = astman_get_header(m,"ActionID");
- char *queuefilter = astman_get_header(m,"Queue");
- char *memberfilter = astman_get_header(m,"Member");
+ const char *id = astman_get_header(m,"ActionID");
+ const char *queuefilter = astman_get_header(m,"Queue");
+ const char *memberfilter = astman_get_header(m,"Member");
char idText[256] = "";
struct call_queue *q;
struct queue_ent *qe;
return RESULT_SUCCESS;
}
-static int manager_add_queue_member(struct mansession *s, struct message *m)
+static int manager_add_queue_member(struct mansession *s, const struct message *m)
{
- char *queuename, *interface, *penalty_s, *paused_s, *membername;
+ const char *queuename, *interface, *penalty_s, *paused_s, *membername;
int paused, penalty = 0;
queuename = astman_get_header(m, "Queue");
return 0;
}
-static int manager_remove_queue_member(struct mansession *s, struct message *m)
+static int manager_remove_queue_member(struct mansession *s, const struct message *m)
{
- char *queuename, *interface;
+ const char *queuename, *interface;
queuename = astman_get_header(m, "Queue");
interface = astman_get_header(m, "Interface");
return 0;
}
-static int manager_pause_queue_member(struct mansession *s, struct message *m)
+static int manager_pause_queue_member(struct mansession *s, const struct message *m)
{
- char *queuename, *interface, *paused_s;
+ const char *queuename, *interface, *paused_s;
int paused;
interface = astman_get_header(m, "Interface");
" Channel: Channel name to send digit to\n"
" Digit: The dtmf digit to play\n";
-static int manager_play_dtmf(struct mansession *s, struct message *m)
+static int manager_play_dtmf(struct mansession *s, const struct message *m)
{
- char *channel = astman_get_header(m, "Channel");
- char *digit = astman_get_header(m, "Digit");
+ const char *channel = astman_get_header(m, "Channel");
+ const char *digit = astman_get_header(m, "Digit");
struct ast_channel *chan = ast_get_channel_by_name_locked(channel);
if (!chan) {
static char *appendcdruserfield_synopsis = "Append to the CDR user field";
-static int action_setcdruserfield(struct mansession *s, struct message *m)
+static int action_setcdruserfield(struct mansession *s, const struct message *m)
{
struct ast_channel *c = NULL;
- char *userfield = astman_get_header(m, "UserField");
- char *channel = astman_get_header(m, "Channel");
- char *append = astman_get_header(m, "Append");
+ const char *userfield = astman_get_header(m, "UserField");
+ const char *channel = astman_get_header(m, "Channel");
+ const char *append = astman_get_header(m, "Append");
if (ast_strlen_zero(channel)) {
astman_send_error(s, m, "No Channel specified");
* \returns
* \sa action_agent_logoff(), action_agent_callback_login(), load_module().
*/
-static int action_agents(struct mansession *s, struct message *m)
+static int action_agents(struct mansession *s, const struct message *m)
{
- char *id = astman_get_header(m,"ActionID");
+ const char *id = astman_get_header(m,"ActionID");
char idText[256] = "";
char chanbuf[256];
struct agent_pvt *p;
}
-static int agent_logoff(char *agent, int soft)
+static int agent_logoff(const char *agent, int soft)
{
struct agent_pvt *p;
long logintime;
* \returns
* \sa action_agents(), action_agent_callback_login(), load_module().
*/
-static int action_agent_logoff(struct mansession *s, struct message *m)
+static int action_agent_logoff(struct mansession *s, const struct message *m)
{
- char *agent = astman_get_header(m, "Agent");
- char *soft_s = astman_get_header(m, "Soft"); /* "true" is don't hangup */
+ const char *agent = astman_get_header(m, "Agent");
+ const char *soft_s = astman_get_header(m, "Soft"); /* "true" is don't hangup */
int soft;
int ret; /* return value of agent_logoff */
* \returns
* \sa action_agents(), action_agent_logoff(), load_module().
*/
-static int action_agent_callback_login(struct mansession *s, struct message *m)
+static int action_agent_callback_login(struct mansession *s, const struct message *m)
{
- char *agent = astman_get_header(m, "Agent");
- char *exten = astman_get_header(m, "Exten");
- char *context = astman_get_header(m, "Context");
- char *wrapuptime_s = astman_get_header(m, "WrapupTime");
- char *ackcall_s = astman_get_header(m, "AckCall");
+ const char *agent = astman_get_header(m, "Agent");
+ const char *exten = astman_get_header(m, "Exten");
+ const char *context = astman_get_header(m, "Context");
+ const char *wrapuptime_s = astman_get_header(m, "WrapupTime");
+ const char *ackcall_s = astman_get_header(m, "AckCall");
struct agent_pvt *p;
int login_state = 0;
{
return __iax2_show_peers(0, fd, NULL, argc, argv);
}
-static int manager_iax2_show_netstats( struct mansession *s, struct message *m )
+static int manager_iax2_show_netstats(struct mansession *s, const struct message *m)
{
ast_cli_netstats(s, -1, 0);
astman_append(s, "\r\n");
}
/* JDG: callback to display iax peers in manager */
-static int manager_iax2_show_peers( struct mansession *s, struct message *m )
+static int manager_iax2_show_peers(struct mansession *s, const struct message *m)
{
char *a[] = { "iax2", "show", "users" };
int ret;
- char *id;
- id = astman_get_header(m,"ActionID");
+ const char *id = astman_get_header(m,"ActionID");
+
if (!ast_strlen_zero(id))
astman_append(s, "ActionID: %s\r\n",id);
ret = __iax2_show_peers(1, -1, s, 3, a );
static char *nat2str(int nat) attribute_const;
static int peer_status(struct sip_peer *peer, char *status, int statuslen);
static int sip_show_users(int fd, int argc, char *argv[]);
-static int _sip_show_peers(int fd, int *total, struct mansession *s, struct message *m, int argc, char *argv[]);
-static int manager_sip_show_peers( struct mansession *s, struct message *m );
+static int _sip_show_peers(int fd, int *total, struct mansession *s, const struct message *m, int argc, const char *argv[]);
static int sip_show_peers(int fd, int argc, char *argv[]);
static int sip_show_objects(int fd, int argc, char *argv[]);
static void print_group(int fd, ast_group_t group, int crlf);
static void print_codec_to_cli(int fd, struct ast_codec_pref *pref);
static const char *domain_mode_to_text(const enum domain_mode mode);
static int sip_show_domains(int fd, int argc, char *argv[]);
-static int _sip_show_peer(int type, int fd, struct mansession *s, struct message *m, int argc, char *argv[]);
-static int manager_sip_show_peer( struct mansession *s, struct message *m);
+static int _sip_show_peer(int type, int fd, struct mansession *s, const struct message *m, int argc, const char *argv[]);
static int sip_show_peer(int fd, int argc, char *argv[]);
-static int _sip_show_peer(int type, int fd, struct mansession *s, struct message *m, int argc, char *argv[]);
static int sip_show_user(int fd, int argc, char *argv[]);
static int sip_show_registry(int fd, int argc, char *argv[]);
static int sip_show_settings(int fd, int argc, char *argv[]);
/*! \brief Show SIP peers in the manager API */
/* Inspired from chan_iax2 */
-static int manager_sip_show_peers( struct mansession *s, struct message *m )
+static int manager_sip_show_peers(struct mansession *s, const struct message *m)
{
- char *id = astman_get_header(m,"ActionID");
- char *a[] = { "sip", "show", "peers" };
+ const char *id = astman_get_header(m,"ActionID");
+ const char *a[] = {"sip", "show", "peers"};
char idtext[256] = "";
int total = 0;
/*! \brief CLI Show Peers command */
static int sip_show_peers(int fd, int argc, char *argv[])
{
- return _sip_show_peers(fd, NULL, NULL, NULL, argc, argv);
+ return _sip_show_peers(fd, NULL, NULL, NULL, argc, (const char **) argv);
}
/*! \brief _sip_show_peers: Execute sip show peers command */
-static int _sip_show_peers(int fd, int *total, struct mansession *s, struct message *m, int argc, char *argv[])
+static int _sip_show_peers(int fd, int *total, struct mansession *s, const struct message *m, int argc, const char *argv[])
{
regex_t regexbuf;
int havepattern = FALSE;
int peers_mon_offline = 0;
int peers_unmon_offline = 0;
int peers_unmon_online = 0;
- char *id;
+ const char *id;
char idtext[256] = "";
int realtimepeers;
" ActionID: <id> Optional action ID for this AMI transaction.\n";
/*! \brief Show SIP peers in the manager API */
-static int manager_sip_show_peer( struct mansession *s, struct message *m)
+static int manager_sip_show_peer(struct mansession *s, const struct message *m)
{
- char *id = astman_get_header(m,"ActionID");
- char *a[4];
- char *peer;
+ const char *id = astman_get_header(m,"ActionID");
+ const char *a[4];
+ const char *peer;
int ret;
peer = astman_get_header(m,"Peer");
if (!ast_strlen_zero(id))
astman_append(s, "ActionID: %s\r\n",id);
- ret = _sip_show_peer(1, -1, s, m, 4, a );
+ ret = _sip_show_peer(1, -1, s, m, 4, a);
astman_append(s, "\r\n\r\n" );
return ret;
}
/*! \brief Show one peer in detail */
static int sip_show_peer(int fd, int argc, char *argv[])
{
- return _sip_show_peer(0, fd, NULL, NULL, argc, argv);
+ return _sip_show_peer(0, fd, NULL, NULL, argc, (const char **) argv);
}
/*! \brief Show one peer in detail (main function) */
-static int _sip_show_peer(int type, int fd, struct mansession *s, struct message *m, int argc, char *argv[])
+static int _sip_show_peer(int type, int fd, struct mansession *s, const struct message *m, int argc, const char *argv[])
{
char status[30] = "";
char cbuf[256];
return RESULT_SUCCESS;
}
-static int action_zaprestart(struct mansession *s, struct message *m)
+static int action_zaprestart(struct mansession *s, const struct message *m)
{
if (zap_restart() != 0) {
astman_send_error(s, m, "Failed rereading zaptel configuration");
return p;
}
-static int action_zapdndon(struct mansession *s, struct message *m)
-{
- struct zt_pvt *p = NULL;
- char *channel = astman_get_header(m, "ZapChannel");
- if (ast_strlen_zero(channel)) {
- astman_send_error(s, m, "No channel specified");
- return 0;
- }
- p = find_channel(atoi(channel));
- if (!p) {
- astman_send_error(s, m, "No such channel");
- return 0;
- }
- p->dnd = 1;
- astman_send_ack(s, m, "DND Enabled");
- return 0;
-}
-
-static int action_zapdndoff(struct mansession *s, struct message *m)
-{
- struct zt_pvt *p = NULL;
- char *channel = astman_get_header(m, "ZapChannel");
- if (ast_strlen_zero(channel)) {
- astman_send_error(s, m, "No channel specified");
- return 0;
- }
- p = find_channel(atoi(channel));
- if (!p) {
- astman_send_error(s, m, "No such channel");
- return 0;
- }
- p->dnd = 0;
- astman_send_ack(s, m, "DND Disabled");
- return 0;
-}
-
-static int action_transfer(struct mansession *s, struct message *m)
+static int action_zapdndon(struct mansession *s, const struct message *m)
{
struct zt_pvt *p = NULL;
- char *channel = astman_get_header(m, "ZapChannel");
+ const char *channel = astman_get_header(m, "ZapChannel");
+
+ if (ast_strlen_zero(channel)) {
+ astman_send_error(s, m, "No channel specified");
+ return 0;
+ }
+ p = find_channel(atoi(channel));
+ if (!p) {
+ astman_send_error(s, m, "No such channel");
+ return 0;
+ }
+ p->dnd = 1;
+ astman_send_ack(s, m, "DND Enabled");
+ return 0;
+}
+
+static int action_zapdndoff(struct mansession *s, const struct message *m)
+{
+ struct zt_pvt *p = NULL;
+ const char *channel = astman_get_header(m, "ZapChannel");
+
+ if (ast_strlen_zero(channel)) {
+ astman_send_error(s, m, "No channel specified");
+ return 0;
+ }
+ p = find_channel(atoi(channel));
+ if (!p) {
+ astman_send_error(s, m, "No such channel");
+ return 0;
+ }
+ p->dnd = 0;
+ astman_send_ack(s, m, "DND Disabled");
+ return 0;
+}
+
+static int action_transfer(struct mansession *s, const struct message *m)
+{
+ struct zt_pvt *p = NULL;
+ const char *channel = astman_get_header(m, "ZapChannel");
+
if (ast_strlen_zero(channel)) {
astman_send_error(s, m, "No channel specified");
return 0;
return 0;
}
-static int action_transferhangup(struct mansession *s, struct message *m)
+static int action_transferhangup(struct mansession *s, const struct message *m)
{
struct zt_pvt *p = NULL;
- char *channel = astman_get_header(m, "ZapChannel");
+ const char *channel = astman_get_header(m, "ZapChannel");
+
if (ast_strlen_zero(channel)) {
astman_send_error(s, m, "No channel specified");
return 0;
return 0;
}
-static int action_zapdialoffhook(struct mansession *s, struct message *m)
+static int action_zapdialoffhook(struct mansession *s, const struct message *m)
{
struct zt_pvt *p = NULL;
- char *channel = astman_get_header(m, "ZapChannel");
- char *number = astman_get_header(m, "Number");
+ const char *channel = astman_get_header(m, "ZapChannel");
+ const char *number = astman_get_header(m, "Number");
int i;
+
if (ast_strlen_zero(channel)) {
astman_send_error(s, m, "No channel specified");
return 0;
return 0;
}
-static int action_zapshowchannels(struct mansession *s, struct message *m)
+static int action_zapshowchannels(struct mansession *s, const struct message *m)
{
struct zt_pvt *tmp = NULL;
- char *id = astman_get_header(m, "ActionID");
+ const char *id = astman_get_header(m, "ActionID");
char idText[256] = "";
astman_send_ack(s, m, "Zapata channel status will follow");
ASTOBJ_CONTAINER_COMPONENTS(struct aji_client);
};
-int ast_aji_send(struct aji_client *client, char *address, char *message);
+int ast_aji_send(struct aji_client *client, const char *address, const char *message);
int ast_aji_disconnect(struct aji_client *client);
int ast_aji_check_roster(void);
void ast_aji_increment_mid(char *mid);
int ast_aji_create_chat(struct aji_client *client,char *room, char *server, char *topic);
int ast_aji_invite_chat(struct aji_client *client, char *user, char *room, char *message);
int ast_aji_join_chat(struct aji_client *client,char *room);
-struct aji_client *ast_aji_get_client(char *name);
+struct aji_client *ast_aji_get_client(const char *name);
struct aji_client_container *ast_aji_get_clients(void);
#endif
/* Export manager structures */
#define AST_MAX_MANHEADERS 80
-#define AST_MAX_MANHEADER_LEN 256
struct mansession;
struct message {
- int hdrcount;
- char headers[AST_MAX_MANHEADERS][AST_MAX_MANHEADER_LEN];
+ unsigned int hdrcount;
+ const char *headers[AST_MAX_MANHEADERS];
};
struct manager_action {
/*! Permission required for action. EVENT_FLAG_* */
int authority;
/*! Function to be called */
- int (*func)(struct mansession *s, struct message *m);
+ int (*func)(struct mansession *s, const struct message *m);
/*! For easy linking */
struct manager_action *next;
};
int ast_manager_register2(
const char *action,
int authority,
- int (*func)(struct mansession *s, struct message *m),
+ int (*func)(struct mansession *s, const struct message *m),
const char *synopsis,
const char *description);
\param event Event name
\param contents Contents of event
*/
-int manager_event(int category, const char *event, const char *contents, ...)
- __attribute__ ((format (printf, 3,4)));
+int __attribute__ ((format (printf, 3,4))) manager_event(int category, const char *event, const char *contents, ...);
/*! Get header from mananger transaction */
-char *astman_get_header(struct message *m, char *var);
+const char *astman_get_header(const struct message *m, char *var);
/*! Get a linked list of the Variable: headers */
-struct ast_variable *astman_get_variables(struct message *m);
+struct ast_variable *astman_get_variables(const struct message *m);
/*! Send error in manager transaction */
-void astman_send_error(struct mansession *s, struct message *m, char *error);
-void astman_send_response(struct mansession *s, struct message *m, char *resp, char *msg);
-void astman_send_ack(struct mansession *s, struct message *m, char *msg);
-
-void astman_append(struct mansession *s, const char *fmt, ...)
- __attribute__ ((format (printf, 2, 3)));
+void astman_send_error(struct mansession *s, const struct message *m, char *error);
+void astman_send_response(struct mansession *s, const struct message *m, char *resp, char *msg);
+void astman_send_ack(struct mansession *s, const struct message *m, char *msg);
+void __attribute__ ((format (printf, 2, 3))) astman_append(struct mansession *s, const char *fmt, ...);
/*! Called by Asterisk initialization */
int init_manager(void);
-/*! Called by Asterisk initialization */
int reload_manager(void);
#endif /* _ASTERISK_MANAGER_H */
lineno++;
if (fgets(buf, sizeof(buf), f)) {
if ( withcomments ) {
- ast_log(LOG_NOTICE, "moo\n");
CB_ADD(lline_buffer); /* add the current lline buffer to the comment buffer */
lline_buffer[0] = 0; /* erase the lline buffer */
}
database_deltree_usage },
};
-static int manager_dbput(struct mansession *s, struct message *m)
+static int manager_dbput(struct mansession *s, const struct message *m)
{
- char *family = astman_get_header(m, "Family");
- char *key = astman_get_header(m, "Key");
- char *val = astman_get_header(m, "Val");
+ const char *family = astman_get_header(m, "Family");
+ const char *key = astman_get_header(m, "Key");
+ const char *val = astman_get_header(m, "Val");
int res;
if (ast_strlen_zero(family)) {
return 0;
}
- res = ast_db_put(family, key, val);
+ res = ast_db_put(family, key, (char *) val);
if (res) {
astman_send_error(s, m, "Failed to update entry");
} else {
return 0;
}
-static int manager_dbget(struct mansession *s, struct message *m)
+static int manager_dbget(struct mansession *s, const struct message *m)
{
- char *id = astman_get_header(m,"ActionID");
+ const char *id = astman_get_header(m,"ActionID");
char idText[256] = "";
- char *family = astman_get_header(m, "Family");
- char *key = astman_get_header(m, "Key");
+ const char *family = astman_get_header(m, "Family");
+ const char *key = astman_get_header(m, "Key");
char tmp[256];
int res;
#include "asterisk/linkedlists.h"
struct fast_originate_helper {
- char tech[AST_MAX_MANHEADER_LEN];
- char data[AST_MAX_MANHEADER_LEN];
+ char tech[AST_MAX_EXTENSION];
+ char data[AST_MAX_EXTENSION];
int timeout;
char app[AST_MAX_APP];
- char appdata[AST_MAX_MANHEADER_LEN];
- char cid_name[AST_MAX_MANHEADER_LEN];
- char cid_num[AST_MAX_MANHEADER_LEN];
+ char appdata[AST_MAX_EXTENSION];
+ char cid_name[AST_MAX_EXTENSION];
+ char cid_num[AST_MAX_EXTENSION];
char context[AST_MAX_CONTEXT];
char exten[AST_MAX_EXTENSION];
- char idtext[AST_MAX_MANHEADER_LEN];
+ char idtext[AST_MAX_EXTENSION];
char account[AST_MAX_ACCOUNT_CODE];
int priority;
struct ast_variable *vars;
/*! Authorization for writing */
int writeperm;
/*! Buffer */
- char inbuf[AST_MAX_MANHEADER_LEN];
+ char inbuf[1024];
int inlen;
int send_events;
int displaysystemname; /*!< Add system name to manager responses and events */
free_session(s);
}
-char *astman_get_header(struct message *m, char *var)
+const char *astman_get_header(const struct message *m, char *var)
{
char cmp[80];
int x;
return "";
}
-struct ast_variable *astman_get_variables(struct message *m)
+struct ast_variable *astman_get_variables(const struct message *m)
{
int varlen, x, y;
struct ast_variable *head = NULL, *cur;
be read until either the current action finishes or get_input() obtains the session
lock.
*/
-void astman_send_error(struct mansession *s, struct message *m, char *error)
+void astman_send_error(struct mansession *s, const struct message *m, char *error)
{
- char *id = astman_get_header(m,"ActionID");
+ const char *id = astman_get_header(m,"ActionID");
astman_append(s, "Response: Error\r\n");
if (!ast_strlen_zero(id))
astman_append(s, "Message: %s\r\n\r\n", error);
}
-void astman_send_response(struct mansession *s, struct message *m, char *resp, char *msg)
+void astman_send_response(struct mansession *s, const struct message *m, char *resp, char *msg)
{
- 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))
astman_append(s, "\r\n");
}
-void astman_send_ack(struct mansession *s, struct message *m, char *msg)
+void astman_send_ack(struct mansession *s, const struct message *m, char *msg)
{
astman_send_response(s, m, "Success", msg);
}
return ret ? atoi(string) : 0;
}
-static int ast_strings_to_mask(char *string)
+static int strings_to_mask(const char *string)
{
int x, ret = -1;
- x = ast_is_number(string);
+ x = ast_is_number((char *) string);
if (x)
ret = x;
Rather than braindead on,off this now can also accept a specific int mask value
or a ',' delim list of mask strings (the same as manager.conf) -anthm
*/
-static int set_eventmask(struct mansession *s, char *eventmask)
+static int set_eventmask(struct mansession *s, const char *eventmask)
{
- int maskint = ast_strings_to_mask(eventmask);
+ int maskint = strings_to_mask(eventmask);
ast_mutex_lock(&s->__lock);
if (maskint >= 0)
return maskint;
}
-static int authenticate(struct mansession *s, struct message *m)
+static int authenticate(struct mansession *s, const struct message *m)
{
struct ast_config *cfg;
char *cat;
- char *user = astman_get_header(m, "Username");
- char *pass = astman_get_header(m, "Secret");
- char *authtype = astman_get_header(m, "AuthType");
- char *key = astman_get_header(m, "Key");
- char *events = astman_get_header(m, "Events");
+ const char *user = astman_get_header(m, "Username");
+ const char *pass = astman_get_header(m, "Secret");
+ const char *authtype = astman_get_header(m, "AuthType");
+ const char *key = astman_get_header(m, "Key");
+ const char *events = astman_get_header(m, "Events");
cfg = ast_config_load("manager.conf");
if (!cfg)
" manager connection open.\n"
"Variables: NONE\n";
-static int action_ping(struct mansession *s, struct message *m)
+static int action_ping(struct mansession *s, const struct message *m)
{
astman_send_response(s, m, "Pong", NULL);
return 0;
"Variables:\n"
" Filename: Configuration filename (e.g. foo.conf)\n";
-static int action_getconfig(struct mansession *s, struct message *m)
+static int action_getconfig(struct mansession *s, const struct message *m)
{
struct ast_config *cfg;
- char *fn = astman_get_header(m, "Filename");
+ const char *fn = astman_get_header(m, "Filename");
int catcount = 0;
int lineno = 0;
char *category=NULL;
struct ast_variable *v;
char idText[256] = "";
- char *id = astman_get_header(m, "ActionID");
+ const char *id = astman_get_header(m, "ActionID");
if (!ast_strlen_zero(id))
snprintf(idText, sizeof(idText), "ActionID: %s\r\n", id);
}
-static void handle_updates(struct mansession *s, struct message *m, struct ast_config *cfg)
+static void handle_updates(struct mansession *s, const struct message *m, struct ast_config *cfg)
{
int x;
char hdr[40];
- char *action, *cat, *var, *value, *match;
+ const char *action, *cat, *var, *value, *match;
struct ast_category *category;
struct ast_variable *v;
}
} else if (!strcasecmp(action, "delcat")) {
if (!ast_strlen_zero(cat))
- ast_category_delete(cfg, cat);
+ ast_category_delete(cfg, (char *) cat);
} else if (!strcasecmp(action, "update")) {
if (!ast_strlen_zero(cat) && !ast_strlen_zero(var) && (category = ast_category_get(cfg, cat)))
- ast_variable_update(category, var, value, match);
+ ast_variable_update(category, (char *) var, (char *) value, (char *) match);
} else if (!strcasecmp(action, "delete")) {
if (!ast_strlen_zero(cat) && !ast_strlen_zero(var) && (category = ast_category_get(cfg, cat)))
- ast_variable_delete(category, var, match);
+ ast_variable_delete(category, (char *) var, (char *) match);
} else if (!strcasecmp(action, "append")) {
if (!ast_strlen_zero(cat) && !ast_strlen_zero(var) &&
(category = ast_category_get(cfg, cat)) &&
" Value-XXXXXX: Value to work on\n"
" Match-XXXXXX: Extra match required to match line\n";
-static int action_updateconfig(struct mansession *s, struct message *m)
+static int action_updateconfig(struct mansession *s, const struct message *m)
{
struct ast_config *cfg;
- char *sfn = astman_get_header(m, "SrcFilename");
- char *dfn = astman_get_header(m, "DstFilename");
+ const char *sfn = astman_get_header(m, "SrcFilename");
+ const char *dfn = astman_get_header(m, "DstFilename");
int res;
char idText[256] = "";
- char *id = astman_get_header(m, "ActionID");
- char *rld = astman_get_header(m, "Reload");
+ const char *id = astman_get_header(m, "ActionID");
+ const char *rld = astman_get_header(m, "Reload");
if (!ast_strlen_zero(id))
snprintf(idText, sizeof(idText), "ActionID: %s\r\n", id);
"Variables: \n"
" Timeout: Maximum time to wait for events\n";
-static int action_waitevent(struct mansession *s, struct message *m)
+static int action_waitevent(struct mansession *s, const struct message *m)
{
- char *timeouts = astman_get_header(m, "Timeout");
+ const char *timeouts = astman_get_header(m, "Timeout");
int timeout = -1, max;
int x;
int needexit = 0;
time_t now;
struct eventqent *eqe;
- char *id = astman_get_header(m,"ActionID");
+ const char *id = astman_get_header(m,"ActionID");
char idText[256] = "";
if (!ast_strlen_zero(id))
" action that is available to the user\n"
"Variables: NONE\n";
-static int action_listcommands(struct mansession *s, struct message *m)
+static int action_listcommands(struct mansession *s, const struct message *m)
{
struct manager_action *cur = first_action;
char idText[256] = "";
char temp[BUFSIZ];
- char *id = astman_get_header(m,"ActionID");
+ const char *id = astman_get_header(m,"ActionID");
if (!ast_strlen_zero(id))
snprintf(idText, sizeof(idText), "ActionID: %s\r\n", id);
" 'off' if no events should be sent,\n"
" 'system,call,log' to select which flags events should have to be sent.\n";
-static int action_events(struct mansession *s, struct message *m)
+static int action_events(struct mansession *s, const struct message *m)
{
- char *mask = astman_get_header(m, "EventMask");
+ const char *mask = astman_get_header(m, "EventMask");
int res;
res = set_eventmask(s, mask);
"Description: Logoff this manager session\n"
"Variables: NONE\n";
-static int action_logoff(struct mansession *s, struct message *m)
+static int action_logoff(struct mansession *s, const struct message *m)
{
astman_send_response(s, m, "Goodbye", "Thanks for all the fish.");
return -1;
"Variables: \n"
" Channel: The channel name to be hungup\n";
-static int action_hangup(struct mansession *s, struct message *m)
+static int action_hangup(struct mansession *s, const struct message *m)
{
struct ast_channel *c = NULL;
- char *name = astman_get_header(m, "Channel");
+ const char *name = astman_get_header(m, "Channel");
if (ast_strlen_zero(name)) {
astman_send_error(s, m, "No channel specified");
return 0;
" *Variable: Variable name\n"
" *Value: Value\n";
-static int action_setvar(struct mansession *s, struct message *m)
+static int action_setvar(struct mansession *s, const struct message *m)
{
struct ast_channel *c = NULL;
- char *name = astman_get_header(m, "Channel");
- char *varname = astman_get_header(m, "Variable");
- char *varval = astman_get_header(m, "Value");
+ const char *name = astman_get_header(m, "Channel");
+ const char *varname = astman_get_header(m, "Variable");
+ const char *varval = astman_get_header(m, "Value");
if (ast_strlen_zero(varname)) {
astman_send_error(s, m, "No variable specified");
" *Variable: Variable name\n"
" ActionID: Optional Action id for message matching.\n";
-static int action_getvar(struct mansession *s, struct message *m)
+static int action_getvar(struct mansession *s, const struct message *m)
{
struct ast_channel *c = NULL;
- char *name = astman_get_header(m, "Channel");
- char *varname = astman_get_header(m, "Variable");
- char *id = astman_get_header(m,"ActionID");
+ const char *name = astman_get_header(m, "Channel");
+ const char *varname = astman_get_header(m, "Variable");
+ const char *id = astman_get_header(m,"ActionID");
char *varval;
char workspace[1024];
}
if (varname[strlen(varname) - 1] == ')') {
- ast_func_read(c, varname, workspace, sizeof(workspace));
+ ast_func_read(c, (char *) varname, workspace, sizeof(workspace));
} else {
pbx_retrieve_variable(c, varname, &varval, workspace, sizeof(workspace), NULL);
}
/*! \brief Manager "status" command to show channels */
/* Needs documentation... */
-static int action_status(struct mansession *s, struct message *m)
+static int action_status(struct mansession *s, const struct message *m)
{
- char *id = astman_get_header(m,"ActionID");
- char *name = astman_get_header(m,"Channel");
+ const char *id = astman_get_header(m,"ActionID");
+ const char *name = astman_get_header(m,"Channel");
char idText[256] = "";
struct ast_channel *c;
char bridge[256];
" ActionID: Optional Action id for message matching.\n";
/*! \brief action_redirect: The redirect manager command */
-static int action_redirect(struct mansession *s, struct message *m)
+static int action_redirect(struct mansession *s, const struct message *m)
{
- char *name = astman_get_header(m, "Channel");
- char *name2 = astman_get_header(m, "ExtraChannel");
- char *exten = astman_get_header(m, "Exten");
- char *context = astman_get_header(m, "Context");
- char *priority = astman_get_header(m, "Priority");
+ const char *name = astman_get_header(m, "Channel");
+ const char *name2 = astman_get_header(m, "ExtraChannel");
+ const char *exten = astman_get_header(m, "Exten");
+ const char *context = astman_get_header(m, "Context");
+ const char *priority = astman_get_header(m, "Priority");
struct ast_channel *chan, *chan2 = NULL;
int pi = 0;
int res;
" ActionID: Optional Action id for message matching.\n";
/*! \brief action_command: Manager command "command" - execute CLI command */
-static int action_command(struct mansession *s, struct message *m)
+static int action_command(struct mansession *s, const struct message *m)
{
- char *cmd = astman_get_header(m, "Command");
- char *id = astman_get_header(m, "ActionID");
+ const char *cmd = astman_get_header(m, "Command");
+ const char *id = astman_get_header(m, "ActionID");
astman_append(s, "Response: Follows\r\nPrivilege: Command\r\n");
if (!ast_strlen_zero(id))
astman_append(s, "ActionID: %s\r\n", id);
" Account: Account code\n"
" Async: Set to 'true' for fast origination\n";
-static int action_originate(struct mansession *s, struct message *m)
-{
- char *name = astman_get_header(m, "Channel");
- char *exten = astman_get_header(m, "Exten");
- char *context = astman_get_header(m, "Context");
- char *priority = astman_get_header(m, "Priority");
- char *timeout = astman_get_header(m, "Timeout");
- char *callerid = astman_get_header(m, "CallerID");
- char *account = astman_get_header(m, "Account");
- char *app = astman_get_header(m, "Application");
- char *appdata = astman_get_header(m, "Data");
- char *async = astman_get_header(m, "Async");
- char *id = astman_get_header(m, "ActionID");
+static int action_originate(struct mansession *s, const struct message *m)
+{
+ const char *name = astman_get_header(m, "Channel");
+ const char *exten = astman_get_header(m, "Exten");
+ const char *context = astman_get_header(m, "Context");
+ const char *priority = astman_get_header(m, "Priority");
+ const char *timeout = astman_get_header(m, "Timeout");
+ const char *callerid = astman_get_header(m, "CallerID");
+ const char *account = astman_get_header(m, "Account");
+ const char *app = astman_get_header(m, "Application");
+ const char *appdata = astman_get_header(m, "Data");
+ const char *async = astman_get_header(m, "Async");
+ const char *id = astman_get_header(m, "ActionID");
struct ast_variable *vars = astman_get_variables(m);
char *tech, *data;
char *l = NULL, *n = NULL;
" Waiting: <count>\n"
"\n";
-static int action_mailboxstatus(struct mansession *s, struct message *m)
+static int action_mailboxstatus(struct mansession *s, const struct message *m)
{
- char *mailbox = astman_get_header(m, "Mailbox");
- char *id = astman_get_header(m,"ActionID");
+ const char *mailbox = astman_get_header(m, "Mailbox");
+ const char *id = astman_get_header(m,"ActionID");
char idText[256] = "";
int ret;
if (ast_strlen_zero(mailbox)) {
" NewMessages: <count>\n"
" OldMessages: <count>\n"
"\n";
-static int action_mailboxcount(struct mansession *s, struct message *m)
+static int action_mailboxcount(struct mansession *s, const struct message *m)
{
- char *mailbox = astman_get_header(m, "Mailbox");
- char *id = astman_get_header(m,"ActionID");
+ const char *mailbox = astman_get_header(m, "Mailbox");
+ const char *id = astman_get_header(m,"ActionID");
char idText[256] = "";
int newmsgs = 0, oldmsgs = 0;
if (ast_strlen_zero(mailbox)) {
"Will return an \"Extension Status\" message.\n"
"The response will include the hint for the extension and the status.\n";
-static int action_extensionstate(struct mansession *s, struct message *m)
+static int action_extensionstate(struct mansession *s, const struct message *m)
{
- char *exten = astman_get_header(m, "Exten");
- char *context = astman_get_header(m, "Context");
- char *id = astman_get_header(m,"ActionID");
+ const char *exten = astman_get_header(m, "Exten");
+ const char *context = astman_get_header(m, "Context");
+ const char *id = astman_get_header(m,"ActionID");
char idText[256] = "";
char hint[256] = "";
int status;
" *Timeout: Maximum duration of the call (sec)\n"
"Acknowledges set time with 'Timeout Set' message\n";
-static int action_timeout(struct mansession *s, struct message *m)
+static int action_timeout(struct mansession *s, const struct message *m)
{
struct ast_channel *c = NULL;
- char *name = astman_get_header(m, "Channel");
+ const char *name = astman_get_header(m, "Channel");
int timeout = atoi(astman_get_header(m, "Timeout"));
if (ast_strlen_zero(name)) {
astman_send_error(s, m, "No channel specified");
" Header1: Content1\n"
" HeaderN: ContentN\n";
-static int action_userevent(struct mansession *s, struct message *m)
+static int action_userevent(struct mansession *s, const struct message *m)
{
- char *event = astman_get_header(m, "UserEvent");
+ const char *event = astman_get_header(m, "UserEvent");
char body[2048] = "";
int x, bodylen = 0;
for (x = 0; x < m->hdrcount; x++) {
return 0;
}
-static int process_message(struct mansession *s, struct message *m)
+static int process_message(struct mansession *s, const struct message *m)
{
char action[80] = "";
struct manager_action *tmp = first_action;
- char *id = astman_get_header(m,"ActionID");
+ const char *id = astman_get_header(m,"ActionID");
char idText[256] = "";
int ret = 0;
}
if (!s->authenticated) {
if (!strcasecmp(action, "Challenge")) {
- char *authtype;
- authtype = astman_get_header(m, "AuthType");
+ const char *authtype = astman_get_header(m, "AuthType");
+
if (!strcasecmp(authtype, "MD5")) {
if (ast_strlen_zero(s->challenge))
snprintf(s->challenge, sizeof(s->challenge), "%ld", ast_random());
return 0;
}
+static int do_message(struct mansession *s)
+{
+ struct message m = { 0 };
+ char header_buf[sizeof(s->inbuf)] = { '\0' };
+ int res;
+
+ for (;;) {
+ res = get_input(s, header_buf);
+ if (res > 0) {
+ /* Strip trailing \r\n */
+ if (strlen(header_buf) < 2)
+ continue;
+ header_buf[strlen(header_buf) - 2] = '\0';
+ if (ast_strlen_zero(header_buf))
+ return process_message(s, &m) ? -1 : 0;
+ else if (m.hdrcount < (AST_MAX_MANHEADERS - 1))
+ m.headers[m.hdrcount++] = ast_strdupa(header_buf);
+ } else {
+ return res;
+ }
+ }
+}
+
static void *session_do(void *data)
{
struct mansession *s = data;
- struct message m;
int res;
ast_mutex_lock(&s->__lock);
astman_append(s, "Asterisk Call Manager/1.0\r\n");
ast_mutex_unlock(&s->__lock);
- memset(&m, 0, sizeof(m));
for (;;) {
- res = get_input(s, m.headers[m.hdrcount]);
- if (res > 0) {
- /* Strip trailing \r\n */
- if (strlen(m.headers[m.hdrcount]) < 2)
- continue;
- m.headers[m.hdrcount][strlen(m.headers[m.hdrcount]) - 2] = '\0';
- if (ast_strlen_zero(m.headers[m.hdrcount])) {
- if (process_message(s, &m))
- break;
- memset(&m, 0, sizeof(m));
- } else if (m.hdrcount < AST_MAX_MANHEADERS - 1)
- m.hdrcount++;
+ res = do_message(s);
+
+ if (res == 0) {
+ continue;
} else if (res < 0) {
break;
} else if (s->eventq->next) {
/*! \brief register a new command with manager, including online help. This is
the preferred way to register a manager command */
-int ast_manager_register2(const char *action, int auth, int (*func)(struct mansession *s, struct message *m), const char *synopsis, const char *description)
+int ast_manager_register2(const char *action, int auth, int (*func)(struct mansession *s, const struct message *m), const char *synopsis, const char *description)
{
struct manager_action *cur;
}
-static void vars2msg(struct message *m, struct ast_variable *vars)
-{
- int x;
- for (x = 0; vars && (x < AST_MAX_MANHEADERS); x++, vars = vars->next) {
- if (!vars)
- break;
- m->hdrcount = x + 1;
- snprintf(m->headers[x], sizeof(m->headers[x]), "%s: %s", vars->name, vars->value);
- }
-}
-
enum {
FORMAT_RAW,
FORMAT_HTML,
int blastaway = 0;
char *c = workspace;
char *retval = NULL;
- struct message m;
struct ast_variable *v;
for (v = params; v; v = v->next) {
s->sessiontimeout += httptimeout;
ast_mutex_unlock(&s->__lock);
- memset(&m, 0, sizeof(m));
if (s) {
+ struct message m = { 0 };
char tmp[80];
- ast_build_string(&c, &len, "Content-type: text/%s\r\n", contenttype[format]);
- sprintf(tmp, "%08lx", s->managerid);
- ast_build_string(&c, &len, "%s\r\n", ast_http_setcookie("mansession_id", tmp, httptimeout, cookie, sizeof(cookie)));
- if (format == FORMAT_HTML)
- ast_build_string(&c, &len, "<title>Asterisk™ Manager Test Interface</title>");
- vars2msg(&m, params);
- if (format == FORMAT_XML) {
- ast_build_string(&c, &len, "<ajax-response>\n");
- } else if (format == FORMAT_HTML) {
- ast_build_string(&c, &len, "<body bgcolor=\"#ffffff\"><table align=center bgcolor=\"#f1f1f1\" width=\"500\">\r\n");
- ast_build_string(&c, &len, "<tr><td colspan=\"2\" bgcolor=\"#f1f1ff\"><h1> Manager Tester</h1></td></tr>\r\n");
+ unsigned int x;
+ size_t hdrlen;
+
+ for (x = 0; params && (x < AST_MAX_MANHEADERS); x++, params = params->next) {
+ hdrlen = strlen(params->name) + strlen(params->value) + 3;
+ m.headers[m.hdrcount] = alloca(hdrlen);
+ snprintf((char *) m.headers[m.hdrcount], hdrlen, "%s: %s", params->name, params->value);
+ m.hdrcount = x + 1;
}
+
if (process_message(s, &m)) {
if (s->authenticated) {
if (option_verbose > 1) {
}
s->needdestroy = 1;
}
+ ast_build_string(&c, &len, "Content-type: text/%s\r\n", contenttype[format]);
+ sprintf(tmp, "%08lx", s->managerid);
+ ast_build_string(&c, &len, "%s\r\n", ast_http_setcookie("mansession_id", tmp, httptimeout, cookie, sizeof(cookie)));
+ if (format == FORMAT_HTML)
+ ast_build_string(&c, &len, "<title>Asterisk™ Manager Interface</title>");
+ if (format == FORMAT_XML) {
+ ast_build_string(&c, &len, "<ajax-response>\n");
+ } else if (format == FORMAT_HTML) {
+ ast_build_string(&c, &len, "<body bgcolor=\"#ffffff\"><table align=center bgcolor=\"#f1f1f1\" width=\"500\">\r\n");
+ ast_build_string(&c, &len, "<tr><td colspan=\"2\" bgcolor=\"#f1f1ff\"><h1> Manager Tester</h1></td></tr>\r\n");
+ }
if (s->outputstr) {
char *tmp;
if (format == FORMAT_XML)
};
/*! \brief Dump lot status */
-static int manager_parking_status( struct mansession *s, struct message *m )
+static int manager_parking_status( struct mansession *s, const struct message *m)
{
struct parkeduser *cur;
- char *id = astman_get_header(m,"ActionID");
+ const char *id = astman_get_header(m,"ActionID");
char idText[256] = "";
if (!ast_strlen_zero(id))
" *Channel2: Channel to announce park info to (and return to if timeout)\n"
" Timeout: Number of milliseconds to wait before callback.\n";
-static int manager_park(struct mansession *s, struct message *m)
+static int manager_park(struct mansession *s, const struct message *m)
{
- char *channel = astman_get_header(m, "Channel");
- char *channel2 = astman_get_header(m, "Channel2");
- char *timeout = astman_get_header(m, "Timeout");
+ const char *channel = astman_get_header(m, "Channel");
+ const char *channel2 = astman_get_header(m, "Channel2");
+ const char *timeout = astman_get_header(m, "Timeout");
char buf[BUFSIZ];
int to = 0;
int res = 0;
#define JABBER_CONFIG "jabber.conf"
/*-- Forward declarations */
-static int manager_jabber_send( struct mansession *s, struct message *m );
static int aji_highest_bit(int number);
static void aji_buddy_destroy(struct aji_buddy *obj);
static void aji_client_destroy(struct aji_client *obj);
* \param aji_client struct , reciever, message.
* \return 1.
*/
-int ast_aji_send(struct aji_client *client, char *address, char *message)
+int ast_aji_send(struct aji_client *client, const char *address, const char *message)
{
int res = 0;
iks *message_packet = NULL;
* \param void.
* \return 1.
*/
-struct aji_client *ast_aji_get_client(char *name)
+struct aji_client *ast_aji_get_client(const char *name)
{
struct aji_client *client = NULL;
" Message: Message to be sent to the buddy\n";
/*! \brief Send a Jabber Message via call from the Manager */
-static int manager_jabber_send( struct mansession *s, struct message *m )
+static int manager_jabber_send(struct mansession *s, const struct message *m)
{
struct aji_client *client = NULL;
- char *id = astman_get_header(m,"ActionID");
- char *jabber = astman_get_header(m,"Jabber");
- char *screenname = astman_get_header(m,"ScreenName");
- char *message = astman_get_header(m,"Message");
+ const char *id = astman_get_header(m,"ActionID");
+ const char *jabber = astman_get_header(m,"Jabber");
+ const char *screenname = astman_get_header(m,"ScreenName");
+ const char *message = astman_get_header(m,"Message");
if (ast_strlen_zero(jabber)) {
astman_send_error(s, m, "No transport specified");
" the input and output channels together after the\n"
" recording is finished.\n";
-static int start_monitor_action(struct mansession *s, struct message *m)
+static int start_monitor_action(struct mansession *s, const struct message *m)
{
struct ast_channel *c = NULL;
- char *name = astman_get_header(m, "Channel");
- char *fname = astman_get_header(m, "File");
- char *format = astman_get_header(m, "Format");
- char *mix = astman_get_header(m, "Mix");
+ const char *name = astman_get_header(m, "Channel");
+ const char *fname = astman_get_header(m, "File");
+ const char *format = astman_get_header(m, "Format");
+ const char *mix = astman_get_header(m, "Mix");
char *d;
if (ast_strlen_zero(name)) {
" started 'Monitor' action. The only parameter is 'Channel', the name\n"
" of the channel monitored.\n";
-static int stop_monitor_action(struct mansession *s, struct message *m)
+static int stop_monitor_action(struct mansession *s, const struct message *m)
{
struct ast_channel *c = NULL;
- char *name = astman_get_header(m, "Channel");
+ const char *name = astman_get_header(m, "Channel");
int res;
if (ast_strlen_zero(name)) {
astman_send_error(s, m, "No channel specified");
" File - Required. Is the new name of the file created in the\n"
" monitor spool directory.\n";
-static int change_monitor_action(struct mansession *s, struct message *m)
+static int change_monitor_action(struct mansession *s, const struct message *m)
{
struct ast_channel *c = NULL;
- char *name = astman_get_header(m, "Channel");
- char *fname = astman_get_header(m, "File");
+ const char *name = astman_get_header(m, "Channel");
+ const char *fname = astman_get_header(m, "File");
if (ast_strlen_zero(name)) {
astman_send_error(s, m, "No channel specified");
return 0;
MONITOR_ACTION_UNPAUSE
};
-static int do_pause_or_unpause(struct mansession *s, struct message *m, int action)
+static int do_pause_or_unpause(struct mansession *s, const struct message *m, int action)
{
struct ast_channel *c = NULL;
- char *name = astman_get_header(m, "Channel");
+ const char *name = astman_get_header(m, "Channel");
if (IS_NULL_STRING(name)) {
astman_send_error(s, m, "No channel specified");
" be used to control this:\n"
" Channel - Required. Used to specify the channel to record.\n";
-static int pause_monitor_action(struct mansession *s, struct message *m)
+static int pause_monitor_action(struct mansession *s, const struct message *m)
{
return do_pause_or_unpause(s, m, MONITOR_ACTION_PAUSE);
}
" be used to control this:\n"
" Channel - Required. Used to specify the channel to record.\n";
-static int unpause_monitor_action(struct mansession *s, struct message *m)
+static int unpause_monitor_action(struct mansession *s, const struct message *m)
{
return do_pause_or_unpause(s, m, MONITOR_ACTION_UNPAUSE);
}
#include <stdlib.h>
#include "asterisk/md5.h"
-#include "asterisk/manager.h"
#include "asterisk/linkedlists.h"
#undef gethostbyname
*/
#define _NEWT_CAST (void *)
+#define DEFAULT_MANAGER_PORT 5038
+
+struct message {
+ unsigned int hdrcount;
+ char headers[MAX_HEADERS][MAX_LEN];
+};
+
static struct ast_mansession {
struct sockaddr_in sin;
int fd;