summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xchannels/chan_iax2.c13
-rwxr-xr-xconfigs/voicemail.conf.sample46
2 files changed, 44 insertions, 15 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index 972aa1dc1..83f4723af 100755
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -1498,7 +1498,7 @@ static int iax2_fixup(struct ast_channel *oldchannel, struct ast_channel *newcha
return 0;
}
-static int create_addr(struct sockaddr_in *sin, int *capability, int *sendani, int *maxtime, char *peer, char *context, int *trunk, int *notransfer)
+static int create_addr(struct sockaddr_in *sin, int *capability, int *sendani, int *maxtime, char *peer, char *context, int *trunk, int *notransfer, char *secret, int seclen)
{
struct hostent *hp;
struct iax2_peer *p;
@@ -1527,6 +1527,8 @@ static int create_addr(struct sockaddr_in *sin, int *capability, int *sendani, i
*trunk = p->trunk;
if (capability)
*capability = p->capability;
+ if (secret)
+ strncpy(secret, p->secret, seclen);
if (p->addr.sin_addr.s_addr) {
sin->sin_addr = p->addr.sin_addr;
sin->sin_port = p->addr.sin_port;
@@ -1590,6 +1592,7 @@ static int iax2_call(struct ast_channel *c, char *dest, int timeout)
char *opts = "";
struct chan_iax2_pvt *p = c->pvt->pvt;
char *stringp=NULL;
+ char storedsecret[80];
if ((c->_state != AST_STATE_DOWN) && (c->_state != AST_STATE_RESERVED)) {
ast_log(LOG_WARNING, "Line is already in use (%s)?\n", c->name);
return -1;
@@ -1631,7 +1634,7 @@ static int iax2_call(struct ast_channel *c, char *dest, int timeout)
strsep(&stringp, ":");
portno = strsep(&stringp, ":");
}
- if (create_addr(&sin, NULL, NULL, NULL, hname, context, NULL, NULL)) {
+ if (create_addr(&sin, NULL, NULL, NULL, hname, context, NULL, NULL, storedsecret, sizeof(storedsecret) - 1)) {
ast_log(LOG_WARNING, "No address associated with '%s'\n", hname);
return -1;
}
@@ -1676,6 +1679,8 @@ static int iax2_call(struct ast_channel *c, char *dest, int timeout)
iax_ie_append_str(&ied, IAX_IE_CALLED_CONTEXT, rcontext);
if (username)
iax_ie_append_str(&ied, IAX_IE_USERNAME, username);
+ if (!secret && strlen(storedsecret))
+ secret = storedsecret;
if (secret) {
if (secret[0] == '[') {
/* This is an RSA key, not a normal secret */
@@ -4619,7 +4624,7 @@ static struct ast_channel *iax2_request(char *type, int format, void *data)
if (!st)
st = s;
/* Populate our address from the given */
- if (create_addr(&sin, &capability, &sendani, &maxtime, st, NULL, &trunk, &notransfer)) {
+ if (create_addr(&sin, &capability, &sendani, &maxtime, st, NULL, &trunk, &notransfer, NULL, 0)) {
return NULL;
}
callno = find_callno(0, 0, &sin, NEW_FORCE, 1);
@@ -5250,7 +5255,7 @@ static int cache_get_callno(char *data)
host = st;
}
/* Populate our address from the given */
- if (create_addr(&sin, NULL, NULL, NULL, host, NULL, NULL, NULL)) {
+ if (create_addr(&sin, NULL, NULL, NULL, host, NULL, NULL, NULL, NULL, 0)) {
return -1;
}
ast_log(LOG_DEBUG, "host: %s, user: %s, password: %s, context: %s\n", host, username, password, context);
diff --git a/configs/voicemail.conf.sample b/configs/voicemail.conf.sample
index 7edc21928..9c3adfa88 100755
--- a/configs/voicemail.conf.sample
+++ b/configs/voicemail.conf.sample
@@ -30,6 +30,41 @@ maxlogins=3
; Change the email body, variables: VM_NAME, VM_DUR, VM_MSGNUM, VM_MAILBOX, VM_CALLERID, VM_DATE
;emailbody=Dear ${VM_NAME}:\n\n\tjust wanted to let you know you were just left a ${VM_DUR} long message (number ${VM_MSGNUM})\nin mailbox ${VM_MAILBOX} from ${VM_CALLERID}, on ${VM_DATE} so you might\nwant to check it when you get a chance. Thanks!\n\n\t\t\t\t--Asterisk\n
+
+;
+; Users may be located in different timezones, or may have different
+; message announcements for their introductory message when they enter
+; the voicemail system. Set the message and the timezone each user
+; hears here. Set the user into one of these zones with the tz= attribute
+; in the options field of the mailbox. Of course, language substitution
+; still applies here so you may have several directory trees that have
+; alternate language choices.
+;
+; Look in /usr/share/zoneinfo/ for names of timezones.
+; Look at the manual page for strftime for a quick tutorial on how the
+; variable substitution is done on the values below.
+;
+; Supported values:
+; 'filename' = filename of a soundfile
+; '${VAR}' = variable substitution
+; 'A' or 'a' = Day of week (Saturday, Sunday, ...)
+; 'B' or 'b' or 'h' = Month name (January, February, ...)
+; 'd' or 'e' = numeric day of month (first, second, ..., thirty-first)
+; 'Y' = Year
+; 'I' or 'l' = hour, 12 hour clock
+; 'H' or 'k' = hour, 24 hour clock (single digit hours preceeded by "oh")
+; 'M' = minute
+; 'P' or 'p' = AM or PM
+; 'Q' = "today", "yesterday" or ABdY (*note: not standard strftime value)
+; 'q' = "today", "yesterday", weekday, or ABdY (*note: not standard strftime value)
+; 'R' = 24 hour time, including minute
+;
+;
+[zonemessages]
+eastern=America/NewYork|'vm-received' Q 'digits/at' IMp
+central=America/Chicago|'vm-received' Q 'digits/at' IMp
+central24=America/Chicago|'vm-received' 'digits/at' H 'digits/hundred' M
+
;
; Each mailbox is listed in the form <mailbox>=<password>,<name>,<email>,<pager_email>,<options>
; if the e-mail is specified, a message will be sent when a message is
@@ -50,14 +85,3 @@ maxlogins=3
[other]
1234 => 5678,Company2 User,root@localhost
-
-;
-; Users may be located in different timezones. Set the message and the
-; timezone each user hears here. Set the user into one of these zones with
-; the tz= attribute in the options field of the mailbox.
-;
-[zonemessages]
-eastern=America/NewYork|'vm-received' Q 'digits/at' IMp
-central=America/Chicago|'vm-received' Q 'digits/at' IMp
-central24=America/Chicago|'vm-received' 'digits/at' H 'digits/hundred' M
-