mirror of
https://github.com/webmin/webmin.git
synced 2025-07-29 11:50:54 +00:00
45 lines
974 B
Perl
Executable File
45 lines
974 B
Perl
Executable File
#!/usr/local/bin/perl
|
|
# setattrs.cgi
|
|
# Sets all the XFS attributes for a file
|
|
|
|
require './file-lib.pl';
|
|
$disallowed_buttons{'attr'} && &error($text{'ebutton'});
|
|
&ReadParse();
|
|
&webmin_log("attr", undef, $in{'file'}, \%in);
|
|
&switch_acl_uid_and_chroot();
|
|
print "Content-type: text/plain\n\n";
|
|
if ($access{'ro'} || !&can_access($in{'file'})) {
|
|
print $text{'facl_eaccess'},"\n";
|
|
}
|
|
else {
|
|
# Set given attribs
|
|
$temp = &transname();
|
|
for($i=0; defined($n = $in{"name$i"}); $i++) {
|
|
$v = $in{"value$i"};
|
|
open(TEMP, ">$temp");
|
|
print TEMP $v;
|
|
close(TEMP);
|
|
$out = `attr -s '$n' '$in{'file'}' <$temp 2>&1`;
|
|
unlink($temp);
|
|
if ($?) {
|
|
print $out,"\n";
|
|
exit;
|
|
}
|
|
$set{$n}++;
|
|
}
|
|
|
|
# Remove those that no longer exist
|
|
$out = `attr -l '$in{'file'}' 2>&1`;
|
|
foreach $l (split(/[\r\n]+/, $out)) {
|
|
if ($l =~ /Attribute\s+"(.*)"/i && !$set{$1}) {
|
|
$out = `attr -r '$1' '$in{'file'}' 2>&1`;
|
|
if ($?) {
|
|
print $out,"\n";
|
|
exit;
|
|
}
|
|
}
|
|
}
|
|
print "\n";
|
|
}
|
|
|