1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
#!/usr/local/bin/perl
# Enable some limit for a domain from the command line
$no_acl_check++;
$ENV{'WEBMIN_CONFIG'} ||= "/etc/webmin";
$ENV{'WEBMIN_VAR'} ||= "/var/webmin";
if ($0 =~ /^(.*\/)[^\/]+$/) {
chdir($1);
}
chop($pwd = `pwd`);
$0 = "$pwd/enable-limit.pl";
require './virtual-server-lib.pl';
$< == 0 || die "enable-limit.pl must be run as root";
$first_print = \&first_text_print;
$second_print = \&second_text_print;
$indent_print = \&indent_text_print;
$outdent_print = \&outdent_text_print;
# Parse command-line args
while(@ARGV > 0) {
local $a = shift(@ARGV);
if ($a eq "--domain") {
push(@dnames, shift(@ARGV));
}
elsif ($a eq "--all-domains") {
$all_doms = 1;
}
elsif ($a eq "--dbname") {
$dbname = 1;
}
elsif ($a =~ /^--(\S+)$/ &&
&indexof($1, @features) >= 0) {
$config{$1} || die "The $a option cannot be used unless the feature is enabled in the module configuration";
$feature{$1}++;
}
elsif ($a =~ /^--(\S+)$/ &&
&indexof($1, @feature_plugins) >= 0) {
$plugin{$1}++;
}
}
@dnames || $all_doms || usage();
# Get domains to update
if ($all_doms) {
@doms = &list_domains();
@doms = grep { $_->{'unix'} && !$_->{'alias'} } @doms;
}
else {
foreach $n (@dnames) {
$d = &get_domain_by("dom", $n);
$d || die "Domain $n does not exist";
$d->{'unix'} && !$d->{'alias'} || die "Domain $n doesn't have limits";
push(@doms, $d);
}
}
# Do it for all domains
foreach $d (@doms) {
&$first_print("Updating server $d->{'dom'} ..");
&$indent_print();
@dom_features = $d->{'alias'} ? @alias_features :
$d->{'parent'} ? ( grep { $_ ne "webmin" } @features ) :
@features;
# Enable access to a bunch of features
foreach $f (@dom_features, @feature_plugins) {
if ($feature{$f} || $plugin{$f}) {
$d->{"limit_$f"} = 1;
}
}
# Allow choice of DB name
if ($dbname) {
$d->{'nodbname'} = 0;
}
# Save new domain details
&modify_webmin($d, $d);
&save_domain($d);
if ($d->{'parent'}) {
# Refresh parent Webmin user
$parentdom = &get_domain($d->{'parent'});
&modify_webmin($parentdom, $parentdom);
}
&$outdent_print();
&$second_print(".. done");
}
&run_post_actions();
sub usage
{
print "Enables limits for one or more domains specified on the command line.\n";
print "\n";
print "usage: enable-limit.pl [--domain name] | [--all-domains]\n";
print " [--dbname]\n";
foreach $f (@features) {
print " [--$f]\n" if ($config{$f});
}
foreach $f (@feature_plugins) {
print " [--$f]\n";
}
exit(1);
}
|