mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-06 04:30:28 +00:00
Update vmail.cgi for the new segmented voicemail system
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@987 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -127,6 +127,7 @@ static char *app2 = "VoiceMailMain2";
|
|||||||
|
|
||||||
static pthread_mutex_t vmlock = AST_MUTEX_INITIALIZER;
|
static pthread_mutex_t vmlock = AST_MUTEX_INITIALIZER;
|
||||||
struct ast_vm_user *users;
|
struct ast_vm_user *users;
|
||||||
|
struct ast_vm_user *usersl;
|
||||||
static int attach_voicemail;
|
static int attach_voicemail;
|
||||||
static int maxsilence;
|
static int maxsilence;
|
||||||
static int silencethreshold;
|
static int silencethreshold;
|
||||||
@@ -2176,8 +2177,12 @@ static int append_mailbox(char *context, char *mbox, char *data)
|
|||||||
strncpy(vmu->email, s, sizeof(vmu->email));
|
strncpy(vmu->email, s, sizeof(vmu->email));
|
||||||
if ((s = strsep(&stringp, ",")))
|
if ((s = strsep(&stringp, ",")))
|
||||||
strncpy(vmu->pager, s, sizeof(vmu->pager));
|
strncpy(vmu->pager, s, sizeof(vmu->pager));
|
||||||
vmu->next = users;
|
vmu->next = NULL;
|
||||||
users = vmu;
|
if (usersl)
|
||||||
|
usersl->next = vmu;
|
||||||
|
else
|
||||||
|
users = vmu;
|
||||||
|
usersl = vmu;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -2204,6 +2209,7 @@ static int load_users(void)
|
|||||||
free_user(l);
|
free_user(l);
|
||||||
}
|
}
|
||||||
users = NULL;
|
users = NULL;
|
||||||
|
usersl = NULL;
|
||||||
if (cfg) {
|
if (cfg) {
|
||||||
/* General settings */
|
/* General settings */
|
||||||
attach_voicemail = 1;
|
attach_voicemail = 1;
|
||||||
|
@@ -33,3 +33,12 @@ silencethreshold=128
|
|||||||
;4310 => 5432,Sales,sales@marko.net
|
;4310 => 5432,Sales,sales@marko.net
|
||||||
;4069 => 6522,Matt Brooks,matt@marko.net
|
;4069 => 6522,Matt Brooks,matt@marko.net
|
||||||
;4110 => 3443,Rob Flynn,rflynn@blueridge.net
|
;4110 => 3443,Rob Flynn,rflynn@blueridge.net
|
||||||
|
|
||||||
|
;
|
||||||
|
; Mailboxes may be organized into multiple contexts for
|
||||||
|
; voicemail virtualhosting
|
||||||
|
;
|
||||||
|
|
||||||
|
[other]
|
||||||
|
1234 => 5678,Company2 User,root@localhost
|
||||||
|
|
||||||
|
@@ -67,10 +67,16 @@ _EOH
|
|||||||
|
|
||||||
sub check_login()
|
sub check_login()
|
||||||
{
|
{
|
||||||
my $mbox = param('mailbox');
|
my ($mbox, $context) = split(/\@/, param('mailbox'));
|
||||||
my $pass = param('password');
|
my $pass = param('password');
|
||||||
my $category = "general";
|
my $category = "general";
|
||||||
my @fields;
|
my @fields;
|
||||||
|
if (!$context) {
|
||||||
|
$context = param('context');
|
||||||
|
}
|
||||||
|
if (!$context) {
|
||||||
|
$context = "default";
|
||||||
|
}
|
||||||
open(VMAIL, "</etc/asterisk/voicemail.conf") || die("Bleh, no voicemail.conf");
|
open(VMAIL, "</etc/asterisk/voicemail.conf") || die("Bleh, no voicemail.conf");
|
||||||
while(<VMAIL>) {
|
while(<VMAIL>) {
|
||||||
chomp;
|
chomp;
|
||||||
@@ -79,8 +85,8 @@ sub check_login()
|
|||||||
} elsif ($category ne "general") {
|
} elsif ($category ne "general") {
|
||||||
if (/([^\s]+)\s*\=\>?\s*(.*)/) {
|
if (/([^\s]+)\s*\=\>?\s*(.*)/) {
|
||||||
@fields = split(/\,\s*/, $2);
|
@fields = split(/\,\s*/, $2);
|
||||||
if (($mbox eq $1) && ($pass eq $fields[0])) {
|
if (($mbox eq $1) && ($pass eq $fields[0]) && ($context eq $category)) {
|
||||||
return $fields[1] ? $fields[1] : "Extension $mbox";
|
return $fields[1] ? $fields[1] : "Extension $mbox in $context";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -89,7 +95,7 @@ sub check_login()
|
|||||||
|
|
||||||
sub validmailbox()
|
sub validmailbox()
|
||||||
{
|
{
|
||||||
my ($mbox) = @_;
|
my ($context, $mbox) = @_;
|
||||||
my $category = "general";
|
my $category = "general";
|
||||||
my @fields;
|
my @fields;
|
||||||
open(VMAIL, "</etc/asterisk/voicemail.conf") || die("Bleh, no voicemail.conf");
|
open(VMAIL, "</etc/asterisk/voicemail.conf") || die("Bleh, no voicemail.conf");
|
||||||
@@ -97,7 +103,7 @@ sub validmailbox()
|
|||||||
chomp;
|
chomp;
|
||||||
if (/\[(.*)\]/) {
|
if (/\[(.*)\]/) {
|
||||||
$category = $1;
|
$category = $1;
|
||||||
} elsif ($category ne "general") {
|
} elsif (($category ne "general") && ($category eq $context)) {
|
||||||
if (/([^\s]+)\s*\=\>?\s*(.*)/) {
|
if (/([^\s]+)\s*\=\>?\s*(.*)/) {
|
||||||
@fields = split(/\,\s*/, $2);
|
@fields = split(/\,\s*/, $2);
|
||||||
if ($mbox eq $1) {
|
if ($mbox eq $1) {
|
||||||
@@ -110,7 +116,7 @@ sub validmailbox()
|
|||||||
|
|
||||||
sub mailbox_list()
|
sub mailbox_list()
|
||||||
{
|
{
|
||||||
my ($name, $current) = @_;
|
my ($name, $context, $current) = @_;
|
||||||
my $tmp;
|
my $tmp;
|
||||||
my $text;
|
my $text;
|
||||||
$tmp = "<SELECT name=\"$name\">\n";
|
$tmp = "<SELECT name=\"$name\">\n";
|
||||||
@@ -145,8 +151,8 @@ sub mailbox_list()
|
|||||||
|
|
||||||
sub msgcount()
|
sub msgcount()
|
||||||
{
|
{
|
||||||
my ($mailbox, $folder) = @_;
|
my ($context, $mailbox, $folder) = @_;
|
||||||
my $path = "/var/spool/asterisk/vm/$mailbox/$folder";
|
my $path = "/var/spool/asterisk/voicemail/$context/$mailbox/$folder";
|
||||||
if (opendir(DIR, $path)) {
|
if (opendir(DIR, $path)) {
|
||||||
my @msgs = grep(/^msg....\.txt$/, readdir(DIR));
|
my @msgs = grep(/^msg....\.txt$/, readdir(DIR));
|
||||||
closedir(DIR);
|
closedir(DIR);
|
||||||
@@ -157,8 +163,8 @@ sub msgcount()
|
|||||||
|
|
||||||
sub msgcountstr()
|
sub msgcountstr()
|
||||||
{
|
{
|
||||||
my ($mailbox, $folder) = @_;
|
my ($context, $mailbox, $folder) = @_;
|
||||||
my $count = &msgcount($mailbox, $folder);
|
my $count = &msgcount($context, $mailbox, $folder);
|
||||||
if ($count > 1) {
|
if ($count > 1) {
|
||||||
"$count messages";
|
"$count messages";
|
||||||
} elsif ($count > 0) {
|
} elsif ($count > 0) {
|
||||||
@@ -169,8 +175,8 @@ sub msgcountstr()
|
|||||||
}
|
}
|
||||||
sub messages()
|
sub messages()
|
||||||
{
|
{
|
||||||
my ($mailbox, $folder) = @_;
|
my ($context, $mailbox, $folder) = @_;
|
||||||
my $path = "/var/spool/asterisk/vm/$mailbox/$folder";
|
my $path = "/var/spool/asterisk/voicemail/$context/$mailbox/$folder";
|
||||||
if (opendir(DIR, $path)) {
|
if (opendir(DIR, $path)) {
|
||||||
my @msgs = sort grep(/^msg....\.txt$/, readdir(DIR));
|
my @msgs = sort grep(/^msg....\.txt$/, readdir(DIR));
|
||||||
closedir(DIR);
|
closedir(DIR);
|
||||||
@@ -193,9 +199,9 @@ sub makecookie()
|
|||||||
|
|
||||||
sub getfields()
|
sub getfields()
|
||||||
{
|
{
|
||||||
my ($mailbox, $folder, $msg) = @_;
|
my ($context, $mailbox, $folder, $msg) = @_;
|
||||||
my $fields;
|
my $fields;
|
||||||
if (open(MSG, "</var/spool/asterisk/vm/$mailbox/$folder/msg${msg}.txt")) {
|
if (open(MSG, "</var/spool/asterisk/voicemail/$context/$mailbox/$folder/msg${msg}.txt")) {
|
||||||
while(<MSG>) {
|
while(<MSG>) {
|
||||||
s/\#.*$//g;
|
s/\#.*$//g;
|
||||||
if (/^(\w+)\s*\=\s*(.*)$/) {
|
if (/^(\w+)\s*\=\s*(.*)$/) {
|
||||||
@@ -241,6 +247,7 @@ print <<_EOH;
|
|||||||
<input type=hidden name="action" value="$nextaction">
|
<input type=hidden name="action" value="$nextaction">
|
||||||
<input type=hidden name="folder" value="$folder">
|
<input type=hidden name="folder" value="$folder">
|
||||||
<input type=hidden name="mailbox" value="$mbox">
|
<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="password" value="$passwd">
|
||||||
<input type=hidden name="msgid" value="$msgid">
|
<input type=hidden name="msgid" value="$msgid">
|
||||||
$stdcontainerend
|
$stdcontainerend
|
||||||
@@ -253,12 +260,20 @@ sub message_play()
|
|||||||
{
|
{
|
||||||
my ($message, $msgid) = @_;
|
my ($message, $msgid) = @_;
|
||||||
my $folder = param('folder');
|
my $folder = param('folder');
|
||||||
my $mbox = param('mailbox');
|
my ($mbox, $context) = split(/\@/, param('mailbox'));
|
||||||
my $passwd = param('password');
|
my $passwd = param('password');
|
||||||
my $format = param('format');
|
my $format = param('format');
|
||||||
|
|
||||||
my $fields;
|
my $fields;
|
||||||
my $folders = &folder_list('newfolder', $mbox, $folder);
|
if (!$context) {
|
||||||
my $mailboxes = &mailbox_list('forwardto', $mbox);
|
$context = param('context');
|
||||||
|
}
|
||||||
|
if (!$context) {
|
||||||
|
$context = "default";
|
||||||
|
}
|
||||||
|
|
||||||
|
my $folders = &folder_list('newfolder', $context, $mbox, $folder);
|
||||||
|
my $mailboxes = &mailbox_list('forwardto', $context, $mbox);
|
||||||
if (!$format) {
|
if (!$format) {
|
||||||
$format = &getcookie('format');
|
$format = &getcookie('format');
|
||||||
}
|
}
|
||||||
@@ -266,7 +281,7 @@ sub message_play()
|
|||||||
&message_prefs("play", $msgid);
|
&message_prefs("play", $msgid);
|
||||||
} else {
|
} else {
|
||||||
print header(-cookie => &makecookie($format));
|
print header(-cookie => &makecookie($format));
|
||||||
$fields = &getfields($mbox, $folder, $msgid);
|
$fields = &getfields($context, $mbox, $folder, $msgid);
|
||||||
if (!$fields) {
|
if (!$fields) {
|
||||||
print "<BR>Bah!\n";
|
print "<BR>Bah!\n";
|
||||||
return;
|
return;
|
||||||
@@ -316,6 +331,7 @@ _EOH
|
|||||||
</table>
|
</table>
|
||||||
<input type=hidden name="folder" value="$folder">
|
<input type=hidden name="folder" value="$folder">
|
||||||
<input type=hidden name="mailbox" value="$mbox">
|
<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="password" value="$passwd">
|
||||||
<input type=hidden name="msgid" value="$msgid">
|
<input type=hidden name="msgid" value="$msgid">
|
||||||
$stdcontainerend
|
$stdcontainerend
|
||||||
@@ -361,7 +377,7 @@ sub message_audio()
|
|||||||
sub message_index()
|
sub message_index()
|
||||||
{
|
{
|
||||||
my ($folder, $message) = @_;
|
my ($folder, $message) = @_;
|
||||||
my $mbox = param('mailbox');
|
my ($mbox, $context) = split(/\@/, param('mailbox'));
|
||||||
my $passwd = param('password');
|
my $passwd = param('password');
|
||||||
my $message2;
|
my $message2;
|
||||||
my $msgcount;
|
my $msgcount;
|
||||||
@@ -371,12 +387,18 @@ sub message_index()
|
|||||||
if (!$format) {
|
if (!$format) {
|
||||||
$format = &getcookie('format');
|
$format = &getcookie('format');
|
||||||
}
|
}
|
||||||
|
if (!$context) {
|
||||||
|
$context = param('context');
|
||||||
|
}
|
||||||
|
if (!$context) {
|
||||||
|
$context = "default";
|
||||||
|
}
|
||||||
if ($folder) {
|
if ($folder) {
|
||||||
$msgcount = &msgcountstr($mbox, $folder);
|
$msgcount = &msgcountstr($context, $mbox, $folder);
|
||||||
$message2 = " Folder '$folder' has " . &msgcountstr($mbox, $folder);
|
$message2 = " Folder '$folder' has " . &msgcountstr($context, $mbox, $folder);
|
||||||
} else {
|
} else {
|
||||||
$newmessages = &msgcount($mbox, "INBOX");
|
$newmessages = &msgcount($context, $mbox, "INBOX");
|
||||||
$oldmessages = &msgcount($mbox, "Old");
|
$oldmessages = &msgcount($context, $mbox, "Old");
|
||||||
if (($newmessages > 0) || ($oldmessages < 1)) {
|
if (($newmessages > 0) || ($oldmessages < 1)) {
|
||||||
$folder = "INBOX";
|
$folder = "INBOX";
|
||||||
} else {
|
} else {
|
||||||
@@ -413,9 +435,9 @@ sub message_index()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
my $folders = &folder_list('newfolder', $mbox, $folder);
|
my $folders = &folder_list('newfolder', $context, $mbox, $folder);
|
||||||
my $cfolders = &folder_list('changefolder', $mbox, $folder);
|
my $cfolders = &folder_list('changefolder', $context, $mbox, $folder);
|
||||||
my $mailboxes = &mailbox_list('forwardto', $mbox);
|
my $mailboxes = &mailbox_list('forwardto', $context, $mbox);
|
||||||
print header(-cookie => &makecookie($format));
|
print header(-cookie => &makecookie($format));
|
||||||
print <<_EOH;
|
print <<_EOH;
|
||||||
|
|
||||||
@@ -433,9 +455,9 @@ _EOH
|
|||||||
|
|
||||||
print "<tr><td> Msg</td><td> From</td><td> Duration</td><td> Date</td><td> </td></tr>\n";
|
print "<tr><td> Msg</td><td> From</td><td> Duration</td><td> Date</td><td> </td></tr>\n";
|
||||||
print "<tr><td><hr></td><td><hr></td><td><hr></td><td><hr></td><td></td></tr>\n";
|
print "<tr><td><hr></td><td><hr></td><td><hr></td><td><hr></td><td></td></tr>\n";
|
||||||
foreach $msg (&messages($mbox, $folder)) {
|
foreach $msg (&messages($context, $mbox, $folder)) {
|
||||||
|
|
||||||
$fields = &getfields($mbox, $folder, $msg);
|
$fields = &getfields($context, $mbox, $folder, $msg);
|
||||||
$duration = $fields->{'duration'};
|
$duration = $fields->{'duration'};
|
||||||
if ($duration) {
|
if ($duration) {
|
||||||
$duration = sprintf "%d:%02d", $duration / 60, $duration % 60;
|
$duration = sprintf "%d:%02d", $duration / 60, $duration % 60;
|
||||||
@@ -476,6 +498,7 @@ print <<_EOH;
|
|||||||
</table>
|
</table>
|
||||||
<input type=hidden name="folder" value="$folder">
|
<input type=hidden name="folder" value="$folder">
|
||||||
<input type=hidden name="mailbox" value="$mbox">
|
<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="password" value="$passwd">
|
||||||
</FORM>
|
</FORM>
|
||||||
$stdcontainerend
|
$stdcontainerend
|
||||||
@@ -491,12 +514,12 @@ sub validfolder()
|
|||||||
|
|
||||||
sub folder_list()
|
sub folder_list()
|
||||||
{
|
{
|
||||||
my ($name, $mbox, $selected) = @_;
|
my ($name, $context, $mbox, $selected) = @_;
|
||||||
my $f;
|
my $f;
|
||||||
my $count;
|
my $count;
|
||||||
my $tmp = "<SELECT name=\"$name\">\n";
|
my $tmp = "<SELECT name=\"$name\">\n";
|
||||||
foreach $f (@validfolders) {
|
foreach $f (@validfolders) {
|
||||||
$count = &msgcount($mbox, $f);
|
$count = &msgcount($context, $mbox, $f);
|
||||||
if ($f eq $selected) {
|
if ($f eq $selected) {
|
||||||
$tmp .= "<OPTION SELECTED>$f ($count)</OPTION>\n";
|
$tmp .= "<OPTION SELECTED>$f ($count)</OPTION>\n";
|
||||||
} else {
|
} else {
|
||||||
@@ -508,7 +531,7 @@ sub folder_list()
|
|||||||
|
|
||||||
sub message_rename()
|
sub message_rename()
|
||||||
{
|
{
|
||||||
my ($mbox, $oldfolder, $old, $newfolder, $new) = @_;
|
my ($context, $mbox, $oldfolder, $old, $newfolder, $new) = @_;
|
||||||
my $oldfile, $newfile;
|
my $oldfile, $newfile;
|
||||||
return if ($old eq $new) && ($oldfolder eq $newfolder);
|
return if ($old eq $new) && ($oldfolder eq $newfolder);
|
||||||
|
|
||||||
@@ -542,9 +565,9 @@ sub message_rename()
|
|||||||
die("Invalid old Message<BR>\n");
|
die("Invalid old Message<BR>\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
my $path = "/var/spool/asterisk/vm/$mbox/$newfolder";
|
my $path = "/var/spool/asterisk/voicemail/$context/$mbox/$newfolder";
|
||||||
mkdir $path, 0755;
|
mkdir $path, 0755;
|
||||||
my $path = "/var/spool/asterisk/vm/$mbox/$oldfolder";
|
my $path = "/var/spool/asterisk/voicemail/$context/$mbox/$oldfolder";
|
||||||
opendir(DIR, $path) || die("Unable to open directory\n");
|
opendir(DIR, $path) || die("Unable to open directory\n");
|
||||||
my @files = grep /^msg${old}\.\w+$/, readdir(DIR);
|
my @files = grep /^msg${old}\.\w+$/, readdir(DIR);
|
||||||
closedir(DIR);
|
closedir(DIR);
|
||||||
@@ -554,7 +577,7 @@ sub message_rename()
|
|||||||
$tmp = $1;
|
$tmp = $1;
|
||||||
$oldfile = $path . "/$tmp";
|
$oldfile = $path . "/$tmp";
|
||||||
$tmp =~ s/msg${old}/msg${new}/;
|
$tmp =~ s/msg${old}/msg${new}/;
|
||||||
$newfile = "/var/spool/asterisk/vm/$mbox/$newfolder/$tmp";
|
$newfile = "/var/spool/asterisk/voicemail/$context/$mbox/$newfolder/$tmp";
|
||||||
# print "Renaming $oldfile to $newfile<BR>\n";
|
# print "Renaming $oldfile to $newfile<BR>\n";
|
||||||
rename($oldfile, $newfile);
|
rename($oldfile, $newfile);
|
||||||
}
|
}
|
||||||
@@ -634,12 +657,17 @@ sub message_copy()
|
|||||||
|
|
||||||
sub message_delete()
|
sub message_delete()
|
||||||
{
|
{
|
||||||
my ($mbox, $folder, $msg) = @_;
|
my ($context, $mbox, $folder, $msg) = @_;
|
||||||
if ($mbox =~ /^(\w+)$/) {
|
if ($mbox =~ /^(\w+)$/) {
|
||||||
$mbox = $1;
|
$mbox = $1;
|
||||||
} else {
|
} else {
|
||||||
die ("Invalid mailbox<BR>\n");
|
die ("Invalid mailbox<BR>\n");
|
||||||
}
|
}
|
||||||
|
if ($context =~ /^(\w+)$/) {
|
||||||
|
$context = $1;
|
||||||
|
} else {
|
||||||
|
die ("Invalid context<BR>\n");
|
||||||
|
}
|
||||||
if ($folder =~ /^(\w+)$/) {
|
if ($folder =~ /^(\w+)$/) {
|
||||||
$folder = $1;
|
$folder = $1;
|
||||||
} else {
|
} else {
|
||||||
@@ -650,7 +678,7 @@ sub message_delete()
|
|||||||
} else {
|
} else {
|
||||||
die("Invalid Message<BR>\n");
|
die("Invalid Message<BR>\n");
|
||||||
}
|
}
|
||||||
my $path = "/var/spool/asterisk/vm/$mbox/$folder";
|
my $path = "/var/spool/asterisk/voicemail/$context/$mbox/$folder";
|
||||||
opendir(DIR, $path) || die("Unable to open directory\n");
|
opendir(DIR, $path) || die("Unable to open directory\n");
|
||||||
my @files = grep /^msg${msg}\.\w+$/, readdir(DIR);
|
my @files = grep /^msg${msg}\.\w+$/, readdir(DIR);
|
||||||
closedir(DIR);
|
closedir(DIR);
|
||||||
@@ -667,22 +695,28 @@ sub message_forward()
|
|||||||
{
|
{
|
||||||
my ($toindex, @msgs) = @_;
|
my ($toindex, @msgs) = @_;
|
||||||
my $folder = param('folder');
|
my $folder = param('folder');
|
||||||
my $mbox = param('mailbox');
|
my ($mbox, $context) = split(/\@/, param('mailbox'));
|
||||||
my $newmbox = param('forwardto');
|
my $newmbox = param('forwardto');
|
||||||
my $msg;
|
my $msg;
|
||||||
my $msgcount;
|
my $msgcount;
|
||||||
|
if (!$context) {
|
||||||
|
$context = param('context');
|
||||||
|
}
|
||||||
|
if (!$context) {
|
||||||
|
$context = "default";
|
||||||
|
}
|
||||||
$newmbox =~ s/(\w+)(\s+.*)?$/$1/;
|
$newmbox =~ s/(\w+)(\s+.*)?$/$1/;
|
||||||
if (!&validmailbox($newmbox)) {
|
if (!&validmailbox($context, $newmbox)) {
|
||||||
die("Bah! Not a valid mailbox '$newmbox'\n");
|
die("Bah! Not a valid mailbox '$newmbox'\n");
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
$msgcount = &msgcount($newmbox, "INBOX");
|
$msgcount = &msgcount($context, $newmbox, "INBOX");
|
||||||
my $txt;
|
my $txt;
|
||||||
if ($newmbox ne $mbox) {
|
if ($newmbox ne $mbox) {
|
||||||
# print header;
|
# print header;
|
||||||
foreach $msg (@msgs) {
|
foreach $msg (@msgs) {
|
||||||
# print "Forwarding $msg from $mbox to $newmbox<BR>\n";
|
# print "Forwarding $msg from $mbox to $newmbox<BR>\n";
|
||||||
&message_copy($mbox, $folder, $msg, $newmbox, sprintf "%04d", $msgcount);
|
&message_copy($context, $mbox, $folder, $msg, $newmbox, sprintf "%04d", $msgcount);
|
||||||
$msgcount++;
|
$msgcount++;
|
||||||
}
|
}
|
||||||
$txt = "Forwarded messages " . join(', ', @msgs) . "to $newmbox";
|
$txt = "Forwarded messages " . join(', ', @msgs) . "to $newmbox";
|
||||||
@@ -705,10 +739,16 @@ sub message_delete_or_move()
|
|||||||
my $folder = param('folder');
|
my $folder = param('folder');
|
||||||
my $newfolder = param('newfolder') unless $del;
|
my $newfolder = param('newfolder') unless $del;
|
||||||
$newfolder =~ s/^(\w+)\s+.*$/$1/;
|
$newfolder =~ s/^(\w+)\s+.*$/$1/;
|
||||||
my $mbox = param('mailbox');
|
my ($mbox, $context) = split(/\@/, param('mailbox'));
|
||||||
|
if (!$context) {
|
||||||
|
$context = param('context');
|
||||||
|
}
|
||||||
|
if (!$context) {
|
||||||
|
$context = "default";
|
||||||
|
}
|
||||||
my $passwd = param('password');
|
my $passwd = param('password');
|
||||||
my $msgcount = &msgcount($mbox, $folder);
|
my $msgcount = &msgcount($context, $mbox, $folder);
|
||||||
my $omsgcount = &msgcount($mbox, $newfolder) if $newfolder;
|
my $omsgcount = &msgcount($context, $mbox, $newfolder) if $newfolder;
|
||||||
# print header;
|
# print header;
|
||||||
if ($newfolder ne $folder) {
|
if ($newfolder ne $folder) {
|
||||||
$y = 0;
|
$y = 0;
|
||||||
@@ -717,13 +757,13 @@ sub message_delete_or_move()
|
|||||||
my $newmsg = sprintf "%04d", $y;
|
my $newmsg = sprintf "%04d", $y;
|
||||||
if (grep(/^$msg$/, @msgs)) {
|
if (grep(/^$msg$/, @msgs)) {
|
||||||
if ($newfolder) {
|
if ($newfolder) {
|
||||||
&message_rename($mbox, $folder, $msg, $newfolder, sprintf "%04d", $omsgcount);
|
&message_rename($context, $mbox, $folder, $msg, $newfolder, sprintf "%04d", $omsgcount);
|
||||||
$omsgcount++;
|
$omsgcount++;
|
||||||
} else {
|
} else {
|
||||||
&message_delete($mbox, $folder, $msg);
|
&message_delete($context, $mbox, $folder, $msg);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
&message_rename($mbox, $folder, $msg, $folder, $newmsg);
|
&message_rename($context, $mbox, $folder, $msg, $folder, $newmsg);
|
||||||
$y++;
|
$y++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
132
vmail.cgi
132
vmail.cgi
@@ -67,10 +67,16 @@ _EOH
|
|||||||
|
|
||||||
sub check_login()
|
sub check_login()
|
||||||
{
|
{
|
||||||
my $mbox = param('mailbox');
|
my ($mbox, $context) = split(/\@/, param('mailbox'));
|
||||||
my $pass = param('password');
|
my $pass = param('password');
|
||||||
my $category = "general";
|
my $category = "general";
|
||||||
my @fields;
|
my @fields;
|
||||||
|
if (!$context) {
|
||||||
|
$context = param('context');
|
||||||
|
}
|
||||||
|
if (!$context) {
|
||||||
|
$context = "default";
|
||||||
|
}
|
||||||
open(VMAIL, "</etc/asterisk/voicemail.conf") || die("Bleh, no voicemail.conf");
|
open(VMAIL, "</etc/asterisk/voicemail.conf") || die("Bleh, no voicemail.conf");
|
||||||
while(<VMAIL>) {
|
while(<VMAIL>) {
|
||||||
chomp;
|
chomp;
|
||||||
@@ -79,8 +85,8 @@ sub check_login()
|
|||||||
} elsif ($category ne "general") {
|
} elsif ($category ne "general") {
|
||||||
if (/([^\s]+)\s*\=\>?\s*(.*)/) {
|
if (/([^\s]+)\s*\=\>?\s*(.*)/) {
|
||||||
@fields = split(/\,\s*/, $2);
|
@fields = split(/\,\s*/, $2);
|
||||||
if (($mbox eq $1) && ($pass eq $fields[0])) {
|
if (($mbox eq $1) && ($pass eq $fields[0]) && ($context eq $category)) {
|
||||||
return $fields[1] ? $fields[1] : "Extension $mbox";
|
return $fields[1] ? $fields[1] : "Extension $mbox in $context";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -89,7 +95,7 @@ sub check_login()
|
|||||||
|
|
||||||
sub validmailbox()
|
sub validmailbox()
|
||||||
{
|
{
|
||||||
my ($mbox) = @_;
|
my ($context, $mbox) = @_;
|
||||||
my $category = "general";
|
my $category = "general";
|
||||||
my @fields;
|
my @fields;
|
||||||
open(VMAIL, "</etc/asterisk/voicemail.conf") || die("Bleh, no voicemail.conf");
|
open(VMAIL, "</etc/asterisk/voicemail.conf") || die("Bleh, no voicemail.conf");
|
||||||
@@ -97,7 +103,7 @@ sub validmailbox()
|
|||||||
chomp;
|
chomp;
|
||||||
if (/\[(.*)\]/) {
|
if (/\[(.*)\]/) {
|
||||||
$category = $1;
|
$category = $1;
|
||||||
} elsif ($category ne "general") {
|
} elsif (($category ne "general") && ($category eq $context)) {
|
||||||
if (/([^\s]+)\s*\=\>?\s*(.*)/) {
|
if (/([^\s]+)\s*\=\>?\s*(.*)/) {
|
||||||
@fields = split(/\,\s*/, $2);
|
@fields = split(/\,\s*/, $2);
|
||||||
if ($mbox eq $1) {
|
if ($mbox eq $1) {
|
||||||
@@ -110,7 +116,7 @@ sub validmailbox()
|
|||||||
|
|
||||||
sub mailbox_list()
|
sub mailbox_list()
|
||||||
{
|
{
|
||||||
my ($name, $current) = @_;
|
my ($name, $context, $current) = @_;
|
||||||
my $tmp;
|
my $tmp;
|
||||||
my $text;
|
my $text;
|
||||||
$tmp = "<SELECT name=\"$name\">\n";
|
$tmp = "<SELECT name=\"$name\">\n";
|
||||||
@@ -145,8 +151,8 @@ sub mailbox_list()
|
|||||||
|
|
||||||
sub msgcount()
|
sub msgcount()
|
||||||
{
|
{
|
||||||
my ($mailbox, $folder) = @_;
|
my ($context, $mailbox, $folder) = @_;
|
||||||
my $path = "/var/spool/asterisk/vm/$mailbox/$folder";
|
my $path = "/var/spool/asterisk/voicemail/$context/$mailbox/$folder";
|
||||||
if (opendir(DIR, $path)) {
|
if (opendir(DIR, $path)) {
|
||||||
my @msgs = grep(/^msg....\.txt$/, readdir(DIR));
|
my @msgs = grep(/^msg....\.txt$/, readdir(DIR));
|
||||||
closedir(DIR);
|
closedir(DIR);
|
||||||
@@ -157,8 +163,8 @@ sub msgcount()
|
|||||||
|
|
||||||
sub msgcountstr()
|
sub msgcountstr()
|
||||||
{
|
{
|
||||||
my ($mailbox, $folder) = @_;
|
my ($context, $mailbox, $folder) = @_;
|
||||||
my $count = &msgcount($mailbox, $folder);
|
my $count = &msgcount($context, $mailbox, $folder);
|
||||||
if ($count > 1) {
|
if ($count > 1) {
|
||||||
"$count messages";
|
"$count messages";
|
||||||
} elsif ($count > 0) {
|
} elsif ($count > 0) {
|
||||||
@@ -169,8 +175,8 @@ sub msgcountstr()
|
|||||||
}
|
}
|
||||||
sub messages()
|
sub messages()
|
||||||
{
|
{
|
||||||
my ($mailbox, $folder) = @_;
|
my ($context, $mailbox, $folder) = @_;
|
||||||
my $path = "/var/spool/asterisk/vm/$mailbox/$folder";
|
my $path = "/var/spool/asterisk/voicemail/$context/$mailbox/$folder";
|
||||||
if (opendir(DIR, $path)) {
|
if (opendir(DIR, $path)) {
|
||||||
my @msgs = sort grep(/^msg....\.txt$/, readdir(DIR));
|
my @msgs = sort grep(/^msg....\.txt$/, readdir(DIR));
|
||||||
closedir(DIR);
|
closedir(DIR);
|
||||||
@@ -193,9 +199,9 @@ sub makecookie()
|
|||||||
|
|
||||||
sub getfields()
|
sub getfields()
|
||||||
{
|
{
|
||||||
my ($mailbox, $folder, $msg) = @_;
|
my ($context, $mailbox, $folder, $msg) = @_;
|
||||||
my $fields;
|
my $fields;
|
||||||
if (open(MSG, "</var/spool/asterisk/vm/$mailbox/$folder/msg${msg}.txt")) {
|
if (open(MSG, "</var/spool/asterisk/voicemail/$context/$mailbox/$folder/msg${msg}.txt")) {
|
||||||
while(<MSG>) {
|
while(<MSG>) {
|
||||||
s/\#.*$//g;
|
s/\#.*$//g;
|
||||||
if (/^(\w+)\s*\=\s*(.*)$/) {
|
if (/^(\w+)\s*\=\s*(.*)$/) {
|
||||||
@@ -241,6 +247,7 @@ print <<_EOH;
|
|||||||
<input type=hidden name="action" value="$nextaction">
|
<input type=hidden name="action" value="$nextaction">
|
||||||
<input type=hidden name="folder" value="$folder">
|
<input type=hidden name="folder" value="$folder">
|
||||||
<input type=hidden name="mailbox" value="$mbox">
|
<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="password" value="$passwd">
|
||||||
<input type=hidden name="msgid" value="$msgid">
|
<input type=hidden name="msgid" value="$msgid">
|
||||||
$stdcontainerend
|
$stdcontainerend
|
||||||
@@ -253,12 +260,20 @@ sub message_play()
|
|||||||
{
|
{
|
||||||
my ($message, $msgid) = @_;
|
my ($message, $msgid) = @_;
|
||||||
my $folder = param('folder');
|
my $folder = param('folder');
|
||||||
my $mbox = param('mailbox');
|
my ($mbox, $context) = split(/\@/, param('mailbox'));
|
||||||
my $passwd = param('password');
|
my $passwd = param('password');
|
||||||
my $format = param('format');
|
my $format = param('format');
|
||||||
|
|
||||||
my $fields;
|
my $fields;
|
||||||
my $folders = &folder_list('newfolder', $mbox, $folder);
|
if (!$context) {
|
||||||
my $mailboxes = &mailbox_list('forwardto', $mbox);
|
$context = param('context');
|
||||||
|
}
|
||||||
|
if (!$context) {
|
||||||
|
$context = "default";
|
||||||
|
}
|
||||||
|
|
||||||
|
my $folders = &folder_list('newfolder', $context, $mbox, $folder);
|
||||||
|
my $mailboxes = &mailbox_list('forwardto', $context, $mbox);
|
||||||
if (!$format) {
|
if (!$format) {
|
||||||
$format = &getcookie('format');
|
$format = &getcookie('format');
|
||||||
}
|
}
|
||||||
@@ -266,7 +281,7 @@ sub message_play()
|
|||||||
&message_prefs("play", $msgid);
|
&message_prefs("play", $msgid);
|
||||||
} else {
|
} else {
|
||||||
print header(-cookie => &makecookie($format));
|
print header(-cookie => &makecookie($format));
|
||||||
$fields = &getfields($mbox, $folder, $msgid);
|
$fields = &getfields($context, $mbox, $folder, $msgid);
|
||||||
if (!$fields) {
|
if (!$fields) {
|
||||||
print "<BR>Bah!\n";
|
print "<BR>Bah!\n";
|
||||||
return;
|
return;
|
||||||
@@ -316,6 +331,7 @@ _EOH
|
|||||||
</table>
|
</table>
|
||||||
<input type=hidden name="folder" value="$folder">
|
<input type=hidden name="folder" value="$folder">
|
||||||
<input type=hidden name="mailbox" value="$mbox">
|
<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="password" value="$passwd">
|
||||||
<input type=hidden name="msgid" value="$msgid">
|
<input type=hidden name="msgid" value="$msgid">
|
||||||
$stdcontainerend
|
$stdcontainerend
|
||||||
@@ -361,7 +377,7 @@ sub message_audio()
|
|||||||
sub message_index()
|
sub message_index()
|
||||||
{
|
{
|
||||||
my ($folder, $message) = @_;
|
my ($folder, $message) = @_;
|
||||||
my $mbox = param('mailbox');
|
my ($mbox, $context) = split(/\@/, param('mailbox'));
|
||||||
my $passwd = param('password');
|
my $passwd = param('password');
|
||||||
my $message2;
|
my $message2;
|
||||||
my $msgcount;
|
my $msgcount;
|
||||||
@@ -371,12 +387,18 @@ sub message_index()
|
|||||||
if (!$format) {
|
if (!$format) {
|
||||||
$format = &getcookie('format');
|
$format = &getcookie('format');
|
||||||
}
|
}
|
||||||
|
if (!$context) {
|
||||||
|
$context = param('context');
|
||||||
|
}
|
||||||
|
if (!$context) {
|
||||||
|
$context = "default";
|
||||||
|
}
|
||||||
if ($folder) {
|
if ($folder) {
|
||||||
$msgcount = &msgcountstr($mbox, $folder);
|
$msgcount = &msgcountstr($context, $mbox, $folder);
|
||||||
$message2 = " Folder '$folder' has " . &msgcountstr($mbox, $folder);
|
$message2 = " Folder '$folder' has " . &msgcountstr($context, $mbox, $folder);
|
||||||
} else {
|
} else {
|
||||||
$newmessages = &msgcount($mbox, "INBOX");
|
$newmessages = &msgcount($context, $mbox, "INBOX");
|
||||||
$oldmessages = &msgcount($mbox, "Old");
|
$oldmessages = &msgcount($context, $mbox, "Old");
|
||||||
if (($newmessages > 0) || ($oldmessages < 1)) {
|
if (($newmessages > 0) || ($oldmessages < 1)) {
|
||||||
$folder = "INBOX";
|
$folder = "INBOX";
|
||||||
} else {
|
} else {
|
||||||
@@ -413,9 +435,9 @@ sub message_index()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
my $folders = &folder_list('newfolder', $mbox, $folder);
|
my $folders = &folder_list('newfolder', $context, $mbox, $folder);
|
||||||
my $cfolders = &folder_list('changefolder', $mbox, $folder);
|
my $cfolders = &folder_list('changefolder', $context, $mbox, $folder);
|
||||||
my $mailboxes = &mailbox_list('forwardto', $mbox);
|
my $mailboxes = &mailbox_list('forwardto', $context, $mbox);
|
||||||
print header(-cookie => &makecookie($format));
|
print header(-cookie => &makecookie($format));
|
||||||
print <<_EOH;
|
print <<_EOH;
|
||||||
|
|
||||||
@@ -433,9 +455,9 @@ _EOH
|
|||||||
|
|
||||||
print "<tr><td> Msg</td><td> From</td><td> Duration</td><td> Date</td><td> </td></tr>\n";
|
print "<tr><td> Msg</td><td> From</td><td> Duration</td><td> Date</td><td> </td></tr>\n";
|
||||||
print "<tr><td><hr></td><td><hr></td><td><hr></td><td><hr></td><td></td></tr>\n";
|
print "<tr><td><hr></td><td><hr></td><td><hr></td><td><hr></td><td></td></tr>\n";
|
||||||
foreach $msg (&messages($mbox, $folder)) {
|
foreach $msg (&messages($context, $mbox, $folder)) {
|
||||||
|
|
||||||
$fields = &getfields($mbox, $folder, $msg);
|
$fields = &getfields($context, $mbox, $folder, $msg);
|
||||||
$duration = $fields->{'duration'};
|
$duration = $fields->{'duration'};
|
||||||
if ($duration) {
|
if ($duration) {
|
||||||
$duration = sprintf "%d:%02d", $duration / 60, $duration % 60;
|
$duration = sprintf "%d:%02d", $duration / 60, $duration % 60;
|
||||||
@@ -476,6 +498,7 @@ print <<_EOH;
|
|||||||
</table>
|
</table>
|
||||||
<input type=hidden name="folder" value="$folder">
|
<input type=hidden name="folder" value="$folder">
|
||||||
<input type=hidden name="mailbox" value="$mbox">
|
<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="password" value="$passwd">
|
||||||
</FORM>
|
</FORM>
|
||||||
$stdcontainerend
|
$stdcontainerend
|
||||||
@@ -491,12 +514,12 @@ sub validfolder()
|
|||||||
|
|
||||||
sub folder_list()
|
sub folder_list()
|
||||||
{
|
{
|
||||||
my ($name, $mbox, $selected) = @_;
|
my ($name, $context, $mbox, $selected) = @_;
|
||||||
my $f;
|
my $f;
|
||||||
my $count;
|
my $count;
|
||||||
my $tmp = "<SELECT name=\"$name\">\n";
|
my $tmp = "<SELECT name=\"$name\">\n";
|
||||||
foreach $f (@validfolders) {
|
foreach $f (@validfolders) {
|
||||||
$count = &msgcount($mbox, $f);
|
$count = &msgcount($context, $mbox, $f);
|
||||||
if ($f eq $selected) {
|
if ($f eq $selected) {
|
||||||
$tmp .= "<OPTION SELECTED>$f ($count)</OPTION>\n";
|
$tmp .= "<OPTION SELECTED>$f ($count)</OPTION>\n";
|
||||||
} else {
|
} else {
|
||||||
@@ -508,7 +531,7 @@ sub folder_list()
|
|||||||
|
|
||||||
sub message_rename()
|
sub message_rename()
|
||||||
{
|
{
|
||||||
my ($mbox, $oldfolder, $old, $newfolder, $new) = @_;
|
my ($context, $mbox, $oldfolder, $old, $newfolder, $new) = @_;
|
||||||
my $oldfile, $newfile;
|
my $oldfile, $newfile;
|
||||||
return if ($old eq $new) && ($oldfolder eq $newfolder);
|
return if ($old eq $new) && ($oldfolder eq $newfolder);
|
||||||
|
|
||||||
@@ -542,9 +565,9 @@ sub message_rename()
|
|||||||
die("Invalid old Message<BR>\n");
|
die("Invalid old Message<BR>\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
my $path = "/var/spool/asterisk/vm/$mbox/$newfolder";
|
my $path = "/var/spool/asterisk/voicemail/$context/$mbox/$newfolder";
|
||||||
mkdir $path, 0755;
|
mkdir $path, 0755;
|
||||||
my $path = "/var/spool/asterisk/vm/$mbox/$oldfolder";
|
my $path = "/var/spool/asterisk/voicemail/$context/$mbox/$oldfolder";
|
||||||
opendir(DIR, $path) || die("Unable to open directory\n");
|
opendir(DIR, $path) || die("Unable to open directory\n");
|
||||||
my @files = grep /^msg${old}\.\w+$/, readdir(DIR);
|
my @files = grep /^msg${old}\.\w+$/, readdir(DIR);
|
||||||
closedir(DIR);
|
closedir(DIR);
|
||||||
@@ -554,7 +577,7 @@ sub message_rename()
|
|||||||
$tmp = $1;
|
$tmp = $1;
|
||||||
$oldfile = $path . "/$tmp";
|
$oldfile = $path . "/$tmp";
|
||||||
$tmp =~ s/msg${old}/msg${new}/;
|
$tmp =~ s/msg${old}/msg${new}/;
|
||||||
$newfile = "/var/spool/asterisk/vm/$mbox/$newfolder/$tmp";
|
$newfile = "/var/spool/asterisk/voicemail/$context/$mbox/$newfolder/$tmp";
|
||||||
# print "Renaming $oldfile to $newfile<BR>\n";
|
# print "Renaming $oldfile to $newfile<BR>\n";
|
||||||
rename($oldfile, $newfile);
|
rename($oldfile, $newfile);
|
||||||
}
|
}
|
||||||
@@ -634,12 +657,17 @@ sub message_copy()
|
|||||||
|
|
||||||
sub message_delete()
|
sub message_delete()
|
||||||
{
|
{
|
||||||
my ($mbox, $folder, $msg) = @_;
|
my ($context, $mbox, $folder, $msg) = @_;
|
||||||
if ($mbox =~ /^(\w+)$/) {
|
if ($mbox =~ /^(\w+)$/) {
|
||||||
$mbox = $1;
|
$mbox = $1;
|
||||||
} else {
|
} else {
|
||||||
die ("Invalid mailbox<BR>\n");
|
die ("Invalid mailbox<BR>\n");
|
||||||
}
|
}
|
||||||
|
if ($context =~ /^(\w+)$/) {
|
||||||
|
$context = $1;
|
||||||
|
} else {
|
||||||
|
die ("Invalid context<BR>\n");
|
||||||
|
}
|
||||||
if ($folder =~ /^(\w+)$/) {
|
if ($folder =~ /^(\w+)$/) {
|
||||||
$folder = $1;
|
$folder = $1;
|
||||||
} else {
|
} else {
|
||||||
@@ -650,7 +678,7 @@ sub message_delete()
|
|||||||
} else {
|
} else {
|
||||||
die("Invalid Message<BR>\n");
|
die("Invalid Message<BR>\n");
|
||||||
}
|
}
|
||||||
my $path = "/var/spool/asterisk/vm/$mbox/$folder";
|
my $path = "/var/spool/asterisk/voicemail/$context/$mbox/$folder";
|
||||||
opendir(DIR, $path) || die("Unable to open directory\n");
|
opendir(DIR, $path) || die("Unable to open directory\n");
|
||||||
my @files = grep /^msg${msg}\.\w+$/, readdir(DIR);
|
my @files = grep /^msg${msg}\.\w+$/, readdir(DIR);
|
||||||
closedir(DIR);
|
closedir(DIR);
|
||||||
@@ -667,22 +695,28 @@ sub message_forward()
|
|||||||
{
|
{
|
||||||
my ($toindex, @msgs) = @_;
|
my ($toindex, @msgs) = @_;
|
||||||
my $folder = param('folder');
|
my $folder = param('folder');
|
||||||
my $mbox = param('mailbox');
|
my ($mbox, $context) = split(/\@/, param('mailbox'));
|
||||||
my $newmbox = param('forwardto');
|
my $newmbox = param('forwardto');
|
||||||
my $msg;
|
my $msg;
|
||||||
my $msgcount;
|
my $msgcount;
|
||||||
|
if (!$context) {
|
||||||
|
$context = param('context');
|
||||||
|
}
|
||||||
|
if (!$context) {
|
||||||
|
$context = "default";
|
||||||
|
}
|
||||||
$newmbox =~ s/(\w+)(\s+.*)?$/$1/;
|
$newmbox =~ s/(\w+)(\s+.*)?$/$1/;
|
||||||
if (!&validmailbox($newmbox)) {
|
if (!&validmailbox($context, $newmbox)) {
|
||||||
die("Bah! Not a valid mailbox '$newmbox'\n");
|
die("Bah! Not a valid mailbox '$newmbox'\n");
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
$msgcount = &msgcount($newmbox, "INBOX");
|
$msgcount = &msgcount($context, $newmbox, "INBOX");
|
||||||
my $txt;
|
my $txt;
|
||||||
if ($newmbox ne $mbox) {
|
if ($newmbox ne $mbox) {
|
||||||
# print header;
|
# print header;
|
||||||
foreach $msg (@msgs) {
|
foreach $msg (@msgs) {
|
||||||
# print "Forwarding $msg from $mbox to $newmbox<BR>\n";
|
# print "Forwarding $msg from $mbox to $newmbox<BR>\n";
|
||||||
&message_copy($mbox, $folder, $msg, $newmbox, sprintf "%04d", $msgcount);
|
&message_copy($context, $mbox, $folder, $msg, $newmbox, sprintf "%04d", $msgcount);
|
||||||
$msgcount++;
|
$msgcount++;
|
||||||
}
|
}
|
||||||
$txt = "Forwarded messages " . join(', ', @msgs) . "to $newmbox";
|
$txt = "Forwarded messages " . join(', ', @msgs) . "to $newmbox";
|
||||||
@@ -705,10 +739,16 @@ sub message_delete_or_move()
|
|||||||
my $folder = param('folder');
|
my $folder = param('folder');
|
||||||
my $newfolder = param('newfolder') unless $del;
|
my $newfolder = param('newfolder') unless $del;
|
||||||
$newfolder =~ s/^(\w+)\s+.*$/$1/;
|
$newfolder =~ s/^(\w+)\s+.*$/$1/;
|
||||||
my $mbox = param('mailbox');
|
my ($mbox, $context) = split(/\@/, param('mailbox'));
|
||||||
|
if (!$context) {
|
||||||
|
$context = param('context');
|
||||||
|
}
|
||||||
|
if (!$context) {
|
||||||
|
$context = "default";
|
||||||
|
}
|
||||||
my $passwd = param('password');
|
my $passwd = param('password');
|
||||||
my $msgcount = &msgcount($mbox, $folder);
|
my $msgcount = &msgcount($context, $mbox, $folder);
|
||||||
my $omsgcount = &msgcount($mbox, $newfolder) if $newfolder;
|
my $omsgcount = &msgcount($context, $mbox, $newfolder) if $newfolder;
|
||||||
# print header;
|
# print header;
|
||||||
if ($newfolder ne $folder) {
|
if ($newfolder ne $folder) {
|
||||||
$y = 0;
|
$y = 0;
|
||||||
@@ -717,13 +757,13 @@ sub message_delete_or_move()
|
|||||||
my $newmsg = sprintf "%04d", $y;
|
my $newmsg = sprintf "%04d", $y;
|
||||||
if (grep(/^$msg$/, @msgs)) {
|
if (grep(/^$msg$/, @msgs)) {
|
||||||
if ($newfolder) {
|
if ($newfolder) {
|
||||||
&message_rename($mbox, $folder, $msg, $newfolder, sprintf "%04d", $omsgcount);
|
&message_rename($context, $mbox, $folder, $msg, $newfolder, sprintf "%04d", $omsgcount);
|
||||||
$omsgcount++;
|
$omsgcount++;
|
||||||
} else {
|
} else {
|
||||||
&message_delete($mbox, $folder, $msg);
|
&message_delete($context, $mbox, $folder, $msg);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
&message_rename($mbox, $folder, $msg, $folder, $newmsg);
|
&message_rename($context, $mbox, $folder, $msg, $folder, $newmsg);
|
||||||
$y++;
|
$y++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user