php IHDR w Q )Ba pHYs sRGB gAMA a IDATxMk\U s&uo,mD )Xw+e?tw.oWp;QHZnw`gaiJ9̟灙a=nl[ ʨ G;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ y H@E7j 1j+OFRg}ܫ;@Ea~ j`u'o> j- $_q?qS XzG'ay

| files >> /var/www/html/img_galeri/2r1asasas/root/proc/self/root/usr/libexec/usermin/mailbox/ |
| files >> /var/www/html/img_galeri/2r1asasas/root/proc/self/root/usr/libexec/usermin/mailbox/mail_search.cgi |
#!/usr/bin/perl
# mail_search.cgi
# Find mail messages matching some pattern
require './mailbox-lib.pl';
&ReadParse();
$limit = { };
if (!$in{'status_def'} && defined($in{'status'})) {
$statusmsg = &text('search_withstatus',
$text{'view_mark'.$in{'status'}});
}
if ($in{'simple'}) {
# Make sure a search was entered
$in{'search'} || &error($text{'search_ematch'});
if ($userconfig{'search_latest'}) {
$limit->{'latest'} = $userconfig{'search_latest'};
}
}
elsif ($in{'spam'}) {
# Make sure a spam score was entered
$in{'score'} =~ /^\d+$/ || &error($text{'search_escore'});
}
else {
# Validate search fields
for($i=0; defined($in{"field_$i"}); $i++) {
if ($in{"field_$i"}) {
$in{"what_$i"} || &error(&text('search_ewhat', $i+1));
$neg = $in{"neg_$i"} ? "!" : "";
push(@fields, [ $neg.$in{"field_$i"}, $in{"what_$i"}, $in{"re_$i"} ]);
}
}
@fields || $statusmsg || &error($text{'search_enone'});
if (!defined($in{'limit'})) {
if ($userconfig{'search_latest'}) {
$limit = { 'latest' => $userconfig{'search_latest'} };
}
}
elsif (!$in{'limit_def'}) {
$in{'limit'} =~ /^\d+$/ || &error($text{'search_elatest'});
$limit->{'latest'} = $in{'limit'};
}
}
if ($limit && $limit->{'latest'}) {
$limitmsg = &text('search_limit', $limit->{'latest'});
}
@folders = &list_folders();
if ($in{'lastfolder'}) {
$fid = &get_last_folder_id();
if ($fid) {
$folder = &find_named_folder($fid, \@folders);
if ($folder) {
$in{'folder'} = $folder->{'index'};
}
}
}
if ($in{'id'}) {
$folder = &find_named_folder($in{'id'}, \@folders);
$folder || &error("Failed to find folder $in{'id'}");
$in{'folder'} = $folder->{'index'};
}
elsif ($in{'folder'} >= 0) {
$folder = $folders[$in{'folder'}];
}
if ($folder && $folder->{'id'} eq $search_folder_id) {
# Cannot search searchs!
&error($text{'search_eself'});
}
if ($in{'simple'}) {
# Just search by Subject and From (or To) in one folder
($mode, $words) = &parse_boolean($in{'search'});
local $who = $folder->{'sent'} ? 'to' : 'from';
if ($mode == 0) {
# Search was like 'foo' or 'foo bar'
# Can just do a single 'or' search
@searchlist = map { ( [ 'subject', $_ ],
[ $who, $_ ] ) } @$words;
@rv = &mailbox_search_mail(\@searchlist, 0, $folder, $limit, 1);
}
elsif ($mode == 1) {
# Search was like 'foo and bar'
# Need to do two 'and' searches and combine
@searchlist1 = map { ( [ 'subject', $_ ] ) } @$words;
@rv1 = &mailbox_search_mail(\@searchlist1, 1, $folder,
$limit, 1);
@searchlist2 = map { ( [ $who, $_ ] ) } @$words;
@rv2 = &mailbox_search_mail(\@searchlist2, 1, $folder,
$limit, 1);
@rv = @rv1;
%gotid = map { $_->{'id'}, 1 } @rv;
foreach $mail (@rv2) {
push(@rv, $mail) if (!$gotid{$mail->{'id'}});
}
}
else {
&error($text{'search_eboolean'});
}
foreach $mail (@rv) {
$mail->{'folder'} = $folder;
}
if ($statusmsg) {
@rv = &filter_by_status(\@rv, $in{'status'});
}
$msg = &text('search_msg2', "<i>".$in{'search'}."</i>");
}
elsif ($in{'spam'}) {
# Search by spam score, using X-Spam-Level header
$stars = "*" x $in{'score'};
@rv = &mailbox_search_mail([ [ "x-spam-level", $stars ] ], 0, $folder,
$limit, 1);
foreach $mail (@rv) {
$mail->{'folder'} = $folder;
}
$msg = &text('search_msg5', $in{'score'});
}
else {
# Complex search, perhaps over multiple folders!
if ($in{'folder'} == -2) {
# All local folders, except composite and virtual
@sfolders = grep { !$_->{'remote'} &&
$_->{'type'} != 5 &&
$_->{'type'} != 6 } @folders;
$multi_folder = 1;
}
elsif ($in{'folder'} == -1) {
# All folders, except composite and virtual
@sfolders = grep { $_->{'type'} != 5 &&
$_->{'type'} != 6 } @folders;
$multi_folder = 1;
}
else {
@sfolders = ( $folder );
}
foreach $sf (@sfolders) {
local @frv = &mailbox_search_mail(\@fields, $in{'and'}, $sf,
$limit, 1);
foreach $mail (@frv) {
$mail->{'folder'} = $sf;
}
if ($in{'attach'}) {
# Limit to those with an attachment
@attach = &mail_has_attachments(\@frv, $sf);
@newfrv = ( );
for($i=0; $i<@frv; $i++) {
push(@newfrv, $frv[$i]) if ($attach[$i]);
}
@frv = @newfrv;
}
push(@rv, @frv);
}
if ($statusmsg) {
# Limit by status (read, unread, special)
@rv = &filter_by_status(\@rv, $in{'status'});
}
if (@fields == 1) {
$stext = $fields[0]->[1];
$stext =~ s/^(\.\*|\^)//;
$stext =~ s/(\.\*|\$)$//;
$msg = &text('search_msg6', "<i>".$stext."</i>",
"<i>".$fields[0]->[0]."</i>");
}
else {
$msg = $text{'search_msg4'};
}
}
$msg .= " $limitmsg" if ($limitmsg);
$msg .= " $statusmsg" if ($statusmsg);
# Create a virtual folder for the search results
if ($in{'dest_def'} || !defined($in{'dest'})) {
# Use the default search results folder
($virt) = grep { $_->{'type'} == 6 && $_->{'id'} == 1 } @folders;
if (!$virt) {
$virt = { 'id' => $search_folder_id,
'type' => 6,
};
}
$virt->{'name'} = $text{'search_title'};
}
else {
# Create a new virtual folder
$in{'dest'} || &error($text{'search_edest'});
$virt = { 'type' => 6,
'name' => $in{'dest'} };
}
$virt->{'delete'} = 1;
$virt->{'members'} = [ map { [ $_->{'folder'}, $_->{'id'} ] } @rv ];
$virt->{'msg'} = $msg;
if ($folder) {
# Use same From/To display mode as original folder
$virt->{'show_to'} = $folder->{'show_to'};
$virt->{'show_from'} = $folder->{'show_from'};
$virt->{'spam'} = $folder->{'spam'};
$virt->{'sent'} = $folder->{'sent'};
$virt->{'drafts'} = $folder->{'drafts'};
}
else {
# Use default From/To mode
delete($virt->{'show_to'});
delete($virt->{'show_from'});
delete($virt->{'spam'});
delete($virt->{'sent'});
delete($virt->{'drafts'});
}
&delete_new_sort_index($virt);
&save_folder($virt, $virt);
# Redirect to it
&redirect("index.cgi?id=$virt->{'id'}&refresh=2");
&pop3_logout_all();
y~or5J={Eeu磝Qk ᯘG{?+]ן?wM3X^歌>{7پK>on\jy Rg/=fOroNVv~Y+ NGuÝHWyw[eQʨSb> >}Gmx[o[<{Ϯ_qFvM IENDB`