| \n"; } print " | |
| \n"; } print " | |
| \n"; } print " | \n"; if ($logout) { # Add button for logging out of inbox print "\n"; } print " |
| \n"; print "\n"; print " | \n"; print "\n"; print "\n"; print " | \n"; if (@folders > 1) { print "",&movecopy_select($_[0], \@folders, $folder)," | \n"; } print "\n"; } print " | \n"; print " |
\n";
}
print "",&text('view_desc', $in{'idx'}+1,
$folder->{'name'}),"\n";
if ($in{'idx'} < @mail-1) {
print "",
"
\n";
}
}
else {
print "$text{'view_sub'}\n";
}
print "| $text{'view_headers'} | ||||||||||
|
\n"; # Just display the mail body for printing if ($body eq $textbody) { print "
";
foreach $l (&wrap_lines($body->{'data'},
$userconfig{'wrap_width'})) {
print &eucconv(&html_escape($l)),"\n";
}
print " |
| \n"; print &safe_html($body->{'data'}); print " |
",&text('detach_ok', "$paths[$i]", $sz),"
\n"; } print "
\n"; } else { push(@from, $spamfrom); &spam::save_directives($conf, 'blacklist_from', \@from, 1); &flush_file_lines(); print "",&text('black_done', "$spamfrom"),"
\n"; } print "
$text{'razor_report'}\n"; print "
";
local %sconfig = &foreign_config("spam");
local $temp = &tempname();
&send_mail($mail, $temp, 0, 1);
open(OUT, "$sconfig{'spamassassin'} --report <$temp 2>&1 |");
local $error;
while() {
print &html_escape($_);
$error++ if (/failed/i);
}
close(OUT);
unlink($temp);
print " \n";
if ($? || $error) {
print "$text{'razor_err'}\n"; } else { print "$text{'razor_done'}
\n"; } print "
/\n\n/gi;
$html =~ s/
/\n/gi;
$html =~ s/<[^>]+>//g;
$html = &entities_to_ascii($html);
return $html;
}
}
# folder_select(&folders, selected-folder, name, [extra-options])
# Returns HTML for selecting a folder
sub folder_select
{
local $sel = "\n";
return $sel;
}
# folder_size(&folder, ...)
# Sets the 'size' field of one or more folders
sub folder_size
{
local ($f, $total);
foreach $f (@_) {
if ($f->{'type'} == 0) {
local @st = stat($f->{'file'});
$f->{'size'} = $st[7];
}
elsif ($f->{'type'} == 1 || $f->{'type'} == 3) {
$f->{'size'} = &disk_usage_kb($f->{'file'})*1024;
}
else {
$f->{'size'} = undef;
}
$total += $f->{'size'};
}
return $total;
}
# parse_boolean(string)
# Separates a string into a series of and/or separated values. Returns a
# mode number (0=or, 1=and, 2=both) and a list of words
sub parse_boolean
{
local @rv;
local $str = $_[0];
local $mode = -1;
local $lastandor = 0;
while($str =~ /^\s*"([^"]*)"(.*)$/ ||
$str =~ /^\s*"([^"]*)"(.*)$/ ||
$str =~ /^\s*(\S+)(.*)$/) {
local $word = $1;
$str = $2;
if (lc($word) eq "and") {
if ($mode < 0) { $mode = 1; }
elsif ($mode != 1) { $mode = 2; }
$lastandor = 1;
}
elsif (lc($word) eq "or") {
if ($mode < 0) { $mode = 0; }
elsif ($mode != 0) { $mode = 2; }
$lastandor = 1;
}
else {
if (!$lastandor && @rv) {
$rv[$#rv] .= " ".$word;
}
else {
push(@rv, $word);
}
$lastandor = 0;
}
}
$mode = 0 if ($mode < 0);
return ($mode, \@rv);
}
# recursive_files(dir, do-subdirs)
sub recursive_files
{
local ($f, @rv);
opendir(DIR, $_[0]);
local @files = readdir(DIR);
closedir(DIR);
foreach $f (@files) {
next if ($f =~ /^\./ || $f =~ /\.lock$/i);
local $p = "$_[0]/$f";
if ($_[1] || !-d $p || -d "$p/cur") {
push(@rv, $p);
}
else {
push(@rv, &recursive_files($p));
}
}
return @rv;
}
1;
mailbox/config-osf1 0100664 0005671 0000012 00000000471 10035762242 014235 0 ustar jcameron wheel edit_from=1
mail_system=0
mail_dir=/var/spool/mail
perpage=20
wrap_width=80
top_buttons=1
show_to=0
sendmail_path=/usr/sbin/sendmail
server_attach=1
mail_style=0
mail_file=mbox
mail_dir_qmail=Maildir
from_map=/etc/mail/generics
index_min=1000000
index_dbm=0
folder_types=local,ext,pop3,imap
pop_locks=1
no_crlf=0
mailbox/search_form.cgi 0100775 0005671 0000012 00000003217 07766047447 015203 0 ustar jcameron wheel #!/usr/local/bin/perl
# search_form.cgi
# Display a form for searching a mailbox
require './mailbox-lib.pl';
&ReadParse();
@folders = &list_folders_sorted();
($folder) = grep { $_->{'index'} == $in{'folder'} } @folders;
$module_index_link = "/$module_name/index.cgi?folder=$in{'folder'}";
&header($text{'sform_title'}, "");
print "
\n"); } } close(INw); close(OUTr); if (@errs) { # Spelling errors found! &header($text{'compose_title'}, ""); print "
\n"; print @errs; print "
",&text($in{'draft'} ? 'send_draft' : 'send_ok', $tos),"
\n"; print "
",&text('search_results2', scalar(@rv), "$in{'search'}"),"
\n"; } else { # Complex search, perhaps over multiple folders! if ($in{'folder'} == -2) { @sfolders = grep { !$_->{'remote'} } @folders; $multi_folder = 1; } elsif ($in{'folder'} == -1) { @sfolders = @folders; $multi_folder = 1; } else { @sfolders = ( $folder ); } foreach $sf (@sfolders) { local @frv = &mailbox_search_mail(\@fields, $in{'and'}, $sf); foreach $mail (@frv) { $mail->{'folder'} = $sf; } push(@rv, @frv); } print "
",&text('search_results4', scalar(@rv)),"
\n"; } @rv = reverse(@rv); $showto = $folder->{'sent'} || $folder->{'drafts'}; if (@rv) { print "
\n"; } else { print "$text{'search_none'}
\n"; } print "
\n"; } print "