#!/usr/bin/perl # detach.cgi # View one attachment from a message use Socket; require './mailboxes-lib.pl'; &ReadParse(); &can_user($in{'user'}) || &error($text{'mail_ecannot'}); @folders = &list_user_folders($in{'user'}); $folder = $folders[$in{'folder'}]; @mail = &mailbox_list_mails($in{'idx'}, $in{'idx'}, $folder); $mail = $mail[$in{'idx'}]; &parse_mail($mail); @sub = split(/\0/, $in{'sub'}); foreach $s (@sub) { # We are looking at a mail within a mail .. local $amail = &extract_mail($mail->{'attach'}->[$s]->{'data'}); &parse_mail($amail); $mail = $amail; } $attach = $mail->{'attach'}->[$in{'attach'}]; if ($in{'scale'}) { # Scale the gif or jpeg image to 48 pixels high local $temp = &transname(); open(TEMP, ">$temp"); print TEMP $attach->{'data'}; close(TEMP); $SIG{'CHLD'} = sub { wait; }; if ($attach->{'type'} eq 'image/gif') { ($pnmin, $pnmout) = &pipeopen("giftopnm $temp"); } elsif ($attach->{'type'} eq 'image/jpeg') { ($pnmin, $pnmout) = &pipeopen("djpeg -fast $temp"); } else { &dump_erroricon(); } close($pnmin); $type = <$pnmout>; $size = <$pnmout>; unlink($temp); $type =~ /^P[0-9]/ || &dump_erroricon(); $size =~ /(\d+)\s+(\d+)/ || &dump_erroricon(); ($w, $h) = ($1, $2); if ($w > 48) { $scale = 48.0 / $w; } else { $scale = 48.0 / $h; } ($jpegin, $jpegout) = &pipeopen("pnmscale $scale 2>/dev/null | cjpeg"); print $jpegin $type; print $jpegin $size; my $bs = &get_buffer_size(); while(read($pnmout, $buf, $bs)) { print $jpegin $buf; } close($jpegin); close($pnmout); print "Content-type: image/jpeg\n\n"; while(read($jpegout, $buf, $bs)) { print $buf; } close($jpegout); } else { # Just output the attachment print "X-no-links: 1\n"; @download = split(/\t+/, $config{'download'}); if ($in{'type'}) { # Display as a specific MIME type print "Content-type: $in{'type'}\n\n"; print $attach->{'data'}; } else { # Auto-detect type if ($in{'save'}) { # Force download print "Content-Disposition: Attachment; filename=\"$attach->{'filename'}\"\n"; } if ($attach->{'type'} eq 'message/delivery-status') { print "Content-type: text/plain\n\n"; } else { print "Content-type: $attach->{'type'}\n\n"; } } if ($attach->{'type'} =~ /^text\/html/i && !$in{'save'}) { print &safe_urls(&filter_javascript($attach->{'data'})); } else { print $attach->{'data'}; } } &pop3_logout_all(); sub dump_erroricon { print "Content-type: image/gif\n\n"; open(ICON, "<images/error.gif"); while(<ICON>) { print; } close(ICON); exit; } # pipeopen(command) sub pipeopen { $pipe++; local $inr = "INr$pipe"; local $inw = "INw$pipe"; local $outr = "OUTr$pipe"; local $outw = "OUTw$pipe"; pipe($inr, $inw); pipe($outr, $outw); if (!fork()) { untie(*STDIN); untie(*STDOUT); open(STDIN, "<&$inr"); open(STDOUT, ">&$outw"); close($inw); close($outr); exec($_[0]); print STDERR "exec failed : $!\n"; exit 1; } close($inr); close($outw); return ($inw, $outr); }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
images | Folder | 0755 |
|
|
lang | Folder | 0755 |
|
|
xinha | Folder | 0755 |
|
|
CHANGELOG | File | 5.7 KB | 0644 |
|
Makefile | File | 125 B | 0644 |
|
acl_security.pl | File | 3 KB | 0755 |
|
boxes-lib.pl | File | 80.37 KB | 0755 |
|
cgi_args.pl | File | 520 B | 0755 |
|
config | File | 758 B | 0644 |
|
config.info | File | 4.94 KB | 0644 |
|
config.info.ca | File | 5.79 KB | 0644 |
|
config.info.cs | File | 5.2 KB | 0644 |
|
config.info.de | File | 6.27 KB | 0644 |
|
config.info.el | File | 8.14 KB | 0644 |
|
config.info.fi | File | 0 B | 0644 |
|
config.info.fr | File | 6.43 KB | 0644 |
|
config.info.hu | File | 0 B | 0644 |
|
config.info.it | File | 5.97 KB | 0644 |
|
config.info.ja | File | 5.97 KB | 0644 |
|
config.info.ko | File | 5.29 KB | 0644 |
|
config.info.nl | File | 5.48 KB | 0644 |
|
config.info.no | File | 5.25 KB | 0644 |
|
config.info.pt_BR | File | 0 B | 0644 |
|
config_info.pl | File | 389 B | 0755 |
|
defaultacl | File | 50 B | 0644 |
|
delete_all.cgi | File | 1.25 KB | 0755 |
|
delete_mail.cgi | File | 7 KB | 0755 |
|
detach.cgi | File | 3.19 KB | 0755 |
|
detachall.cgi | File | 1.72 KB | 0755 |
|
find.cgi | File | 731 B | 0755 |
|
folders-lib.pl | File | 103.44 KB | 0755 |
|
index.cgi | File | 2.73 KB | 0755 |
|
list_mail.cgi | File | 5.15 KB | 0755 |
|
log_parser.pl | File | 1.02 KB | 0755 |
|
mail_search.cgi | File | 3.68 KB | 0755 |
|
mailboxes-lib.pl | File | 33.59 KB | 0755 |
|
makelang.pl | File | 1.35 KB | 0755 |
|
module.info | File | 137 B | 0644 |
|
module.info.af | File | 0 B | 0644 |
|
module.info.af.auto | File | 82 B | 0644 |
|
module.info.ar | File | 0 B | 0644 |
|
module.info.ar.auto | File | 145 B | 0644 |
|
module.info.be | File | 0 B | 0644 |
|
module.info.be.auto | File | 185 B | 0644 |
|
module.info.bg | File | 0 B | 0644 |
|
module.info.bg.auto | File | 167 B | 0644 |
|
module.info.ca | File | 97 B | 0644 |
|
module.info.cs | File | 37 B | 0644 |
|
module.info.cs.auto | File | 75 B | 0644 |
|
module.info.da | File | 0 B | 0644 |
|
module.info.da.auto | File | 72 B | 0644 |
|
module.info.de | File | 77 B | 0644 |
|
module.info.el | File | 0 B | 0644 |
|
module.info.el.auto | File | 232 B | 0644 |
|
module.info.es | File | 38 B | 0644 |
|
module.info.es.auto | File | 72 B | 0644 |
|
module.info.eu | File | 0 B | 0644 |
|
module.info.eu.auto | File | 110 B | 0644 |
|
module.info.fa | File | 0 B | 0644 |
|
module.info.fa.auto | File | 141 B | 0644 |
|
module.info.fi | File | 27 B | 0644 |
|
module.info.fi.auto | File | 61 B | 0644 |
|
module.info.fr | File | 40 B | 0644 |
|
module.info.fr.auto | File | 76 B | 0644 |
|
module.info.he | File | 0 B | 0644 |
|
module.info.he.auto | File | 117 B | 0644 |
|
module.info.hr | File | 0 B | 0644 |
|
module.info.hr.auto | File | 108 B | 0644 |
|
module.info.hu | File | 38 B | 0644 |
|
module.info.hu.auto | File | 72 B | 0644 |
|
module.info.it | File | 27 B | 0644 |
|
module.info.it.auto | File | 76 B | 0644 |
|
module.info.ja | File | 39 B | 0644 |
|
module.info.ja.auto | File | 79 B | 0644 |
|
module.info.ko | File | 29 B | 0644 |
|
module.info.ko.auto | File | 65 B | 0644 |
|
module.info.lt | File | 0 B | 0644 |
|
module.info.lt.auto | File | 110 B | 0644 |
|
module.info.lv | File | 0 B | 0644 |
|
module.info.lv.auto | File | 85 B | 0644 |
|
module.info.ms | File | 73 B | 0644 |
|
module.info.mt | File | 0 B | 0644 |
|
module.info.mt.auto | File | 81 B | 0644 |
|
module.info.nl | File | 30 B | 0644 |
|
module.info.nl.auto | File | 57 B | 0644 |
|
module.info.no | File | 27 B | 0644 |
|
module.info.no.auto | File | 47 B | 0644 |
|
module.info.pl | File | 38 B | 0644 |
|
module.info.pl.auto | File | 67 B | 0644 |
|
module.info.pt | File | 0 B | 0644 |
|
module.info.pt.auto | File | 94 B | 0644 |
|
module.info.pt_BR | File | 34 B | 0644 |
|
module.info.pt_BR.auto | File | 65 B | 0644 |
|
module.info.ro | File | 0 B | 0644 |
|
module.info.ro.auto | File | 116 B | 0644 |
|
module.info.ru | File | 63 B | 0644 |
|
module.info.ru.auto | File | 99 B | 0644 |
|
module.info.sk | File | 0 B | 0644 |
|
module.info.sk.auto | File | 120 B | 0644 |
|
module.info.sl | File | 0 B | 0644 |
|
module.info.sl.auto | File | 97 B | 0644 |
|
module.info.sv | File | 0 B | 0644 |
|
module.info.sv.auto | File | 78 B | 0644 |
|
module.info.th | File | 0 B | 0644 |
|
module.info.th.auto | File | 154 B | 0644 |
|
module.info.tr | File | 104 B | 0644 |
|
module.info.uk | File | 0 B | 0644 |
|
module.info.uk.auto | File | 193 B | 0644 |
|
module.info.ur | File | 0 B | 0644 |
|
module.info.ur.auto | File | 117 B | 0644 |
|
module.info.vi | File | 0 B | 0644 |
|
module.info.vi.auto | File | 99 B | 0644 |
|
module.info.zh | File | 0 B | 0644 |
|
module.info.zh.auto | File | 79 B | 0644 |
|
module.info.zh_TW | File | 33 B | 0644 |
|
module.info.zh_TW.auto | File | 55 B | 0644 |
|
prefs.info | File | 225 B | 0644 |
|
reply_mail.cgi | File | 15.96 KB | 0755 |
|
safeacl | File | 32 B | 0644 |
|
search_form.cgi | File | 1.86 KB | 0755 |
|
send_mail.cgi | File | 9.56 KB | 0755 |
|
slideshow.cgi | File | 1.63 KB | 0755 |
|
useradmin_update.pl | File | 2.33 KB | 0755 |
|
view_mail.cgi | File | 10.44 KB | 0755 |
|