!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/usr/share/webmin/virtual-server/   drwxrwxr-x
Free 29.38 GB of 117.98 GB (24.9%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     list-features.pl (3.48 KB)      -rwxrwxr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/perl

=head1 list-features.pl

Lists features available when creating a domain

This command outputs information about Virtualmin features that are available
on this system. It is useful for scripts that are designed to run on many
systems and need to check if some feature is available before creating a 
virtual server or enabling it for a domain.

By default it lists features available for new top-level servers. However,
you can limit it to those that are available for a sub-server with the 
C<--parent> flag, followed by a top-level server name. Similarly, the 
C<--alias> and C<--subdom> flags can be used to show features for an alias
or sub-domain respectively.

Output is in table format by default, but you can switch to a more detailed
and easily parsed list with the C<--multiline> flag. Or to just get a list
of feature codes, use the C<--name-only> parameter.

=cut

package virtual_server;
if (!$module_name) {
    $main::no_acl_check++;
    $ENV{'WEBMIN_CONFIG'} ||= "/etc/webmin";
    $ENV{'WEBMIN_VAR'} ||= "/var/webmin";
    if ($0 =~ /^(.*)\/[^\/]+$/) {
        chdir($pwd = $1);
        }
    else {
        chop($pwd = `pwd`);
        }
    $0 = "$pwd/list-features.pl";
    require './virtual-server-lib.pl';
    $< == 0 || die "list-features.pl must be run as root";
    }

# 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;
        }
    elsif ($a eq "--name-only") {
        $nameonly = 1;
        }
    elsif ($a eq "--help") {
        &usage();
        }
    else {
        &usage("Unknown parameter $a");
        }
    }

# 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";
        }
    }
elsif ($nameonly) {
    # Just feature codes
    foreach $f (@feats) {
        print $f->{'feature'},"\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 "virtualmin list-features [--multiline | --name-only]\n";
print "                         [--parent name | --subdom name | --alias name]\n";
exit(1);
}



:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0038 ]--