Show get_attachment.html syntax highlighted
% # vim: set syntax=mason:
<%args>
$file => -1
$type => -1
$subtype => -1
$suggested_name => -1
</%args>
<%init>
my $user = Apache::SiteControl->getCurrentUser($r);
my $logger = Log::Log4perl->get_logger('alphamail');
my $prefix = $config->get("message_tmpdir", '/tmp');
my $username = $user->getUsername();
my $legal_files = $user->getAttribute('imap') . "_" . $username;
if($file == -1) {
$m->redirect(build_url("/mail/index.html", { message => "No filename for attachment." }));
} elsif($file !~ m/^\/\Q$legal_files\E/i || $file =~ m!/\.\./!) {
$logger->error("Security Violation! $username attempted to view $file. Prefix was $prefix");
$m->redirect(build_url("/mail/index.html", { message => "Security violation on filename" }));
}
$file = $prefix . $file; # Full path to tmp file.
$logger->debug("Getting attachment $file ($type/$subtype)");
$r->content_type("$type/$subtype");
$r->header_out('Content-Disposition' => qq(attachment; filename="$suggested_name"));
$r->send_http_header;
open DATA, "<$file" or logger->logcroak("Could not open file: $file");
my $line;
while($line = <DATA>) {
$m->print($line);
}
close DATA;
</%init>
<%once>
use AlphaMail::HTMLHelper qw(build_url);
</%once>
See more files for this project here