From ce10babcb8d07587e9bf95496e22e9b4e801f207 Mon Sep 17 00:00:00 2001 From: pcanterino <> Date: Sat, 23 Jul 2005 11:52:16 +0000 Subject: [PATCH 01/16] Changing the mode of inaccessible directories works again --- modules/Tool.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/Tool.pm b/modules/Tool.pm index d9a20f7..3ef4a10 100644 --- a/modules/Tool.pm +++ b/modules/Tool.pm @@ -6,7 +6,7 @@ package Tool; # Some shared sub routines # # Author: Patrick Canterino -# Last modified: 2005-06-10 +# Last modified: 2005-07-23 # use strict; @@ -69,7 +69,7 @@ sub check_path($$) my $last = file_name($path); - if(-d $first.'/'.$last && not -l $first.'/'.$last) + if(-d $first.'/'.$last && (not -l $first.'/'.$last) && -r $first.'/'.$last && -x $first.'/'.$last) { $first = abs_path($first.'/'.$last); $last = ''; -- 2.34.1 From 5d97440acfd02dd482d9b87d8a86521b013aea46 Mon Sep 17 00:00:00 2001 From: pcanterino <> Date: Sat, 23 Jul 2005 16:44:43 +0000 Subject: [PATCH 02/16] Restored the version of check_path() found in revision 1.34 of Tool.pm --- modules/Tool.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/Tool.pm b/modules/Tool.pm index 3ef4a10..16d5d72 100644 --- a/modules/Tool.pm +++ b/modules/Tool.pm @@ -68,8 +68,9 @@ sub check_path($$) $first = abs_path($first); my $last = file_name($path); + $last = '' if($last eq '.'); - if(-d $first.'/'.$last && (not -l $first.'/'.$last) && -r $first.'/'.$last && -x $first.'/'.$last) + if($last eq '..' || ($^O eq 'MSWin32' && $last =~ m!^\.\.\.+$!)) { $first = abs_path($first.'/'.$last); $last = ''; -- 2.34.1 From 85de18899b48fe39a79a265bff4b1fd0478c5842 Mon Sep 17 00:00:00 2001 From: pcanterino <> Date: Mon, 1 Aug 2005 09:18:25 +0000 Subject: [PATCH 03/16] - Fixed the prototype problem of dir_copy() in File::Access - Added some notes about the problems of the feature of copying a whole directory - Added some notes about my incompetence - In the edit dialogue, there is a new checkbox allowing to continue editing the file after saving it --- modules/Command.pm | 6 ++++-- modules/File/Access.pm | 6 +++++- templates/copydir.htm | 8 ++++++-- templates/editfile.htm | 3 ++- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/modules/Command.pm b/modules/Command.pm index 5105c3b..d779a6c 100644 --- a/modules/Command.pm +++ b/modules/Command.pm @@ -6,7 +6,7 @@ package Command; # Execute Dev-Editor's commands # # Author: Patrick Canterino -# Last modified: 2005-07-06 +# Last modified: 2005-08-01 # use strict; @@ -409,7 +409,9 @@ sub exec_endedit($$) print FILE $content; } - $output = devedit_reload({command => 'show', file => $dir}); + $output = ($cgi->param('continue')) + ? devedit_reload({command => 'beginedit', file => $virtual}) + : devedit_reload({command => 'show', file => $dir}); } close(FILE); diff --git a/modules/File/Access.pm b/modules/File/Access.pm index e0f4e55..248eb35 100644 --- a/modules/File/Access.pm +++ b/modules/File/Access.pm @@ -7,7 +7,7 @@ package File::Access; # using only one command # # Author: Patrick Canterino -# Last modified: 2005-07-05 +# Last modified: 2005-08-01 # use strict; @@ -41,6 +41,10 @@ use base qw(Exporter); $has_flock = eval { local $SIG{'__DIE__'}; flock(STDOUT,0); 1 }; +# Predeclaration of dir_copy() + +sub dir_copy($$); + # dir_copy() # # Copy a directory diff --git a/templates/copydir.htm b/templates/copydir.htm index b0d495d..f98f63b 100644 --- a/templates/copydir.htm +++ b/templates/copydir.htm @@ -26,8 +26,12 @@

-

Note:
-The target you want this directory to copy to must not exist!

+

Important notes:

+ +
    +
  • The target you want this directory to copy to must not exist!
  • +
  • Please make sure that all your files were copied correctly. Due to problems concerning the architecture of Dev-Editor, a check of this is currently impossible. And by the way, you are absolutely right if you think now that I'm a very lousy and incompetent programmer.
  • +

diff --git a/templates/editfile.htm b/templates/editfile.htm index a14b7fb..263b91e 100644 --- a/templates/editfile.htm +++ b/templates/editfile.htm @@ -23,7 +23,8 @@

-

+


+

-- 2.34.1 From 63b1d70c9e8dc2e55c8ca8599fffbe001f72ad17 Mon Sep 17 00:00:00 2001 From: pcanterino <> Date: Mon, 15 Aug 2005 14:25:34 +0000 Subject: [PATCH 04/16] Preserve the directory listing filter if the user changes the directory using the input field at the bottom of the directory listing --- templates/dirlist.htm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/templates/dirlist.htm b/templates/dirlist.htm index 7338db2..7b047d9 100644 --- a/templates/dirlist.htm +++ b/templates/dirlist.htm @@ -51,7 +51,8 @@ - +{IF filter} +{ENDIF} -- 2.34.1 From 7efda2bd1d1eb1d06b1513f459e14164ad4689f7 Mon Sep 17 00:00:00 2001 From: pcanterino <> Date: Thu, 25 Aug 2005 11:35:17 +0000 Subject: [PATCH 05/16] - Now, Dev-Editor is able to switch some configuration values depending on the current HTTP Auth user. This is controlled by a separate configuration file that contains sections like Windows INI files (thus the configuration file parser is now able to parse files containing sections in square brackets). You may overwrite the following configuration values: - fileroot - httproot - forbidden (you may also clear the default "forbidden" list) - Fixed a bug occuring if the user placed an empty "forbidden" configuration option in the main configuration file. In this case we create an empty Array Reference. - Fixed an error in an {IF} block in dirlist_dir.htm --- modules/Config/DevEdit.pm | 68 +++++++++++++++++++++++++++++++++------ templates/dirlist_dir.htm | 2 +- 2 files changed, 59 insertions(+), 11 deletions(-) diff --git a/modules/Config/DevEdit.pm b/modules/Config/DevEdit.pm index c387514..aa76b5e 100644 --- a/modules/Config/DevEdit.pm +++ b/modules/Config/DevEdit.pm @@ -6,7 +6,7 @@ package Config::DevEdit; # Read and parse the configuration files # # Author: Patrick Canterino -# Last modified: 2005-06-09 +# Last modified: 2005-08-24 # use strict; @@ -39,6 +39,28 @@ sub read_config($) $config->{'errors'} = parse_config($config->{'error_file'}); $config->{'templates'} = parse_config($config->{'template_file'}); + # Check if we have to parse the user config file + + if($ENV{'REMOTE_USER'} && $config->{'userconf_file'} && -f $config->{'userconf_file'}) + { + my $userconf = parse_config($config->{'userconf_file'}); + + if($userconf->{$ENV{'REMOTE_USER'}}) + { + # The current HTTP Auth user has got an individual configuration + # Overwrite the default values + + my $new_conf = $userconf->{$ENV{'REMOTE_USER'}}; + + $config->{'fileroot'} = $new_conf->{'fileroot'} if($new_conf->{'fileroot'}); + $config->{'httproot'} = $new_conf->{'httproot'} if($new_conf->{'httproot'}); + + $config->{'forbidden'} = $new_conf->{'forbidden'} if(defined $new_conf->{'forbidden'}); + + $config->{'user_config'} = 1; + } + } + # Parse list of forbidden files if($config->{'forbidden'}) @@ -57,6 +79,10 @@ sub read_config($) $config->{'forbidden'} = \@files; } + else + { + $config->{'forbidden'} = []; + } return $config; } @@ -81,26 +107,48 @@ sub parse_config($) my @lines = split(/\015\012|\012|\015/,$data); my $config = {}; my $count = 0; + my $sect; foreach my $line(@lines) { $count++; next if($line =~ /^\s*#/); - next if($line !~ /^\s*\S+\s*=.*$/); - my ($key,$value) = split(/=/,$line,2); + if($line =~ /^\s*\[(\S+)\]\s*$/) + { + # Switch to new section + + $sect = $1; + } + elsif($line =~ /^\s*\S+\s*=.*$/) + { + # A normal "key = value" line + + my ($key,$value) = split(/=/,$line,2); + + # Remove whitespaces at the beginning and at the end - # Remove whitespaces at the beginning and at the end + $key =~ s/^\s+//g; + $key =~ s/\s+$//g; + $value =~ s/^\s+//g; + $value =~ s/\s+$//g; - $key =~ s/^\s+//g; - $key =~ s/\s+$//g; - $value =~ s/^\s+//g; - $value =~ s/\s+$//g; + if($sect) + { + $config->{$sect} = {} if(ref($config->{$sect}) ne 'HASH'); - croak "Configuration option '$key' defined twice in line $count of configuration file '$file'" if($config->{$key}); + croak "Configuration option '$key' of section '$sect' defined twice in line $count of configuration file '$file'" if($config->{$sect}->{$key}); - $config->{$key} = $value; + $config->{$sect}->{$key} = $value; + } + else + { + croak "Configuration option '$key' defined twice in line $count of configuration file '$file'" if($config->{$key}); + + $config->{$key} = $value; + } + } } return $config; diff --git a/templates/dirlist_dir.htm b/templates/dirlist_dir.htm index 14b5628..29ec634 100644 --- a/templates/dirlist_dir.htm +++ b/templates/dirlist_dir.htm @@ -2,5 +2,5 @@ - + -- 2.34.1 From f139a5a9214c0e993a78232ee9c28d40620352e9 Mon Sep 17 00:00:00 2001 From: pcanterino <> Date: Thu, 1 Sep 2005 17:02:47 +0000 Subject: [PATCH 06/16] Changed the "continue" checkbox to a separate submit button --- templates/editfile.htm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/templates/editfile.htm b/templates/editfile.htm index 263b91e..99c71a6 100644 --- a/templates/editfile.htm +++ b/templates/editfile.htm @@ -23,10 +23,9 @@

-


-

+

-

+

-- 2.34.1 From 2b7efc613fb570f3cced7985419850bdd5668047 Mon Sep 17 00:00:00 2001 From: pcanterino <> Date: Fri, 30 Sep 2005 17:16:32 +0000 Subject: [PATCH 07/16] You can now define alias names for users who have an individual configuration, so you don't need to define an individual sections for users with the same configuration any more. --- modules/Config/DevEdit.pm | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/modules/Config/DevEdit.pm b/modules/Config/DevEdit.pm index aa76b5e..ce81d08 100644 --- a/modules/Config/DevEdit.pm +++ b/modules/Config/DevEdit.pm @@ -6,7 +6,7 @@ package Config::DevEdit; # Read and parse the configuration files # # Author: Patrick Canterino -# Last modified: 2005-08-24 +# Last modified: 2005-09-30 # use strict; @@ -22,6 +22,8 @@ use base qw(Exporter); @EXPORT = qw(read_config); +use Data::Dumper; + # read_config() # # Read the configuration files of Dev-Editor @@ -45,6 +47,20 @@ sub read_config($) { my $userconf = parse_config($config->{'userconf_file'}); + # Parse aliases (we use references, so we won't get a memory + # problem so soon...) + + foreach my $user(keys(%$userconf)) + { + if(my $aliases = $userconf->{$user}->{'aliases'}) + { + foreach my $alias(parse_line('\s+',0,$aliases)) + { + $userconf->{$alias} = $userconf->{$user} unless($userconf->{$alias}); + } + } + } + if($userconf->{$ENV{'REMOTE_USER'}}) { # The current HTTP Auth user has got an individual configuration -- 2.34.1 From 28785e1f0378e2f592eaae2396b3a16cd9c3229a Mon Sep 17 00:00:00 2001 From: pcanterino <> Date: Fri, 30 Sep 2005 17:17:36 +0000 Subject: [PATCH 08/16] *wargl* It happens again and again... --- modules/Config/DevEdit.pm | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/Config/DevEdit.pm b/modules/Config/DevEdit.pm index ce81d08..bc93cfe 100644 --- a/modules/Config/DevEdit.pm +++ b/modules/Config/DevEdit.pm @@ -22,8 +22,6 @@ use base qw(Exporter); @EXPORT = qw(read_config); -use Data::Dumper; - # read_config() # # Read the configuration files of Dev-Editor -- 2.34.1 From e823bb58c4a803afbd71d4bcae9823134219cb3e Mon Sep 17 00:00:00 2001 From: pcanterino <> Date: Fri, 30 Sep 2005 20:15:25 +0000 Subject: [PATCH 09/16] Wrote documentation for creating an user-dependent configuration --- README | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/README b/README index fd8a4e9..7182572 100644 --- a/README +++ b/README @@ -89,6 +89,10 @@ forbidden Specify a list of filenames the user is not allowed to a filename contains space characters, you have to put it into double quotation marks ("/filename"). +userconf_file Specifies the path to a file which contains + user-dependent configuration options (see next section + for details). + error_file The path to the file which defines the error messages. The file has the same format as this one. @@ -96,6 +100,56 @@ template_file The path to the file which defines the paths to the template files. The file has the same format as this one. +User-dependent configuration +---------------------------- + +If you have placed Dev-Editor inside a directory protected using HTTP +authentication, you may override some default configuration values for a defined +list of users. You may override the values for "fileroot", "httproot" and +"forbidden". + +For overriding configuration values you need a special configuration file. The +path to this file is defined using the "userconf_file" configuration option in +the main configuration file (add the option if necessary). This file consists of +key-value-pairs and sections, marked by a string encapsulated in square brackets +(perhaps you know this format, it is nearly the same as the Windows INI files). +Each section in this file describes an individual configuration, whereby the +name of the section is the username for whom this configuration should be used. +Here is an example: + +[homer] +fileroot = /var/www/homer/htdocs +httproot = / + +This sets the physical file root directory to "/var/www/homer/htdocs" and the +virtual HTTP root to "/" - but only for the user whose HTTP authentication +username is "homer". + +Using the "aliases" option, you may also define some other usernames for whom +this configuration should be used: + +[homer] +fileroot = /var/www/homer/htdocs +httproot = / +aliases = marge bart + +Using this, the users whose usernames are "marge" and "bart" use the same +configuration as "homer". Place any number of username seperated by whitespaces +here. +Note: If one of the users mentioned as an alias and an individual configuration +section for this user exists too, the one mentioned as an alias is ignored. + +If there are some files marked as inaccessible using the "forbidden" +configuration option in the main configuration file, but some users should have +access to these files, you may clear the default value of "forbidden": + +[homer] +fileroot = /var/www/homer/htdocs +httproot = / +forbidden = + +Using this, "homer" has access to all files in "/var/www/homer/htdocs". + Notes ----- -- 2.34.1 From e51c98a37882eaa39c0e3f1b8727ba06ecd7e626 Mon Sep 17 00:00:00 2001 From: pcanterino <> Date: Tue, 18 Oct 2005 12:07:20 +0000 Subject: [PATCH 10/16] - Changed version number to 3.0 - Updated Change Log --- CHANGELOG | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ devedit.pl | 4 +-- 2 files changed, 83 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 8b2be5e..8e144d2 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,87 @@ Change Log for Dev-Editor ========================= +Version 3.0 (2005-10-18): +========================= + + Editing function changed: + ------------------------- + - The concept of locking the file for other users before editing it is not very + good, causes some problems and makes it difficult to add new features. So I + decided to remove it. + - When Dev-Editor shows the form for editing a file, it calculates the MD5 + checksum and places it in the editing form. Before saving the file, the MD5 + checksum is calculated again and compared to the submitted one. If the two + sums don't match, Dev-Editor does not save the file and shows the editing + form. + - In the edit dialogue, there is also a new submit button allowing to continue + editing the file after saving it. + - Removed the possibility of encoding ISO-8859-1 HTML entities when saving a + file. I don't know if anybody used this function. + + Copy directories: + ----------------- + Dev-Editor is now able to copy a directory. + + Forbid file access: + ------------------- + The administrator may now define a list of files the user is not allowed to + access. + + Individual configuration: + ------------------------- + Now, Dev-Editor is able to switch some configuration values depending on the + current HTTP Auth user. + This is controlled by a separate configuration file containing sections like + Windows INI files (thus the configuration file parser is now able to parse + files containing sections in square brackets). + You may overwrite the following configuration values: + - fileroot + - httproot + - forbidden (you may also clear the default "forbidden" list) + + Configuration files renamed: + ---------------------------- + The extension of the configuration files is "conf" now. + + Names of error messages changed: + -------------------------------- + I changed the names of some error messages: + binary -> binary_file + cmd_unknown -> command_unknown + dir_read_fail -> dir_read_failed + create_ar -> create_above_root + not_exist -> not_found + + File names containing a "+" sign: + --------------------------------- + If a file name contained a "+" sign, Dev-Editor was sometimes not able to + access the file, because the "+" was interpreted as a space. + + Check octal numbers: + -------------------- + Before changing the permissions of a file, Dev-Editor now checks if the user + entered a valid octal number. + + Encoding of HTML entities: + -------------------------- + - All HTML in output is now properly encoded + - HTML::Entities is a little bit slow and does currently not support very much + encodings. Now, we just encode the HTML control characters (<, >, & and "). + This also means that Dev-Editor now does not require any CPAN module. + + Template class updated: + ----------------------- + The template class was updated to version 1.5. + + Small changes: + -------------- + - Don't show the "Copy" link if a file is not readable + - Added checkboxes in the "Copy" and "Rename" dialogues for immediately + overwriting an existing file + - Preserve the directory listing filter if the user changes the directory using + the input field at the bottom of the directory listing + New in version 2.3.2 (2005-04-23) --------------------------------- diff --git a/devedit.pl b/devedit.pl index 03cfd81..909550b 100644 --- a/devedit.pl +++ b/devedit.pl @@ -1,7 +1,7 @@ #!C:/Programme/Perl/bin/perl.exe -w # -# Dev-Editor 3.0 (CVS) +# Dev-Editor 3.0 # # Dev-Editor's main program # @@ -22,7 +22,7 @@ use Command; use Output; use Tool; -$VERSION = '3.0 (CVS)'; +$VERSION = '3.0'; # Path to configuration file # Change if necessary! -- 2.34.1 From 3b66a5aab6d6ccb87a920ae74bc1ad9e9a592a94 Mon Sep 17 00:00:00 2001 From: pcanterino <> Date: Tue, 18 Oct 2005 12:10:10 +0000 Subject: [PATCH 11/16] Forgot to remove " (CVS)" --- README | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README b/README index 7182572..6e44e2a 100644 --- a/README +++ b/README @@ -1,5 +1,5 @@ -ReadMe for Dev-Editor 3.0 (CVS) -=============================== +ReadMe for Dev-Editor 3.0 +========================= Description ----------- -- 2.34.1 From b20af44b8176a2c2b21577d8b1ddc5fea2d63c5c Mon Sep 17 00:00:00 2001 From: pcanterino <> Date: Thu, 10 Nov 2005 17:40:44 +0000 Subject: [PATCH 12/16] - Fixed a security problem: It was possible to access files and directories above the virtual root directory beginning with the same string as the root directory. For example: If your root directory is "/var/www/user1" it was possible to access "/var/www/user10", "/var/www/user11" and so on. - Updated version number to 3.0.1 - Updated Change Log --- CHANGELOG | 11 +++++++++++ README | 4 ++-- devedit.pl | 4 ++-- modules/Tool.pm | 3 ++- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 8e144d2..1a772f1 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,17 @@ Change Log for Dev-Editor ========================= +Version 3.0.1 (2005-11-10): +=========================== + + Accessing files above the virtual root directory: + ------------------------------------------------- + It was possible to access files and directories above the virtual root + directory beginning with the same string as the root directory. + For example: + If your root directory is "/var/www/user1" it was possible to access + "/var/www/user10", "/var/www/user11" and so on. + Version 3.0 (2005-10-18): ========================= diff --git a/README b/README index 6e44e2a..16cf24c 100644 --- a/README +++ b/README @@ -1,5 +1,5 @@ -ReadMe for Dev-Editor 3.0 -========================= +ReadMe for Dev-Editor 3.0.1 +=========================== Description ----------- diff --git a/devedit.pl b/devedit.pl index 909550b..39588cf 100644 --- a/devedit.pl +++ b/devedit.pl @@ -1,7 +1,7 @@ #!C:/Programme/Perl/bin/perl.exe -w # -# Dev-Editor 3.0 +# Dev-Editor 3.0.1 # # Dev-Editor's main program # @@ -22,7 +22,7 @@ use Command; use Output; use Tool; -$VERSION = '3.0'; +$VERSION = '3.0.1'; # Path to configuration file # Change if necessary! diff --git a/modules/Tool.pm b/modules/Tool.pm index 16d5d72..5ed1ba2 100644 --- a/modules/Tool.pm +++ b/modules/Tool.pm @@ -6,7 +6,7 @@ package Tool; # Some shared sub routines # # Author: Patrick Canterino -# Last modified: 2005-07-23 +# Last modified: 2005-11-10 # use strict; @@ -81,6 +81,7 @@ sub check_path($$) # Check if the path is above the root directory return if(index($path,$root) != 0); + return if(substr($path,length($root)) && not File::Spec->file_name_is_absolute(substr($path,length($root)))); # Create short path name -- 2.34.1 From 4b377fd01878a6214ec590368185cc16c2fc466e Mon Sep 17 00:00:00 2001 From: pcanterino <> Date: Thu, 24 Aug 2006 19:48:37 +0000 Subject: [PATCH 13/16] Trying to simplify some of Dev-Editor's functions: If you want to copy or rename/move a file or a directory or save a file using a different name, the form field for the new filename is prefilled with the old one. Additionally, the entered path is no more relative to the directory of the original file. --- devedit.pl | 3 +-- modules/Command.pm | 2 +- templates/copydir.htm | 2 +- templates/copyfile.htm | 2 +- templates/editfile.htm | 2 +- templates/renamefile.htm | 2 +- 6 files changed, 6 insertions(+), 7 deletions(-) diff --git a/devedit.pl b/devedit.pl index 39588cf..7ad34c0 100644 --- a/devedit.pl +++ b/devedit.pl @@ -6,7 +6,7 @@ # Dev-Editor's main program # # Author: Patrick Canterino -# Last modified: 2005-06-14 +# Last modified: 2006-08-24 # use strict; @@ -58,7 +58,6 @@ my $new_virtual = ''; if($newfile ne '' && $newfile !~ /^\s+$/) { - $curdir = upper_path($file) if($curdir eq ''); my $path = $curdir.'/'.$newfile; # Extract file and directory name... diff --git a/modules/Command.pm b/modules/Command.pm index d779a6c..28c6777 100644 --- a/modules/Command.pm +++ b/modules/Command.pm @@ -966,7 +966,7 @@ sub exec_about($$) $tpl->parse_if_block('users',1); - # ID's of user and group + # IDs of user and group $tpl->fillin('UID',$uid); $tpl->fillin('GID',$gid); diff --git a/templates/copydir.htm b/templates/copydir.htm index f98f63b..6cbc65a 100644 --- a/templates/copydir.htm +++ b/templates/copydir.htm @@ -21,7 +21,7 @@

Copy directory '{FILE}' to:
-{DIR}

+

diff --git a/templates/copyfile.htm b/templates/copyfile.htm index ac1dd10..868f733 100644 --- a/templates/copyfile.htm +++ b/templates/copyfile.htm @@ -21,7 +21,7 @@

Copy file '{FILE}' to:
-{DIR}

+

diff --git a/templates/editfile.htm b/templates/editfile.htm index 99c71a6..bbbcebf 100644 --- a/templates/editfile.htm +++ b/templates/editfile.htm @@ -23,7 +23,7 @@

-

+

diff --git a/templates/renamefile.htm b/templates/renamefile.htm index 512d45c..d9415da 100644 --- a/templates/renamefile.htm +++ b/templates/renamefile.htm @@ -21,7 +21,7 @@

Move/Rename file '{FILE}' to:
-{DIR}

+

-- 2.34.1 From 814df6d6fa273d7608704fb26b12e5477b2466f9 Mon Sep 17 00:00:00 2001 From: pcanterino <> Date: Sun, 3 Sep 2006 15:22:57 +0000 Subject: [PATCH 14/16] Changed this very stupid "edit_file_changed" error message --- errors.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/errors.conf b/errors.conf index 83e924e..5357936 100644 --- a/errors.conf +++ b/errors.conf @@ -16,7 +16,7 @@ dir_not_exist = The directory where you want to create this file or director dir_read_failed = Reading of directory '{DIR}' failed. dir_replace = You are not allowed to replace a directory. edit_failed = Saving of file '{FILE}' failed. The file could be damaged, please check its integrity. -edit_file_changed = The file you want to edit changed meanwhile. Now, it looks like this: {FILE}. Please try to merge these two versions of the file or save your version of the file using a different name. +edit_file_changed = The file you want to edit changed meanwhile. Now, it looks like this: {FILE}. exist_no_write = The target file '{FILE}' already exists and you have not enough permissions to replace it. file_exists = A file or directory called '{FILE}' already exists. file_too_large = The file you want to view or edit is too large (max. {SIZE} Bytes). -- 2.34.1 From b13a251610d830e85842abcf9a0bdefdf4c7a328 Mon Sep 17 00:00:00 2001 From: pcanterino <> Date: Sat, 14 Oct 2006 19:59:53 +0000 Subject: [PATCH 15/16] "Revert" sounds better than "discard" --- templates/editfile.htm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/editfile.htm b/templates/editfile.htm index bbbcebf..749fb69 100644 --- a/templates/editfile.htm +++ b/templates/editfile.htm @@ -25,7 +25,7 @@

-

+

-- 2.34.1 From 6cb088cea794fc67941b4e174fe9ed80c8a45875 Mon Sep 17 00:00:00 2001 From: pcanterino <> Date: Fri, 25 Apr 2008 14:25:19 +0000 Subject: [PATCH 16/16] If "*" was supplied as a DOS wildcard, don't convert it to an ordinary regex, just check if it is "*" and return 1 if so. --- modules/Tool.pm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/Tool.pm b/modules/Tool.pm index 5ed1ba2..1cd2456 100644 --- a/modules/Tool.pm +++ b/modules/Tool.pm @@ -6,7 +6,7 @@ package Tool; # Some shared sub routines # # Author: Patrick Canterino -# Last modified: 2005-11-10 +# Last modified: 2008-04-25 # use strict; @@ -183,6 +183,8 @@ sub dos_wildcard_match($$) { my ($pattern,$string) = @_; + return 1 if($pattern eq '*'); + # The following part is stolen from File::DosGlob # escape regex metachars but not glob chars -- 2.34.1
Go to directory/file: [SUBDIR] {DATE}{IF gmt} (GMT){ENDIF} {IF !forbidden}{IF readable}{DIR_NAME}/{ELSE}{DIR_NAME}/{ENDIF}{ELSE}{DIR_NAME}/{ENDIF}({IF !forbidden}{IF readable}Copy | {ENDIF}{IF dir_writeable}Rename | Delete |{ENDIF}{IF users} Chmod/Chgrp |{ENDIF}{ENDIF} View in Browser)({IF !forbidden}{IF readable}Copy | {ENDIF}{IF dir_writeable}Rename | Delete |{ENDIF}{IF users} Chmod/Chgrp |{ENDIF} {ENDIF}View in Browser)