mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-25 06:00:36 +00:00 
			
		
		
		
	Merge Vonage changes to VM2, ready to be edited and updated :)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1035 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		| @@ -83,6 +83,7 @@ struct ast_vm_user { | ||||
| 	char fullname[80]; | ||||
| 	char email[80]; | ||||
| 	char pager[80]; | ||||
| 	char options[160]; | ||||
| 	int alloced; | ||||
| 	struct ast_vm_user *next; | ||||
| }; | ||||
| @@ -187,6 +188,7 @@ static struct ast_vm_user *find_user(struct ast_vm_user *ivm, char *context, cha | ||||
| 	*retval->fullname='\0'; | ||||
| 	*retval->email='\0'; | ||||
| 	*retval->pager='\0'; | ||||
| 	*retval->options='\0'; | ||||
| 	retval->alloced=1; | ||||
| 	retval->next=NULL; | ||||
| 	if (mailbox) { | ||||
| @@ -197,9 +199,9 @@ static struct ast_vm_user *find_user(struct ast_vm_user *ivm, char *context, cha | ||||
| 	} | ||||
|  | ||||
| 	if (*retval->context) { | ||||
| 		sprintf(query, "SELECT password,fullname,email,pager FROM users WHERE context='%s' AND mailbox='%s'", context, mailbox); | ||||
| 		sprintf(query, "SELECT password,fullname,email,pager,options FROM users WHERE context='%s' AND mailbox='%s'", context, mailbox); | ||||
| 	} else { | ||||
| 		sprintf(query, "SELECT password,fullname,email,pager FROM users WHERE mailbox='%s'", mailbox); | ||||
| 		sprintf(query, "SELECT password,fullname,email,pager,options FROM users WHERE mailbox='%s'", mailbox); | ||||
| 	} | ||||
| 	pthread_mutex_lock(&mysqllock); | ||||
| 	mysql_query(dbhandler, query); | ||||
| @@ -217,6 +219,8 @@ static struct ast_vm_user *find_user(struct ast_vm_user *ivm, char *context, cha | ||||
| 						strcpy(retval->email, rowval[i]); | ||||
| 					} else if (!strcmp(fields[i].name, "pager")) { | ||||
| 						strcpy(retval->pager, rowval[i]); | ||||
| 					} else if (!strcmp(fields[i].name, "options")) { | ||||
| 						strcpy(retval->options, rowval[i]); | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| @@ -528,7 +532,31 @@ static int base_encode(char *filename, FILE *so) | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| static int sendmail(char *srcemail, char *email, char *name, int msgnum, char *mailbox, char *callerid, char *attach, char *format, long duration) | ||||
| static int getoptionvalue(char *options, char *optionname, char *value) | ||||
| { | ||||
| 	char *c, *d; | ||||
|  | ||||
| 	if (!(c=strstr(options, optionname))) { | ||||
| 		return 0; | ||||
| 	} | ||||
| 	if (c!=options && *(c-1)!='|') { | ||||
| 		return 0; | ||||
| 	} | ||||
| 	if (*(c+strlen(optionname))!='=') { | ||||
| 		return 0; | ||||
| 	} | ||||
|  | ||||
| 	c+=strlen(optionname)+1; | ||||
| 	if ((d=strchr(c, '|'))) { | ||||
| 		strncpy(value, c, d-c); | ||||
| 		*(value+(d-c))='\0'; | ||||
| 	} else { | ||||
| 		strcpy(value, c); | ||||
| 	} | ||||
| 	return(1); | ||||
| } | ||||
|  | ||||
| static int sendmail(char *srcemail, char *email, char *name, int msgnum, char *mailbox, char *callerid, char *attach, char *format, long duration, int attach_user_voicemail) | ||||
| { | ||||
| 	FILE *p; | ||||
| 	char date[256]; | ||||
| @@ -559,7 +587,7 @@ static int sendmail(char *srcemail, char *email, char *name, int msgnum, char *m | ||||
| 		fprintf(p, "Subject: [PBX]: New message %d in mailbox %s\n", msgnum, mailbox); | ||||
| 		fprintf(p, "Message-ID: <Asterisk-%d-%s-%d@%s>\n", msgnum, mailbox, getpid(), host); | ||||
| 		fprintf(p, "MIME-Version: 1.0\n"); | ||||
| 		if (attach_voicemail) { | ||||
| 		if ((attach_user_voicemail==-1 && attach_voicemail) || attach_user_voicemail==1) { | ||||
| 			// Something unique. | ||||
| 			snprintf(bound, sizeof(bound), "Boundary=%d%s%d", msgnum, mailbox, getpid()); | ||||
|  | ||||
| @@ -574,7 +602,7 @@ static int sendmail(char *srcemail, char *email, char *name, int msgnum, char *m | ||||
| 			"in mailbox %s from %s, on %s so you might\n" | ||||
| 			"want to check it when you get a chance.  Thanks!\n\n\t\t\t\t--Asterisk\n\n", name,  | ||||
| 			dur, msgnum, mailbox, (callerid ? callerid : "an unknown caller"), date); | ||||
| 		if (attach_voicemail) { | ||||
| 		if ((attach_user_voicemail==-1 && attach_voicemail) || attach_user_voicemail==1) { | ||||
| 			fprintf(p, "--%s\n", bound); | ||||
| 			fprintf(p, "Content-Type: audio/x-wav; name=\"msg%04d.%s\"\n", msgnum, format); | ||||
| 			fprintf(p, "Content-Transfer-Encoding: BASE64\n"); | ||||
| @@ -1021,8 +1049,14 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, int silent, int | ||||
| 				stringp = fmt; | ||||
| 				strsep(&stringp, "|"); | ||||
| 				/* Send e-mail if applicable */ | ||||
| 				if (strlen(vmu->email)) | ||||
| 					sendmail(serveremail, vmu->email, vmu->fullname, msgnum, ext, chan->callerid, fn, fmt, end - start); | ||||
| 				if (strlen(vmu->email)) { | ||||
| 					int attach_user_voicemail=-1; | ||||
| 					char tmpvalue[160]; | ||||
| 					if (getoptionvalue(vmu->options, "attach", tmpvalue)) { | ||||
| 						attach_user_voicemail=ast_true(tmpvalue); | ||||
| 					} | ||||
| 					sendmail(serveremail, vmu->email, vmu->fullname, msgnum, ext, chan->callerid, fn, fmt, end - start, attach_user_voicemail); | ||||
| 				} | ||||
| 				if (strlen(vmu->pager)) | ||||
| 					sendpage(serveremail, vmu->pager, msgnum, ext, chan->callerid, end - start); | ||||
| 			} else | ||||
| @@ -1706,8 +1740,14 @@ forward_message(struct ast_channel *chan, char *context, char *dir, int curmsg, | ||||
|               snprintf(callerid, sizeof(callerid), "FWD from: %s from %s", sender->fullname, ast_variable_retrieve(mif, NULL, "callerid")); | ||||
|               duration = atol(ast_variable_retrieve(mif, NULL, "duration")); | ||||
|               		 | ||||
| 			  if (strlen(receiver->email)) | ||||
| 			    sendmail(serveremail, receiver->email, receiver->fullname, todircount, username, callerid, fn, tmp, atol(ast_variable_retrieve(mif, NULL, "duration"))); | ||||
| 	      if (strlen(receiver->email)) { | ||||
| 		      int attach_user_voicemail=-1; | ||||
| 		      char tmpvalue[160]; | ||||
| 		      if (getoptionvalue(receiver->options, "attach", tmpvalue)) { | ||||
| 			      attach_user_voicemail=ast_true(tmpvalue); | ||||
| 		      } | ||||
| 		      sendmail(serveremail, receiver->email, receiver->fullname, todircount, username, callerid, fn, tmp, atol(ast_variable_retrieve(mif, NULL, "duration")), attach_user_voicemail); | ||||
| 	      } | ||||
| 	      | ||||
| 			  if (strlen(receiver->pager)) | ||||
| 				sendpage(serveremail, receiver->pager, todircount, username, callerid, duration); | ||||
| @@ -2353,6 +2393,8 @@ static int append_mailbox(char *context, char *mbox, char *data) | ||||
| 			strncpy(vmu->email, s, sizeof(vmu->email)); | ||||
| 		if ((s = strsep(&stringp, ",")))  | ||||
| 			strncpy(vmu->pager, s, sizeof(vmu->pager)); | ||||
| 		if ((s = strsep(&stringp, ",")))  | ||||
| 			strncpy(vmu->options, s, sizeof(vmu->options)); | ||||
| 		vmu->next = NULL; | ||||
| 		if (usersl) | ||||
| 			usersl->next = vmu; | ||||
|   | ||||
| @@ -1 +1,2 @@ | ||||
| create table users (mailbox VARCHAR(80) NOT NULL PRIMARY KEY, context VARCHAR(80), password VARCHAR(80), fullname VARCHAR(80), email VARCHAR(80), pager VARCHAR(80)); | ||||
| drop table if exists users; | ||||
| create table users (mailbox VARCHAR(80) NOT NULL PRIMARY KEY, context VARCHAR(80), password VARCHAR(80), fullname VARCHAR(80), email VARCHAR(80), pager VARCHAR(80), options VARCHAR(160)); | ||||
|   | ||||
							
								
								
									
										3
									
								
								vmdb.sql
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								vmdb.sql
									
									
									
									
									
								
							| @@ -1 +1,2 @@ | ||||
| create table users (mailbox VARCHAR(80) NOT NULL PRIMARY KEY, context VARCHAR(80), password VARCHAR(80), fullname VARCHAR(80), email VARCHAR(80), pager VARCHAR(80)); | ||||
| drop table if exists users; | ||||
| create table users (mailbox VARCHAR(80) NOT NULL PRIMARY KEY, context VARCHAR(80), password VARCHAR(80), fullname VARCHAR(80), email VARCHAR(80), pager VARCHAR(80), options VARCHAR(160)); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user