Add 'description' field for CLI and Manager output
(closes issue #19076) Reported by: lmadsen Patches: __20110408-channel-description.txt uploaded by lmadsen (license 10) Tested by: lmadsen Review: https://reviewboard.asterisk.org/r/1163/ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@313528 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
parent
60e343ea05
commit
d46f900580
6
CHANGES
6
CHANGES
|
@ -23,6 +23,9 @@ Asterisk Manager Interface
|
||||||
for chan_dahdi ISDN channels.
|
for chan_dahdi ISDN channels.
|
||||||
* Added new action MeetmeListRooms to list active conferences (shows same
|
* Added new action MeetmeListRooms to list active conferences (shows same
|
||||||
data as "meetme list" at the CLI).
|
data as "meetme list" at the CLI).
|
||||||
|
* DAHDIShowChannels, SIPshowpeer, SIPpeers, and IAXpeers now contains a
|
||||||
|
Description field that is set by 'description' in the channel configuration
|
||||||
|
file.
|
||||||
|
|
||||||
Asterisk HTTP Server
|
Asterisk HTTP Server
|
||||||
--------------------------
|
--------------------------
|
||||||
|
@ -41,6 +44,9 @@ CLI Changes
|
||||||
alternate configuration file to use.
|
alternate configuration file to use.
|
||||||
* 'dialplan add extension' command will now automatically create a context if
|
* 'dialplan add extension' command will now automatically create a context if
|
||||||
the specified context does not exist with a message indicated it did so.
|
the specified context does not exist with a message indicated it did so.
|
||||||
|
* 'sip show peers', 'iax show peers', and 'dahdi show peers' now contains a
|
||||||
|
Description field which can be populated with 'description' in the channel
|
||||||
|
configuration files (sip.conf, iax2.conf, and chan_dahdi.conf).
|
||||||
|
|
||||||
CDR
|
CDR
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
|
@ -979,6 +979,11 @@ struct dahdi_pvt {
|
||||||
* \note The "context" string read in from chan_dahdi.conf
|
* \note The "context" string read in from chan_dahdi.conf
|
||||||
*/
|
*/
|
||||||
char context[AST_MAX_CONTEXT];
|
char context[AST_MAX_CONTEXT];
|
||||||
|
/*!
|
||||||
|
* \brief A description for the channel configuration
|
||||||
|
* \note The "description" string read in from chan_dahdi.conf
|
||||||
|
*/
|
||||||
|
char description[32];
|
||||||
/*!
|
/*!
|
||||||
* \brief Saved context string.
|
* \brief Saved context string.
|
||||||
*/
|
*/
|
||||||
|
@ -1276,6 +1281,7 @@ struct dahdi_pvt {
|
||||||
MEMBER(dahdi_pvt, use_smdi, AST_DATA_BOOLEAN) \
|
MEMBER(dahdi_pvt, use_smdi, AST_DATA_BOOLEAN) \
|
||||||
MEMBER(dahdi_pvt, context, AST_DATA_STRING) \
|
MEMBER(dahdi_pvt, context, AST_DATA_STRING) \
|
||||||
MEMBER(dahdi_pvt, defcontext, AST_DATA_STRING) \
|
MEMBER(dahdi_pvt, defcontext, AST_DATA_STRING) \
|
||||||
|
MEMBER(dahdi_pvt, description, AST_DATA_STRING) \
|
||||||
MEMBER(dahdi_pvt, exten, AST_DATA_STRING) \
|
MEMBER(dahdi_pvt, exten, AST_DATA_STRING) \
|
||||||
MEMBER(dahdi_pvt, language, AST_DATA_STRING) \
|
MEMBER(dahdi_pvt, language, AST_DATA_STRING) \
|
||||||
MEMBER(dahdi_pvt, mohinterpret, AST_DATA_STRING) \
|
MEMBER(dahdi_pvt, mohinterpret, AST_DATA_STRING) \
|
||||||
|
@ -12682,6 +12688,7 @@ static struct dahdi_pvt *mkintf(int channel, const struct dahdi_chan_conf *conf,
|
||||||
ast_copy_string(tmp->mohinterpret, conf->chan.mohinterpret, sizeof(tmp->mohinterpret));
|
ast_copy_string(tmp->mohinterpret, conf->chan.mohinterpret, sizeof(tmp->mohinterpret));
|
||||||
ast_copy_string(tmp->mohsuggest, conf->chan.mohsuggest, sizeof(tmp->mohsuggest));
|
ast_copy_string(tmp->mohsuggest, conf->chan.mohsuggest, sizeof(tmp->mohsuggest));
|
||||||
ast_copy_string(tmp->context, conf->chan.context, sizeof(tmp->context));
|
ast_copy_string(tmp->context, conf->chan.context, sizeof(tmp->context));
|
||||||
|
ast_copy_string(tmp->description, conf->chan.description, sizeof(tmp->description));
|
||||||
ast_copy_string(tmp->parkinglot, conf->chan.parkinglot, sizeof(tmp->parkinglot));
|
ast_copy_string(tmp->parkinglot, conf->chan.parkinglot, sizeof(tmp->parkinglot));
|
||||||
tmp->cid_ton = 0;
|
tmp->cid_ton = 0;
|
||||||
if (analog_lib_handles(tmp->sig, tmp->radio, tmp->oprmode)) {
|
if (analog_lib_handles(tmp->sig, tmp->radio, tmp->oprmode)) {
|
||||||
|
@ -14995,8 +15002,8 @@ static int action_dahdirestart(struct mansession *s, const struct message *m)
|
||||||
|
|
||||||
static char *dahdi_show_channels(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
|
static char *dahdi_show_channels(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
|
||||||
{
|
{
|
||||||
#define FORMAT "%7s %-10.10s %-15.15s %-10.10s %-20.20s %-10.10s %-10.10s\n"
|
#define FORMAT "%7s %-10.10s %-15.15s %-10.10s %-20.20s %-10.10s %-10.10s %-32.32s\n"
|
||||||
#define FORMAT2 "%7s %-10.10s %-15.15s %-10.10s %-20.20s %-10.10s %-10.10s\n"
|
#define FORMAT2 "%7s %-10.10s %-15.15s %-10.10s %-20.20s %-10.10s %-10.10s %-32.32s\n"
|
||||||
unsigned int targetnum = 0;
|
unsigned int targetnum = 0;
|
||||||
int filtertype = 0;
|
int filtertype = 0;
|
||||||
struct dahdi_pvt *tmp = NULL;
|
struct dahdi_pvt *tmp = NULL;
|
||||||
|
@ -15033,7 +15040,7 @@ static char *dahdi_show_channels(struct ast_cli_entry *e, int cmd, struct ast_cl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ast_cli(a->fd, FORMAT2, "Chan", "Extension", "Context", "Language", "MOH Interpret", "Blocked", "State");
|
ast_cli(a->fd, FORMAT2, "Chan", "Extension", "Context", "Language", "MOH Interpret", "Blocked", "State", "Description");
|
||||||
ast_mutex_lock(&iflock);
|
ast_mutex_lock(&iflock);
|
||||||
for (tmp = iflist; tmp; tmp = tmp->next) {
|
for (tmp = iflist; tmp; tmp = tmp->next) {
|
||||||
if (filtertype) {
|
if (filtertype) {
|
||||||
|
@ -15071,7 +15078,7 @@ static char *dahdi_show_channels(struct ast_cli_entry *e, int cmd, struct ast_cl
|
||||||
|
|
||||||
snprintf(statestr, sizeof(statestr), "%s", "In Service");
|
snprintf(statestr, sizeof(statestr), "%s", "In Service");
|
||||||
|
|
||||||
ast_cli(a->fd, FORMAT, tmps, tmp->exten, tmp->context, tmp->language, tmp->mohinterpret, blockstr, statestr);
|
ast_cli(a->fd, FORMAT, tmps, tmp->exten, tmp->context, tmp->language, tmp->mohinterpret, blockstr, statestr, tmp->description);
|
||||||
}
|
}
|
||||||
ast_mutex_unlock(&iflock);
|
ast_mutex_unlock(&iflock);
|
||||||
return CLI_SUCCESS;
|
return CLI_SUCCESS;
|
||||||
|
@ -15107,6 +15114,7 @@ static char *dahdi_show_channel(struct ast_cli_entry *e, int cmd, struct ast_cli
|
||||||
for (tmp = iflist; tmp; tmp = tmp->next) {
|
for (tmp = iflist; tmp; tmp = tmp->next) {
|
||||||
if (tmp->channel == channel) {
|
if (tmp->channel == channel) {
|
||||||
ast_cli(a->fd, "Channel: %d\n", tmp->channel);
|
ast_cli(a->fd, "Channel: %d\n", tmp->channel);
|
||||||
|
ast_cli(a->fd, "Description: %s\n", tmp->description);
|
||||||
ast_cli(a->fd, "File Descriptor: %d\n", tmp->subs[SUB_REAL].dfd);
|
ast_cli(a->fd, "File Descriptor: %d\n", tmp->subs[SUB_REAL].dfd);
|
||||||
ast_cli(a->fd, "Span: %d\n", tmp->span);
|
ast_cli(a->fd, "Span: %d\n", tmp->span);
|
||||||
ast_cli(a->fd, "Extension: %s\n", tmp->exten);
|
ast_cli(a->fd, "Extension: %s\n", tmp->exten);
|
||||||
|
@ -15812,6 +15820,7 @@ static int action_dahdishowchannels(struct mansession *s, const struct message *
|
||||||
"Context: %s\r\n"
|
"Context: %s\r\n"
|
||||||
"DND: %s\r\n"
|
"DND: %s\r\n"
|
||||||
"Alarm: %s\r\n"
|
"Alarm: %s\r\n"
|
||||||
|
"Description: %s\r\n"
|
||||||
"%s"
|
"%s"
|
||||||
"\r\n",
|
"\r\n",
|
||||||
tmp->channel,
|
tmp->channel,
|
||||||
|
@ -15822,7 +15831,8 @@ static int action_dahdishowchannels(struct mansession *s, const struct message *
|
||||||
tmp->sig,
|
tmp->sig,
|
||||||
tmp->context,
|
tmp->context,
|
||||||
dahdi_dnd(tmp, -1) ? "Enabled" : "Disabled",
|
dahdi_dnd(tmp, -1) ? "Enabled" : "Disabled",
|
||||||
alarm2str(alm), idText);
|
alarm2str(alm),
|
||||||
|
tmp->description, idText);
|
||||||
} else {
|
} else {
|
||||||
astman_append(s,
|
astman_append(s,
|
||||||
"Event: DAHDIShowChannels\r\n"
|
"Event: DAHDIShowChannels\r\n"
|
||||||
|
@ -15832,12 +15842,14 @@ static int action_dahdishowchannels(struct mansession *s, const struct message *
|
||||||
"Context: %s\r\n"
|
"Context: %s\r\n"
|
||||||
"DND: %s\r\n"
|
"DND: %s\r\n"
|
||||||
"Alarm: %s\r\n"
|
"Alarm: %s\r\n"
|
||||||
|
"Description: %s\r\n"
|
||||||
"%s"
|
"%s"
|
||||||
"\r\n",
|
"\r\n",
|
||||||
tmp->channel, sig2str(tmp->sig), tmp->sig,
|
tmp->channel, sig2str(tmp->sig), tmp->sig,
|
||||||
tmp->context,
|
tmp->context,
|
||||||
dahdi_dnd(tmp, -1) ? "Enabled" : "Disabled",
|
dahdi_dnd(tmp, -1) ? "Enabled" : "Disabled",
|
||||||
alarm2str(alm), idText);
|
alarm2str(alm),
|
||||||
|
tmp->description, idText);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16836,6 +16848,8 @@ static int process_dahdi(struct dahdi_chan_conf *confp, const char *cat, struct
|
||||||
confp->chan.dtmfrelax = 0;
|
confp->chan.dtmfrelax = 0;
|
||||||
} else if (!strcasecmp(v->name, "mailbox")) {
|
} else if (!strcasecmp(v->name, "mailbox")) {
|
||||||
ast_copy_string(confp->chan.mailbox, v->value, sizeof(confp->chan.mailbox));
|
ast_copy_string(confp->chan.mailbox, v->value, sizeof(confp->chan.mailbox));
|
||||||
|
} else if (!strcasecmp(v->name, "description")) {
|
||||||
|
ast_copy_string(confp->chan.description, v->value, sizeof(confp->chan.description));
|
||||||
} else if (!strcasecmp(v->name, "hasvoicemail")) {
|
} else if (!strcasecmp(v->name, "hasvoicemail")) {
|
||||||
if (ast_true(v->value) && ast_strlen_zero(confp->chan.mailbox)) {
|
if (ast_true(v->value) && ast_strlen_zero(confp->chan.mailbox)) {
|
||||||
ast_copy_string(confp->chan.mailbox, cat, sizeof(confp->chan.mailbox));
|
ast_copy_string(confp->chan.mailbox, cat, sizeof(confp->chan.mailbox));
|
||||||
|
|
|
@ -484,6 +484,7 @@ struct iax2_peer {
|
||||||
AST_DECLARE_STRING_FIELDS(
|
AST_DECLARE_STRING_FIELDS(
|
||||||
AST_STRING_FIELD(name);
|
AST_STRING_FIELD(name);
|
||||||
AST_STRING_FIELD(username);
|
AST_STRING_FIELD(username);
|
||||||
|
AST_STRING_FIELD(description); /*!< Description of the peer */
|
||||||
AST_STRING_FIELD(secret);
|
AST_STRING_FIELD(secret);
|
||||||
AST_STRING_FIELD(dbsecret);
|
AST_STRING_FIELD(dbsecret);
|
||||||
AST_STRING_FIELD(outkey); /*!< What key we use to talk to this peer */
|
AST_STRING_FIELD(outkey); /*!< What key we use to talk to this peer */
|
||||||
|
@ -3837,6 +3838,7 @@ static char *handle_cli_iax2_show_peer(struct ast_cli_entry *e, int cmd, struct
|
||||||
encmethods_to_str(peer->encmethods, encmethods);
|
encmethods_to_str(peer->encmethods, encmethods);
|
||||||
ast_cli(a->fd, "\n\n");
|
ast_cli(a->fd, "\n\n");
|
||||||
ast_cli(a->fd, " * Name : %s\n", peer->name);
|
ast_cli(a->fd, " * Name : %s\n", peer->name);
|
||||||
|
ast_cli(a->fd, " Description : %s\n", peer->description);
|
||||||
ast_cli(a->fd, " Secret : %s\n", ast_strlen_zero(peer->secret) ? "<Not set>" : "<Set>");
|
ast_cli(a->fd, " Secret : %s\n", ast_strlen_zero(peer->secret) ? "<Not set>" : "<Set>");
|
||||||
ast_cli(a->fd, " Context : %s\n", peer->context);
|
ast_cli(a->fd, " Context : %s\n", peer->context);
|
||||||
ast_cli(a->fd, " Parking lot : %s\n", peer->parkinglot);
|
ast_cli(a->fd, " Parking lot : %s\n", peer->parkinglot);
|
||||||
|
@ -6712,8 +6714,8 @@ static int __iax2_show_peers(int fd, int *total, struct mansession *s, const int
|
||||||
int unmonitored_peers = 0;
|
int unmonitored_peers = 0;
|
||||||
struct ao2_iterator i;
|
struct ao2_iterator i;
|
||||||
|
|
||||||
#define FORMAT2 "%-15.15s %-15.15s %s %-15.15s %-8s %s %-10s\n"
|
#define FORMAT2 "%-15.15s %-15.15s %s %-15.15s %-8s %s %-11s %-32.32s\n"
|
||||||
#define FORMAT "%-15.15s %-15.15s %s %-15.15s %-5d%s %s %-10s\n"
|
#define FORMAT "%-15.15s %-15.15s %s %-15.15s %-5d%s %s %-11s %-32.32s\n"
|
||||||
|
|
||||||
struct iax2_peer *peer = NULL;
|
struct iax2_peer *peer = NULL;
|
||||||
char name[256];
|
char name[256];
|
||||||
|
@ -6755,7 +6757,7 @@ static int __iax2_show_peers(int fd, int *total, struct mansession *s, const int
|
||||||
|
|
||||||
|
|
||||||
if (!s)
|
if (!s)
|
||||||
ast_cli(fd, FORMAT2, "Name/Username", "Host", " ", "Mask", "Port", " ", "Status");
|
ast_cli(fd, FORMAT2, "Name/Username", "Host", " ", "Mask", "Port", " ", "Status", "Description");
|
||||||
|
|
||||||
i = ao2_iterator_init(peers, 0);
|
i = ao2_iterator_init(peers, 0);
|
||||||
for (peer = ao2_iterator_next(&i); peer;
|
for (peer = ao2_iterator_next(&i); peer;
|
||||||
|
@ -6801,7 +6803,8 @@ static int __iax2_show_peers(int fd, int *total, struct mansession *s, const int
|
||||||
"Dynamic: %s\r\n"
|
"Dynamic: %s\r\n"
|
||||||
"Trunk: %s\r\n"
|
"Trunk: %s\r\n"
|
||||||
"Encryption: %s\r\n"
|
"Encryption: %s\r\n"
|
||||||
"Status: %s\r\n\r\n",
|
"Status: %s\r\n"
|
||||||
|
"Description: %s\r\n\r\n",
|
||||||
idtext,
|
idtext,
|
||||||
name,
|
name,
|
||||||
ast_sockaddr_stringify_addr(&peer->addr),
|
ast_sockaddr_stringify_addr(&peer->addr),
|
||||||
|
@ -6809,7 +6812,8 @@ static int __iax2_show_peers(int fd, int *total, struct mansession *s, const int
|
||||||
ast_test_flag64(peer, IAX_DYNAMIC) ? "yes" : "no",
|
ast_test_flag64(peer, IAX_DYNAMIC) ? "yes" : "no",
|
||||||
ast_test_flag64(peer, IAX_TRUNK) ? "yes" : "no",
|
ast_test_flag64(peer, IAX_TRUNK) ? "yes" : "no",
|
||||||
peer->encmethods ? ast_str_buffer(encmethods) : "no",
|
peer->encmethods ? ast_str_buffer(encmethods) : "no",
|
||||||
status);
|
status,
|
||||||
|
peer->description);
|
||||||
} else {
|
} else {
|
||||||
ast_cli(fd, FORMAT, name,
|
ast_cli(fd, FORMAT, name,
|
||||||
ast_sockaddr_stringify_addr(&peer->addr),
|
ast_sockaddr_stringify_addr(&peer->addr),
|
||||||
|
@ -6818,7 +6822,8 @@ static int __iax2_show_peers(int fd, int *total, struct mansession *s, const int
|
||||||
ast_sockaddr_port(&peer->addr),
|
ast_sockaddr_port(&peer->addr),
|
||||||
ast_test_flag64(peer, IAX_TRUNK) ? "(T)" : " ",
|
ast_test_flag64(peer, IAX_TRUNK) ? "(T)" : " ",
|
||||||
peer->encmethods ? "(E)" : " ",
|
peer->encmethods ? "(E)" : " ",
|
||||||
status);
|
status,
|
||||||
|
peer->description);
|
||||||
}
|
}
|
||||||
total_peers++;
|
total_peers++;
|
||||||
}
|
}
|
||||||
|
@ -12459,6 +12464,8 @@ static struct iax2_peer *build_peer(const char *name, struct ast_variable *v, st
|
||||||
ast_string_field_set(peer, mohsuggest, v->value);
|
ast_string_field_set(peer, mohsuggest, v->value);
|
||||||
} else if (!strcasecmp(v->name, "dbsecret")) {
|
} else if (!strcasecmp(v->name, "dbsecret")) {
|
||||||
ast_string_field_set(peer, dbsecret, v->value);
|
ast_string_field_set(peer, dbsecret, v->value);
|
||||||
|
} else if (!strcasecmp(v->name, "description")) {
|
||||||
|
ast_string_field_set(peer, description, v->value);
|
||||||
} else if (!strcasecmp(v->name, "trunk")) {
|
} else if (!strcasecmp(v->name, "trunk")) {
|
||||||
ast_set2_flag64(peer, ast_true(v->value), IAX_TRUNK);
|
ast_set2_flag64(peer, ast_true(v->value), IAX_TRUNK);
|
||||||
if (ast_test_flag64(peer, IAX_TRUNK) && !timer) {
|
if (ast_test_flag64(peer, IAX_TRUNK) && !timer) {
|
||||||
|
|
|
@ -15997,8 +15997,8 @@ static char *_sip_show_peers(int fd, int *total, struct mansession *s, const str
|
||||||
struct ao2_iterator i;
|
struct ao2_iterator i;
|
||||||
|
|
||||||
/* the last argument is left-aligned, so we don't need a size anyways */
|
/* the last argument is left-aligned, so we don't need a size anyways */
|
||||||
#define FORMAT2 "%-25.25s %-39.39s %-3.3s %-10.10s %-3.3s %-8s %-10s %s\n"
|
#define FORMAT2 "%-25.25s %-39.39s %-3.3s %-10.10s %-3.3s %-8s %-11s %-32.32s %s\n"
|
||||||
#define FORMAT "%-25.25s %-39.39s %-3.3s %-3.3s %-3.3s %-8d %-10s %s\n"
|
#define FORMAT "%-25.25s %-39.39s %-3.3s %-10.10s %-3.3s %-8d %-11s %-32.32s %s\n"
|
||||||
|
|
||||||
char name[256];
|
char name[256];
|
||||||
int total_peers = 0;
|
int total_peers = 0;
|
||||||
|
@ -16038,7 +16038,7 @@ static char *_sip_show_peers(int fd, int *total, struct mansession *s, const str
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!s) /* Normal list */
|
if (!s) /* Normal list */
|
||||||
ast_cli(fd, FORMAT2, "Name/username", "Host", "Dyn", "Forcerport", "ACL", "Port", "Status", (realtimepeers ? "Realtime" : ""));
|
ast_cli(fd, FORMAT2, "Name/username", "Host", "Dyn", "Forcerport", "ACL", "Port", "Status", "Description", (realtimepeers ? "Realtime" : ""));
|
||||||
|
|
||||||
|
|
||||||
i = ao2_iterator_init(peers, 0);
|
i = ao2_iterator_init(peers, 0);
|
||||||
|
@ -16103,6 +16103,7 @@ static char *_sip_show_peers(int fd, int *total, struct mansession *s, const str
|
||||||
ast_test_flag(&peer->flags[0], SIP_NAT_FORCE_RPORT) ? " N " : " ", /* NAT=yes? */
|
ast_test_flag(&peer->flags[0], SIP_NAT_FORCE_RPORT) ? " N " : " ", /* NAT=yes? */
|
||||||
peer->ha ? " A " : " ", /* permit/deny */
|
peer->ha ? " A " : " ", /* permit/deny */
|
||||||
ast_sockaddr_isnull(&peer->addr) ? 0 : ast_sockaddr_port(&peer->addr), status,
|
ast_sockaddr_isnull(&peer->addr) ? 0 : ast_sockaddr_port(&peer->addr), status,
|
||||||
|
peer->description ? peer->description : "",
|
||||||
realtimepeers ? (peer->is_realtime ? "Cached RT":"") : "");
|
realtimepeers ? (peer->is_realtime ? "Cached RT":"") : "");
|
||||||
|
|
||||||
if (!s) {/* Normal CLI list */
|
if (!s) {/* Normal CLI list */
|
||||||
|
@ -16112,6 +16113,7 @@ static char *_sip_show_peers(int fd, int *total, struct mansession *s, const str
|
||||||
ast_test_flag(&peer->flags[0], SIP_NAT_FORCE_RPORT) ? " N " : " ", /* NAT=yes? */
|
ast_test_flag(&peer->flags[0], SIP_NAT_FORCE_RPORT) ? " N " : " ", /* NAT=yes? */
|
||||||
peer->ha ? " A " : " ", /* permit/deny */
|
peer->ha ? " A " : " ", /* permit/deny */
|
||||||
ast_sockaddr_isnull(&peer->addr) ? 0 : ast_sockaddr_port(&peer->addr), status,
|
ast_sockaddr_isnull(&peer->addr) ? 0 : ast_sockaddr_port(&peer->addr), status,
|
||||||
|
peer->description ? peer->description : "",
|
||||||
realtimepeers ? (peer->is_realtime ? "Cached RT":"") : "");
|
realtimepeers ? (peer->is_realtime ? "Cached RT":"") : "");
|
||||||
} else { /* Manager format */
|
} else { /* Manager format */
|
||||||
/* The names here need to be the same as other channels */
|
/* The names here need to be the same as other channels */
|
||||||
|
@ -16128,7 +16130,8 @@ static char *_sip_show_peers(int fd, int *total, struct mansession *s, const str
|
||||||
"TextSupport: %s\r\n"
|
"TextSupport: %s\r\n"
|
||||||
"ACL: %s\r\n"
|
"ACL: %s\r\n"
|
||||||
"Status: %s\r\n"
|
"Status: %s\r\n"
|
||||||
"RealtimeDevice: %s\r\n\r\n",
|
"RealtimeDevice: %s\r\n"
|
||||||
|
"Description: %s\r\n\r\n",
|
||||||
idtext,
|
idtext,
|
||||||
peer->name,
|
peer->name,
|
||||||
ast_sockaddr_isnull(&peer->addr) ? "-none-" : ast_sockaddr_stringify_fmt(&peer->addr, AST_SOCKADDR_STR_HOST),
|
ast_sockaddr_isnull(&peer->addr) ? "-none-" : ast_sockaddr_stringify_fmt(&peer->addr, AST_SOCKADDR_STR_HOST),
|
||||||
|
@ -16139,7 +16142,8 @@ static char *_sip_show_peers(int fd, int *total, struct mansession *s, const str
|
||||||
ast_test_flag(&peer->flags[1], SIP_PAGE2_TEXTSUPPORT) ? "yes" : "no", /* TEXTSUPPORT=yes? */
|
ast_test_flag(&peer->flags[1], SIP_PAGE2_TEXTSUPPORT) ? "yes" : "no", /* TEXTSUPPORT=yes? */
|
||||||
peer->ha ? "yes" : "no", /* permit/deny */
|
peer->ha ? "yes" : "no", /* permit/deny */
|
||||||
status,
|
status,
|
||||||
realtimepeers ? (peer->is_realtime ? "yes":"no") : "no");
|
realtimepeers ? (peer->is_realtime ? "yes":"no") : "no",
|
||||||
|
peer->description);
|
||||||
}
|
}
|
||||||
ao2_unlock(peer);
|
ao2_unlock(peer);
|
||||||
unref_peer(peer, "toss iterator peer ptr");
|
unref_peer(peer, "toss iterator peer ptr");
|
||||||
|
@ -16717,6 +16721,7 @@ static char *_sip_show_peer(int type, int fd, struct mansession *s, const struct
|
||||||
struct ast_str *mailbox_str = ast_str_alloca(512);
|
struct ast_str *mailbox_str = ast_str_alloca(512);
|
||||||
ast_cli(fd, "\n\n");
|
ast_cli(fd, "\n\n");
|
||||||
ast_cli(fd, " * Name : %s\n", peer->name);
|
ast_cli(fd, " * Name : %s\n", peer->name);
|
||||||
|
ast_cli(fd, " Description : %s\n", peer->description);
|
||||||
if (realtimepeers) { /* Realtime is enabled */
|
if (realtimepeers) { /* Realtime is enabled */
|
||||||
ast_cli(fd, " Realtime peer: %s\n", peer->is_realtime ? "Yes, cached" : "No");
|
ast_cli(fd, " Realtime peer: %s\n", peer->is_realtime ? "Yes, cached" : "No");
|
||||||
}
|
}
|
||||||
|
@ -16924,7 +16929,8 @@ static char *_sip_show_peer(int type, int fd, struct mansession *s, const struct
|
||||||
astman_append(s, "ChanVariable: %s=%s\r\n", v->name, v->value);
|
astman_append(s, "ChanVariable: %s=%s\r\n", v->name, v->value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
astman_append(s, "SIP-Use-Reason-Header : %s\n", (ast_test_flag(&peer->flags[1], SIP_PAGE2_Q850_REASON)) ? "Y" : "N");
|
astman_append(s, "SIP-Use-Reason-Header : %s\r\n", (ast_test_flag(&peer->flags[1], SIP_PAGE2_Q850_REASON)) ? "Y" : "N");
|
||||||
|
astman_append(s, "Description : %s\r\n", peer->description);
|
||||||
|
|
||||||
peer = unref_peer(peer, "sip_show_peer: unref_peer: done with peer");
|
peer = unref_peer(peer, "sip_show_peer: unref_peer: done with peer");
|
||||||
|
|
||||||
|
@ -26105,6 +26111,7 @@ static void set_peer_defaults(struct sip_peer *peer)
|
||||||
peer->call_limit=INT_MAX;
|
peer->call_limit=INT_MAX;
|
||||||
ast_string_field_set(peer, vmexten, default_vmexten);
|
ast_string_field_set(peer, vmexten, default_vmexten);
|
||||||
ast_string_field_set(peer, secret, "");
|
ast_string_field_set(peer, secret, "");
|
||||||
|
ast_string_field_set(peer, description, "");
|
||||||
ast_string_field_set(peer, remotesecret, "");
|
ast_string_field_set(peer, remotesecret, "");
|
||||||
ast_string_field_set(peer, md5secret, "");
|
ast_string_field_set(peer, md5secret, "");
|
||||||
ast_string_field_set(peer, cid_num, "");
|
ast_string_field_set(peer, cid_num, "");
|
||||||
|
@ -26347,6 +26354,8 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, str
|
||||||
ast_string_field_set(peer, remotesecret, v->value);
|
ast_string_field_set(peer, remotesecret, v->value);
|
||||||
} else if (!strcasecmp(v->name, "secret")) {
|
} else if (!strcasecmp(v->name, "secret")) {
|
||||||
ast_string_field_set(peer, secret, v->value);
|
ast_string_field_set(peer, secret, v->value);
|
||||||
|
} else if (!strcasecmp(v->name, "description")) {
|
||||||
|
ast_string_field_set(peer, description, v->value);
|
||||||
} else if (!strcasecmp(v->name, "md5secret")) {
|
} else if (!strcasecmp(v->name, "md5secret")) {
|
||||||
ast_string_field_set(peer, md5secret, v->value);
|
ast_string_field_set(peer, md5secret, v->value);
|
||||||
} else if (!strcasecmp(v->name, "auth")) {
|
} else if (!strcasecmp(v->name, "auth")) {
|
||||||
|
@ -29090,7 +29099,8 @@ AST_TEST_DEFINE(test_sip_peers_get)
|
||||||
MEMBER(sip_peer, maxms, AST_DATA_MILLISECONDS) \
|
MEMBER(sip_peer, maxms, AST_DATA_MILLISECONDS) \
|
||||||
MEMBER(sip_peer, qualifyfreq, AST_DATA_MILLISECONDS) \
|
MEMBER(sip_peer, qualifyfreq, AST_DATA_MILLISECONDS) \
|
||||||
MEMBER(sip_peer, timer_t1, AST_DATA_MILLISECONDS) \
|
MEMBER(sip_peer, timer_t1, AST_DATA_MILLISECONDS) \
|
||||||
MEMBER(sip_peer, timer_b, AST_DATA_MILLISECONDS)
|
MEMBER(sip_peer, timer_b, AST_DATA_MILLISECONDS) \
|
||||||
|
MEMBER(sip_peer, description, AST_DATA_STRING)
|
||||||
|
|
||||||
AST_DATA_STRUCTURE(sip_peer, DATA_EXPORT_SIP_PEER);
|
AST_DATA_STRUCTURE(sip_peer, DATA_EXPORT_SIP_PEER);
|
||||||
|
|
||||||
|
|
|
@ -1157,6 +1157,7 @@ struct sip_peer {
|
||||||
AST_DECLARE_STRING_FIELDS(
|
AST_DECLARE_STRING_FIELDS(
|
||||||
AST_STRING_FIELD(secret); /*!< Password for inbound auth */
|
AST_STRING_FIELD(secret); /*!< Password for inbound auth */
|
||||||
AST_STRING_FIELD(md5secret); /*!< Password in MD5 */
|
AST_STRING_FIELD(md5secret); /*!< Password in MD5 */
|
||||||
|
AST_STRING_FIELD(description); /*!< Description of this peer */
|
||||||
AST_STRING_FIELD(remotesecret); /*!< Remote secret (trunks, remote devices) */
|
AST_STRING_FIELD(remotesecret); /*!< Remote secret (trunks, remote devices) */
|
||||||
AST_STRING_FIELD(context); /*!< Default context for incoming calls */
|
AST_STRING_FIELD(context); /*!< Default context for incoming calls */
|
||||||
AST_STRING_FIELD(subscribecontext); /*!< Default context for subscriptions */
|
AST_STRING_FIELD(subscribecontext); /*!< Default context for subscriptions */
|
||||||
|
|
|
@ -820,6 +820,11 @@ pickupgroup=1
|
||||||
;
|
;
|
||||||
;useincomingcalleridondahditransfer = yes
|
;useincomingcalleridondahditransfer = yes
|
||||||
;
|
;
|
||||||
|
; Add a description for the channel which can be shown through the Asterisk
|
||||||
|
; console when executing the 'dahdi show channels' command is run.
|
||||||
|
;
|
||||||
|
;description=Phone located in lobby
|
||||||
|
;
|
||||||
; AMA flags affects the recording of Call Detail Records. If specified
|
; AMA flags affects the recording of Call Detail Records. If specified
|
||||||
; it may be 'default', 'omit', 'billing', or 'documentation'.
|
; it may be 'default', 'omit', 'billing', or 'documentation'.
|
||||||
;
|
;
|
||||||
|
@ -1068,10 +1073,13 @@ pickupgroup=1
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
;callerid="Green Phone"<(256) 428-6121>
|
;callerid="Green Phone"<(256) 428-6121>
|
||||||
|
;description=Reception Phone ; add a description for 'dahdi show channels'
|
||||||
;channel => 1
|
;channel => 1
|
||||||
;callerid="Black Phone"<(256) 428-6122>
|
;callerid="Black Phone"<(256) 428-6122>
|
||||||
|
;description=Courtesy Phone
|
||||||
;channel => 2
|
;channel => 2
|
||||||
;callerid="CallerID Phone" <(630) 372-1564>
|
;callerid="CallerID Phone" <(630) 372-1564>
|
||||||
|
;description= ; reset the description for following channels
|
||||||
;channel => 3
|
;channel => 3
|
||||||
;callerid="Pac Tel Phone" <(256) 428-6124>
|
;callerid="Pac Tel Phone" <(256) 428-6124>
|
||||||
;channel => 4
|
;channel => 4
|
||||||
|
|
|
@ -504,6 +504,7 @@ type=peer
|
||||||
username=asterisk
|
username=asterisk
|
||||||
secret=supersecret
|
secret=supersecret
|
||||||
host=216.207.245.47
|
host=216.207.245.47
|
||||||
|
description=Demo System At Digium ; Description of this peer, as listed by 'iax2 show peers'
|
||||||
;sendani=no
|
;sendani=no
|
||||||
;host=asterisk.linux-support.net
|
;host=asterisk.linux-support.net
|
||||||
;port=5036
|
;port=5036
|
||||||
|
@ -544,6 +545,7 @@ host=216.207.245.47
|
||||||
;[biggateway]
|
;[biggateway]
|
||||||
;type=peer
|
;type=peer
|
||||||
;host=192.168.0.1
|
;host=192.168.0.1
|
||||||
|
;description=Gateway to PSTN
|
||||||
;context=*
|
;context=*
|
||||||
;secret=myscret
|
;secret=myscret
|
||||||
;trunk=yes ; Use IAX2 trunking with this host
|
;trunk=yes ; Use IAX2 trunking with this host
|
||||||
|
|
|
@ -1100,6 +1100,7 @@ srvlookup=yes ; Enable DNS SRV lookups on outbound calls
|
||||||
; use_q850_reason
|
; use_q850_reason
|
||||||
; maxforwards
|
; maxforwards
|
||||||
; encryption
|
; encryption
|
||||||
|
; description ; Used to provide a description of the peer in console output
|
||||||
|
|
||||||
;[sip_proxy]
|
;[sip_proxy]
|
||||||
; For incoming calls only. Example: FWD (Free World Dialup)
|
; For incoming calls only. Example: FWD (Free World Dialup)
|
||||||
|
@ -1195,6 +1196,7 @@ srvlookup=yes ; Enable DNS SRV lookups on outbound calls
|
||||||
;context=from-sip ; Where to start in the dialplan when this phone calls
|
;context=from-sip ; Where to start in the dialplan when this phone calls
|
||||||
;callerid=John Doe <1234> ; Full caller ID, to override the phones config
|
;callerid=John Doe <1234> ; Full caller ID, to override the phones config
|
||||||
; on incoming calls to Asterisk
|
; on incoming calls to Asterisk
|
||||||
|
;description=Courtesy Phone ; Description of the peer. Shown when doing 'sip show peers'.
|
||||||
;host=192.168.0.23 ; we have a static but private IP address
|
;host=192.168.0.23 ; we have a static but private IP address
|
||||||
; No registration allowed
|
; No registration allowed
|
||||||
;nat=no ; there is not NAT between phone and Asterisk
|
;nat=no ; there is not NAT between phone and Asterisk
|
||||||
|
|
|
@ -87,6 +87,8 @@ pickupgroup = 1
|
||||||
|
|
||||||
;[6000]
|
;[6000]
|
||||||
;fullname = Joe User
|
;fullname = Joe User
|
||||||
|
;description = Courtesy Phone In Lobby ; Used to provide a description of the
|
||||||
|
; peer in console output
|
||||||
;email = joe@foo.bar
|
;email = joe@foo.bar
|
||||||
;secret = 1234
|
;secret = 1234
|
||||||
;dahdichan = 1
|
;dahdichan = 1
|
||||||
|
|
Reference in New Issue