version 1.2, 2015/12/10 16:26:43
|
version 1.5, 2016/12/13 21:37:35
|
Line 43 sub handler {
|
Line 43 sub handler {
|
|
|
$request->content_type('text/plain'); |
$request->content_type('text/plain'); |
|
|
my $path = $env{'form.path'}; # should be in the form "/daxeopen/priv/..." |
# path should be in the form "/daxeopen/priv/..." |
|
# or ^/daxeopen/uploaded/[^/]+/[^/]+/.*html?$ |
|
my $path = $env{'form.path'}; |
$path =~ s/^\/daxeopen//; |
$path =~ s/^\/daxeopen//; |
|
|
my $allowed; |
my $allowed = 0; |
my ($ownername,$ownerdom,$ownerhome) = |
if ($path =~ /^\/priv/) { |
&Apache::lonnet::constructaccess($path, 'setpriv'); |
my ($ownername,$ownerdom,$ownerhome) = |
if (($ownername ne '') && ($ownerdom ne '') && ($ownerhome ne '')) { |
&Apache::lonnet::constructaccess($path, 'setpriv'); |
unless ($ownerhome eq 'no_host') { |
if (($ownername ne '') && ($ownerdom ne '') && ($ownerhome ne '')) { |
my @hosts = &Apache::lonnet::current_machine_ids(); |
unless ($ownerhome eq 'no_host') { |
if (grep(/^\Q$ownerhome\E$/,@hosts)) { |
my @hosts = &Apache::lonnet::current_machine_ids(); |
$allowed = 1; |
if (grep(/^\Q$ownerhome\E$/,@hosts)) { |
|
$allowed = 1; |
|
} |
|
} |
|
} |
|
} elsif ($path =~ m|^/uploaded/[^/]+/[^/]+/|) { |
|
if ($env{'user.name'} ne '' && $env{'user.domain'} ne '' && $env{'request.course.id'}) { |
|
$cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
|
$cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
|
if ($path =~ m|^/uploaded/\Q$cdom\E/\Q$cnum\E/| && $path !~ /\.\./) { |
|
if (&Apache::lonnet::allowed('mdc', $env{'request.course.id'})) { |
|
$allowed = 1; |
|
} |
} |
} |
} |
} |
} |
} |
Line 68 sub handler {
|
Line 82 sub handler {
|
|
|
my $contents = $env{'form.file'}; |
my $contents = $env{'form.file'}; |
|
|
try { |
my $mode; |
$contents = &Apache::xml_to_loncapa::convert_file($contents); |
if ($path =~ /\.(task|problem|exam|quiz|assess|survey|library|xml|html|htm|xhtml|xhtm)$/) { |
} catch { |
try { |
$request->print("error\nconvert failed for $path: $_"); |
$contents = &Apache::xml_to_loncapa::convert_file($contents); |
return OK; |
} catch { |
}; |
$request->print("error\nconvert failed for $path: $_"); |
|
return OK; |
|
}; |
|
$mode = '>:encoding(UTF-8)'; |
|
} else { |
|
$mode = '>'; |
|
} |
|
|
my $filebak = $newpath.".bak"; |
my $filebak = $newpath.".bak"; |
if (-e $newpath) { |
if (-e $newpath) { |
copy($newpath, $filebak); # errors ignored |
copy($newpath, $filebak); # errors ignored |
} |
} |
open my $out, '>:encoding(UTF-8)', $newpath; |
open my $out, $mode, $newpath; |
print $out $contents; |
print $out $contents; |
close $out; |
close $out; |
|
|