X-Git-Url: https://git.p6c8.net/devedit.git/blobdiff_plain/cd639d72ba42aa0aa966729d41be24eb050aa0fc..633e5feee661afa985e87a66b524650ed1eae55a:/devedit.pl?ds=sidebyside diff --git a/devedit.pl b/devedit.pl index b63d3a1..3fd8641 100644 --- a/devedit.pl +++ b/devedit.pl @@ -1,12 +1,12 @@ #!C:/Programme/Perl/bin/perl.exe -w # -# Dev-Editor 2.3 +# Dev-Editor 3.0 (CVS) # # Dev-Editor's main program # # Author: Patrick Canterino -# Last modified: 2005-02-10 +# Last modified: 2005-04-22 # use strict; @@ -17,18 +17,17 @@ use lib 'modules'; use CGI; use Config::DevEdit; -use File::UseList; use Command; use Output; use Tool; -$VERSION = '2.3'; +$VERSION = '3.0 (CVS)'; # Path to configuration file # Change if necessary! -use constant CONFIGFILE => 'devedit.dat'; +use constant CONFIGFILE => 'devedit.conf'; # Read the configuration file @@ -37,7 +36,7 @@ error_template($config->{'templates'}->{'error'}); # Yes, I'm lazy... # Check if the root directory exists -abort($config->{'errors'}->{'no_root_dir'}) unless(-d $config->{'fileroot'}); +abort($config->{'errors'}->{'no_root_dir'}) unless(-d $config->{'fileroot'} && not -l $config->{'fileroot'}); # Check if we are able to access the root directory @@ -69,7 +68,9 @@ if($newfile ne '' && $newfile !~ /^\s+$/) # ... check if the directory exists ... - unless(-d clean_path($config->{'fileroot'}.'/'.$dir)) + my $temp_path = clean_path($config->{'fileroot'}.'/'.$dir); + + unless(-d $temp_path && not -l $temp_path) { abort($config->{'errors'}->{'dir_not_exist'},'/'); } @@ -78,7 +79,7 @@ if($newfile ne '' && $newfile !~ /^\s+$/) unless(($new_physical,$new_virtual) = check_path($config->{'fileroot'},$dir)) { - abort($config->{'errors'}->{'create_ar'},'/'); + abort($config->{'errors'}->{'create_above_root'},'/'); } # Check if we have enough permissions to create a file @@ -86,7 +87,7 @@ if($newfile ne '' && $newfile !~ /^\s+$/) unless(-r $new_physical && -w $new_physical && -x $new_physical) { - abort($config->{'errors'}->{'dir_no_create'},'/',{DIR => $new_virtual}); + abort($config->{'errors'}->{'dir_no_create'},'/',{DIR => encode_html($new_virtual)}); } # Create the physical and the virtual path @@ -97,19 +98,12 @@ if($newfile ne '' && $newfile !~ /^\s+$/) # This check has to be performed first or abs_path() will be confused -if(-e clean_path($config->{'fileroot'}.'/'.$file)) +my $temp_path = clean_path($config->{'fileroot'}.'/'.$file); + +if(-e $temp_path || -l $temp_path) { if(my ($physical,$virtual) = check_path($config->{'fileroot'},$file)) { - # Create a File::UseList object and load the list - - my $uselist = new File::UseList(listfile => $config->{'uselist_file'}, - lockfile => $config->{'lock_file'}, - timeout => $config->{'lock_timeout'}); - - $uselist->lock or abort($config->{'errors'}->{'lock_failed'},undef,{USELIST => $uselist->{'listfile'}, LOCK_FILE => $uselist->{'lockfile'}}); - $uselist->load; - # Create a hash containing data submitted by the user # (some other necessary information are also included) @@ -117,7 +111,6 @@ if(-e clean_path($config->{'fileroot'}.'/'.$file)) virtual => $virtual, new_physical => $new_physical, new_virtual => $new_virtual, - uselist => $uselist, cgi => $cgi, version => $VERSION, configfile => CONFIGFILE); @@ -126,9 +119,8 @@ if(-e clean_path($config->{'fileroot'}.'/'.$file)) my $output = exec_command($command,\%data,$config); - # ... unlock the list with files in use and show the output of the command + # ... and show its output - $uselist->unlock or abort($config->{'errors'}->{'unlock_failed'},undef,{USELIST => $uselist->{'listfile'}, LOCK_FILE => $uselist->{'lockfile'}}); print $$output; } else @@ -138,7 +130,7 @@ if(-e clean_path($config->{'fileroot'}.'/'.$file)) } else { - abort($config->{'errors'}->{'not_exist'},'/'); + abort($config->{'errors'}->{'not_found'},'/'); } #