53 lines
1.5 KiB
Perl
Executable File
53 lines
1.5 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
# create_htaccess.cgi
|
|
# Creates a new .htaccess file for some directory
|
|
|
|
require './apache-lib.pl';
|
|
&error_setup($text{'htaccess_err'});
|
|
&ReadParse();
|
|
$access{'global'} || &error($text{'htaccess_ecannot'});
|
|
$conf = &get_config();
|
|
$in{'file'} || &error($text{'htaccess_eempty'});
|
|
$in{'file'} =~ /^\// && $in{'file'} !~ /\.\./ ||
|
|
&error($text{'htaccess_eabsolute'});
|
|
|
|
if (-d $in{'file'}) {
|
|
# user entered a directory.. create a file in that directory
|
|
$accfile = &find_directive("AccessFile", $conf);
|
|
if (!$accfile) { $accfile = ".htaccess"; }
|
|
$file = "$in{'file'}/$accfile";
|
|
}
|
|
else {
|
|
$file = $in{'file'};
|
|
}
|
|
&allowed_auth_file($file) ||
|
|
&error($text{'htaccess_ecreate'});
|
|
|
|
# create the file (if needed), and add to the known list
|
|
&lock_file($file);
|
|
if (!(-r $file)) {
|
|
&open_tempfile(HTACCESS, ">$file");
|
|
&close_tempfile(HTACCESS);
|
|
chmod(0755, $file);
|
|
|
|
$u = &find_directive("User", $conf);
|
|
if ($u =~ /#(\d+)/) { $u = $1; }
|
|
elsif (defined($u)) { $u = getpwnam($u); }
|
|
|
|
$g = &find_directive("Group", $conf);
|
|
if ($g =~ /#(\d+)/) { $g = $1; }
|
|
elsif (defined($g)) { $g = getgrnam($g); }
|
|
|
|
chown(defined($u) ? $u : $< , defined($g) ? $g : $( , $file);
|
|
}
|
|
&read_file("$module_config_directory/site", \%site);
|
|
@ht = split(/\s+/, $site{'htaccess'});
|
|
$site{'htaccess'} = join(' ', &unique(@ht, $file));
|
|
&write_file("$module_config_directory/site", \%site);
|
|
&unlock_file($file);
|
|
&webmin_log("htaccess", "create", $file);
|
|
|
|
# redirect to editing index
|
|
&redirect("htaccess_index.cgi?file=".&urlize($file));
|
|
|