Code Search for Developers
 
 
  

view_attachment.html from AlphaMail at Krugle


Show view_attachment.html syntax highlighted

% # vim: set syntax=mason:
<%args>
$file
$type
$subtype
$mode => "normal"
</%args>
<%init>
my $user = Apache::SiteControl->getCurrentUser($r);
my $logger = Log::Log4perl->get_logger('alphamail');
my $sandbox = $config->get("sandbox_util");
my $sandbox_dir = $config->get("sandbox");
my $jpegtopnm = $config->get("jpegtopnm");
my $pnmtojpeg = $config->get("pnmtojpeg");
my $pnmscale = $config->get("pnmscale");
my $giftopnm = $config->get("giftopnm");
my $tifftopnm = $config->get("tifftopnm");
my $pngtopnm = $config->get("pngtopnm");
my $iconsize = $config->get("iconsize");
my $prefix = $config->get("message_tmpdir", '/tmp');
my $username = $user->getUsername();
my $cachetime = $config->get("message_tmpdir_cachetime", 10) . ' min';
my $legal_files = $user->getAttribute('imap') . "_" . $username;

if($file !~ m/^\/\Q$legal_files\E/i || $file =~ m!/\.\./!) {
   $logger->logcroak("Security Violation! $username attempted to view $file. Prefix was $prefix");
}

$file = $prefix . $file; # Full path to tmp file.

$subtype = lc($subtype);
$subtype = "tiff" if $subtype eq 'tif';

my $line;
my %converters = ( jpeg => $jpegtopnm,
                   gif => $giftopnm,
                   tiff => $tifftopnm,
                   png => $pngtopnm,
                   pnm => "cat" # FIXME
                 );
my $converter = $converters{$subtype};
$logger->debug("Running in $mode mode with $type/$subtype on $file");
if($mode eq "shrink" && $type eq "image" && $converter) {
   $r->content_type("$type/$subtype");
   # cache icons
   my $key = "${file}_${type}_${subtype}";
   my $icon = $m->cache->get($key);
   if(!defined($icon)) {
      $logger->debug("tring to convert using: $sandbox $converter < '$file' | $sandbox $pnmscale -ysize $iconsize | $sandbox $pnmtojpeg|");
      # The redirection happens before sandbox runs. That is OK, since the fds
      # are passed along for the ride...no need to use the tmp dir in sandbox.
      open DATA, "$sandbox $converter < '$file' | $sandbox $pnmscale -ysize $iconsize | $sandbox $pnmtojpeg|" or $logger->error("problem running: $sandbox $converter < $file | $sandbox $pnmscale -ysize $iconsize | $sandbox $pnmtojpeg|");
      while($line = <DATA>) {
         $icon .= $line;
         $m->print($line);
      }
      close DATA;
      $m->cache->set($key, $icon, $cachetime);
      $logger->debug("Cached $file icon for later use.");
   } else {
      $logger->debug("Using cached icon for $file.");
      $m->print($icon);
   }
} elsif($type eq "image" && $converter && $subtype =~ m/^(tiff|png)$/) {
   # Convert to better format for browser
   $logger->debug("Converting $file to JPEG for browser compatibility");
   $r->content_type("image/jpeg");
   open DATA, "$sandbox $converter < '$file' | $sandbox $pnmtojpeg|" or $logger->error("problem converting file: $sandbox $converter < $file | $sandbox $pnmtojpeg|");
   while($line = <DATA>) {
      $m->print($line);
   }
   close DATA;
} else {
   $logger->debug("Sending $file unmodified");
   $r->content_type("$type/$subtype");
   open DATA, "<$file" or $logger->error("No such file: $file");
   while($line = <DATA>) {
      $m->print($line);
   }
   close DATA;
}
</%init>




See more files for this project here

AlphaMail

AlphaMail is an accelerated web mail interface with a C++ middleware layer that is more effective than an IMAP proxy which is a highly scalable (10k+ users). The interface includes modern features, Section 508 compliance, and universal browser support.

Project homepage: http://sourceforge.net/projects/alphamail
Programming language(s): C++,Java,JavaScript,Perl
License: other

  addressbook/
    edit.mhtml
    import.mhtml
    import_complete.html
    import_csv.html
    import_csv_save.html
    import_fname.html
    import_imho.html
    import_lname.html
    index.html
    lists.mhtml
    process_edit.html
    process_lists.html
    process_take.html
    take.html
  settings/
    altfolder_update.html
    altprefix_update.html
    edit_folders.html
    folders.mhtml
    general.mhtml
    index.html
    share.mhtml
    sharing_agree.html
    signatures.mhtml
    update_folderlist.html
    update_general.html
    update_signatures.html
  viewers/
    excel.html
    html.html
    targz.html
    text.html
    word.html
    zip.html
  address_mail.html
  addresslist.html
  autohandler
  check_spelling.html
  compose.html
  error.html
  first_login.html
  fix_spelling.html
  folderlist.mhtml
  footer.mhtml
  get_attachment.html
  header.mhtml
  help.html
  index.html
  logout.html
  menu.mhtml
  other_folders.html
  process_compose.html
  process_first_login.html
  process_messages.html
  process_read_message.html
  quota.html
  quota_graph.html
  raw.html
  read.html
  remove_attachment.html
  renew_session.html
  sanitized.html
  share_options.html
  share_upload.html
  show_stats.html
  verify_password.html
  view_attachment.html