[LON-CAPA-cvs] cvs: loncom /publisher lonupload.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Sat, 08 Nov 2003 11:04:52 -0000
This is a MIME encoded message
--albertel1068289492
Content-Type: text/plain
albertel Sat Nov 8 06:04:52 2003 EDT
Modified files:
/loncom/publisher lonupload.pm
Log:
- retabinate
--albertel1068289492
Content-Type: text/plain
Content-Disposition: attachment; filename="albertel-20031108060452.txt"
Index: loncom/publisher/lonupload.pm
diff -u loncom/publisher/lonupload.pm:1.21 loncom/publisher/lonupload.pm:1.22
--- loncom/publisher/lonupload.pm:1.21 Sat Nov 8 05:58:30 2003
+++ loncom/publisher/lonupload.pm Sat Nov 8 06:04:52 2003
@@ -2,7 +2,7 @@
# The LearningOnline Network with CAPA
# Handler to upload files into construction space
#
-# $Id: lonupload.pm,v 1.21 2003/11/08 10:58:30 albertel Exp $
+# $Id: lonupload.pm,v 1.22 2003/11/08 11:04:52 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -46,17 +46,17 @@
sub Debug {
- # Marshall the parameters.
+ # Marshall the parameters.
- my $r = shift;
- my $log = $r->log;
- my $message = shift;
+ my $r = shift;
+ my $log = $r->log;
+ my $message = shift;
- # Put out the indicated message butonly if DEBUG is false.
+ # Put out the indicated message butonly if DEBUG is false.
- if ($DEBUG) {
- $log->debug($message);
- }
+ if ($DEBUG) {
+ $log->debug($message);
+ }
}
sub upfile_store {
@@ -79,197 +79,191 @@
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;
+ 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(
- '<form action=/adm/upload method=post>'.
- '<input type=hidden name=phase value=two>'.
- '<input type=hidden name=datatoken value="'.&upfile_store.'">'.
- '<input type=hidden name=uploaduname value="'.$uname.'">'.
- &mt('Store uploaded file as ')."<tt>/priv/$uname/</tt>".
- '<input type=text size=50 name=filename value="'.$fn.'"><br>'.
- '<input type=submit value="'.&mt('Store').'"></form>');
- # Check for bad extension and warn user
- if ($fn=~/\.(\w+)$/ &&
- (&Apache::loncommon::fileembstyle($1) eq 'hdn')) {
- $r->print(
- '<font color=red>'.
- &mt('The extension on this file,').' "'.$1.
- '"'.&mt(', is reserved internally by LON-CAPA.').' <br \>'.
- &mt('Please change the extension.').
- '</font>');
- } elsif($fn=~/\.(\w+)$/ &&
- !defined(&Apache::loncommon::fileembstyle($1))) {
- $r->print(
- '<font color=red>'.
- &mt('The extension on this file,').' "'.$1.
- '"'.&mt(', is not recognized by LON-CAPA.').' <br \>'.
- &mt('Please change the extension.').
- '</font>');
- }
- } else {
- $r->print('<font color=red>'.&mt('Illegal filename.').'</font>');
- }
- } else {
- $r->print('<font color=red>'.&mt('No upload file specified.').'</font>');
- }
+ &Debug($r, "Filename for upload: $fn");
+ if (($fn) && ($fn!~/\/$/)) {
+ $r->print('<form action=/adm/upload method=post>'.
+ '<input type=hidden name=phase value=two>'.
+ '<input type=hidden name=datatoken value="'.
+ &upfile_store.'">'.
+ '<input type=hidden name=uploaduname value="'.$uname.'">'.
+ &mt('Store uploaded file as ')."<tt>/priv/$uname/</tt>".
+ '<input type=text size=50 name=filename value="'.$fn.'"><br>'.
+ '<input type=submit value="'.&mt('Store').'"></form>');
+ # Check for bad extension and warn user
+ if ($fn=~/\.(\w+)$/ &&
+ (&Apache::loncommon::fileembstyle($1) eq 'hdn')) {
+ $r->print('<font color=red>'.&mt('The extension on this file,').
+ ' "'.$1.'"'.&mt(', is reserved internally by LON-CAPA.').
+ ' <br \>'.&mt('Please change the extension.').'</font>');
+ } elsif($fn=~/\.(\w+)$/ &&
+ !defined(&Apache::loncommon::fileembstyle($1))) {
+ $r->print('<font color=red>'.&mt('The extension on this file,').
+ ' "'.$1.'"'.&mt(', is not recognized by LON-CAPA.').
+ ' <br \>'.&mt('Please change the extension.').
+ '</font>');
+ }
+ } else {
+ $r->print('<font color=red>'.&mt('Illegal filename.').'</font>');
+ }
+ } else {
+ $r->print('<font color=red>'.&mt('No upload file specified.').'</font>');
+ }
}
sub phasetwo {
- my ($r,$tfn,$uname,$udom)=@_;
- my $fn='/priv/'.$uname.'/'.$tfn;
- $fn=~s/\/+/\//g;
- &Debug($r, "Filename is ".$tfn);
- if ($tfn) {
- &Debug($r, "Filename for tfn = ".$tfn);
- my $target='/home/'.$uname.'/public_html'.$tfn;
- &Debug($r, "target -> ".$target);
+ my ($r,$tfn,$uname,$udom)=@_;
+ my $fn='/priv/'.$uname.'/'.$tfn;
+ $fn=~s/\/+/\//g;
+ &Debug($r, "Filename is ".$tfn);
+ if ($tfn) {
+ &Debug($r, "Filename for tfn = ".$tfn);
+ my $target='/home/'.$uname.'/public_html'.$tfn;
+ &Debug($r, "target -> ".$target);
# target is the full filesystem path of the destination file.
- my $base = &File::Basename::basename($fn);
- my $path = &File::Basename::dirname($fn);
- $base = &HTML::Entities::encode($base);
- my $url = $path."/".$base;
- &Debug($r, "URL is now ".$url);
- my $datatoken=$ENV{'form.datatoken'};
- if (($fn) && ($datatoken)) {
- if ((-e $target) && ($ENV{'form.override'} ne 'Yes')) {
- $r->print(
- '<form action=/adm/upload method=post>'.
- &mt('File').' <tt>'.$fn.'</tt> '.&mt('exists. Overwrite?').' '.
- '<input type=hidden name=phase value=two>'.
- '<input type=hidden name=filename value="'."$url".'">'.
- '<input type=hidden name=datatoken value="'.$datatoken.'">'.
- '<input type=submit name=override value="'.&mt('Yes').'"></form>');
- } else {
- my $source=$r->dir_config('lonDaemons').
- '/tmp/'.$datatoken.'.tmp';
- # Check for bad extension and disallow upload
- if ($fn=~/\.(\w+)$/ &&
- (&Apache::loncommon::fileembstyle($1) eq 'hdn')) {
- $r->print(
- &mt('File').' <tt>'.$fn.'</tt> '.&mt('could not be copied.').'<br />'.
- '<font color=red>'.
- &mt('The extension on this file is reserved internally by LON-CAPA.').
- '</font>');
- $r->print('<p><font size=+2><a href="'.$path.
- '">'.&mt('Back to Directory').'</a></font>');
- } elsif ($fn=~/\.(\w+)$/ &&
- !defined(&Apache::loncommon::fileembstyle($1))) {
- $r->print(
- &mt('File').' <tt>'.$fn.'</tt> '.&mt('could not be copied.').'<br />'.
- '<font color=red>'.
- &mt('The extension on this file is not recognized by LON-CAPA.').
- '</font>');
- $r->print('<p><font size=+2><a href="'.$path.
- '">'.&mt('Back to Directory').'</a></font>');
- } elsif (-d $target) {
- $r->print(
- 'File <tt>'.$fn.'</tt> could not be copied.<br />'.
- '<font color=red>'.
- &mt('The target is an existing directory.').
- '</font>');
- $r->print('<p><font size=+2><a href="'.$path.
- '">'.&mt('Back to Directory').'</a></font>');
- } elsif (copy($source,$target)) {
- chmod(0660, $target); # Set permissions to rw-rw---.
- $r->print(&mt('File copied.'));
- $r->print('<p><font size=+2><a href="'.$url.
- '">'.&mt('View file').'</a></font>');
- $r->print('<p><font size=+2><a href="'.$path.
- '">'.&mt('Back to Directory').'</a></font>');
- } else {
- $r->print('Failed to copy: '.$!);
- $r->print('<p><font size=+2><a href="'.$path.
- '">'.&mt('Back to Directory').'</a></font>');
- }
- }
+ my $base = &File::Basename::basename($fn);
+ my $path = &File::Basename::dirname($fn);
+ $base = &HTML::Entities::encode($base);
+ my $url = $path."/".$base;
+ &Debug($r, "URL is now ".$url);
+ my $datatoken=$ENV{'form.datatoken'};
+ if (($fn) && ($datatoken)) {
+ if ((-e $target) && ($ENV{'form.override'} ne 'Yes')) {
+ $r->print('<form action=/adm/upload method=post>'.
+ &mt('File').' <tt>'.$fn.'</tt> '.
+ &mt('exists. Overwrite?').' '.
+ '<input type=hidden name=phase value=two>'.
+ '<input type=hidden name=filename value="'."$url".'">'.
+ '<input type=hidden name=datatoken value="'.$datatoken.'">'.
+ '<input type=submit name=override value="'.&mt('Yes').'"></form>');
+ } else {
+ my $source=$r->dir_config('lonDaemons').'/tmp/'.$datatoken.'.tmp';
+ # Check for bad extension and disallow upload
+ if ($fn=~/\.(\w+)$/ &&
+ (&Apache::loncommon::fileembstyle($1) eq 'hdn')) {
+ $r->print(&mt('File').' <tt>'.$fn.'</tt> '.
+ &mt('could not be copied.').'<br />'.
+ '<font color=red>'.
+ &mt('The extension on this file is reserved internally by LON-CAPA.').
+ '</font>');
+ $r->print('<p><font size=+2><a href="'.$path.'">'.
+ &mt('Back to Directory').'</a></font>');
+ } elsif ($fn=~/\.(\w+)$/ &&
+ !defined(&Apache::loncommon::fileembstyle($1))) {
+ $r->print(&mt('File').' <tt>'.$fn.'</tt> '.
+ &mt('could not be copied.').'<br />'.
+ '<font color=red>'.
+ &mt('The extension on this file is not recognized by LON-CAPA.').
+ '</font>');
+ $r->print('<p><font size=+2><a href="'.$path.'">'.
+ &mt('Back to Directory').'</a></font>');
+ } elsif (-d $target) {
+ $r->print('File <tt>'.$fn.'</tt> could not be copied.<br />'.
+ '<font color=red>'.
+ &mt('The target is an existing directory.').
+ '</font>');
+ $r->print('<p><font size=+2><a href="'.$path.'">'.
+ &mt('Back to Directory').'</a></font>');
+ } elsif (copy($source,$target)) {
+ chmod(0660, $target); # Set permissions to rw-rw---.
+ $r->print(&mt('File copied.'));
+ $r->print('<p><font size=+2><a href="'.$url.'">'.
+ &mt('View file').'</a></font>');
+ $r->print('<p><font size=+2><a href="'.$path.'">'.
+ &mt('Back to Directory').'</a></font>');
+ } else {
+ $r->print('Failed to copy: '.$!);
+ $r->print('<p><font size=+2><a href="'.$path.'">'.
+ &mt('Back to Directory').'</a></font>');
+ }
+ }
+ } else {
+ $r->print('<font size=+1 color=red>'.
+ &mt('Please use browser "Back" button and pick a filename').
+ '</font><p>');
+ }
} else {
- $r->print(
- '<font size=+1 color=red>'.
-&mt('Please use browser "Back" button and pick a filename').'</font><p>');
+ $r->print('<font size=+1 color=red>'.
+ &mt('Please use browser "Back" button and pick a filename').
+ '</font><p>');
}
- } else {
- $r->print(
- '<font size=+1 color=red>'.&mt('Please use browser "Back" button and pick a filename').'</font><p>');
- }
}
# ---------------------------------------------------------------- Main Handler
sub handler {
- my $r=shift;
+ my $r=shift;
- my $uname;
- my $udom;
+ 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;
- }
+ 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
- &Apache::loncommon::content_type($r,'text/html');
- $r->send_http_header;
+ &Apache::loncommon::content_type($r,'text/html');
+ $r->send_http_header;
- $r->print('<html><head><title>LON-CAPA Construction Space</title></head>');
+ $r->print('<html><head><title>LON-CAPA Construction Space</title></head>');
- $r->print(&Apache::loncommon::bodytag('Upload file to Construction Space'));
+ $r->print(&Apache::loncommon::bodytag('Upload file to Construction Space'));
- if (($uname ne $ENV{'user.name'}) || ($udom ne $ENV{'user.domain'})) {
- $r->print('<h3><font color=red>'.&mt('Co-Author').': '.$uname.
- &mt(' at ').$udom.'</font></h3>');
- }
-
- if ($ENV{'form.phase'} eq 'two') {
- &phasetwo($r,$fn,$uname,$udom);
- } else {
- &phaseone($r,$fn,$uname,$udom);
- }
+ if (($uname ne $ENV{'user.name'}) || ($udom ne $ENV{'user.domain'})) {
+ $r->print('<h3><font color=red>'.&mt('Co-Author').': '.$uname.
+ &mt(' at ').$udom.'</font></h3>');
+ }
+
+ if ($ENV{'form.phase'} eq 'two') {
+ &phasetwo($r,$fn,$uname,$udom);
+ } else {
+ &phaseone($r,$fn,$uname,$udom);
+ }
- $r->print('</body></html>');
- return OK;
+ $r->print('</body></html>');
+ return OK;
}
1;
--albertel1068289492--