| Asterisk - The Open Source Telephony Project GIT-master-27fb039
    | 
Provide a directory of extensions. More...
#include "asterisk.h"#include <ctype.h>#include "asterisk/paths.h"#include "asterisk/file.h"#include "asterisk/pbx.h"#include "asterisk/module.h"#include "asterisk/say.h"#include "asterisk/app.h"#include "asterisk/utils.h"#include "asterisk/adsi.h"
Go to the source code of this file.
| Data Structures | |
| struct | directory_item | 
| struct | itemlist | 
| Macros | |
| #define | VOICEMAIL_CONFIG "voicemail.conf" | 
| Enumerations | |
| enum | { OPT_LISTBYFIRSTNAME = (1 << 0) , OPT_SAYEXTENSION = (1 << 1) , OPT_FROMVOICEMAIL = (1 << 2) , OPT_SELECTFROMMENU = (1 << 3) , OPT_LISTBYLASTNAME = (1 << 4) , OPT_LISTBYEITHER = OPT_LISTBYFIRSTNAME | OPT_LISTBYLASTNAME , OPT_PAUSE = (1 << 5) , OPT_NOANSWER = (1 << 6) , OPT_ALIAS = (1 << 7) , OPT_CONFIG_FILE = (1 << 8) , OPT_SKIP = (1 << 9) , OPT_ADSI = (1 << 10) } | 
| enum | { OPT_ARG_FIRSTNAME = 0 , OPT_ARG_LASTNAME = 1 , OPT_ARG_EITHER = 2 , OPT_ARG_PAUSE = 3 , OPT_ARG_FILENAME = 4 , OPT_ARG_ARRAY_SIZE = 5 } | 
| Functions | |
| static void | __reg_module (void) | 
| static void | __unreg_module (void) | 
| static int | adsi_confirm_match (struct ast_channel *chan, int seq, int total, const char *exten, const char *name, int showexten) | 
| static int | adsi_search_input (struct ast_channel *chan) | 
| struct ast_module * | AST_MODULE_SELF_SYM (void) | 
| AST_THREADSTORAGE_CUSTOM_SCOPE (commonbuf, NULL, ast_free_ptr, static) | |
| static int | check_match (struct directory_item **result, const char *item_context, const char *item_fullname, const char *item_ext, const char *pattern_ext, int use_first_name) | 
| static int | compare (const char *text, const char *template) | 
| static int | directory_exec (struct ast_channel *chan, const char *data) | 
| static int | do_directory (struct ast_channel *chan, struct ast_config *vmcfg, char *context, char *dialcontext, char digit, int digits, struct ast_flags *flags, char *opts[]) | 
| static int | goto_exten (struct ast_channel *chan, const char *dialcontext, char *ext) | 
| static int | load_module (void) | 
| static int | play_mailbox_owner (struct ast_channel *chan, const char *context, const char *ext, const char *name, struct ast_flags *flags) | 
| static struct ast_config * | realtime_directory (char *context, const char *filename) | 
| static int | search_directory (const char *context, struct ast_config *vmcfg, const char *ext, struct ast_flags flags, itemlist *alist) | 
| static int | search_directory_sub (const char *context, struct ast_config *vmcfg, const char *ext, struct ast_flags flags, itemlist *alist) | 
| static int | select_entry (struct ast_channel *chan, const char *dialcontext, const struct directory_item *item, struct ast_flags *flags) | 
| static int | select_item_menu (struct ast_channel *chan, struct directory_item **items, int count, const char *dialcontext, struct ast_flags *flags, char *opts[]) | 
| static int | select_item_pause (struct ast_channel *chan, struct ast_flags *flags, char *opts[]) | 
| static int | select_item_seq (struct ast_channel *chan, struct directory_item **items, int count, const char *dialcontext, struct ast_flags *flags, char *opts[]) | 
| static void | sort_items (struct directory_item **sorted, int count) | 
| static int | unload_module (void) | 
| Variables | |
| static struct ast_module_info | __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "Extension Directory" , .key = ASTERISK_GPL_KEY , .buildopt_sum = AST_BUILDOPT_SUM, .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_DEFAULT, .support_level = AST_MODULE_SUPPORT_CORE, } | 
| static const char | app [] = "Directory" | 
| static const struct ast_module_info * | ast_module_info = &__mod_info | 
| static const struct ast_app_option | directory_app_options [128] = { [ 'f' ] = { .flag = OPT_LISTBYFIRSTNAME , .arg_index = OPT_ARG_FIRSTNAME + 1 }, [ 'l' ] = { .flag = OPT_LISTBYLASTNAME , .arg_index = OPT_ARG_LASTNAME + 1 }, [ 'b' ] = { .flag = OPT_LISTBYEITHER , .arg_index = OPT_ARG_EITHER + 1 }, [ 'p' ] = { .flag = OPT_PAUSE , .arg_index = OPT_ARG_PAUSE + 1 }, [ 'e' ] = { .flag = OPT_SAYEXTENSION }, [ 'v' ] = { .flag = OPT_FROMVOICEMAIL }, [ 'm' ] = { .flag = OPT_SELECTFROMMENU }, [ 'n' ] = { .flag = OPT_NOANSWER }, [ 'a' ] = { .flag = OPT_ALIAS }, [ 'c' ] = { .flag = OPT_CONFIG_FILE , .arg_index = OPT_ARG_FILENAME + 1 }, [ 's' ] = { .flag = OPT_SKIP }, [ 'd' ] = { .flag = OPT_ADSI }, } | 
Provide a directory of extensions.
Definition in file app_directory.c.
| #define VOICEMAIL_CONFIG "voicemail.conf" | 
Definition at line 165 of file app_directory.c.
| anonymous enum | 
| Enumerator | |
|---|---|
| OPT_LISTBYFIRSTNAME | |
| OPT_SAYEXTENSION | |
| OPT_FROMVOICEMAIL | |
| OPT_SELECTFROMMENU | |
| OPT_LISTBYLASTNAME | |
| OPT_LISTBYEITHER | |
| OPT_PAUSE | |
| OPT_NOANSWER | |
| OPT_ALIAS | |
| OPT_CONFIG_FILE | |
| OPT_SKIP | |
| OPT_ADSI | |
Definition at line 167 of file app_directory.c.
| anonymous enum | 
| Enumerator | |
|---|---|
| OPT_ARG_FIRSTNAME | |
| OPT_ARG_LASTNAME | |
| OPT_ARG_EITHER | |
| OPT_ARG_PAUSE | |
| OPT_ARG_FILENAME | |
| OPT_ARG_ARRAY_SIZE | |
Definition at line 182 of file app_directory.c.
| 
 | static | 
Definition at line 1054 of file app_directory.c.
| 
 | static | 
Definition at line 1054 of file app_directory.c.
| 
 | static | 
Definition at line 238 of file app_directory.c.
References ADSI_INFO_PAGE, ADSI_JUST_CENT, ADSI_KEY_APPS, ADSI_MSG_DISPLAY, ast_adsi_display(), ast_adsi_load_soft_key(), ast_adsi_set_keys(), ast_adsi_set_line(), ast_adsi_transmit_message(), ast_adsi_voice_mode(), ast_debug, buf, name, NULL, seq, and total.
Referenced by select_item_seq().
| 
 | static | 
Definition at line 216 of file app_directory.c.
References ADSI_COMM_PAGE, ADSI_DIR_FROM_LEFT, ADSI_JUST_CENT, ADSI_JUST_LEFT, ADSI_KEY_APPS, ADSI_MSG_DISPLAY, ast_adsi_display(), ast_adsi_input_control(), ast_adsi_input_format(), ast_adsi_load_soft_key(), ast_adsi_set_keys(), ast_adsi_set_line(), ast_adsi_transmit_message(), ast_adsi_voice_mode(), ast_channel_name(), ast_debug, and buf.
Referenced by directory_exec().
| struct ast_module * AST_MODULE_SELF_SYM | ( | void | ) | 
Definition at line 1054 of file app_directory.c.
| AST_THREADSTORAGE_CUSTOM_SCOPE | ( | commonbuf | , | 
| NULL | , | ||
| ast_free_ptr | , | ||
| static | |||
| ) | 
| 
 | static | 
Definition at line 655 of file app_directory.c.
References ast_calloc, ast_copy_string(), ast_debug, ast_strlen_zero(), compare(), item, directory_item::key, aco_type::name, NULL, and result.
Referenced by search_directory_sub().
| 
 | static | 
Definition at line 279 of file app_directory.c.
References ast_strlen_zero(), digit, and text.
Referenced by _ast_hashtab_create(), ast_sip_is_content_type(), and check_match().
| 
 | static | 
Definition at line 900 of file app_directory.c.
References adsi_search_input(), args, ast_adsi_available(), ast_adsi_load_session(), ast_answer(), AST_APP_ARG, ast_app_parse_options(), ast_channel_name(), ast_check_hangup(), ast_clear_flag, ast_config_destroy(), AST_DECLARE_APP_ARGS, AST_DIGIT_ANY, ast_log, ast_set_flag, AST_STANDARD_APP_ARGS, AST_STATE_UP, ast_stopstream(), ast_strdupa, ast_stream_and_wait(), ast_strlen_zero(), ast_test_flag, ast_variable_retrieve(), ast_waitfordigit(), ast_waitstream(), dialcontext, digit, directory_app_options, do_directory(), ast_flags::flags, LOG_ERROR, LOG_WARNING, NULL, OPT_ADSI, OPT_ARG_ARRAY_SIZE, OPT_ARG_EITHER, OPT_ARG_FILENAME, OPT_ARG_FIRSTNAME, OPT_ARG_LASTNAME, OPT_LISTBYFIRSTNAME, OPT_LISTBYLASTNAME, OPT_NOANSWER, options, pbx_builtin_setvar_helper(), realtime_directory(), S_OR, and VOICEMAIL_CONFIG.
Referenced by load_module().
| 
 | static | 
Definition at line 821 of file app_directory.c.
References ast_calloc, ast_channel_language(), ast_free, AST_LIST_HEAD_NOLOCK_INIT_VALUE, AST_LIST_REMOVE_HEAD, AST_LIST_TRAVERSE, ast_log, ast_readstring(), ast_streamfile(), ast_test_flag, directory_item::context, DEBUG_ATLEAST, dialcontext, digit, directory_item::entry, ext, directory_item::exten, goto_exten(), item, LOG_DEBUG, name, NULL, OPT_SELECTFROMMENU, pbx_builtin_setvar_helper(), search_directory(), select_item_menu(), select_item_seq(), and sort_items().
Referenced by directory_exec().
| 
 | static | 
Definition at line 359 of file app_directory.c.
References ast_channel_context(), ast_goto_if_exists(), ast_log, dialcontext, ext, LOG_WARNING, and S_OR.
Referenced by do_directory(), and select_item_seq().
| 
 | static | 
Definition at line 1049 of file app_directory.c.
References app, ast_register_application_xml, and directory_exec().
| 
 | static | 
Definition at line 375 of file app_directory.c.
References ast_alloca, ast_app_sayname(), ast_channel_language(), AST_DIGIT_ANY, AST_SAY_CASE_NONE, ast_say_character_str(), ast_stopstream(), ast_stream_and_wait(), ast_strlen_zero(), ast_test_flag, ext, name, OPT_SAYEXTENSION, and S_OR.
Referenced by select_item_menu(), and select_item_seq().
| 
 | static | 
Definition at line 557 of file app_directory.c.
References ast_category_append(), ast_category_browse(), ast_category_get(), ast_category_new_dynamic, ast_config_destroy(), ast_config_load, ast_debug, ast_load_realtime_multientry(), ast_log, ast_str_append(), ast_str_buffer(), ast_str_set(), ast_str_thread_get(), ast_strlen_zero(), ast_true(), ast_variable_append(), ast_variable_browse(), ast_variable_new, ast_variable_retrieve(), CONFIG_STATUS_FILEINVALID, LOG_ERROR, LOG_WARNING, ast_variable::name, ast_variable::next, NULL, S_OR, SENTINEL, ast_variable::value, and var.
Referenced by directory_exec().
| 
 | static | 
Definition at line 770 of file app_directory.c.
References ast_category_browse(), ast_debug, ast_strlen_zero(), ast_true(), ast_variable_retrieve(), directory_item::context, ext, NULL, and search_directory_sub().
Referenced by do_directory().
| 
 | static | 
Definition at line 702 of file app_directory.c.
References a, ast_debug, AST_LIST_INSERT_TAIL, ast_str_buffer(), ast_str_set(), ast_str_thread_get(), ast_strlen_zero(), ast_test_flag, ast_variable_browse(), buf, check_match(), directory_item::context, directory_item::entry, ext, item, name, ast_variable::name, ast_variable::next, OPT_ALIAS, OPT_LISTBYFIRSTNAME, OPT_LISTBYLASTNAME, options, strcasestr(), strsep(), and ast_variable::value.
Referenced by search_directory().
| 
 | static | 
Definition at line 403 of file app_directory.c.
References ast_channel_exten_set(), ast_debug, ast_goto_if_exists(), ast_log, ast_test_flag, dialcontext, item, LOG_WARNING, aco_type::name, OPT_FROMVOICEMAIL, OPT_SKIP, pbx_builtin_setvar_helper(), and S_OR.
Referenced by select_item_menu(), and select_item_seq().
| 
 | static | 
Definition at line 491 of file app_directory.c.
References ast_channel_language(), AST_DIGIT_ANY, ast_streamfile(), ast_waitfordigit(), ast_waitstream(), buf, dialcontext, item, aco_type::name, pbx_builtin_setvar_helper(), play_mailbox_owner(), select_entry(), and select_item_pause().
Referenced by do_directory().
| 
 | static | 
Definition at line 425 of file app_directory.c.
References ast_strlen_zero(), ast_test_flag, ast_waitfordigit(), OPT_ARG_PAUSE, and OPT_PAUSE.
Referenced by select_item_menu(), and select_item_seq().
| 
 | static | 
Definition at line 439 of file app_directory.c.
References adsi_confirm_match(), AST_DIGIT_ANY, ast_stopstream(), ast_stream_and_wait(), ast_test_flag, ast_waitfordigit(), dialcontext, goto_exten(), item, aco_type::name, OPT_ADSI, OPT_SAYEXTENSION, pbx_builtin_setvar_helper(), play_mailbox_owner(), select_entry(), and select_item_pause().
Referenced by do_directory().
| 
 | static | 
Definition at line 799 of file app_directory.c.
References directory_item::key.
Referenced by do_directory().
| 
 | static | 
Definition at line 1042 of file app_directory.c.
References app, and ast_unregister_application().
| 
 | static | 
Definition at line 1054 of file app_directory.c.
| 
 | static | 
Definition at line 160 of file app_directory.c.
Referenced by load_module(), and unload_module().
| 
 | static | 
Definition at line 1054 of file app_directory.c.
| 
 | static | 
Definition at line 214 of file app_directory.c.
Referenced by directory_exec().