--- loncom/publisher/lonupload.pm 2003/08/04 18:22:55 1.19 +++ loncom/publisher/lonupload.pm 2011/11/14 00:20:31 1.59 @@ -1,8 +1,7 @@ - # The LearningOnline Network with CAPA # Handler to upload files into construction space # -# $Id: lonupload.pm,v 1.19 2003/08/04 18:22:55 www Exp $ +# $Id: lonupload.pm,v 1.59 2011/11/14 00:20:31 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -28,252 +27,6 @@ # ### -package Apache::lonupload; - -use strict; -use Apache::File; -use File::Copy; -use File::Basename; -use Apache::Constants qw(:common :http :methods); -use Apache::loncacc; -use Apache::loncommon(); -use Apache::Log(); -use Apache::lonnet; -use HTML::Entities(); - -my $DEBUG=0; - -sub Debug { - - # Marshall the parameters. - - my $r = shift; - my $log = $r->log; - my $message = shift; - - # Put out the indicated message butonly if DEBUG is false. - - if ($DEBUG) { - $log->debug($message); - } -} - -sub upfile_store { - my $r=shift; - - my $fname=$ENV{'form.upfile.filename'}; - $fname=~s/\W//g; - - chomp($ENV{'form.upfile'}); - - my $datatoken=$ENV{'user.name'}.'_'.$ENV{'user.domain'}. - '_upload_'.$fname.'_'.time.'_'.$$; - { - my $fh=Apache::File->new('>'.$r->dir_config('lonDaemons'). - '/tmp/'.$datatoken.'.tmp'); - print $fh $ENV{'form.upfile'}; - } - return $datatoken; -} - - -sub phaseone { - my ($r,$fn,$uname,$udom)=@_; - $ENV{'form.upfile.filename'}=~s/\\/\//g; - $ENV{'form.upfile.filename'}=~s/^.*\/([^\/]+)$/$1/; - if ($ENV{'form.upfile.filename'}) { - $fn=~s/\/[^\/]+$//; - $fn=~s/([^\/])$/$1\//; - $fn.=$ENV{'form.upfile.filename'}; - $fn=~s/^\///; - $fn=~s/(\/)+/\//g; - -# Fn is the full path to the destination filename. -# - - &Debug($r, "Filename for upload: $fn"); - if (($fn) && ($fn!~/\/$/)) { - $r->print( - '
'); - # Check for bad extension and warn user - if ($fn=~/\.(\w+)$/ && - (&Apache::loncommon::fileembstyle($1) eq 'hdn')) { - $r->print( - ''. - 'The extension on this file, "'.$1. - '", is reserved internally by LON-CAPA.Back to Directory');
- } elsif ($fn=~/\.(\w+)$/ &&
- !defined(&Apache::loncommon::fileembstyle($1))) {
- $r->print(
- 'File '.$fn.' could not be copied.
'.
- ''.
- 'The extension on this file is not recognized by LON-CAPA.'.
- '');
- $r->print('
Back to Directory');
- } elsif (-d $target) {
- $r->print(
- 'File '.$fn.' could not be copied.
'.
- ''.
- 'The target is an existing directory.'.
- '');
- $r->print('
Back to Directory'); - } elsif (copy($source,$target)) { - chmod(0660, $target); # Set permissions to rw-rw---. - $r->print('File copied.'); - $r->print('
View file'); - $r->print('
Back to Directory'); - } else { - $r->print('Failed to copy: '.$!); - $r->print('
Back to Directory'); - } - } - } else { - $r->print( - 'Please use browser "Back" button and pick a filename
'); - } - } else { - $r->print( - 'Please use browser "Back" button and pick a filename
'); - } -} - -# ---------------------------------------------------------------- Main Handler -sub handler { - - my $r=shift; - - my $uname; - my $udom; -# -# phase two: re-attach user -# - if ($ENV{'form.uploaduname'}) { - $ENV{'form.filename'}='/priv/'.$ENV{'form.uploaduname'}.'/'. - $ENV{'form.filename'}; - } -# - - ($uname,$udom)= - &Apache::loncacc::constructaccess( - $ENV{'form.filename'},$r->dir_config('lonDefDomain')); - unless (($uname) && ($udom)) { - $r->log_reason($uname.' at '.$udom. - ' trying to publish file '.$ENV{'form.filename'}. - ' - not authorized', - $r->filename); - return HTTP_NOT_ACCEPTABLE; - } - - my $fn; - if ($ENV{'form.filename'}) { - $fn=$ENV{'form.filename'}; - $fn=~s/^http\:\/\/[^\/]+\///; - $fn=~s/^\///; - $fn=~s/(\~|priv\/)(\w+)//; - $fn=~s/\/+/\//g; - } else { - $r->log_reason($ENV{'user.name'}.' at '.$ENV{'user.domain'}. - ' unspecified filename for upload', $r->filename); - return HTTP_NOT_FOUND; - } - -# ----------------------------------------------------------- Start page output - - - $r->content_type('text/html'); - $r->send_http_header; - - $r->print('