]> git.p6c8.net - devedit.git/commitdiff
- Now, Dev-Editor is able to switch some configuration values depending on the
authorpcanterino <>
Thu, 25 Aug 2005 11:35:17 +0000 (11:35 +0000)
committerpcanterino <>
Thu, 25 Aug 2005 11:35:17 +0000 (11:35 +0000)
  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
templates/dirlist_dir.htm

index c3875144039dc8e2def7206c67c8dfa9ea077c61..aa76b5ebbc190d1286453e81994569c8e0385ee3 100644 (file)
@@ -6,7 +6,7 @@ package Config::DevEdit;
 # Read and parse the configuration files
 #
 # Author:        Patrick Canterino <patrick@patshaping.de>
 # Read and parse the configuration files
 #
 # Author:        Patrick Canterino <patrick@patshaping.de>
-# Last modified: 2005-06-09
+# Last modified: 2005-08-24
 #
 
 use strict;
 #
 
 use strict;
@@ -39,6 +39,28 @@ sub read_config($)
  $config->{'errors'}    = parse_config($config->{'error_file'});
  $config->{'templates'} = parse_config($config->{'template_file'});
 
  $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'})
  # Parse list of forbidden files
 
  if($config->{'forbidden'})
@@ -57,6 +79,10 @@ sub read_config($)
 
   $config->{'forbidden'} = \@files;
  }
 
   $config->{'forbidden'} = \@files;
  }
+ else
+ {
+  $config->{'forbidden'} = [];
+ }
 
  return $config;
 }
 
  return $config;
 }
@@ -81,26 +107,48 @@ sub parse_config($)
  my @lines  = split(/\015\012|\012|\015/,$data);
  my $config = {};
  my $count  = 0;
  my @lines  = split(/\015\012|\012|\015/,$data);
  my $config = {};
  my $count  = 0;
+ my $sect;
 
  foreach my $line(@lines)
  {
   $count++;
 
   next if($line =~ /^\s*#/);
 
  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;
  }
 
  return $config;
index 14b5628fc51324b8db75d8e06645a05edb1e40a0..29ec6346eb063590efc30f8532af887c53e527dc 100644 (file)
@@ -2,5 +2,5 @@
 <td align="right" style="white-space:nowrap">[SUBDIR]</td>
 <td style="padding-left:15pt;white-space:nowrap;">{DATE}{IF gmt} (GMT){ENDIF}</td>
 <td style="padding-left:15pt;white-space:nowrap;">{IF !forbidden}{IF readable}<a href="{SCRIPT}?command=show&amp;file={DIR_URL}{IF filter}&amp;filter={FILTER_URL}{ENDIF}">{DIR_NAME}/</a>{ELSE}<span style="color:#C0C0C0" title="Not accessible">{DIR_NAME}/</span>{ENDIF}{ELSE}<span style="color:#C0C0C0" title="File access forbidden by Dev-Editor's configuration">{DIR_NAME}/</span>{ENDIF}</td>
 <td align="right" style="white-space:nowrap">[SUBDIR]</td>
 <td style="padding-left:15pt;white-space:nowrap;">{DATE}{IF gmt} (GMT){ENDIF}</td>
 <td style="padding-left:15pt;white-space:nowrap;">{IF !forbidden}{IF readable}<a href="{SCRIPT}?command=show&amp;file={DIR_URL}{IF filter}&amp;filter={FILTER_URL}{ENDIF}">{DIR_NAME}/</a>{ELSE}<span style="color:#C0C0C0" title="Not accessible">{DIR_NAME}/</span>{ENDIF}{ELSE}<span style="color:#C0C0C0" title="File access forbidden by Dev-Editor's configuration">{DIR_NAME}/</span>{ENDIF}</td>
-<td style="padding-left:15pt;white-space:nowrap;">({IF !forbidden}{IF readable}<a href="{SCRIPT}?command=copy&amp;file={DIR_URL}">Copy</a> | {ENDIF}{IF dir_writeable}<a href="{SCRIPT}?command=rename&amp;file={DIR_URL}">Rename</a> | <a href="{SCRIPT}?command=remove&amp;file={DIR_URL}">Delete</a> |{ENDIF}{IF users} <a href="{SCRIPT}?command=chprop&amp;file={DIR_URL}">Chmod/Chgrp</a> |{ENDIF}{ENDIF} <a href="{URL}" target="_blank">View in Browser</a>)</td>
+<td style="padding-left:15pt;white-space:nowrap;">({IF !forbidden}{IF readable}<a href="{SCRIPT}?command=copy&amp;file={DIR_URL}">Copy</a> | {ENDIF}{IF dir_writeable}<a href="{SCRIPT}?command=rename&amp;file={DIR_URL}">Rename</a> | <a href="{SCRIPT}?command=remove&amp;file={DIR_URL}">Delete</a> |{ENDIF}{IF users} <a href="{SCRIPT}?command=chprop&amp;file={DIR_URL}">Chmod/Chgrp</a> |{ENDIF} {ENDIF}<a href="{URL}" target="_blank">View in Browser</a>)</td>
 </tr>
 </tr>

patrick-canterino.de