From bb43f749526eb3dbf632525343d90c784c0128ce Mon Sep 17 00:00:00 2001 From: markster Date: Wed, 14 May 2003 19:21:36 +0000 Subject: Make vmail handle things properly in the case of included contexts git-svn-id: http://svn.digium.com/svn/asterisk/trunk@1021 f38db490-d61c-443f-a65b-d21fe96a405b --- contrib/scripts/vmail.cgi | 118 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 92 insertions(+), 26 deletions(-) (limited to 'contrib/scripts/vmail.cgi') diff --git a/contrib/scripts/vmail.cgi b/contrib/scripts/vmail.cgi index e6333bffb..cd519d701 100755 --- a/contrib/scripts/vmail.cgi +++ b/contrib/scripts/vmail.cgi @@ -12,6 +12,7 @@ # # use CGI qw/:standard/; +use Carp::Heavy; use CGI::Carp qw(fatalsToBrowser); @validfolders = ( "INBOX", "Old", "Work", "Family", "Friends", "Cust1", "Cust2", "Cust3", "Cust4", "Cust5" ); @@ -67,64 +68,115 @@ _EOH sub check_login() { - my ($mbox, $context) = split(/\@/, param('mailbox')); - my $pass = param('password'); - my $category = "general"; - my @fields; + local ($filename, $startcat) = @_; + local ($mbox, $context) = split(/\@/, param('mailbox')); + local $pass = param('password'); + local $category = $startcat; + local @fields; + local $tmp; + local (*VMAIL); + if (!$category) { + $category = "general"; + } if (!$context) { $context = param('context'); } if (!$context) { $context = "default"; } - open(VMAIL, "$filename while in

$category

...\n"; + open(VMAIL, "<$filename") || die("Bleh, no $filename"); while() { chomp; - if (/\[(.*)\]/) { + if (/include\s\"([^\"]+)\"$/) { + ($tmp, $category) = &check_login("/etc/asterisk/$1", $category); + if (length($tmp)) { +# print "Got '$tmp'\n"; + return ($tmp, $category); + } + } elsif (/\[(.*)\]/) { $category = $1; } elsif ($category ne "general") { if (/([^\s]+)\s*\=\>?\s*(.*)/) { @fields = split(/\,\s*/, $2); +# print "

Mailbox is $1\n"; if (($mbox eq $1) && ($pass eq $fields[0]) && ($context eq $category)) { - return $fields[1] ? $fields[1] : "Extension $mbox in $context"; + return ($fields[1] ? $fields[1] : "Extension $mbox in $context", $category); } } } } + close(VMAIL); + return ("", $category); } sub validmailbox() { - my ($context, $mbox) = @_; - my $category = "general"; - my @fields; - open(VMAIL, ") { chomp; - if (/\[(.*)\]/) { + if (/include\s\"([^\"]+)\"$/) { + ($tmp, $category) = &validmailbox($mbox, $context, "/etc/asterisk/$1"); + if ($tmp) { + return ($tmp, $category); + } + } elsif (/\[(.*)\]/) { $category = $1; } elsif (($category ne "general") && ($category eq $context)) { if (/([^\s]+)\s*\=\>?\s*(.*)/) { @fields = split(/\,\s*/, $2); - if ($mbox eq $1) { - return $fields[2] ? $fields[2] : "unknown"; + if (($mbox eq $1) && ($context eq $category)) { + return ($fields[2] ? $fields[2] : "unknown", $category); } } } } + return ("", $category); } -sub mailbox_list() +sub mailbox_options() { - my ($name, $context, $current) = @_; - my $tmp; - my $text; - $tmp = "\n"; + ($opts) = &mailbox_options($context, $current); + $tmp .= $opts; $tmp .= "\n"; } @@ -811,8 +877,8 @@ if (param()) { @msgs = param('msgselect'); @msgs = ($msgid) unless @msgs; { - $mailbox = check_login(); - if ($mailbox) { + ($mailbox) = &check_login(); + if (length($mailbox)) { if ($action eq 'login') { &message_index($folder, "Welcome, $mailbox"); } elsif (($action eq 'refresh') || ($action eq 'index')) { -- cgit v1.2.3