[Asterisk-code-review] app voicemail: Cannot set fromstring on a per-mailbox basis (asterisk[14])

Joshua Colp asteriskteam at digium.com
Thu Mar 9 14:06:52 CST 2017


Joshua Colp has submitted this change and it was merged. ( https://gerrit.asterisk.org/5142 )

Change subject: app_voicemail: Cannot set fromstring on a per-mailbox basis
......................................................................


app_voicemail: Cannot set fromstring on a per-mailbox basis

* apps/app_voicemail.c fromstring field added to mailbox which will
override the global fromstring if set.

ASTERISK-24562 #close

Change-Id: I5e90e3a1ec2b2d5340b49a0db825e4bbb158b2fe
---
M CHANGES
M apps/app_voicemail.c
M configs/samples/voicemail.conf.sample
3 files changed, 20 insertions(+), 5 deletions(-)

Approvals:
  Richard Mudgett: Looks good to me, approved
  Anonymous Coward #1000019: Verified
  Joshua Colp: Looks good to me, but someone else must approve



diff --git a/CHANGES b/CHANGES
index 16bc671..a538c8c 100644
--- a/CHANGES
+++ b/CHANGES
@@ -30,6 +30,9 @@
  * The 'Comedian Mail' prompts can now be overriden using the 'vm-login' and
    'vm-newuser' configuration options in voicemail.conf.
 
+ * Added 'fromstring' field to the voicemail boxes. If set, it will override
+   the global 'fromstring' field on a per-mailbox basis.
+
 res_pjsip_transport_websocket
 ------------------
  * Removed non-secure websocket support.  Firefox and Chrome have not allowed
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index 0121a29..34c4822 100644
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -805,6 +805,7 @@
 	char *emailbody;                 /*!< E-mail body */
 	char pager[80];                  /*!< E-mail address to pager (no attachment) */
 	char serveremail[80];            /*!< From: Mail address */
+	char fromstring[100];            /*!< From: Username */
 	char language[MAX_LANGUAGE];     /*!< Config: Language setting */
 	char zonetag[80];                /*!< Time zone */
 	char locale[20];                 /*!< The locale (for presentation of date/time) */
@@ -813,7 +814,7 @@
 	char uniqueid[80];               /*!< Unique integer identifier */
 	char exit[80];
 	char attachfmt[20];              /*!< Attachment format */
-	unsigned int flags;              /*!< VM_ flags */	
+	unsigned int flags;              /*!< VM_ flags */
 	int saydurationm;
 	int minsecs;                     /*!< Minimum number of seconds per message for this mailbox */
 	int maxmsg;                      /*!< Maximum number of msgs per folder for this mailbox */
@@ -1310,6 +1311,8 @@
 		ast_copy_string(vmu->attachfmt, value, sizeof(vmu->attachfmt));
 	} else if (!strcasecmp(var, "serveremail")) {
 		ast_copy_string(vmu->serveremail, value, sizeof(vmu->serveremail));
+	} else if (!strcasecmp(var, "fromstring")) {
+		ast_copy_string(vmu->fromstring, value, sizeof(vmu->fromstring));
 	} else if (!strcasecmp(var, "emailbody")) {
 		ast_free(vmu->emailbody);
 		vmu->emailbody = ast_strdup(substitute_escapes(value));
@@ -5116,12 +5119,13 @@
 	/* Set date format for voicemail mail */
 	ast_strftime_locale(date, sizeof(date), emaildateformat, &tm, S_OR(vmu->locale, NULL));
 
-	if (!ast_strlen_zero(fromstring)) {
+	if (!ast_strlen_zero(fromstring) || !ast_strlen_zero(vmu->fromstring)) {
 		struct ast_channel *ast;
+		char *e_fromstring = !ast_strlen_zero(vmu->fromstring) ? vmu->fromstring : fromstring;
 		if ((ast = ast_dummy_channel_alloc())) {
 			char *ptr;
 			prep_email_sub_vars(ast, vmu, msgnum + 1, context, mailbox, fromfolder, enc_cidnum, enc_cidname, dur, date, category, flag);
-			ast_str_substitute_variables(&str1, 0, ast, fromstring);
+			ast_str_substitute_variables(&str1, 0, ast, e_fromstring);
 
 			if (check_mime(ast_str_buffer(str1))) {
 				first_line = 1;
@@ -12313,7 +12317,7 @@
 	struct ast_vm_user *vmu;
 	/* language parameter seems to only be used for display in manager action */
 	static const char options_string[] = "attach=yes|attachfmt=wav49|"
-		"serveremail=someguy at digium.com|tz=central|delete=yes|saycid=yes|"
+		"serveremail=someguy at digium.com|fromstring=Voicemail System|tz=central|delete=yes|saycid=yes|"
 		"sendvoicemail=yes|review=yes|tempgreetwarn=yes|messagewrap=yes|operator=yes|"
 		"envelope=yes|moveheard=yes|sayduration=yes|saydurationm=5|forcename=yes|"
 		"forcegreetings=yes|callback=somecontext|dialout=somecontext2|"
@@ -12352,6 +12356,10 @@
 	}
 	if (strcasecmp(vmu->attachfmt, "wav49")) {
 		ast_test_status_update(test, "Parse failure for attachftm option\n");
+		res = 1;
+	}
+	if (strcasecmp(vmu->fromstring, "Voicemail System")) {
+		ast_test_status_update(test, "Parse failure for fromstring option\n");
 		res = 1;
 	}
 	if (strcasecmp(vmu->serveremail, "someguy at digium.com")) {
@@ -12913,6 +12921,7 @@
 		USER(ast_vm_user, emailbody, AST_DATA_STRING)			\
 		USER(ast_vm_user, pager, AST_DATA_STRING)			\
 		USER(ast_vm_user, serveremail, AST_DATA_STRING)			\
+		USER(ast_vm_user, fromstring, AST_DATA_STRING)			\
 		USER(ast_vm_user, language, AST_DATA_STRING)			\
 		USER(ast_vm_user, zonetag, AST_DATA_STRING)			\
 		USER(ast_vm_user, callback, AST_DATA_STRING)			\
@@ -12940,6 +12949,7 @@
 		USER(ast_vm_user, emailbody, AST_DATA_STRING)			\
 		USER(ast_vm_user, pager, AST_DATA_STRING)			\
 		USER(ast_vm_user, serveremail, AST_DATA_STRING)			\
+		USER(ast_vm_user, fromstring, AST_DATA_STRING)			\
 		USER(ast_vm_user, language, AST_DATA_STRING)			\
 		USER(ast_vm_user, zonetag, AST_DATA_STRING)			\
 		USER(ast_vm_user, callback, AST_DATA_STRING)			\
@@ -13329,6 +13339,7 @@
 			"Email: %s\r\n"
 			"Pager: %s\r\n"
 			"ServerEmail: %s\r\n"
+			"FromString: %s\r\n"
 			"MailCommand: %s\r\n"
 			"Language: %s\r\n"
 			"TimeZone: %s\r\n"
@@ -13363,6 +13374,7 @@
 			vmu->email,
 			vmu->pager,
 			ast_strlen_zero(vmu->serveremail) ? serveremail : vmu->serveremail,
+			ast_strlen_zero(vmu->fromstring) ? fromstring : vmu->fromstring,
 			mailcmd,
 			vmu->language,
 			vmu->zonetag,
diff --git a/configs/samples/voicemail.conf.sample b/configs/samples/voicemail.conf.sample
index 1c91ffb..f8221ee 100644
--- a/configs/samples/voicemail.conf.sample
+++ b/configs/samples/voicemail.conf.sample
@@ -439,7 +439,7 @@
 ; Note: The rest of the system must reference mailboxes defined here as mailbox at default.
 
 1234 => 4242,Example Mailbox,root at localhost
-;4200 => 9855,Mark Spencer,markster at linux-support.net,mypager at digium.com,attach=no|serveremail=myaddy at digium.com|tz=central|maxmsg=10
+;4200 => 9855,Mark Spencer,markster at linux-support.net,mypager at digium.com,attach=no|serveremail=myaddy at digium.com|fromstring=MySystem|tz=central|maxmsg=10
 ;4300 => 3456,Ben Rigas,ben at american-computer.net
 ;4310 => -5432,Sales,sales at marko.net
 ;4069 => 6522,Matt Brooks,matt at marko.net,,|tz=central|attach=yes|saycid=yes|dialout=fromvm|callback=fromvm|review=yes|operator=yes|envelope=yes|moveheard=yes|sayduration=yes|saydurationm=1

-- 
To view, visit https://gerrit.asterisk.org/5142
To unsubscribe, visit https://gerrit.asterisk.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I5e90e3a1ec2b2d5340b49a0db825e4bbb158b2fe
Gerrit-PatchSet: 3
Gerrit-Project: asterisk
Gerrit-Branch: 14
Gerrit-Owner: Daniel Journo <dan at keshercommunications.com>
Gerrit-Reviewer: Anonymous Coward #1000019
Gerrit-Reviewer: Joshua Colp <jcolp at digium.com>
Gerrit-Reviewer: Richard Mudgett <rmudgett at digium.com>



More information about the asterisk-code-review mailing list