⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vmail.cgi

📁 Asterisk-1.4.4最新内核源代码
💻 CGI
📖 第 1 页 / 共 3 页
字号:
	my $count = &msgcount($context, $mailbox, $folder);	if ($count > 1) {		"$count messages";	} elsif ($count > 0) {		"$count message";	} else {		"no messages";	}}sub messages(){	my ($context, $mailbox, $folder) = @_;	my $path = "/var/spool/asterisk/voicemail/$context/$mailbox/$folder";	if (opendir(DIR, $path)) {		my @msgs = sort grep(/^msg....\.txt$/, readdir(DIR));		closedir(DIR);		return map { s/^msg(....)\.txt$/$1/; $_ } @msgs;	}	return ();}sub getcookie(){	my ($var) = @_;	return cookie($var);}sub makecookie(){	my ($format) = @_;	cookie(-name => "format", -value =>["$format"], -expires=>"+1y");}sub getfields(){	my ($context, $mailbox, $folder, $msg) = @_;	my $fields;	if (open(MSG, "</var/spool/asterisk/voicemail/$context/$mailbox/$folder/msg${msg}.txt")) {		while(<MSG>) {			s/\#.*$//g;			if (/^(\w+)\s*\=\s*(.*)$/) {				$fields->{$1} = $2;			}		}		close(MSG);		$fields->{'msgid'} = $msg;	} else { print "<BR>Unable to open '$msg' in '$mailbox', '$folder'\n<B>"; }	$fields;}sub message_prefs(){	my ($nextaction, $msgid) = @_;	my $folder = param('folder');	my $mbox = param('mailbox');	my $context = param('context');	my $passwd = param('password');	my $format = param('format');	if (!$format) {		$format = &getcookie('format');	}	print header;	print <<_EOH;<TITLE>Asterisk Web-Voicemail: Preferences</TITLE><BODY BGCOLOR="white">$stdcontainerstart<FORM METHOD="post"><table width=100% align=center><tr><td align=right colspan=3><font size=+2>Web Voicemail Preferences</font></td></tr><tr><td align=left><font size=+1>Preferred&nbsp;Audio&nbsp;Format:</font></td><td colspan=2></td></tr>_EOHforeach $fmt (sort { $formats{$a}->{'pref'} <=> $formats{$b}->{'pref'} } keys %formats) {	my $clicked = "checked" if $fmt eq $format;	print "<tr><td></td><td align=left><input type=radio name=\"format\" $clicked value=\"$fmt\"></td><td width=100%>&nbsp;$formats{$fmt}->{name}</td></tr>\n";}print <<_EOH;<tr><td align=right colspan=3><input type=submit value="save settings..."></td></tr></table><input type=hidden name="action" value="$nextaction"><input type=hidden name="folder" value="$folder"><input type=hidden name="mailbox" value="$mbox"><input type=hidden name="context" value="$context"><input type=hidden name="password" value="$passwd"><input type=hidden name="msgid" value="$msgid">$stdcontainerend</BODY>\n_EOH}sub message_play(){	my ($message, $msgid) = @_;	my $folder = param('folder');	my ($mbox, $context) = split(/\@/, param('mailbox'));	my $passwd = param('password');	my $format = param('format');		my $fields;	if (!$context) {		$context = param('context');	}	if (!$context) {		$context = "default";	}		my $folders = &folder_list('newfolder', $context, $mbox, $folder);	my $mailboxes = &mailbox_list('forwardto', $context, $mbox);	if (!$format) {		$format = &getcookie('format');	}	if (!$format) {		&message_prefs("play", $msgid);	} else {		print header(-cookie => &makecookie($format));		$fields = &getfields($context, $mbox, $folder, $msgid);		if (!$fields) {			print "<BR>Bah!\n";			return;		}		my $duration = $fields->{'duration'};		if ($duration) {			$duration = sprintf "%d:%02d", $duration/60, $duration % 60; 		} else {			$duration = "<i>Unknown</i>";		}		print <<_EOH;	<TITLE>Asterisk Web-Voicemail: $folder Message $msgid</TITLE><BODY BGCOLOR="white">$stdcontainerstart<FORM METHOD="post"><table width=100% align=center><tr><td align=right colspan=3><font size=+1>$folder Message $msgid</font></td></tr>_EOH		print <<_EOH;<tr><td align=center colspan=3><table>	<tr><td colspan=2 align=center><font size=+1>$folder <b>$msgid</b></font></td></tr>	<tr><td><b>Message:</b></td><td>$msgid</td></tr>\n	<tr><td><b>Mailbox:</b></td><td>$mbox\@$context</td></tr>\n	<tr><td><b>Folder:</b></td><td>$folder</td></tr>\n	<tr><td><b>From:</b></td><td>$fields->{callerid}</td></tr>\n	<tr><td><b>Duration:</b></td><td>$duration</td></tr>\n	<tr><td><b>Original Date:</b></td><td>$fields->{origdate}</td></tr>\n	<tr><td><b>Original Mailbox:</b></td><td>$fields->{origmailbox}</td></tr>\n	<tr><td><b>Caller Channel:</b></td><td>$fields->{callerchan}</td></tr>\n	<tr><td align=center colspan=2>	<input name="action" type=submit value="index">&nbsp;	<input name="action" type=submit value="delete ">&nbsp;	<input name="action" type=submit value="forward to -> ">&nbsp;	$mailboxes&nbsp;	<input name="action" type=submit value="save to ->">	$folders&nbsp;	<input name="action" type=submit value="play ">	<input name="action" type=submit value="download"></td></tr><tr><td colspan=2 align=center><embed width=400 height=40 src="vmail.cgi?action=audio&folder=$folder&mailbox=$mbox&context=$context&password=$passwd&msgid=$msgid&format=$format&dontcasheme=$$.$format" autostart=yes loop=false></embed></td></tr></table></td></tr></table><input type=hidden name="folder" value="$folder"><input type=hidden name="mailbox" value="$mbox"><input type=hidden name="context" value="$context"><input type=hidden name="password" value="$passwd"><input type=hidden name="msgid" value="$msgid">$stdcontainerend</BODY>\n_EOH	}}sub message_audio(){	my ($forcedownload) = @_;	my $folder = &untaint(param('folder'));	my $msgid = &untaint(param('msgid'));	my $mailbox = &untaint(param('mailbox'));	my $context = &untaint(param('context'));	my $format = param('format');	if (!$format) {		$format = &getcookie('format');	}	&untaint($format);	my $path = "/var/spool/asterisk/voicemail/$context/$mailbox/$folder/msg${msgid}.$format";	$msgid =~ /^\d\d\d\d$/ || die("Msgid Liar ($msgid)!");	grep(/^${format}$/, keys %formats) || die("Format Liar ($format)!");	# Mailbox and folder are already verified	if (open(AUDIO, "<$path")) {		$size = -s $path;		$|=1;		if ($forcedownload) {			print header(-type=>$formats{$format}->{'mime'}, -Content_length => $size, -attachment => "msg${msgid}.$format");		} else {					print header(-type=>$formats{$format}->{'mime'}, -Content_length => $size);		}				while(($amt = sysread(AUDIO, $data, 4096)) > 0) {			syswrite(STDOUT, $data, $amt);		}		close(AUDIO);	} else {		die("Hrm, can't seem to open $path\n");	}}sub message_index() {	my ($folder, $message) = @_;	my ($mbox, $context) = split(/\@/, param('mailbox'));	my $passwd = param('password');	my $message2;	my $msgcount;		my $hasmsg;	my $newmessages, $oldmessages;	my $format = param('format');	if (!$format) {		$format = &getcookie('format');	}	if (!$context) {		$context = param('context');	}	if (!$context) {		$context = "default";	}	if ($folder) {		$msgcount = &msgcountstr($context, $mbox, $folder);		$message2 = "&nbsp;&nbsp;&nbsp;Folder '$folder' has " . &msgcountstr($context, $mbox, $folder);	} else {		$newmessages = &msgcount($context, $mbox, "INBOX");		$oldmessages = &msgcount($context, $mbox, "Old");		if (($newmessages > 0) || ($oldmessages < 1)) {			$folder = "INBOX";		} else {			$folder = "Old";		}		$message2 = "You have";		if ($newmessages > 0) {			$message2 .= " <b>$newmessages</b> NEW";			if ($oldmessages > 0) {				$message2 .= "and <b>$oldmessages</b> OLD";				if ($oldmessages != 1) {					$message2 .= " messages.";				} else {					$message2 .= "message.";				}			} else {				if ($newmessages != 1) {					$message2 .= " messages.";				} else {					$message2 .= " message.";				}			}		} else {			if ($oldmessages > 0) {				$message2 .= " <b>$oldmessages</b> OLD";				if ($oldmessages != 1) {					$message2 .= " messages.";				} else {					$message2 .= " message.";				}			} else {				$message2 .= " <b>no</b> messages.";			}		}	}		my $folders = &folder_list('newfolder', $context, $mbox, $folder);	my $cfolders = &folder_list('changefolder', $context, $mbox, $folder);	my $mailboxes = &mailbox_list('forwardto', $context, $mbox);	print header(-cookie => &makecookie($format));	print <<_EOH;<TITLE>Asterisk Web-Voicemail: $mbox\@$context $folder</TITLE><BODY BGCOLOR="white">$stdcontainerstart<FORM METHOD="post"><table width=100% align=center><tr><td align=center colspan=2><font size=+2><I>$message</I></font></td></tr><tr><td align=right colspan=2><font size=+1><b>$folder</b> Messages</font> <input type=submit name="action" value="change to ->">$cfolders</td></tr><tr><td align=left colspan=2><font size=+1>$message2</font></td></tr></table><table width=100% align=center cellpadding=0 cellspacing=0>_EOHprint "<tr><td>&nbsp;Msg</td><td>&nbsp;From</td><td>&nbsp;Duration</td><td>&nbsp;Date</td><td>&nbsp;</td></tr>\n";print "<tr><td><hr></td><td><hr></td><td><hr></td><td><hr></td><td></td></tr>\n";foreach $msg (&messages($context, $mbox, $folder)) {	$fields = &getfields($context, $mbox, $folder, $msg);	$duration = $fields->{'duration'};	if ($duration) {		$duration = sprintf "%d:%02d", $duration / 60, $duration % 60;	} else {		$duration = "<i>Unknown</i>";	}	$hasmsg++;	print "<tr><td><input type=checkbox name=\"msgselect\" value=\"$msg\">&nbsp;<b>$msg</b></td><td>$fields->{'callerid'}</td><td>$duration</td><td>$fields->{'origdate'}</td><td><input name='play$msg' alt=\"Play message $msg\" border=0 type=image align=left src=\"$astpath/play.gif\"></td></tr>\n";}if (!$hasmsg) {	print "<tr><td colspan=4 align=center><P><b><i>No messages</i></b><P></td></tr>";}print <<_EOH;</table><table width=100% align=center><tr><td align=right colspan=2>	<input type="submit" name="action" value="refresh">&nbsp;_EOHif ($hasmsg) {print <<_EOH;	<input type="submit" name="action" value="delete">&nbsp;	<input type="submit" name="action" value="save to ->">	$folders&nbsp;	<input type="submit" name="action" value="forward to ->">	$mailboxes_EOH}print <<_EOH;</td></tr><tr><td align=right colspan=2>	<input type="submit" name="action" value="preferences">	<input type="submit" name="action" value="logout"></td></tr></table><input type=hidden name="folder" value="$folder"><input type=hidden name="mailbox" value="$mbox"><input type=hidden name="context" value="$context"><input type=hidden name="password" value="$passwd"></FORM>$stdcontainerend</BODY>\n_EOH}sub validfolder(){	my ($folder) = @_;	return grep(/^$folder$/, @validfolders);}sub folder_list(){	my ($name, $context, $mbox, $selected) = @_;	my $f;	my $count;	my $tmp = "<SELECT name=\"$name\">\n";	foreach $f (@validfolders) {		$count =  &msgcount($context, $mbox, $f);		if ($f eq $selected) {			$tmp .= "<OPTION SELECTED>$f ($count)</OPTION>\n";		} else {			$tmp .= "<OPTION>$f ($count)</OPTION>\n";		}	}	$tmp .= "</SELECT>";

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -