Allow alternative extensions to be specified for a user.

(closes issue #12830)
 Reported by: jcollie
 Patches: 
       astertisk-trunk-121496-alternate-extensions.patch uploaded by jcollie (license 412)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@124049 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Tilghman Lesher
2008-06-19 19:22:59 +00:00
parent 249ac33ab0
commit 122486b263
3 changed files with 21 additions and 1 deletions

View File

@@ -785,3 +785,5 @@ Miscellaneous
* If compiled with DEBUG_THREADS enabled and if you have glibc, then issuing * If compiled with DEBUG_THREADS enabled and if you have glibc, then issuing
the "core show locks" CLI command will give lock information output as well the "core show locks" CLI command will give lock information output as well
as a backtrace of the stack which led to the lock calls. as a backtrace of the stack which led to the lock calls.
* users.conf now sports an optional alternativeexts property, which permits
allocation of additional extensions which will reach the specified user.

View File

@@ -77,3 +77,9 @@ pickupgroup = 1
;hasmanager = no ;hasmanager = no
;callwaiting = no ;callwaiting = no
;context = international ;context = international
;
; Some administrators choose alphanumeric extensions, but still want their
; users to be reachable by traditional numeric extensions, specified by the
; alternateexts entry.
;
;alternateexts = 7057,3249

View File

@@ -1549,10 +1549,11 @@ static void pbx_load_users(void)
struct ast_config *cfg; struct ast_config *cfg;
char *cat, *chan; char *cat, *chan;
const char *dahdichan; const char *dahdichan;
const char *hasexten; const char *hasexten, *altexts;
char tmp[256]; char tmp[256];
char iface[256]; char iface[256];
char dahdicopy[256]; char dahdicopy[256];
char *ext, altcopy[256];
char *c; char *c;
int len; int len;
int hasvoicemail; int hasvoicemail;
@@ -1643,6 +1644,17 @@ static void pbx_load_users(void)
} else { } else {
ast_add_extension2(con, 0, cat, 1, NULL, NULL, "Dial", strdup("${HINT}"), ast_free_ptr, registrar); ast_add_extension2(con, 0, cat, 1, NULL, NULL, "Dial", strdup("${HINT}"), ast_free_ptr, registrar);
} }
altexts = ast_variable_retrieve(cfg, cat, "alternateexts");
if (!ast_strlen_zero(altexts)) {
snprintf(tmp, sizeof(tmp), "%s,1", cat);
ast_copy_string(altcopy, altexts, sizeof(altcopy));
c = altcopy;
ext = strsep(&c, ",");
while (ext) {
ast_add_extension2(con, 0, ext, 1, NULL, NULL, "Goto", strdup(tmp), ast_free, registrar);
ext = strsep(&c, ",");
}
}
} }
} }
ast_config_destroy(cfg); ast_config_destroy(cfg);