mirror of
https://github.com/webmin/webmin.git
synced 2025-07-21 23:40:34 +00:00
52 lines
1.3 KiB
Perl
Executable File
52 lines
1.3 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
# save_restrict.cgi
|
|
# Create, update or delete a user or group module restriction
|
|
|
|
require './usermin-lib.pl';
|
|
$access{'restrict'} || &error($text{'acl_ecannot'});
|
|
&ReadParse();
|
|
@usermods = &list_usermin_usermods();
|
|
$um = $usermods[$in{'idx'}] if (!$in{'new'});
|
|
|
|
&lock_file("$config{'usermin_dir'}/usermin.mods");
|
|
if ($in{'delete'}) {
|
|
# Just delete this restriction
|
|
@usermods = grep { $_ ne $um } @usermods;
|
|
}
|
|
else {
|
|
# Validate inputs
|
|
&error_setup($text{'restrict_err'});
|
|
if ($in{'umode'} == 0) {
|
|
defined(getpwnam($in{'user'})) ||
|
|
&error($text{'restrict_euser'});
|
|
$um->[0] = $in{'user'};
|
|
}
|
|
elsif ($in{'umode'} == 1) {
|
|
defined(getgrnam($in{'group'})) ||
|
|
&error($text{'restrict_egroup'});
|
|
$um->[0] = "\@".$in{'group'};
|
|
}
|
|
elsif ($in{'umode'} == 3) {
|
|
$in{'file'} =~ /^\// && -r $in{'file'} ||
|
|
&error($text{'restrict_efile'});
|
|
$um->[0] = $in{'file'};
|
|
}
|
|
else {
|
|
$um->[0] = "*";
|
|
}
|
|
$um->[1] = $in{'mmode'} == 0 ? "" :
|
|
$in{'mmode'} == 1 ? "+" : "-";
|
|
$um->[2] = [ split(/\0/, $in{'mod'}) ];
|
|
|
|
# Save the restriction
|
|
if ($in{'new'}) {
|
|
push(@usermods, $um);
|
|
}
|
|
}
|
|
&save_usermin_usermods(\@usermods);
|
|
&unlock_file("$config{'usermin_dir'}/usermin.mods");
|
|
&webmin_log($in{'new'} ? "create" : $in{'delete'} ? "delete" : "modify",
|
|
"restrict", $um->[0]);
|
|
&redirect("list_restrict.cgi");
|
|
|