[asterisk-commits] oej: branch oej/minivoicemail r58701 - in /team/oej/minivoicemail: apps/ conf...

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Sat Mar 10 07:29:05 MST 2007


Author: oej
Date: Sat Mar 10 08:29:04 2007
New Revision: 58701

URL: http://svn.digium.com/view/asterisk?view=rev&rev=58701
Log:
Add global logfile support for MinivmRecord

Modified:
    team/oej/minivoicemail/apps/app_minivm.c
    team/oej/minivoicemail/configs/minivm.conf.sample

Modified: team/oej/minivoicemail/apps/app_minivm.c
URL: http://svn.digium.com/view/asterisk/team/oej/minivoicemail/apps/app_minivm.c?view=diff&rev=58701&r1=58700&r2=58701
==============================================================================
--- team/oej/minivoicemail/apps/app_minivm.c (original)
+++ team/oej/minivoicemail/apps/app_minivm.c Sat Mar 10 08:29:04 2007
@@ -422,6 +422,9 @@
 static struct minivm_stats global_stats;
 
 AST_MUTEX_DEFINE_STATIC(minivmlock);	/*!< Lock to protect voicemail system */
+AST_MUTEX_DEFINE_STATIC(minivmloglock);	/*!< Lock to protect voicemail system log file */
+
+FILE *minivmlogfile;			/*!< The minivm log file */
 
 static int global_vmminmessage;		/*!< Minimum duration of messages */
 static int global_vmmaxmessage;		/*!< Maximum duration of message */
@@ -430,7 +433,7 @@
 static int global_silencethreshold = 128;
 static char global_mailcmd[160];	/*!< Configurable mail cmd */
 static char global_externnotify[160]; 	/*!< External notification application */
-
+static char global_logfile[AST_CONFIG_MAX_PATH];	/*!< Global log file for messages */
 static char default_vmformat[80];
 
 static struct ast_flags globalflags = {0};	/*!< Global voicemail flags */
@@ -1260,7 +1263,7 @@
 	/* Sprintf here would safe because we alloca'd exactly the right length,
 	 * but trying to eliminate all sprintf's anyhow
 	 */
-	snprintf(txt, txtsize, "%s.txt", file);
+	snprintf(txt, txtsize, "%s", file);
 	res = unlink(txt);
 	res |=  ast_filedelete(file, NULL);
 	return res;
@@ -1419,13 +1422,11 @@
 /*! \brief Send message to voicemail account owner */
 static int notify_new_message(struct ast_channel *chan, const char *templatename, struct minivm_account *vmu, const char *filename, long duration, const char *format, char *cidnum, char *cidname)
 {
-	char ext_context[PATH_MAX], *stringp;
+	char *stringp;
 	struct minivm_template *etemplate;
 	char *messageformat;
 	int res = 0;
 	char oldlocale[100];
-
-	snprintf(ext_context, sizeof(ext_context), "%s@%s", vmu->username, vmu->domain);
 
 	if (!ast_strlen_zero(vmu->attachfmt)) {
 		if (strstr(format, vmu->attachfmt)) {
@@ -1548,11 +1549,9 @@
 	
 
 	/* XXX This file needs to be in temp directory */
-	txtdes = mkstemp(tmptxtfile);
+	txtdes = mkstemps(tmptxtfile, 4);
 	if (txtdes < 0) {
-		if (option_debug > 2)
-			ast_log(LOG_DEBUG, "Can't create temp file in %s\n", tmptxtfile);
-		ast_log(LOG_ERROR, "Unable to create message file: %s\n", strerror(errno));
+		ast_log(LOG_ERROR, "Unable to create message file %s: %s\n", tmptxtfile, strerror(errno));
 		res = ast_streamfile(chan, "vm-mailboxfull", chan->language);
 		if (!res)
 			res = ast_waitstream(chan, "");
@@ -1560,7 +1559,6 @@
 		return res;
 	}
 
-	/* Now play the beep once we have the message number for our next message. */
 	if (res >= 0) {
 		/* Unless we're *really* silent, try to send the beep */
 		res = ast_streamfile(chan, "beep", chan->language);
@@ -1570,7 +1568,7 @@
 
 	/* OEJ XXX Maybe this can be turned into a log file? Hmm. */
 	/* Store information */
-	if (option_debug)
+	if (option_debug > 1)
 		ast_log(LOG_DEBUG, "Open file for metadata: %s\n", tmptxtfile);
 
 	res = play_record_review(chan, NULL, tmptxtfile, global_vmmaxmessage, fmt, 1, vmu, &duration, NULL, options->record_gain);
@@ -1582,15 +1580,15 @@
 		struct tm tm;
 		time_t now;
 		char timebuf[30];
+		char logbuf[BUFSIZ];
 		get_date(date, sizeof(date));
 		now = time(NULL);
-		//ast_localtime(&now, &tm, the_zone ? the_zone->timezone : NULL);
 		ast_localtime(&now, &tm, NULL);
 		strftime(timebuf, sizeof(timebuf), "%H:%M:%S", &tm);
 		
-		fprintf(txt, 
-			/* "Mailbox:domain:macrocontext:exten:priority:callerchan:callerid:origdate:origtime:duration:durationstatus" */
-			"%s:%s:%s:%s:%d:%s:%s:%s:%s:%d:%s\n",
+		snprintf(logbuf, sizeof(logbuf),
+			/* "Mailbox:domain:macrocontext:exten:priority:callerchan:callerid:origdate:origtime:duration:durationstatus:accountcode" */
+			"%s:%s:%s:%s:%d:%s:%s:%s:%s:%d:%s:%s\n",
 			username,
 			chan->context,
 			chan->macrocontext, 
@@ -1601,9 +1599,15 @@
 			date, 
 			timebuf,
 			duration,
-			duration < global_vmminmessage ? "IGNORED" : "OK"
+			duration < global_vmminmessage ? "IGNORED" : "OK",
+			vmu->accountcode
 		); 
-
+		fprintf(txt, logbuf);
+		if (minivmlogfile) {
+			ast_mutex_lock(&minivmloglock);
+			fprintf(minivmlogfile, logbuf);
+			ast_mutex_unlock(&minivmloglock);
+		}
 
 		if (duration < global_vmminmessage) {
 			if (option_verbose > 2) 
@@ -2394,8 +2398,14 @@
 			global_maxsilence = atoi(var->value);
 			if (global_maxsilence > 0)
 				global_maxsilence *= 1000;
+		} else if (!strcmp(var->name, "logfile")) {
+			if (!ast_strlen_zero(var->value) ) {
+				if(*(var->value) == '/')
+					ast_copy_string(global_logfile, var->value, sizeof(global_logfile));
+				else
+					snprintf(global_logfile, sizeof(global_logfile), "%s/%s", ast_config_AST_LOG_DIR, var->value);
+			}
 		} else if (!strcmp(var->name, "externnotify")) {
-			
 			/* External voicemail notify application */
 			ast_copy_string(global_externnotify, var->value, sizeof(global_externnotify));
 		} else if (!strcmp(var->name, "silencetreshold")) {
@@ -2468,6 +2478,7 @@
 
 	/* First, set some default settings */
 	global_externnotify[0] = '\0';
+	global_logfile[0] = '\0';
 	global_silencethreshold = 256;
 	global_vmmaxmessage = 2000;
 	global_maxgreet = 2000;
@@ -2563,6 +2574,20 @@
 
 	ast_mutex_unlock(&minivmlock);
 	ast_config_destroy(cfg);
+
+	/* Close log file if it's open and disabled */
+	if(minivmlogfile)
+		fclose(minivmlogfile);
+
+	/* Open log file if it's enabled */
+	if(!ast_strlen_zero(global_logfile)) {
+		minivmlogfile = fopen(global_logfile, "a");
+		if(!minivmlogfile)
+			ast_log(LOG_ERROR, "Failed to open minivm log file %s : %s\n", global_logfile, strerror(errno));
+		if (option_debug > 2 && minivmlogfile)
+			ast_log(LOG_DEBUG, "Opened log file %s \n", global_logfile);
+	}
+
 	return 0;
 }
 
@@ -2724,6 +2749,7 @@
 	ast_cli(fd, "  Min message length (secs):          %d\n", global_vmminmessage);
 	ast_cli(fd, "  Default format:                     %s\n", default_vmformat);
 	ast_cli(fd, "  Extern notify (shell):              %s\n", global_externnotify);
+	ast_cli(fd, "  Logfile:                            %s\n", global_logfile[0] ? global_logfile : "<disabled>");
 	ast_cli(fd, "  Operator exit:                      %s\n", ast_test_flag(&globalflags, MVM_OPERATOR) ? "Yes" : "No");
 	ast_cli(fd, "  Message review:                     %s\n", ast_test_flag(&globalflags, MVM_REVIEW) ? "Yes" : "No");
 

Modified: team/oej/minivoicemail/configs/minivm.conf.sample
URL: http://svn.digium.com/view/asterisk/team/oej/minivoicemail/configs/minivm.conf.sample?view=diff&rev=58701&r1=58700&r2=58701
==============================================================================
--- team/oej/minivoicemail/configs/minivm.conf.sample (original)
+++ team/oej/minivoicemail/configs/minivm.conf.sample Sat Mar 10 08:29:04 2007
@@ -18,6 +18,10 @@
 format=wav49
 ;format=gsm
 ;
+;Turn on logfile with the following syntax. One line per voicemail received
+;with minivmRecord()
+; Mailbox:domain:macrocontext:exten:priority:callerchan:callerid:origdate:origtime:duration:durationstatus:accountcode
+;logfile=/var/log/asterisk/minivm.log
 ; Who the e-mail notification should appear to come from
 serveremail=asterisk
 ;serveremail=asterisk at asterisk.example.com



More information about the asterisk-commits mailing list