[asterisk-commits] qwell: trunk r47814 - in /trunk: apps/ configs/
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Fri Nov 17 14:51:42 MST 2006
Author: qwell
Date: Fri Nov 17 15:51:42 2006
New Revision: 47814
URL: http://svn.digium.com/view/asterisk?view=rev&rev=47814
Log:
Add ability to notify an external application/script that the voicemail password was,
while also still changing the password "internally".
Issue 7371, initial patch by pdunkel, with rewrite/config comments by me.
Additional modifications (yay bitmask) by pdunkel.
Modified:
trunk/apps/app_voicemail.c
trunk/configs/voicemail.conf.sample
Modified: trunk/apps/app_voicemail.c
URL: http://svn.digium.com/view/asterisk/trunk/apps/app_voicemail.c?view=diff&rev=47814&r1=47813&r2=47814
==============================================================================
--- trunk/apps/app_voicemail.c (original)
+++ trunk/apps/app_voicemail.c Fri Nov 17 15:51:42 2006
@@ -401,6 +401,10 @@
static char VM_SPOOL_DIR[PATH_MAX];
static char ext_pass_cmd[128];
+
+#define PWDCHANGE_INTERNAL (1 << 1)
+#define PWDCHANGE_EXTERNAL (1 << 2)
+static int pwdchange = PWDCHANGE_INTERNAL;
#if ODBC_STORAGE
#define tdesc "Comedian Mail (Voicemail System) with ODBC Storage"
@@ -5741,10 +5745,11 @@
if (++tries == 3)
return -1;
}
- if (ast_strlen_zero(ext_pass_cmd))
- vm_change_password(vmu,newpassword);
- else
- vm_change_password_shell(vmu,newpassword);
+ if (pwdchange & PWDCHANGE_INTERNAL)
+ vm_change_password(vmu, newpassword);
+ if ((pwdchange & PWDCHANGE_EXTERNAL) && !ast_strlen_zero(ext_pass_cmd))
+ vm_change_password_shell(vmu, newpassword);
+
if (option_debug)
ast_log(LOG_DEBUG,"User %s set password to %s of length %d\n",vms->username,newpassword,(int)strlen(newpassword));
cmd = ast_play_and_wait(chan, vm_passchanged);
@@ -5844,10 +5849,11 @@
cmd = ast_play_and_wait(chan, vm_mismatch);
break;
}
- if (ast_strlen_zero(ext_pass_cmd))
- vm_change_password(vmu,newpassword);
- else
- vm_change_password_shell(vmu,newpassword);
+ if (pwdchange & PWDCHANGE_INTERNAL)
+ vm_change_password(vmu, newpassword);
+ if ((pwdchange & PWDCHANGE_EXTERNAL) && !ast_strlen_zero(ext_pass_cmd))
+ vm_change_password_shell(vmu, newpassword);
+
if (option_debug)
ast_log(LOG_DEBUG,"User %s set password to %s of length %d\n",vms->username,newpassword,(int)strlen(newpassword));
cmd = ast_play_and_wait(chan, vm_passchanged);
@@ -7176,7 +7182,12 @@
/* External password changing command */
if ((extpc = ast_variable_retrieve(cfg, "general", "externpass"))) {
ast_copy_string(ext_pass_cmd,extpc,sizeof(ext_pass_cmd));
- }
+ pwdchange = PWDCHANGE_EXTERNAL;
+ } else if ((extpc = ast_variable_retrieve(cfg, "general", "externpassnotify"))) {
+ ast_copy_string(ext_pass_cmd,extpc,sizeof(ext_pass_cmd));
+ pwdchange = PWDCHANGE_EXTERNAL | PWDCHANGE_INTERNAL;
+ }
+
#ifdef IMAP_STORAGE
/* IMAP server address */
if ((imap_server = ast_variable_retrieve(cfg, "general", "imapserver"))) {
Modified: trunk/configs/voicemail.conf.sample
URL: http://svn.digium.com/view/asterisk/trunk/configs/voicemail.conf.sample?view=diff&rev=47814&r1=47813&r2=47814
==============================================================================
--- trunk/configs/voicemail.conf.sample (original)
+++ trunk/configs/voicemail.conf.sample Fri Nov 17 15:51:42 2006
@@ -66,7 +66,11 @@
; If you need to have an external program, i.e. /usr/bin/myapp
; called when a voicemail password is changed, uncomment this:
+; Note: If this is set, the password will NOT be changed in voicemail.conf
+; If you would like to also change the password in voicemail.conf, use
+; the externpassnotify option below instead.
;externpass=/usr/bin/myapp
+;externpassnotify=/usr/bin/myapp
; For the directory, you can override the intro file if you want
;directoryintro=dir-intro
; The character set for voicemail messages can be specified here
More information about the asterisk-commits
mailing list