#!/usr/local/bin/perl
# Lists features available when creating a domain
package virtual_server;
if (!$module_name) {
$main::no_acl_check++;
$ENV{'WEBMIN_CONFIG'} ||= "/etc/webmin";
$ENV{'WEBMIN_VAR'} ||= "/var/webmin";
if ($0 =~ /^(.*\/)[^\/]+$/) {
chdir($1);
}
chop($pwd = `pwd`);
$0 = "$pwd/list-features.pl";
require './virtual-server-lib.pl';
$< == 0 || die "list-features.pl must be run as root";
}
use POSIX;
# Parse command-line args
$owner = 1;
while(@ARGV > 0) {
local $a = shift(@ARGV);
if ($a eq "--parent") {
$parentname = shift(@ARGV);
}
elsif ($a eq "--alias") {
$aliasname = shift(@ARGV);
}
elsif ($a eq "--subdom") {
$subname = shift(@ARGV);
}
elsif ($a eq "--multiline") {
$multi = 1;
}
else {
&usage();
}
}
# Get the domain objects
if ($parentname) {
$parentdom = &get_domain_by("dom", $parentname);
$parentdom ||
&usage("Parent virtual server $parentname does not exist");
}
if ($aliasname) {
$aliasdom = &get_domain_by("dom", $aliasname);
$aliasdom ||
&usage("Alias target virtual server $aliasname does not exist");
$parentdom = $aliasdom->{'parent'} ? &get_domain($aliasdom->{'parent'})
: $aliasdom;
}
if ($subname) {
$subdom = &get_domain_by("dom", $subname);
$subdom ||
&usage("Super-domain virtual server $subname does not exist");
$parentdom = $subdom->{'parent'} ? &get_domain($subdom->{'parent'})
: $subdom;
}
# Get and show feautures
@feats = &list_available_features($parentdom, $aliasdom, $subdom);
if ($multi) {
# Several lines each
foreach $f (@feats) {
print "$f->{'feature'}\n";
print " Description: $f->{'desc'}\n";
print " Source: ",($f->{'core'} ? "Core" : "Plugin"),"\n";
print " Automatic: ",($f->{'auto'} ? "Yes" : "No"),"\n";
print " Enabled: ",($f->{'enabled'} ? "Yes" : "No"),"\n";
print " Default: ",($f->{'default'} ? "Yes" : "No"),"\n";
}
}
else {
# One per line
$fmt = "%-20.20s %-50.50s %-8.8s\n";
printf $fmt, "Code", "Description", "Enabled";
printf $fmt, ("-" x 20), ("-" x 50), ("-" x 8);
foreach $f (@feats) {
printf $fmt, $f->{'feature'}, $f->{'desc'},
!$f->{'enabled'} ? "No" :
$f->{'auto'} ? "Auto" :
$f->{'default'} ? "Yes" : "Off";
}
}
sub usage
{
print "$_[0]\n\n" if ($_[0]);
print "Lists the available features for new virtual servers.\n";
print "\n";
print "usage: list-features.pl [--multiline]\n";
print " [--parent name | --subdom name | --alias name]\n";
exit(1);
}
syntax highlighted by Code2HTML, v. 0.9.1