named "group_detected" and "user_detected" and show if Dev-Editor could
successfully convert a group or user ID into the corresponding name.
- Cleaned exec_beginedit() and exec_endedit()
- More proper encoding of HTML entities at some points (still needs work)
# Execute Dev-Editor's commands
#
# Author: Patrick Canterino <patshaping@gmx.net>
# Execute Dev-Editor's commands
#
# Author: Patrick Canterino <patshaping@gmx.net>
-# Last modified: 2004-11-10
+# Last modified: 2004-11-23
$udtpl->read_file($config->{'templates'}->{'dirlist_up'});
$udtpl->fillin("UPPER_DIR",encode_entities(upper_path($virtual)));
$udtpl->read_file($config->{'templates'}->{'dirlist_up'});
$udtpl->fillin("UPPER_DIR",encode_entities(upper_path($virtual)));
- $udtpl->fillin("DATE",strftime($config->{'timeformat'},localtime($stat[9])));
+ $udtpl->fillin("DATE",encode_entities(strftime($config->{'timeformat'},localtime($stat[9]))));
$dirlist .= $udtpl->get_template;
}
$dirlist .= $udtpl->get_template;
}
$dtpl->fillin("DIR",$virt_path);
$dtpl->fillin("DIR_NAME",$dir);
$dtpl->fillin("DIR",$virt_path);
$dtpl->fillin("DIR_NAME",$dir);
- $dtpl->fillin("DATE",strftime($config->{'timeformat'},localtime($stat[9])));
+ $dtpl->fillin("DATE",encode_entities(strftime($config->{'timeformat'},localtime($stat[9]))));
$dtpl->fillin("URL",equal_url($config->{'httproot'},$virt_path));
$dtpl->parse_if_block("readable",-r $phys_path && -x $phys_path);
$dtpl->fillin("URL",equal_url($config->{'httproot'},$virt_path));
$dtpl->parse_if_block("readable",-r $phys_path && -x $phys_path);
$ftpl->fillin("FILE",$virt_path);
$ftpl->fillin("FILE_NAME",$file);
$ftpl->fillin("SIZE",$stat[7]);
$ftpl->fillin("FILE",$virt_path);
$ftpl->fillin("FILE_NAME",$file);
$ftpl->fillin("SIZE",$stat[7]);
- $ftpl->fillin("DATE",strftime($config->{'timeformat'},localtime($stat[9])));
+ $ftpl->fillin("DATE",encode_entities(strftime($config->{'timeformat'},localtime($stat[9]))));
$ftpl->fillin("URL",equal_url($config->{'httproot'},$virt_path));
$ftpl->parse_if_block("not_readable",not -r $phys_path);
$ftpl->fillin("URL",equal_url($config->{'httproot'},$virt_path));
$ftpl->parse_if_block("not_readable",not -r $phys_path);
my ($data,$config) = @_;
my $physical = $data->{'physical'};
my $virtual = $data->{'virtual'};
my ($data,$config) = @_;
my $physical = $data->{'physical'};
my $virtual = $data->{'virtual'};
+ my $dir = upper_path($virtual);
my $uselist = $data->{'uselist'};
my $uselist = $data->{'uselist'};
- return error($config->{'errors'}->{'editdir'},upper_path($virtual)) if(-d $physical);
- return error($config->{'errors'}->{'in_use'},upper_path($virtual),{FILE => $virtual}) if($uselist->in_use($virtual));
- return error($config->{'errors'}->{'noedit'},upper_path($virtual)) unless(-r $physical && -w $physical);
+ return error($config->{'errors'}->{'editdir'},$dir) if(-d $physical);
+ return error($config->{'errors'}->{'in_use'}, $dir,{FILE => $virtual}) if($uselist->in_use($virtual));
+ return error($config->{'errors'}->{'noedit'}, $dir) unless(-r $physical && -w $physical);
- return error($config->{'errors'}->{'binary'},upper_path($virtual));
+ return error($config->{'errors'}->{'binary'},$dir);
- if($config->{'max_file_size'} && (stat($physical))[7] > $config->{'max_file_size'})
+ if($config->{'max_file_size'} && (-s $physical) > $config->{'max_file_size'})
- return error($config->{'errors'}->{'file_too_large'},upper_path($virtual),{SIZE => $config->{'max_file_size'}})
+ return error($config->{'errors'}->{'file_too_large'},$dir,{SIZE => $config->{'max_file_size'}})
$tpl->read_file($config->{'templates'}->{'editfile'});
$tpl->fillin("FILE",$virtual);
$tpl->read_file($config->{'templates'}->{'editfile'});
$tpl->fillin("FILE",$virtual);
- $tpl->fillin("DIR",upper_path($virtual));
+ $tpl->fillin("DIR",$dir);
$tpl->fillin("URL",equal_url($config->{'httproot'},$virtual));
$tpl->fillin("SCRIPT",$script);
$tpl->fillin("CONTENT",encode_entities($$content));
$tpl->fillin("URL",equal_url($config->{'httproot'},$virtual));
$tpl->fillin("SCRIPT",$script);
$tpl->fillin("CONTENT",encode_entities($$content));
my ($data,$config) = @_;
my $physical = $data->{'physical'};
my $virtual = $data->{'virtual'};
my ($data,$config) = @_;
my $physical = $data->{'physical'};
my $virtual = $data->{'virtual'};
+ my $dir = upper_path($virtual);
my $content = $data->{'cgi'}->param('filecontent');
my $uselist = $data->{'uselist'};
my $content = $data->{'cgi'}->param('filecontent');
my $uselist = $data->{'uselist'};
# Check if someone else is editing the new file
# Check if someone else is editing the new file
- return error($config->{'errors'}->{'in_use'},upper_path($virtual),{FILE => $virtual}) if($uselist->in_use($virtual));
+ return error($config->{'errors'}->{'in_use'},$dir,{FILE => $virtual}) if($uselist->in_use($virtual));
- return error($config->{'errors'}->{'text_to_binary'},upper_path($virtual)) unless(-T $physical);
- return error($config->{'errors'}->{'editdir'},upper_path($virtual)) if(-d $physical);
- return error($config->{'errors'}->{'noedit'}, upper_path($virtual)) if(-e $physical && !(-r $physical && -w $physical));
+ return error($config->{'errors'}->{'text_to_binary'},$dir) unless(-T $physical);
+ return error($config->{'errors'}->{'editdir'},$dir) if(-d $physical);
+ return error($config->{'errors'}->{'noedit'}, $dir) if(-e $physical && !(-r $physical && -w $physical));
if(file_save($physical,\$content))
{
# Saving of the file was successful - so unlock it!
if(file_save($physical,\$content))
{
# Saving of the file was successful - so unlock it!
- return devedit_reload({command => 'show', file => upper_path($virtual)});
+ return devedit_reload({command => 'show', file => $dir});
- return error($config->{'errors'}->{'edit_failed'},upper_path($virtual),{FILE => $virtual});
+ return error($config->{'errors'}->{'edit_failed'},$dir,{FILE => $virtual});
- return error($config->{'errors'}->{'invalid_group'},$dir,{GROUP => $group}) unless($group =~ /^[a-z0-9_]+[a-z0-9_-]*$/i);
+ return error($config->{'errors'}->{'invalid_group'},$dir,{GROUP => encode_entities($group)}) unless($group =~ /^[a-z0-9_]+[a-z0-9_-]*$/i);
system("chgrp",$group,$physical);
}
system("chgrp",$group,$physical);
}
my @stat = stat($physical);
my $mode = $stat[2];
my $mode_oct = substr(sprintf("%04o",$mode),-4);
my $gid = $stat[5];
my @stat = stat($physical);
my $mode = $stat[2];
my $mode_oct = substr(sprintf("%04o",$mode),-4);
my $gid = $stat[5];
- my $group = getgrgid($gid);
my $tpl = new Template;
$tpl->read_file($config->{'templates'}->{'chprop'});
my $tpl = new Template;
$tpl->read_file($config->{'templates'}->{'chprop'});
+ # Insert file properties into the template
+
$tpl->fillin("MODE_OCTAL",$mode_oct);
$tpl->fillin("MODE_STRING",mode_string($mode));
$tpl->fillin("GID",$gid);
$tpl->fillin("MODE_OCTAL",$mode_oct);
$tpl->fillin("MODE_STRING",mode_string($mode));
$tpl->fillin("GID",$gid);
- $tpl->fillin("GROUP",$group);
+
+ if(my $group = getgrgid($gid))
+ {
+ $tpl->fillin("GROUP",encode_entities($group));
+ $tpl->parse_if_block("group_detected",1);
+ }
+ else
+ {
+ $tpl->parse_if_block("group_detected",0);
+ }
+
+ # Insert other information
$tpl->fillin("FILE",$virtual);
$tpl->fillin("DIR",$dir);
$tpl->fillin("FILE",$virtual);
$tpl->fillin("DIR",$dir);
- $tpl->fillin("SCRIPT_PHYS",$ENV{'SCRIPT_FILENAME'});
- $tpl->fillin("CONFIG_PATH",$data->{'configfile'});
- $tpl->fillin("FILE_ROOT",$config->{'fileroot'});
- $tpl->fillin("HTTP_ROOT",$config->{'httproot'});
+ $tpl->fillin("SCRIPT_PHYS",encode_entities($ENV{'SCRIPT_FILENAME'}));
+ $tpl->fillin("CONFIG_PATH",encode_entities($data->{'configfile'}));
+ $tpl->fillin("FILE_ROOT", encode_entities($config->{'fileroot'}));
+ $tpl->fillin("HTTP_ROOT", encode_entities($config->{'httproot'}));
- $tpl->fillin("PERL_PROG",$^X);
+ $tpl->fillin("PERL_PROG",encode_entities($^X));
$tpl->fillin("PERL_VER",sprintf("%vd",$^V));
# Information about the server
$tpl->fillin("PERL_VER",sprintf("%vd",$^V));
# Information about the server
- $tpl->fillin("HTTPD",$ENV{'SERVER_SOFTWARE'});
+ $tpl->fillin("HTTPD",encode_entities($ENV{'SERVER_SOFTWARE'}));
- $tpl->fillin("TIME",strftime($config->{'timeformat'},localtime));
+ $tpl->fillin("TIME",encode_entities(strftime($config->{'timeformat'},localtime)));
# Names of user and group
# Names of user and group
- $tpl->fillin("USER",getpwuid($uid));
- $tpl->fillin("GROUP",getgrgid($gid));
+ if(my $user = getpwuid($uid))
+ {
+ $tpl->fillin("USER",encode_entities($user));
+ $tpl->parse_if_block("user_detected",1);
+ }
+ else
+ {
+ $tpl->parse_if_block("user_detected",0);
+ }
+
+ if(my $group = getgrgid($gid))
+ {
+ $tpl->fillin("GROUP",encode_entities($group));
+ $tpl->parse_if_block("group_detected",1);
+ }
+ else
+ {
+ $tpl->parse_if_block("group_detected",0);
+ }
-# Check, if a virtual path is above a virtual root directory
+# Check if a virtual path is above a virtual root directory
# (currently no check if the path exists - check otherwise!)
#
# Params: 1. Virtual root directory
# (currently no check if the path exists - check otherwise!)
#
# Params: 1. Virtual root directory
{IF users}
<tr>
<td><b>User:</b></td>
{IF users}
<tr>
<td><b>User:</b></td>
-<td>{USER} (UID: {UID})</td>
+<td>{IF user_detected}{USER} ({ENDIF}UID: {UID}{IF user_detected}){ENDIF}</td>
</tr>
<tr>
<td><b>Group:</b></td>
</tr>
<tr>
<td><b>Group:</b></td>
-<td>{GROUP} (GID: {GID})</td>
+<td>{IF group_detected}{GROUP} ({ENDIF}GID: {GID}{IF group_detected}){ENDIF}</td>
<p>Current mode: {MODE_STRING} (Octal: {MODE_OCTAL})</p>
<p>Current mode: {MODE_STRING} (Octal: {MODE_OCTAL})</p>
-<p>Current group: {GROUP} (GID: {GID})</p>
+<p>Current group: {IF group_detected}{GROUP} ({ENDIF}GID: {GID}{IF group_detected}){ENDIF}</p>