Make ADSI in voicemail configurable (bug #2209)
authorMark Spencer <markster@digium.com>
Wed, 15 Sep 2004 19:54:46 +0000 (19:54 +0000)
committerMark Spencer <markster@digium.com>
Wed, 15 Sep 2004 19:54:46 +0000 (19:54 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3788 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_voicemail.c
configs/voicemail.conf.sample

index 42e0349..d442cde 100755 (executable)
@@ -184,14 +184,8 @@ static char ext_pass_cmd[128];
 
 static char *tdesc = "Comedian Mail (Voicemail System)";
 
 
 static char *tdesc = "Comedian Mail (Voicemail System)";
 
-static char *adapp = "\x00\x00\x00\x0F";
-
-static char *adsec = "\x9B\xDB\xF7\xAC";
-
 static char *addesc = "Comedian Mail";
 
 static char *addesc = "Comedian Mail";
 
-static int adver = 1;
-
 static char *synopsis_vm =
 "Leave a voicemail message";
 
 static char *synopsis_vm =
 "Leave a voicemail message";
 
@@ -283,6 +277,10 @@ static char pagerfromstring[100];
 static char emailtitle[100];
 static char charset[32] = "ISO-8859-1";
 
 static char emailtitle[100];
 static char charset[32] = "ISO-8859-1";
 
+static char adsifdn[4] = "\x00\x00\x00\x0F";
+static char adsisec[4] = "\x9B\xDB\xF7\xAC";
+static int adsiver = 1;
+
 
 STANDARD_LOCAL_USER;
 
 
 STANDARD_LOCAL_USER;
 
@@ -2044,7 +2042,7 @@ static int adsi_load_vmail(struct ast_channel *chan, int *useadsi)
        bytes += adsi_data_mode(buf + bytes);
        adsi_transmit_message(chan, buf, bytes, ADSI_MSG_DISPLAY);
 
        bytes += adsi_data_mode(buf + bytes);
        adsi_transmit_message(chan, buf, bytes, ADSI_MSG_DISPLAY);
 
-       if (adsi_begin_download(chan, addesc, adapp, adsec, adver)) {
+       if (adsi_begin_download(chan, addesc, adsifdn, adsisec, adsiver)) {
                bytes = 0;
                bytes += adsi_display(buf + bytes, ADSI_COMM_PAGE, 3, ADSI_JUST_CENT, 0, "Load Cancelled.", "");
                bytes += adsi_display(buf + bytes, ADSI_COMM_PAGE, 4, ADSI_JUST_CENT, 0, "ADSI Unavailable", "");
                bytes = 0;
                bytes += adsi_display(buf + bytes, ADSI_COMM_PAGE, 3, ADSI_JUST_CENT, 0, "Load Cancelled.", "");
                bytes += adsi_display(buf + bytes, ADSI_COMM_PAGE, 4, ADSI_JUST_CENT, 0, "ADSI Unavailable", "");
@@ -2142,7 +2140,7 @@ static int adsi_load_vmail(struct ast_channel *chan, int *useadsi)
 
        bytes = 0;
        /* Load the session now */
 
        bytes = 0;
        /* Load the session now */
-       if (adsi_load_session(chan, adapp, adver, 1) == 1) {
+       if (adsi_load_session(chan, adsifdn, adsiver, 1) == 1) {
                *useadsi = 1;
                bytes += adsi_display(buf + bytes, ADSI_COMM_PAGE, 3, ADSI_JUST_CENT, 0, "Scripts Loaded!", "");
        } else
                *useadsi = 1;
                bytes += adsi_display(buf + bytes, ADSI_COMM_PAGE, 3, ADSI_JUST_CENT, 0, "Scripts Loaded!", "");
        } else
@@ -2157,7 +2155,7 @@ static void adsi_begin(struct ast_channel *chan, int *useadsi)
        int x;
        if (!adsi_available(chan))
           return;
        int x;
        if (!adsi_available(chan))
           return;
-       x = adsi_load_session(chan, adapp, adver, 1);
+       x = adsi_load_session(chan, adsifdn, adsiver, 1);
        if (x < 0)
                return;
        if (!x) {
        if (x < 0)
                return;
        if (!x) {
@@ -4347,6 +4345,7 @@ static int load_config(void)
        char *exitcxt = NULL;   
        char *extpc;
        int x;
        char *exitcxt = NULL;   
        char *extpc;
        int x;
+       int tmpadsi[4];
 
        cfg = ast_load(VOICEMAIL_CONFIG);
        ast_mutex_lock(&vmlock);
 
        cfg = ast_load(VOICEMAIL_CONFIG);
        ast_mutex_lock(&vmlock);
@@ -4642,6 +4641,22 @@ static int load_config(void)
                        strncpy(pagerfromstring,s,sizeof(pagerfromstring)-1);   
                if ((s=ast_variable_retrieve(cfg, "general", "charset")))
                        strncpy(charset,s,sizeof(charset)-1);
                        strncpy(pagerfromstring,s,sizeof(pagerfromstring)-1);   
                if ((s=ast_variable_retrieve(cfg, "general", "charset")))
                        strncpy(charset,s,sizeof(charset)-1);
+               if ((s=ast_variable_retrieve(cfg, "general", "adsifdn"))) {
+                       sscanf(s, "%2x%2x%2x%2x", &tmpadsi[0], &tmpadsi[1], &tmpadsi[2], &tmpadsi[3]);
+                       for (x=0; x<4; x++) {
+                               memcpy(&adsifdn[x], &tmpadsi[x], 1);
+                       }
+               }
+               if ((s=ast_variable_retrieve(cfg, "general", "adsisec"))) {
+                       sscanf(s, "%2x%2x%2x%2x", &tmpadsi[0], &tmpadsi[1], &tmpadsi[2], &tmpadsi[3]);
+                       for (x=0; x<4; x++) {
+                               memcpy(&adsisec[x], &tmpadsi[x], 1);
+                       }
+               }
+               if ((s=ast_variable_retrieve(cfg, "general", "adsiver")))
+                       if (atoi(s)) {
+                               adsiver = atoi(s);
+                       }
                if ((s=ast_variable_retrieve(cfg, "general", "emailtitle"))) {
                        ast_log(LOG_NOTICE, "Keyword 'emailtitle' is DEPRECATED, please use 'emailsubject' instead.\n");
                        strncpy(emailtitle,s,sizeof(emailtitle)-1);
                if ((s=ast_variable_retrieve(cfg, "general", "emailtitle"))) {
                        ast_log(LOG_NOTICE, "Keyword 'emailtitle' is DEPRECATED, please use 'emailsubject' instead.\n");
                        strncpy(emailtitle,s,sizeof(emailtitle)-1);
index f026e3d..315611a 100755 (executable)
@@ -36,6 +36,12 @@ maxlogins=3
 ;directoryintro=dir-intro
 ; The character set for voicemail messages can be specified here
 ;charset=ISO-8859-1
 ;directoryintro=dir-intro
 ; The character set for voicemail messages can be specified here
 ;charset=ISO-8859-1
+; The ADSI feature descriptor number to download to 
+;adsifdn=0000000F
+; The ADSI security lock code
+;adsisec=9BDBF7AC
+; The ADSI voicemail application version number.
+;adsiver=1
 ; Skip the "[PBX]:" string from the message title
 ;pbxskip=yes
 ; Change the From: string
 ; Skip the "[PBX]:" string from the message title
 ;pbxskip=yes
 ; Change the From: string