Index: app_voicemail.c =================================================================== --- app_voicemail.c (revision 65835) +++ app_voicemail.c (working copy) @@ -7505,6 +7505,38 @@ poll_thread = AST_PTHREADT_NULL; } +static int manager_list_voicemail_users(struct mansession *s, struct message *m) +{ + struct ast_vm_user *vmu = users; + char *output_format = "Context: %s\nMailbox: %s\nFullname: %s\nEmail: %s\nPager: %s\nServeremail: %s\nMailcmd: %s\nLanguage: %s\nZontag: %s\nCallback: %s\nDialout: %s\nUniqueid: %s\nExit: %s\nSaydurationm: %i\nMaxmsg: %i\nMsg count: %s\n\n"; + char *id = astman_get_header(m, "ActionID"); + + ast_mutex_lock(&appvmlock); + + if (vmu) { + ast_cli(s->fd, "Response: Follows\r\n"); + if (id) ast_cli(s->fd, "ActionID: %s\r\n", id); + while (vmu) { + char dirname[256]; + DIR *vmdir; + struct dirent *vment; + int vmcount = 0; + char count[12]; + + make_dir(dirname, 255, vmu->context, vmu->mailbox, "INBOX"); + vmcount = count_messages(vmu, dirname); + snprintf(count,sizeof(count),"%d",vmcount); + ast_cli(s->fd, output_format, vmu->context, vmu->mailbox, vmu->fullname, vmu->email, vmu->pager, vmu->serveremail, vmu->mailcmd, vmu->language, vmu->zonetag, vmu->callback, vmu->dialout, vmu->uniqueid, vmu->exit, vmu->saydurationm, vmu->maxmsg, count); + vmu = vmu->next; + } + ast_cli(s->fd, "--END COMMAND--\r\n\r\n"); + } else { + astman_send_ack(s, m, "There are no voicemail users currently defined."); + } + ast_mutex_unlock(&appvmlock); + return RESULT_SUCCESS; +} + static int load_config(void) { struct ast_vm_user *cur; @@ -8089,6 +8121,7 @@ res |= ast_unregister_application(app3); res |= ast_unregister_application(app4); res |= ast_custom_function_unregister(&mailbox_exists_acf); + res |= ast_manager_unregister("ListAllVoicemailUsers"); ast_cli_unregister_multiple(cli_voicemail, sizeof(cli_voicemail) / sizeof(struct ast_cli_entry)); ast_uninstall_vm_functions(); @@ -8115,6 +8148,7 @@ res |= ast_register_application(app3, vm_box_exists, synopsis_vm_box_exists, descrip_vm_box_exists); res |= ast_register_application(app4, vmauthenticate, synopsis_vmauthenticate, descrip_vmauthenticate); res |= ast_custom_function_register(&mailbox_exists_acf); + res |= ast_manager_register("ListAllVoicemailUsers", EVENT_FLAG_CALL, manager_list_voicemail_users, "List All Voicemail User Information"); if (res) return res;